homeassistant 2025.9.0b0__py3-none-any.whl → 2025.9.0b2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (674) hide show
  1. homeassistant/components/accuweather/translations/sensor.sr-Latn.json +9 -0
  2. homeassistant/components/accuweather/translations/sensor.sr.json +9 -0
  3. homeassistant/components/accuweather/translations/sr-Latn.json +101 -0
  4. homeassistant/components/accuweather/translations/sr.json +101 -0
  5. homeassistant/components/ai_task/services.yaml +0 -1
  6. homeassistant/components/ai_task/translations/cs.json +25 -3
  7. homeassistant/components/ai_task/translations/el.json +22 -0
  8. homeassistant/components/ai_task/translations/fr.json +22 -0
  9. homeassistant/components/ai_task/translations/lt.json +22 -0
  10. homeassistant/components/ai_task/translations/pt.json +22 -0
  11. homeassistant/components/ai_task/translations/ru.json +22 -0
  12. homeassistant/components/ai_task/translations/sk.json +1 -1
  13. homeassistant/components/airgradient/translations/pt.json +1 -0
  14. homeassistant/components/airgradient/translations/ru.json +1 -0
  15. homeassistant/components/airos/manifest.json +1 -1
  16. homeassistant/components/airos/translations/lt.json +23 -1
  17. homeassistant/components/aladdin_connect/manifest.json +1 -1
  18. homeassistant/components/aladdin_connect/translations/ca.json +28 -0
  19. homeassistant/components/aladdin_connect/translations/cs.json +30 -1
  20. homeassistant/components/aladdin_connect/translations/el.json +30 -1
  21. homeassistant/components/aladdin_connect/translations/et.json +30 -1
  22. homeassistant/components/aladdin_connect/translations/fr.json +10 -0
  23. homeassistant/components/aladdin_connect/translations/ga.json +30 -1
  24. homeassistant/components/aladdin_connect/translations/lt.json +30 -1
  25. homeassistant/components/aladdin_connect/translations/nl.json +28 -0
  26. homeassistant/components/aladdin_connect/translations/pt.json +30 -1
  27. homeassistant/components/aladdin_connect/translations/ru.json +30 -1
  28. homeassistant/components/aladdin_connect/translations/sk.json +30 -1
  29. homeassistant/components/aladdin_connect/translations/zh-Hans.json +30 -1
  30. homeassistant/components/aladdin_connect/translations/zh-Hant.json +30 -1
  31. homeassistant/components/alarm_control_panel/translations/cs.json +3 -3
  32. homeassistant/components/alexa_devices/__init__.py +1 -1
  33. homeassistant/components/alexa_devices/const.py +9 -9
  34. homeassistant/components/alexa_devices/manifest.json +1 -1
  35. homeassistant/components/alexa_devices/sensor.py +3 -0
  36. homeassistant/components/alexa_devices/services.py +3 -8
  37. homeassistant/components/alexa_devices/services.yaml +41 -476
  38. homeassistant/components/alexa_devices/strings.json +42 -469
  39. homeassistant/components/alexa_devices/translations/bg.json +0 -8
  40. homeassistant/components/alexa_devices/translations/cs.json +0 -477
  41. homeassistant/components/alexa_devices/translations/de.json +42 -469
  42. homeassistant/components/alexa_devices/translations/en-GB.json +1 -475
  43. homeassistant/components/alexa_devices/translations/en.json +42 -469
  44. homeassistant/components/alexa_devices/translations/es.json +0 -307
  45. homeassistant/components/alexa_devices/translations/et.json +42 -469
  46. homeassistant/components/alexa_devices/translations/fr.json +0 -9
  47. homeassistant/components/alexa_devices/translations/ga.json +0 -477
  48. homeassistant/components/alexa_devices/translations/lt.json +27 -293
  49. homeassistant/components/alexa_devices/translations/nl.json +0 -15
  50. homeassistant/components/alexa_devices/translations/pt.json +11 -477
  51. homeassistant/components/alexa_devices/translations/sk.json +0 -477
  52. homeassistant/components/alexa_devices/translations/sv.json +0 -8
  53. homeassistant/components/alexa_devices/translations/zh-Hans.json +0 -387
  54. homeassistant/components/alexa_devices/translations/zh-Hant.json +42 -469
  55. homeassistant/components/anthemav/translations/lt.json +2 -1
  56. homeassistant/components/asuswrt/bridge.py +18 -2
  57. homeassistant/components/asuswrt/manifest.json +1 -1
  58. homeassistant/components/august/translations/lt.json +26 -1
  59. homeassistant/components/august/translations/pt.json +26 -1
  60. homeassistant/components/backup/manager.py +2 -1
  61. homeassistant/components/backup/translations/de.json +1 -1
  62. homeassistant/components/bayesian/strings.json +1 -1
  63. homeassistant/components/bayesian/translations/cs.json +1 -1
  64. homeassistant/components/bayesian/translations/de.json +17 -17
  65. homeassistant/components/bayesian/translations/el.json +102 -0
  66. homeassistant/components/bayesian/translations/en-GB.json +1 -1
  67. homeassistant/components/bayesian/translations/en.json +3 -3
  68. homeassistant/components/bayesian/translations/et.json +1 -1
  69. homeassistant/components/bayesian/translations/fr.json +41 -0
  70. homeassistant/components/bayesian/translations/ga.json +48 -6
  71. homeassistant/components/bayesian/translations/lt.json +218 -0
  72. homeassistant/components/bayesian/translations/pl.json +7 -0
  73. homeassistant/components/bayesian/translations/pt.json +257 -0
  74. homeassistant/components/bayesian/translations/ru.json +257 -0
  75. homeassistant/components/bayesian/translations/sk.json +5 -5
  76. homeassistant/components/bayesian/translations/sv.json +11 -0
  77. homeassistant/components/bayesian/translations/zh-Hans.json +1 -1
  78. homeassistant/components/bayesian/translations/zh-Hant.json +1 -1
  79. homeassistant/components/bluetooth/__init__.py +1 -1
  80. homeassistant/components/bluetooth/manifest.json +3 -3
  81. homeassistant/components/braviatv/entity.py +10 -4
  82. homeassistant/components/bring/translations/sk.json +1 -1
  83. homeassistant/components/buienradar/translations/sr-Latn.json +128 -0
  84. homeassistant/components/buienradar/translations/sr.json +128 -0
  85. homeassistant/components/button/translations/ru.json +1 -1
  86. homeassistant/components/camera/translations/ru.json +2 -2
  87. homeassistant/components/conversation/manifest.json +1 -1
  88. homeassistant/components/cover/translations/mk.json +13 -5
  89. homeassistant/components/cover/translations/pl.json +1 -1
  90. homeassistant/components/deconz/translations/ga.json +19 -1
  91. homeassistant/components/device_tracker/translations/ga.json +9 -0
  92. homeassistant/components/devolo_home_control/translations/lt.json +3 -0
  93. homeassistant/components/devolo_home_network/translations/lt.json +3 -1
  94. homeassistant/components/devolo_home_network/translations/ru.json +3 -0
  95. homeassistant/components/dominos/translations/ru.json +2 -0
  96. homeassistant/components/downloader/translations/sk.json +1 -1
  97. homeassistant/components/dsmr/translations/ga.json +8 -0
  98. homeassistant/components/dsmr_reader/translations/ga.json +34 -0
  99. homeassistant/components/dwd_weather_warnings/translations/sk.json +1 -1
  100. homeassistant/components/ecobee/translations/ga.json +20 -1
  101. homeassistant/components/ecovacs/manifest.json +1 -1
  102. homeassistant/components/efergy/translations/ga.json +6 -0
  103. homeassistant/components/elkm1/translations/ga.json +6 -1
  104. homeassistant/components/emoncms/translations/lt.json +8 -0
  105. homeassistant/components/enphase_envoy/translations/lt.json +6 -0
  106. homeassistant/components/environment_canada/translations/sr-Latn.json +9 -0
  107. homeassistant/components/environment_canada/translations/sr.json +9 -0
  108. homeassistant/components/eq3btsmart/manifest.json +1 -1
  109. homeassistant/components/esphome/manifest.json +2 -2
  110. homeassistant/components/esphome/translations/ga.json +29 -4
  111. homeassistant/components/esphome/translations/sk.json +1 -1
  112. homeassistant/components/fan/translations/ga.json +25 -1
  113. homeassistant/components/filesize/translations/ga.json +12 -0
  114. homeassistant/components/fireservicerota/translations/ga.json +3 -1
  115. homeassistant/components/flo/translations/ga.json +16 -0
  116. homeassistant/components/flume/translations/ga.json +1 -0
  117. homeassistant/components/flux_led/translations/ga.json +78 -1
  118. homeassistant/components/flux_led/translations/sk.json +1 -1
  119. homeassistant/components/foscam/translations/ga.json +13 -0
  120. homeassistant/components/foscam/translations/lt.json +3 -0
  121. homeassistant/components/fritz/translations/ga.json +49 -6
  122. homeassistant/components/fritz/translations/ru.json +3 -0
  123. homeassistant/components/fritzbox/translations/ca.json +1 -3
  124. homeassistant/components/fritzbox/translations/cs.json +2 -2
  125. homeassistant/components/fritzbox/translations/de.json +3 -3
  126. homeassistant/components/fritzbox/translations/el.json +2 -2
  127. homeassistant/components/fritzbox/translations/en-GB.json +2 -2
  128. homeassistant/components/fritzbox/translations/en.json +2 -2
  129. homeassistant/components/fritzbox/translations/es-419.json +0 -6
  130. homeassistant/components/fritzbox/translations/es.json +1 -3
  131. homeassistant/components/fritzbox/translations/et.json +2 -2
  132. homeassistant/components/fritzbox/translations/fi.json +1 -3
  133. homeassistant/components/fritzbox/translations/fr.json +1 -3
  134. homeassistant/components/fritzbox/translations/ga.json +0 -1
  135. homeassistant/components/fritzbox/translations/hu.json +1 -3
  136. homeassistant/components/fritzbox/translations/id.json +1 -3
  137. homeassistant/components/fritzbox/translations/it.json +1 -3
  138. homeassistant/components/fritzbox/translations/ja.json +1 -3
  139. homeassistant/components/fritzbox/translations/ko.json +1 -3
  140. homeassistant/components/fritzbox/translations/lb.json +2 -4
  141. homeassistant/components/fritzbox/translations/lt.json +1 -3
  142. homeassistant/components/fritzbox/translations/nb.json +1 -3
  143. homeassistant/components/fritzbox/translations/nl.json +1 -3
  144. homeassistant/components/fritzbox/translations/pl.json +1 -3
  145. homeassistant/components/fritzbox/translations/pt-BR.json +1 -3
  146. homeassistant/components/fritzbox/translations/pt.json +2 -2
  147. homeassistant/components/fritzbox/translations/ro.json +1 -3
  148. homeassistant/components/fritzbox/translations/ru.json +2 -2
  149. homeassistant/components/fritzbox/translations/sk.json +2 -2
  150. homeassistant/components/fritzbox/translations/sl.json +1 -3
  151. homeassistant/components/fritzbox/translations/sv.json +1 -3
  152. homeassistant/components/fritzbox/translations/tr.json +1 -3
  153. homeassistant/components/fritzbox/translations/uk.json +1 -3
  154. homeassistant/components/fritzbox/translations/vi.json +2 -4
  155. homeassistant/components/fritzbox/translations/zh-Hans.json +2 -2
  156. homeassistant/components/fritzbox/translations/zh-Hant.json +2 -2
  157. homeassistant/components/fritzbox_callmonitor/translations/ca.json +0 -1
  158. homeassistant/components/fritzbox_callmonitor/translations/cs.json +2 -2
  159. homeassistant/components/fritzbox_callmonitor/translations/de.json +3 -3
  160. homeassistant/components/fritzbox_callmonitor/translations/el.json +2 -2
  161. homeassistant/components/fritzbox_callmonitor/translations/en-GB.json +2 -2
  162. homeassistant/components/fritzbox_callmonitor/translations/en.json +2 -2
  163. homeassistant/components/fritzbox_callmonitor/translations/es-419.json +0 -3
  164. homeassistant/components/fritzbox_callmonitor/translations/es.json +0 -1
  165. homeassistant/components/fritzbox_callmonitor/translations/et.json +2 -2
  166. homeassistant/components/fritzbox_callmonitor/translations/fi.json +0 -1
  167. homeassistant/components/fritzbox_callmonitor/translations/fr.json +0 -1
  168. homeassistant/components/fritzbox_callmonitor/translations/ga.json +16 -0
  169. homeassistant/components/fritzbox_callmonitor/translations/hu.json +0 -1
  170. homeassistant/components/fritzbox_callmonitor/translations/id.json +0 -1
  171. homeassistant/components/fritzbox_callmonitor/translations/it.json +0 -1
  172. homeassistant/components/fritzbox_callmonitor/translations/ja.json +0 -1
  173. homeassistant/components/fritzbox_callmonitor/translations/ko.json +0 -1
  174. homeassistant/components/fritzbox_callmonitor/translations/lt.json +0 -1
  175. homeassistant/components/fritzbox_callmonitor/translations/nb.json +0 -1
  176. homeassistant/components/fritzbox_callmonitor/translations/nl.json +0 -1
  177. homeassistant/components/fritzbox_callmonitor/translations/pl.json +0 -1
  178. homeassistant/components/fritzbox_callmonitor/translations/pt-BR.json +0 -1
  179. homeassistant/components/fritzbox_callmonitor/translations/pt.json +2 -2
  180. homeassistant/components/fritzbox_callmonitor/translations/ro.json +0 -1
  181. homeassistant/components/fritzbox_callmonitor/translations/ru.json +0 -1
  182. homeassistant/components/fritzbox_callmonitor/translations/sk.json +2 -2
  183. homeassistant/components/fritzbox_callmonitor/translations/sv.json +0 -1
  184. homeassistant/components/fritzbox_callmonitor/translations/tr.json +0 -1
  185. homeassistant/components/fritzbox_callmonitor/translations/uk.json +0 -1
  186. homeassistant/components/fritzbox_callmonitor/translations/zh-Hans.json +2 -2
  187. homeassistant/components/fritzbox_callmonitor/translations/zh-Hant.json +2 -2
  188. homeassistant/components/fronius/translations/ga.json +69 -0
  189. homeassistant/components/frontend/manifest.json +1 -1
  190. homeassistant/components/fully_kiosk/translations/fr.json +5 -0
  191. homeassistant/components/fully_kiosk/translations/ga.json +26 -0
  192. homeassistant/components/fully_kiosk/translations/lt.json +3 -0
  193. homeassistant/components/fully_kiosk/translations/pt.json +3 -0
  194. homeassistant/components/fyta/translations/fr.json +3 -0
  195. homeassistant/components/fyta/translations/ga.json +1 -0
  196. homeassistant/components/fyta/translations/lt.json +64 -2
  197. homeassistant/components/fyta/translations/pt.json +64 -2
  198. homeassistant/components/generic/translations/ga.json +36 -0
  199. homeassistant/components/geofency/translations/ga.json +18 -0
  200. homeassistant/components/geonetnz_quakes/translations/ga.json +4 -0
  201. homeassistant/components/gios/translations/ga.json +2 -0
  202. homeassistant/components/github/translations/ga.json +23 -0
  203. homeassistant/components/glances/translations/ga.json +10 -0
  204. homeassistant/components/goalzero/translations/ga.json +3 -0
  205. homeassistant/components/goalzero/translations/lt.json +3 -0
  206. homeassistant/components/goodwe/translations/ga.json +16 -0
  207. homeassistant/components/google/translations/ga.json +7 -0
  208. homeassistant/components/google_assistant_sdk/translations/sk.json +1 -1
  209. homeassistant/components/google_generative_ai_conversation/translations/cs.json +3 -3
  210. homeassistant/components/google_generative_ai_conversation/translations/lt.json +5 -0
  211. homeassistant/components/google_generative_ai_conversation/translations/sk.json +1 -1
  212. homeassistant/components/google_mail/translations/ga.json +24 -2
  213. homeassistant/components/google_mail/translations/sk.json +1 -1
  214. homeassistant/components/google_photos/translations/sk.json +1 -1
  215. homeassistant/components/google_sheets/translations/ga.json +6 -0
  216. homeassistant/components/google_sheets/translations/sk.json +1 -1
  217. homeassistant/components/google_tasks/translations/sk.json +1 -1
  218. homeassistant/components/govee_ble/translations/ga.json +18 -0
  219. homeassistant/components/govee_light_local/__init__.py +16 -3
  220. homeassistant/components/govee_light_local/config_flow.py +28 -10
  221. homeassistant/components/govee_light_local/coordinator.py +39 -24
  222. homeassistant/components/gpslogger/translations/ga.json +1 -0
  223. homeassistant/components/group/translations/ga.json +31 -2
  224. homeassistant/components/growatt_server/translations/ga.json +127 -0
  225. homeassistant/components/habitica/translations/cs.json +3 -3
  226. homeassistant/components/habitica/translations/ga.json +7 -2
  227. homeassistant/components/harmony/translations/ga.json +32 -2
  228. homeassistant/components/hassio/translations/ga.json +51 -1
  229. homeassistant/components/hassio/translations/lt.json +4 -0
  230. homeassistant/components/hassio/translations/sk.json +1 -1
  231. homeassistant/components/here_travel_time/translations/ga.json +11 -0
  232. homeassistant/components/here_travel_time/translations/lt.json +2 -1
  233. homeassistant/components/hisense_aehw4a1/translations/ga.json +13 -0
  234. homeassistant/components/history_stats/translations/ga.json +6 -0
  235. homeassistant/components/history_stats/translations/sk.json +3 -3
  236. homeassistant/components/hive/translations/ga.json +7 -0
  237. homeassistant/components/home_connect/translations/ga.json +5 -1
  238. homeassistant/components/home_connect/translations/lt.json +21 -11
  239. homeassistant/components/home_connect/translations/ru.json +9 -6
  240. homeassistant/components/home_connect/translations/sk.json +1 -1
  241. homeassistant/components/homeassistant_yellow/translations/ga.json +61 -2
  242. homeassistant/components/homekit_controller/translations/ga.json +25 -0
  243. homeassistant/components/homekit_controller/translations/select.mk.json +7 -0
  244. homeassistant/components/homematic/translations/ga.json +26 -1
  245. homeassistant/components/honeywell/translations/ga.json +10 -0
  246. homeassistant/components/huawei_lte/translations/ga.json +16 -1
  247. homeassistant/components/hue/translations/ga.json +19 -0
  248. homeassistant/components/humidifier/translations/ga.json +31 -0
  249. homeassistant/components/husqvarna_automower/manifest.json +1 -1
  250. homeassistant/components/husqvarna_automower/translations/ca.json +3 -0
  251. homeassistant/components/husqvarna_automower/translations/mk.json +5 -0
  252. homeassistant/components/husqvarna_automower_ble/translations/ca.json +35 -0
  253. homeassistant/components/husqvarna_automower_ble/translations/cs.json +35 -1
  254. homeassistant/components/husqvarna_automower_ble/translations/el.json +4 -0
  255. homeassistant/components/husqvarna_automower_ble/translations/ga.json +35 -1
  256. homeassistant/components/husqvarna_automower_ble/translations/lt.json +35 -1
  257. homeassistant/components/husqvarna_automower_ble/translations/pt.json +35 -1
  258. homeassistant/components/hvv_departures/translations/ga.json +2 -1
  259. homeassistant/components/hydrawise/translations/lt.json +4 -1
  260. homeassistant/components/hyperion/translations/sk.json +1 -1
  261. homeassistant/components/iaqualink/__init__.py +10 -0
  262. homeassistant/components/iaqualink/entity.py +1 -0
  263. homeassistant/components/icloud/translations/ga.json +60 -1
  264. homeassistant/components/ifttt/translations/ga.json +2 -0
  265. homeassistant/components/imap/translations/ga.json +3 -1
  266. homeassistant/components/imeon_inverter/const.py +1 -0
  267. homeassistant/components/imeon_inverter/strings.json +1 -0
  268. homeassistant/components/imeon_inverter/translations/en.json +1 -0
  269. homeassistant/components/imeon_inverter/translations/lt.json +67 -0
  270. homeassistant/components/imeon_inverter/translations/pt.json +79 -0
  271. homeassistant/components/imeon_inverter/translations/ru.json +21 -0
  272. homeassistant/components/inkbird/translations/ga.json +5 -0
  273. homeassistant/components/input_boolean/translations/ga.json +20 -1
  274. homeassistant/components/input_button/translations/ga.json +16 -1
  275. homeassistant/components/input_datetime/translations/ga.json +37 -1
  276. homeassistant/components/input_number/translations/ga.json +23 -1
  277. homeassistant/components/insteon/translations/ga.json +6 -1
  278. homeassistant/components/insteon/translations/lt.json +1 -0
  279. homeassistant/components/insteon/translations/ru.json +1 -0
  280. homeassistant/components/integration/translations/ga.json +22 -2
  281. homeassistant/components/intellifire/translations/ga.json +15 -1
  282. homeassistant/components/ios/translations/ga.json +19 -0
  283. homeassistant/components/iotawatt/translations/ga.json +15 -0
  284. homeassistant/components/iperf3/translations/ga.json +2 -1
  285. homeassistant/components/ipma/translations/ga.json +2 -0
  286. homeassistant/components/iqvia/translations/ga.json +7 -0
  287. homeassistant/components/izone/translations/ga.json +7 -1
  288. homeassistant/components/jellyfin/translations/ga.json +13 -0
  289. homeassistant/components/justnimbus/translations/ga.json +16 -0
  290. homeassistant/components/jvc_projector/translations/ga.json +1 -0
  291. homeassistant/components/kaleidescape/translations/ga.json +3 -0
  292. homeassistant/components/keba/translations/lt.json +1 -0
  293. homeassistant/components/keba/translations/ru.json +1 -0
  294. homeassistant/components/kitchen_sink/translations/ga.json +3 -0
  295. homeassistant/components/kmtronic/translations/ga.json +22 -0
  296. homeassistant/components/knx/translations/ga.json +100 -2
  297. homeassistant/components/knx/translations/lt.json +270 -0
  298. homeassistant/components/knx/translations/pt.json +270 -0
  299. homeassistant/components/konnected/translations/ga.json +3 -1
  300. homeassistant/components/kostal_plenticore/translations/ga.json +7 -0
  301. homeassistant/components/kraken/translations/ga.json +20 -0
  302. homeassistant/components/kulersky/translations/ga.json +3 -0
  303. homeassistant/components/lacrosse_view/translations/ga.json +25 -0
  304. homeassistant/components/lametric/translations/ga.json +1 -0
  305. homeassistant/components/lametric/translations/lt.json +1 -0
  306. homeassistant/components/landisgyr_heat_meter/translations/ga.json +15 -0
  307. homeassistant/components/launch_library/translations/lt.json +7 -0
  308. homeassistant/components/laundrify/translations/lt.json +2 -1
  309. homeassistant/components/lawn_mower/translations/ga.json +6 -0
  310. homeassistant/components/lcn/translations/ga.json +52 -3
  311. homeassistant/components/lcn/translations/lt.json +2 -0
  312. homeassistant/components/lcn/translations/ru.json +1 -0
  313. homeassistant/components/leaone/translations/ru.json +2 -1
  314. homeassistant/components/lg_thinq/translations/el.json +3 -0
  315. homeassistant/components/lg_thinq/translations/ga.json +5 -0
  316. homeassistant/components/lg_thinq/translations/lt.json +7 -0
  317. homeassistant/components/lg_thinq/translations/pt.json +4 -0
  318. homeassistant/components/lg_thinq/translations/ru.json +5 -0
  319. homeassistant/components/lidarr/translations/ga.json +16 -0
  320. homeassistant/components/lifx/translations/ga.json +1 -0
  321. homeassistant/components/light/translations/ga.json +132 -1
  322. homeassistant/components/litterrobot/translations/ga.json +6 -0
  323. homeassistant/components/litterrobot/translations/sensor.ga.json +14 -1
  324. homeassistant/components/livisi/translations/ga.json +18 -0
  325. homeassistant/components/local_calendar/translations/ga.json +5 -2
  326. homeassistant/components/local_ip/translations/ga.json +9 -0
  327. homeassistant/components/lock/translations/pl.json +1 -0
  328. homeassistant/components/logbook/translations/ko.json +2 -1
  329. homeassistant/components/lookin/translations/ga.json +1 -0
  330. homeassistant/components/lutron_caseta/translations/ga.json +34 -1
  331. homeassistant/components/lyric/translations/sk.json +1 -1
  332. homeassistant/components/mastodon/__init__.py +13 -2
  333. homeassistant/components/mastodon/config_flow.py +7 -2
  334. homeassistant/components/mastodon/diagnostics.py +8 -3
  335. homeassistant/components/matter/translations/ga.json +22 -0
  336. homeassistant/components/matter/translations/lt.json +45 -0
  337. homeassistant/components/matter/translations/pt.json +27 -0
  338. homeassistant/components/matter/translations/sr-Latn.json +15 -0
  339. homeassistant/components/matter/translations/sr.json +15 -0
  340. homeassistant/components/meater/translations/ga.json +9 -0
  341. homeassistant/components/media_extractor/translations/ga.json +14 -0
  342. homeassistant/components/media_player/services.yaml +1 -3
  343. homeassistant/components/media_player/translations/cs.json +5 -0
  344. homeassistant/components/media_player/translations/el.json +5 -0
  345. homeassistant/components/media_player/translations/fr.json +3 -0
  346. homeassistant/components/media_player/translations/ga.json +35 -0
  347. homeassistant/components/media_player/translations/lt.json +6 -1
  348. homeassistant/components/media_player/translations/pt.json +5 -0
  349. homeassistant/components/media_player/translations/ru.json +5 -0
  350. homeassistant/components/media_player/translations/sk.json +1 -0
  351. homeassistant/components/media_player/translations/zh-Hans.json +1 -0
  352. homeassistant/components/media_player/translations/zh-Hant.json +1 -0
  353. homeassistant/components/met/translations/ga.json +34 -0
  354. homeassistant/components/met_eireann/translations/ga.json +15 -0
  355. homeassistant/components/meteo_france/const.py +1 -1
  356. homeassistant/components/metoffice/translations/sk.json +1 -1
  357. homeassistant/components/metoffice/translations/sr-Latn.json +1 -0
  358. homeassistant/components/metoffice/translations/sr.json +1 -0
  359. homeassistant/components/miele/translations/ga.json +2 -1
  360. homeassistant/components/miele/translations/lt.json +36 -0
  361. homeassistant/components/miele/translations/pt.json +12 -0
  362. homeassistant/components/miele/translations/sk.json +8 -8
  363. homeassistant/components/mill/translations/ga.json +35 -0
  364. homeassistant/components/minecraft_server/translations/ga.json +12 -0
  365. homeassistant/components/minio/translations/ga.json +30 -0
  366. homeassistant/components/mjpeg/translations/lt.json +1 -0
  367. homeassistant/components/modbus/entity.py +4 -1
  368. homeassistant/components/modbus/translations/lt.json +2 -0
  369. homeassistant/components/modbus/translations/ru.json +2 -0
  370. homeassistant/components/modbus/translations/sk.json +1 -1
  371. homeassistant/components/modern_forms/translations/ga.json +20 -0
  372. homeassistant/components/moehlenhoff_alpha2/translations/ga.json +7 -0
  373. homeassistant/components/moon/translations/ga.json +10 -3
  374. homeassistant/components/moon/translations/sensor.ga.json +14 -0
  375. homeassistant/components/mopeka/translations/ga.json +12 -2
  376. homeassistant/components/motion_blinds/translations/ga.json +3 -0
  377. homeassistant/components/mqtt/translations/ca.json +11 -0
  378. homeassistant/components/mqtt/translations/cs.json +52 -0
  379. homeassistant/components/mqtt/translations/el.json +19 -0
  380. homeassistant/components/mqtt/translations/fr.json +11 -0
  381. homeassistant/components/mqtt/translations/ga.json +84 -4
  382. homeassistant/components/mqtt/translations/lt.json +66 -1
  383. homeassistant/components/mqtt/translations/nl.json +68 -0
  384. homeassistant/components/mqtt/translations/pt.json +81 -0
  385. homeassistant/components/mqtt/translations/ru.json +15 -0
  386. homeassistant/components/mqtt/translations/sk.json +8 -8
  387. homeassistant/components/mqtt/translations/zh-Hans.json +1 -0
  388. homeassistant/components/mysensors/translations/ga.json +17 -0
  389. homeassistant/components/mystrom/translations/ga.json +2 -1
  390. homeassistant/components/nam/translations/ga.json +26 -0
  391. homeassistant/components/nest/translations/ga.json +44 -3
  392. homeassistant/components/nest/translations/lt.json +3 -0
  393. homeassistant/components/nest/translations/sk.json +2 -2
  394. homeassistant/components/netatmo/translations/ga.json +5 -1
  395. homeassistant/components/netatmo/translations/sr-Latn.json +16 -0
  396. homeassistant/components/netatmo/translations/sr.json +16 -0
  397. homeassistant/components/nexia/manifest.json +1 -1
  398. homeassistant/components/nexia/translations/ga.json +8 -0
  399. homeassistant/components/nextcloud/translations/ga.json +14 -0
  400. homeassistant/components/nextcloud/translations/mk.json +13 -0
  401. homeassistant/components/nextdns/translations/ga.json +107 -0
  402. homeassistant/components/nextdns/translations/lt.json +3 -0
  403. homeassistant/components/nextdns/translations/sr.json +11 -0
  404. homeassistant/components/nfandroidtv/translations/ga.json +13 -1
  405. homeassistant/components/nibe_heatpump/translations/ga.json +5 -0
  406. homeassistant/components/nightscout/translations/ga.json +10 -0
  407. homeassistant/components/niko_home_control/translations/el.json +10 -1
  408. homeassistant/components/niko_home_control/translations/ga.json +10 -1
  409. homeassistant/components/niko_home_control/translations/lt.json +10 -1
  410. homeassistant/components/niko_home_control/translations/pt.json +10 -1
  411. homeassistant/components/nina/translations/ga.json +38 -2
  412. homeassistant/components/nissan_leaf/translations/ga.json +7 -0
  413. homeassistant/components/nobo_hub/translations/ga.json +29 -0
  414. homeassistant/components/notify/translations/ga.json +7 -1
  415. homeassistant/components/notion/translations/ga.json +49 -0
  416. homeassistant/components/nuheat/translations/ga.json +21 -0
  417. homeassistant/components/number/translations/ga.json +15 -1
  418. homeassistant/components/nut/translations/ga.json +131 -1
  419. homeassistant/components/nws/translations/ga.json +11 -0
  420. homeassistant/components/nws/translations/sr-Latn.json +9 -0
  421. homeassistant/components/nws/translations/sr.json +9 -0
  422. homeassistant/components/nx584/translations/ga.json +13 -1
  423. homeassistant/components/nzbget/translations/ga.json +23 -0
  424. homeassistant/components/nzbget/translations/lt.json +6 -0
  425. homeassistant/components/nzbget/translations/ru.json +6 -0
  426. homeassistant/components/obihai/translations/ga.json +19 -1
  427. homeassistant/components/octoprint/translations/ga.json +3 -0
  428. homeassistant/components/ollama/translations/cs.json +3 -3
  429. homeassistant/components/ollama/translations/lt.json +10 -0
  430. homeassistant/components/oncue/translations/ru.json +8 -1
  431. homeassistant/components/ondilo_ico/translations/ga.json +7 -1
  432. homeassistant/components/onewire/translations/ga.json +57 -1
  433. homeassistant/components/onewire/translations/lt.json +3 -0
  434. homeassistant/components/onvif/binary_sensor.py +1 -1
  435. homeassistant/components/onvif/sensor.py +1 -1
  436. homeassistant/components/onvif/translations/ga.json +42 -1
  437. homeassistant/components/open_meteo/translations/ga.json +15 -0
  438. homeassistant/components/open_router/translations/cs.json +2 -2
  439. homeassistant/components/open_router/translations/lt.json +7 -1
  440. homeassistant/components/openai_conversation/translations/cs.json +3 -3
  441. homeassistant/components/openai_conversation/translations/ga.json +12 -0
  442. homeassistant/components/openai_conversation/translations/lt.json +5 -0
  443. homeassistant/components/openhome/translations/ga.json +7 -0
  444. homeassistant/components/opentherm_gw/translations/ga.json +100 -2
  445. homeassistant/components/openuv/translations/ga.json +33 -0
  446. homeassistant/components/openweathermap/translations/ga.json +32 -0
  447. homeassistant/components/openweathermap/translations/sr-Latn.json +16 -0
  448. homeassistant/components/openweathermap/translations/sr.json +16 -0
  449. homeassistant/components/opower/manifest.json +1 -1
  450. homeassistant/components/opower/translations/ga.json +11 -2
  451. homeassistant/components/opower/translations/lt.json +7 -1
  452. homeassistant/components/opower/translations/sk.json +1 -1
  453. homeassistant/components/overkiz/translations/ga.json +71 -3
  454. homeassistant/components/overkiz/translations/select.ga.json +1 -0
  455. homeassistant/components/overkiz/translations/sensor.ga.json +29 -1
  456. homeassistant/components/ovo_energy/translations/ga.json +14 -1
  457. homeassistant/components/p1_monitor/translations/ga.json +22 -0
  458. homeassistant/components/panasonic_viera/translations/ga.json +30 -0
  459. homeassistant/components/peco/translations/ga.json +2 -0
  460. homeassistant/components/pegel_online/translations/ga.json +18 -0
  461. homeassistant/components/person/translations/ga.json +15 -0
  462. homeassistant/components/pi_hole/translations/ga.json +29 -0
  463. homeassistant/components/picnic/translations/ga.json +41 -0
  464. homeassistant/components/plaato/translations/ga.json +13 -0
  465. homeassistant/components/plant/translations/ga.json +12 -0
  466. homeassistant/components/playstation_network/__init__.py +4 -1
  467. homeassistant/components/playstation_network/config_flow.py +4 -13
  468. homeassistant/components/playstation_network/coordinator.py +55 -8
  469. homeassistant/components/playstation_network/helpers.py +4 -1
  470. homeassistant/components/playstation_network/notify.py +52 -27
  471. homeassistant/components/playstation_network/strings.json +11 -5
  472. homeassistant/components/playstation_network/translations/bg.json +0 -5
  473. homeassistant/components/playstation_network/translations/ca.json +7 -0
  474. homeassistant/components/playstation_network/translations/cs.json +11 -5
  475. homeassistant/components/playstation_network/translations/de.json +11 -5
  476. homeassistant/components/playstation_network/translations/el.json +54 -0
  477. homeassistant/components/playstation_network/translations/en-GB.json +11 -5
  478. homeassistant/components/playstation_network/translations/en.json +11 -5
  479. homeassistant/components/playstation_network/translations/es.json +1 -13
  480. homeassistant/components/playstation_network/translations/et.json +11 -5
  481. homeassistant/components/playstation_network/translations/fr.json +1 -1
  482. homeassistant/components/playstation_network/translations/ga.json +6 -17
  483. homeassistant/components/playstation_network/translations/it.json +1 -1
  484. homeassistant/components/playstation_network/translations/lt.json +17 -5
  485. homeassistant/components/playstation_network/translations/pt.json +11 -5
  486. homeassistant/components/playstation_network/translations/sk.json +11 -5
  487. homeassistant/components/playstation_network/translations/zh-Hans.json +11 -5
  488. homeassistant/components/playstation_network/translations/zh-Hant.json +11 -5
  489. homeassistant/components/plex/translations/ga.json +40 -0
  490. homeassistant/components/plugwise/translations/ga.json +105 -0
  491. homeassistant/components/plugwise/translations/select.ga.json +17 -0
  492. homeassistant/components/plum_lightpad/translations/ga.json +18 -0
  493. homeassistant/components/point/translations/ga.json +4 -0
  494. homeassistant/components/pooldose/translations/ca.json +56 -0
  495. homeassistant/components/pooldose/translations/el.json +48 -0
  496. homeassistant/components/pooldose/translations/ga.json +32 -0
  497. homeassistant/components/pooldose/translations/lt.json +102 -0
  498. homeassistant/components/pooldose/translations/nl.json +7 -2
  499. homeassistant/components/pooldose/translations/pt.json +102 -0
  500. homeassistant/components/poolsense/translations/ga.json +16 -0
  501. homeassistant/components/powerwall/translations/ga.json +35 -0
  502. homeassistant/components/profiler/translations/cs.json +2 -2
  503. homeassistant/components/profiler/translations/ga.json +11 -0
  504. homeassistant/components/progettihwsw/translations/ga.json +24 -1
  505. homeassistant/components/prosegur/translations/ga.json +39 -0
  506. homeassistant/components/prusalink/translations/sensor.ga.json +7 -0
  507. homeassistant/components/ps4/translations/ga.json +40 -0
  508. homeassistant/components/pure_energie/translations/ga.json +39 -0
  509. homeassistant/components/purpleair/manifest.json +1 -1
  510. homeassistant/components/purpleair/translations/ga.json +42 -0
  511. homeassistant/components/pushbullet/translations/ga.json +44 -0
  512. homeassistant/components/pushover/translations/ga.json +28 -0
  513. homeassistant/components/pvoutput/translations/ga.json +46 -0
  514. homeassistant/components/pvpc_hourly_pricing/translations/ga.json +1 -0
  515. homeassistant/components/qbus/translations/lt.json +8 -0
  516. homeassistant/components/radarr/translations/ga.json +40 -0
  517. homeassistant/components/radio_browser/translations/ga.json +9 -0
  518. homeassistant/components/radiotherm/translations/ga.json +23 -0
  519. homeassistant/components/rainbird/translations/ga.json +18 -2
  520. homeassistant/components/rainbird/translations/lt.json +4 -0
  521. homeassistant/components/rainbird/translations/ru.json +4 -0
  522. homeassistant/components/rainmachine/translations/ga.json +99 -4
  523. homeassistant/components/rainmachine/translations/sr-Latn.json +55 -0
  524. homeassistant/components/rainmachine/translations/sr.json +55 -0
  525. homeassistant/components/random/translations/ga.json +1 -0
  526. homeassistant/components/random/translations/lt.json +1 -0
  527. homeassistant/components/rapt_ble/translations/ga.json +21 -0
  528. homeassistant/components/rdw/translations/ga.json +36 -0
  529. homeassistant/components/recollect_waste/translations/ga.json +38 -0
  530. homeassistant/components/recorder/translations/cs.json +2 -2
  531. homeassistant/components/recorder/translations/ga.json +11 -0
  532. homeassistant/components/remember_the_milk/translations/cs.json +7 -7
  533. homeassistant/components/renault/translations/ga.json +76 -0
  534. homeassistant/components/reolink/manifest.json +1 -1
  535. homeassistant/components/reolink/number.py +3 -4
  536. homeassistant/components/reolink/select.py +0 -1
  537. homeassistant/components/reolink/translations/cs.json +14 -14
  538. homeassistant/components/reolink/translations/fr.json +3 -0
  539. homeassistant/components/reolink/translations/ga.json +47 -5
  540. homeassistant/components/reolink/translations/lt.json +9 -0
  541. homeassistant/components/reolink/translations/pt.json +9 -0
  542. homeassistant/components/rfxtrx/translations/ga.json +30 -0
  543. homeassistant/components/roborock/translations/sk.json +9 -9
  544. homeassistant/components/samsungtv/translations/lt.json +1 -0
  545. homeassistant/components/sensibo/translations/ga.json +4 -2
  546. homeassistant/components/sensibo/translations/lt.json +22 -0
  547. homeassistant/components/sensibo/translations/sensor.ga.json +7 -0
  548. homeassistant/components/sensor/translations/ga.json +3 -0
  549. homeassistant/components/sensor/translations/sk.json +1 -1
  550. homeassistant/components/shopping_list/translations/sr-Latn.json +11 -0
  551. homeassistant/components/shopping_list/translations/sr.json +11 -0
  552. homeassistant/components/sleep_as_android/translations/de.json +1 -1
  553. homeassistant/components/sleepiq/translations/lt.json +1 -0
  554. homeassistant/components/smartthings/translations/ru.json +9 -0
  555. homeassistant/components/snapcast/translations/sk.json +2 -2
  556. homeassistant/components/sonos/translations/lt.json +15 -0
  557. homeassistant/components/sonos/translations/pt.json +15 -0
  558. homeassistant/components/sun/translations/sk.json +1 -1
  559. homeassistant/components/switchbot_cloud/translations/lt.json +16 -0
  560. homeassistant/components/switchbot_cloud/translations/pt.json +16 -0
  561. homeassistant/components/tado/translations/sr-Latn.json +9 -0
  562. homeassistant/components/tado/translations/sr.json +9 -0
  563. homeassistant/components/tautulli/translations/sk.json +1 -1
  564. homeassistant/components/tellduslive/translations/ru.json +4 -0
  565. homeassistant/components/template/translations/el.json +50 -0
  566. homeassistant/components/template/translations/ga.json +1 -0
  567. homeassistant/components/template/translations/lt.json +196 -13
  568. homeassistant/components/template/translations/pl.json +140 -7
  569. homeassistant/components/template/translations/pt.json +149 -0
  570. homeassistant/components/template/translations/ru.json +8 -0
  571. homeassistant/components/template/translations/sk.json +6 -6
  572. homeassistant/components/template/translations/sv.json +31 -8
  573. homeassistant/components/tesla_fleet/__init__.py +0 -1
  574. homeassistant/components/teslemetry/translations/lt.json +4 -0
  575. homeassistant/components/teslemetry/translations/mk.json +5 -0
  576. homeassistant/components/togrill/translations/fr.json +4 -0
  577. homeassistant/components/togrill/translations/lt.json +49 -0
  578. homeassistant/components/togrill/translations/pt.json +49 -0
  579. homeassistant/components/tomorrowio/translations/lt.json +5 -1
  580. homeassistant/components/tplink/translations/lt.json +6 -2
  581. homeassistant/components/trafikverket_weatherstation/translations/sr-Latn.json +29 -0
  582. homeassistant/components/trafikverket_weatherstation/translations/sr.json +29 -0
  583. homeassistant/components/triggercmd/__init__.py +6 -2
  584. homeassistant/components/triggercmd/config_flow.py +3 -1
  585. homeassistant/components/triggercmd/manifest.json +1 -1
  586. homeassistant/components/triggercmd/switch.py +1 -0
  587. homeassistant/components/tts/translations/cs.json +1 -1
  588. homeassistant/components/tuya/translations/ga.json +8 -0
  589. homeassistant/components/tuya/translations/lt.json +1 -0
  590. homeassistant/components/tuya/translations/pl.json +1 -1
  591. homeassistant/components/tuya/translations/select.ga.json +4 -0
  592. homeassistant/components/unifiprotect/translations/ga.json +8 -0
  593. homeassistant/components/unifiprotect/translations/lt.json +6 -1
  594. homeassistant/components/vallox/translations/lt.json +5 -0
  595. homeassistant/components/velux/translations/cs.json +7 -0
  596. homeassistant/components/velux/translations/lt.json +7 -0
  597. homeassistant/components/velux/translations/nl.json +7 -0
  598. homeassistant/components/velux/translations/pt.json +7 -0
  599. homeassistant/components/volvo/translations/lt.json +173 -1
  600. homeassistant/components/volvo/translations/pt.json +137 -0
  601. homeassistant/components/volvo/translations/sk.json +1 -1
  602. homeassistant/components/wallbox/translations/sk.json +1 -1
  603. homeassistant/components/waze_travel_time/translations/lt.json +2 -0
  604. homeassistant/components/weather/translations/ga.json +3 -0
  605. homeassistant/components/weather/translations/sr-Latn.json +24 -7
  606. homeassistant/components/weather/translations/sr.json +81 -0
  607. homeassistant/components/weatherflow_cloud/translations/sr-Latn.json +18 -0
  608. homeassistant/components/weatherflow_cloud/translations/sr.json +18 -0
  609. homeassistant/components/webostv/translations/lt.json +11 -4
  610. homeassistant/components/webostv/translations/ru.json +9 -2
  611. homeassistant/components/websocket_api/http.py +13 -2
  612. homeassistant/components/withings/translations/sk.json +1 -1
  613. homeassistant/components/xiaomi_miio/translations/lt.json +3 -0
  614. homeassistant/components/yalexs_ble/__init__.py +37 -7
  615. homeassistant/components/yalexs_ble/config_cache.py +31 -0
  616. homeassistant/components/yalexs_ble/config_flow.py +80 -35
  617. homeassistant/components/yalexs_ble/strings.json +10 -5
  618. homeassistant/components/yalexs_ble/translations/bg.json +1 -7
  619. homeassistant/components/yalexs_ble/translations/ca.json +2 -12
  620. homeassistant/components/yalexs_ble/translations/cs.json +2 -12
  621. homeassistant/components/yalexs_ble/translations/de.json +10 -5
  622. homeassistant/components/yalexs_ble/translations/el.json +2 -12
  623. homeassistant/components/yalexs_ble/translations/en-GB.json +9 -4
  624. homeassistant/components/yalexs_ble/translations/en.json +10 -5
  625. homeassistant/components/yalexs_ble/translations/es.json +2 -12
  626. homeassistant/components/yalexs_ble/translations/et.json +2 -12
  627. homeassistant/components/yalexs_ble/translations/fi.json +2 -12
  628. homeassistant/components/yalexs_ble/translations/fr.json +1 -2
  629. homeassistant/components/yalexs_ble/translations/hu.json +2 -12
  630. homeassistant/components/yalexs_ble/translations/id.json +2 -12
  631. homeassistant/components/yalexs_ble/translations/it.json +2 -12
  632. homeassistant/components/yalexs_ble/translations/ja.json +2 -12
  633. homeassistant/components/yalexs_ble/translations/ko.json +2 -12
  634. homeassistant/components/yalexs_ble/translations/lt.json +2 -12
  635. homeassistant/components/yalexs_ble/translations/lv.json +1 -7
  636. homeassistant/components/yalexs_ble/translations/nb.json +2 -12
  637. homeassistant/components/yalexs_ble/translations/nl.json +2 -12
  638. homeassistant/components/yalexs_ble/translations/pl.json +2 -12
  639. homeassistant/components/yalexs_ble/translations/pt-BR.json +2 -12
  640. homeassistant/components/yalexs_ble/translations/pt.json +2 -12
  641. homeassistant/components/yalexs_ble/translations/ro.json +2 -12
  642. homeassistant/components/yalexs_ble/translations/ru.json +2 -12
  643. homeassistant/components/yalexs_ble/translations/sk.json +2 -12
  644. homeassistant/components/yalexs_ble/translations/sv.json +2 -12
  645. homeassistant/components/yalexs_ble/translations/tr.json +2 -12
  646. homeassistant/components/yalexs_ble/translations/uk.json +2 -12
  647. homeassistant/components/yalexs_ble/translations/vi.json +0 -9
  648. homeassistant/components/yalexs_ble/translations/zh-Hans.json +2 -12
  649. homeassistant/components/yalexs_ble/translations/zh-Hant.json +10 -5
  650. homeassistant/components/yolink/translations/lt.json +13 -0
  651. homeassistant/components/yolink/translations/pt.json +13 -0
  652. homeassistant/components/zha/translations/fr.json +48 -0
  653. homeassistant/components/zha/translations/lt.json +69 -0
  654. homeassistant/components/zha/translations/pl.json +3 -0
  655. homeassistant/components/zha/translations/pt.json +69 -0
  656. homeassistant/components/zha/translations/sk.json +3 -3
  657. homeassistant/components/zwave_js/binary_sensor.py +14 -6
  658. homeassistant/components/zwave_js/translations/lt.json +10 -0
  659. homeassistant/components/zwave_js/translations/pt.json +10 -0
  660. homeassistant/components/zwave_js/translations/ru.json +3 -1
  661. homeassistant/components/zwave_js/translations/sk.json +2 -2
  662. homeassistant/components/zwave_me/translations/sk.json +1 -1
  663. homeassistant/const.py +1 -1
  664. homeassistant/generated/integrations.json +6 -0
  665. homeassistant/helpers/device_registry.py +37 -14
  666. homeassistant/helpers/entity_registry.py +68 -29
  667. homeassistant/package_constraints.txt +9 -5
  668. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/METADATA +1 -1
  669. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/RECORD +674 -602
  670. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/WHEEL +0 -0
  671. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/entry_points.txt +0 -0
  672. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/licenses/LICENSE.md +0 -0
  673. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  674. {homeassistant-2025.9.0b0.dist-info → homeassistant-2025.9.0b2.dist-info}/top_level.txt +0 -0
@@ -10,5 +10,27 @@
10
10
  }
11
11
  }
12
12
  }
13
+ },
14
+ "entity": {
15
+ "sensor": {
16
+ "power_produced_phase_l3": {
17
+ "name": "C\u00e9im L3 a th\u00e1irgtear cumhachta"
18
+ },
19
+ "power_production": {
20
+ "name": "T\u00e1irgeadh cumhachta"
21
+ },
22
+ "pulse_count": {
23
+ "name": "L\u00edon na b\u00edog"
24
+ },
25
+ "voltage_phase_l1": {
26
+ "name": "C\u00e9im voltais L1"
27
+ },
28
+ "voltage_phase_l2": {
29
+ "name": "C\u00e9im voltais L2"
30
+ },
31
+ "voltage_phase_l3": {
32
+ "name": "C\u00e9im voltais L3"
33
+ }
34
+ }
13
35
  }
14
36
  }
@@ -0,0 +1,30 @@
1
+ {
2
+ "config": {
3
+ "abort": {
4
+ "already_configured": "T\u00e1 an gl\u00e9as cumraithe cheana f\u00e9in",
5
+ "cannot_connect": "Theip ar an nascadh",
6
+ "unknown": "Earr\u00e1id gan choinne"
7
+ },
8
+ "error": {
9
+ "cannot_connect": "Theip ar an nascadh",
10
+ "invalid_pin_code": "Bh\u00ed an UAP a chuir t\u00fa isteach neamhbhail\u00ed"
11
+ },
12
+ "step": {
13
+ "pairing": {
14
+ "data": {
15
+ "pin": "C\u00f3id UAP"
16
+ },
17
+ "description": "Cuir isteach an PIN a thaispe\u00e1ntar ar do theilif\u00eds",
18
+ "title": "P\u00e9ire\u00e1il"
19
+ },
20
+ "user": {
21
+ "data": {
22
+ "host": "Seoladh IP",
23
+ "name": "Ainm"
24
+ },
25
+ "description": "Cuir isteach seoladh IP do theilif\u00edse Panasonic Viera",
26
+ "title": "Socraigh do theilif\u00eds"
27
+ }
28
+ }
29
+ }
30
+ }
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "config": {
3
3
  "abort": {
4
+ "already_configured": "T\u00e1 an tseirbh\u00eds cumraithe cheana f\u00e9in",
4
5
  "incompatible_meter": "N\u00edl do mh\u00e9adar comhoiri\u00fanach le seice\u00e1il m\u00e9adair chliste."
5
6
  },
6
7
  "error": {
@@ -14,6 +15,7 @@
14
15
  "step": {
15
16
  "user": {
16
17
  "data": {
18
+ "county": "Contae",
17
19
  "phone_number": "Uimhir theileaf\u00f3in"
18
20
  },
19
21
  "data_description": {
@@ -32,8 +32,26 @@
32
32
  },
33
33
  "entity": {
34
34
  "sensor": {
35
+ "air_temperature": {
36
+ "name": "Teocht an aeir"
37
+ },
38
+ "clearance_height": {
39
+ "name": "Airde imr\u00e9itigh"
40
+ },
41
+ "oxygen_level": {
42
+ "name": "Leibh\u00e9al ocsaigine"
43
+ },
44
+ "water_flow": {
45
+ "name": "Sreabhadh toirte uisce"
46
+ },
35
47
  "water_level": {
36
48
  "name": "Leibh\u00e9al an uisce"
49
+ },
50
+ "water_speed": {
51
+ "name": "Luas sreafa uisce"
52
+ },
53
+ "water_temperature": {
54
+ "name": "Teocht an uisce"
37
55
  }
38
56
  }
39
57
  },
@@ -0,0 +1,15 @@
1
+ {
2
+ "entity_component": {
3
+ "_": {
4
+ "state": {
5
+ "home": "Baile",
6
+ "not_home": "Ar shi\u00fal"
7
+ },
8
+ "state_attributes": {
9
+ "device_trackers": {
10
+ "name": "Rianaitheoir\u00ed gl\u00e9asanna"
11
+ }
12
+ }
13
+ }
14
+ }
15
+ }
@@ -1,39 +1,66 @@
1
1
  {
2
2
  "entity": {
3
+ "binary_sensor": {
4
+ "status": {
5
+ "name": "St\u00e1das"
6
+ }
7
+ },
3
8
  "sensor": {
4
9
  "ads_blocked": {
5
10
  "name": "F\u00f3gra\u00ed bloc\u00e1ilte"
6
11
  },
7
12
  "ads_blocked_today": {
13
+ "name": "F\u00f3gra\u00ed bloc\u00e1ilte inniu",
8
14
  "unit_of_measurement": "f\u00f3gra\u00ed"
9
15
  },
16
+ "ads_percentage_today": {
17
+ "name": "C\u00e9atad\u00e1n f\u00f3gra\u00ed bloc\u00e1ilte inniu"
18
+ },
10
19
  "clients_ever_seen": {
20
+ "name": "Cliaint feicthe",
11
21
  "unit_of_measurement": "cliaint"
12
22
  },
13
23
  "dns_queries": {
14
24
  "name": "Fiosr\u00fach\u00e1in DNS"
15
25
  },
16
26
  "dns_queries_today": {
27
+ "name": "Fiosr\u00fach\u00e1in DNS inniu",
17
28
  "unit_of_measurement": "fiosr\u00fach\u00e1in"
18
29
  },
19
30
  "domains_being_blocked": {
31
+ "name": "Fearainn bloc\u00e1ilte",
20
32
  "unit_of_measurement": "fearainn"
21
33
  },
22
34
  "percent_ads_blocked": {
23
35
  "name": "C\u00e9atad\u00e1n f\u00f3gra\u00ed bloc\u00e1ilte"
24
36
  },
25
37
  "queries_cached": {
38
+ "name": "Fiosr\u00fach\u00e1in DNS i dtaisce",
26
39
  "unit_of_measurement": "fiosr\u00fach\u00e1in"
27
40
  },
28
41
  "queries_forwarded": {
42
+ "name": "Ceisteanna DNS curtha ar aghaidh",
29
43
  "unit_of_measurement": "fiosr\u00fach\u00e1in"
30
44
  },
31
45
  "unique_clients": {
46
+ "name": "Cliant uath\u00fala DNS",
32
47
  "unit_of_measurement": "cliaint"
33
48
  },
34
49
  "unique_domains": {
50
+ "name": "Fearainn uath\u00fala DNS",
35
51
  "unit_of_measurement": "fearainn"
36
52
  }
53
+ },
54
+ "update": {
55
+ "core_update_available": {
56
+ "name": "Nuashonr\u00fa cro\u00ed ar f\u00e1il"
57
+ },
58
+ "ftl_update_available": {
59
+ "name": "Nuashonr\u00fa FTL ar f\u00e1il"
60
+ },
61
+ "web_update_available": {
62
+ "name": "Nuashonr\u00fa gr\u00e9as\u00e1in ar f\u00e1il"
63
+ }
37
64
  }
38
65
  },
39
66
  "issues": {
@@ -44,8 +71,10 @@
44
71
  },
45
72
  "services": {
46
73
  "disable": {
74
+ "description": "D\u00edchumasa\u00edonn s\u00e9 Pi-hole(\u00ed) cumraithe ar feadh tamaill.",
47
75
  "fields": {
48
76
  "duration": {
77
+ "description": "An t-am ar cheart an Pi-hole a dh\u00edchumas\u00fa.",
49
78
  "name": "Fad"
50
79
  }
51
80
  },
@@ -1,5 +1,46 @@
1
1
  {
2
+ "config": {
3
+ "abort": {
4
+ "already_configured": "T\u00e1 an gl\u00e9as cumraithe cheana f\u00e9in",
5
+ "reauth_successful": "D'\u00e9irigh leis an athfh\u00edordheimhni\u00fa"
6
+ },
7
+ "error": {
8
+ "cannot_connect": "Theip ar an nascadh",
9
+ "different_account": "Ba ch\u00f3ir go mbeadh an cuntas c\u00e9anna leis an gceann a \u00fas\u00e1ideadh chun an comhth\u00e1th\u00fa a chur ar bun",
10
+ "invalid_auth": "F\u00edordheimhni\u00fa neamhbhail\u00ed",
11
+ "unknown": "Earr\u00e1id gan choinne"
12
+ },
13
+ "step": {
14
+ "user": {
15
+ "data": {
16
+ "country_code": "C\u00f3d t\u00edre",
17
+ "password": "Pasfhocal",
18
+ "username": "Ainm \u00fas\u00e1ideora"
19
+ }
20
+ }
21
+ }
22
+ },
2
23
  "entity": {
24
+ "sensor": {
25
+ "cart_items_count": {
26
+ "name": "L\u00edon na m\u00edreanna sa chairt"
27
+ },
28
+ "cart_total_price": {
29
+ "name": "Praghas ioml\u00e1n an chairt"
30
+ },
31
+ "last_order_delivery_time": {
32
+ "name": "Am seachadta an ordaithe dheireanaigh"
33
+ },
34
+ "last_order_max_order_time": {
35
+ "name": "Uasmh\u00e9id ama ordaithe an ordaithe dheireanaigh"
36
+ },
37
+ "last_order_slot_end": {
38
+ "name": "Deireadh sliot\u00e1n an ordaithe dheireanaigh"
39
+ },
40
+ "last_order_slot_start": {
41
+ "name": "T\u00fas sliot\u00e1n an ordaithe dheireanaigh"
42
+ }
43
+ },
3
44
  "todo": {
4
45
  "shopping_cart": {
5
46
  "name": "Cairt siopad\u00f3ireachta"
@@ -0,0 +1,13 @@
1
+ {
2
+ "options": {
3
+ "step": {
4
+ "user": {
5
+ "title": "Roghanna le haghaidh Plato"
6
+ },
7
+ "webhook": {
8
+ "description": "Eolas faoin ngr\u00e9as\u00e1n gr\u00e9as\u00e1in:\n\n- URL: `{webhook_url}`\n- Method: POST",
9
+ "title": "Roghanna le haghaidh Aerghlas\u00e1il Plato"
10
+ }
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "entity_component": {
3
+ "_": {
4
+ "name": "Monat\u00f3ir Planda\u00ed",
5
+ "state": {
6
+ "ok": "Ceart go leor",
7
+ "problem": "Fadhb"
8
+ }
9
+ }
10
+ },
11
+ "title": "Monat\u00f3ir Planda\u00ed"
12
+ }
@@ -9,6 +9,7 @@ from .const import CONF_NPSSO
9
9
  from .coordinator import (
10
10
  PlaystationNetworkConfigEntry,
11
11
  PlaystationNetworkFriendDataCoordinator,
12
+ PlaystationNetworkFriendlistCoordinator,
12
13
  PlaystationNetworkGroupsUpdateCoordinator,
13
14
  PlaystationNetworkRuntimeData,
14
15
  PlaystationNetworkTrophyTitlesCoordinator,
@@ -40,6 +41,8 @@ async def async_setup_entry(
40
41
  groups = PlaystationNetworkGroupsUpdateCoordinator(hass, psn, entry)
41
42
  await groups.async_config_entry_first_refresh()
42
43
 
44
+ friends_list = PlaystationNetworkFriendlistCoordinator(hass, psn, entry)
45
+
43
46
  friends = {}
44
47
 
45
48
  for subentry_id, subentry in entry.subentries.items():
@@ -50,7 +53,7 @@ async def async_setup_entry(
50
53
  friends[subentry_id] = friend_coordinator
51
54
 
52
55
  entry.runtime_data = PlaystationNetworkRuntimeData(
53
- coordinator, trophy_titles, groups, friends
56
+ coordinator, trophy_titles, groups, friends, friends_list
54
57
  )
55
58
 
56
59
  await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
@@ -10,7 +10,6 @@ from psnawp_api.core.psnawp_exceptions import (
10
10
  PSNAWPInvalidTokenError,
11
11
  PSNAWPNotFoundError,
12
12
  )
13
- from psnawp_api.models import User
14
13
  from psnawp_api.utils.misc import parse_npsso_token
15
14
  import voluptuous as vol
16
15
 
@@ -169,13 +168,12 @@ class PlaystationNetworkConfigFlow(ConfigFlow, domain=DOMAIN):
169
168
  class FriendSubentryFlowHandler(ConfigSubentryFlow):
170
169
  """Handle subentry flow for adding a friend."""
171
170
 
172
- friends_list: dict[str, User]
173
-
174
171
  async def async_step_user(
175
172
  self, user_input: dict[str, Any] | None = None
176
173
  ) -> SubentryFlowResult:
177
174
  """Subentry user flow."""
178
175
  config_entry: PlaystationNetworkConfigEntry = self._get_entry()
176
+ friends_list = config_entry.runtime_data.user_data.psn.friends_list
179
177
 
180
178
  if user_input is not None:
181
179
  config_entries = self.hass.config_entries.async_entries(DOMAIN)
@@ -190,19 +188,12 @@ class FriendSubentryFlowHandler(ConfigSubentryFlow):
190
188
  return self.async_abort(reason="already_configured")
191
189
 
192
190
  return self.async_create_entry(
193
- title=self.friends_list[user_input[CONF_ACCOUNT_ID]].online_id,
191
+ title=friends_list[user_input[CONF_ACCOUNT_ID]].online_id,
194
192
  data={},
195
193
  unique_id=user_input[CONF_ACCOUNT_ID],
196
194
  )
197
195
 
198
- self.friends_list = await self.hass.async_add_executor_job(
199
- lambda: {
200
- friend.account_id: friend
201
- for friend in config_entry.runtime_data.user_data.psn.user.friends_list()
202
- }
203
- )
204
-
205
- if not self.friends_list:
196
+ if not friends_list:
206
197
  return self.async_abort(reason="no_friends")
207
198
 
208
199
  options = [
@@ -210,7 +201,7 @@ class FriendSubentryFlowHandler(ConfigSubentryFlow):
210
201
  value=friend.account_id,
211
202
  label=friend.online_id,
212
203
  )
213
- for friend in self.friends_list.values()
204
+ for friend in friends_list.values()
214
205
  ]
215
206
 
216
207
  return self.async_show_form(
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  from abc import abstractmethod
6
6
  from dataclasses import dataclass
7
7
  from datetime import timedelta
8
+ import json
8
9
  import logging
9
10
  from typing import TYPE_CHECKING, Any
10
11
 
@@ -21,12 +22,14 @@ from psnawp_api.models.group.group_datatypes import GroupDetails
21
22
  from psnawp_api.models.trophies import TrophyTitle
22
23
 
23
24
  from homeassistant.config_entries import ConfigEntry, ConfigSubentry
25
+ from homeassistant.const import CONF_NAME
24
26
  from homeassistant.core import HomeAssistant
25
27
  from homeassistant.exceptions import (
26
28
  ConfigEntryAuthFailed,
27
29
  ConfigEntryError,
28
30
  ConfigEntryNotReady,
29
31
  )
32
+ from homeassistant.helpers import issue_registry as ir
30
33
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
31
34
 
32
35
  from .const import DOMAIN
@@ -45,6 +48,7 @@ class PlaystationNetworkRuntimeData:
45
48
  trophy_titles: PlaystationNetworkTrophyTitlesCoordinator
46
49
  groups: PlaystationNetworkGroupsUpdateCoordinator
47
50
  friends: dict[str, PlaystationNetworkFriendDataCoordinator]
51
+ friends_list: PlaystationNetworkFriendlistCoordinator
48
52
 
49
53
 
50
54
  class PlayStationNetworkBaseCoordinator[_DataT](DataUpdateCoordinator[_DataT]):
@@ -134,6 +138,25 @@ class PlaystationNetworkTrophyTitlesCoordinator(
134
138
  return self.psn.trophy_titles
135
139
 
136
140
 
141
+ class PlaystationNetworkFriendlistCoordinator(
142
+ PlayStationNetworkBaseCoordinator[dict[str, User]]
143
+ ):
144
+ """Friend list data update coordinator for PSN."""
145
+
146
+ _update_interval = timedelta(hours=3)
147
+
148
+ async def update_data(self) -> dict[str, User]:
149
+ """Update trophy titles data."""
150
+
151
+ self.psn.friends_list = await self.hass.async_add_executor_job(
152
+ lambda: {
153
+ friend.account_id: friend for friend in self.psn.user.friends_list()
154
+ }
155
+ )
156
+ await self.config_entry.runtime_data.user_data.async_request_refresh()
157
+ return self.psn.friends_list
158
+
159
+
137
160
  class PlaystationNetworkGroupsUpdateCoordinator(
138
161
  PlayStationNetworkBaseCoordinator[dict[str, GroupDetails]]
139
162
  ):
@@ -143,13 +166,34 @@ class PlaystationNetworkGroupsUpdateCoordinator(
143
166
 
144
167
  async def update_data(self) -> dict[str, GroupDetails]:
145
168
  """Update groups data."""
146
- return await self.hass.async_add_executor_job(
147
- lambda: {
148
- group_info.group_id: group_info.get_group_information()
149
- for group_info in self.psn.client.get_groups()
150
- if not group_info.group_id.startswith("~")
151
- }
152
- )
169
+ try:
170
+ return await self.hass.async_add_executor_job(
171
+ lambda: {
172
+ group_info.group_id: group_info.get_group_information()
173
+ for group_info in self.psn.client.get_groups()
174
+ if not group_info.group_id.startswith("~")
175
+ }
176
+ )
177
+ except PSNAWPForbiddenError as e:
178
+ try:
179
+ error = json.loads(e.args[0])
180
+ except json.JSONDecodeError as err:
181
+ raise PSNAWPServerError from err
182
+ ir.async_create_issue(
183
+ self.hass,
184
+ DOMAIN,
185
+ f"group_chat_forbidden_{self.config_entry.entry_id}",
186
+ is_fixable=False,
187
+ issue_domain=DOMAIN,
188
+ severity=ir.IssueSeverity.ERROR,
189
+ translation_key="group_chat_forbidden",
190
+ translation_placeholders={
191
+ CONF_NAME: self.config_entry.title,
192
+ "error_message": error["error"]["message"],
193
+ },
194
+ )
195
+ await self.async_shutdown()
196
+ return {}
153
197
 
154
198
 
155
199
  class PlaystationNetworkFriendDataCoordinator(
@@ -178,7 +222,10 @@ class PlaystationNetworkFriendDataCoordinator(
178
222
  """Set up the coordinator."""
179
223
  if TYPE_CHECKING:
180
224
  assert self.subentry.unique_id
181
- self.user = self.psn.psn.user(account_id=self.subentry.unique_id)
225
+ self.user = self.psn.friends_list.get(
226
+ self.subentry.unique_id
227
+ ) or self.psn.psn.user(account_id=self.subentry.unique_id)
228
+
182
229
  self.profile = self.user.profile()
183
230
 
184
231
  async def _async_setup(self) -> None:
@@ -60,7 +60,7 @@ class PlaystationNetwork:
60
60
  self.legacy_profile: dict[str, Any] | None = None
61
61
  self.trophy_titles: list[TrophyTitle] = []
62
62
  self._title_icon_urls: dict[str, str] = {}
63
- self.friends_list: dict[str, User] | None = None
63
+ self.friends_list: dict[str, User] = {}
64
64
 
65
65
  def _setup(self) -> None:
66
66
  """Setup PSN."""
@@ -68,6 +68,9 @@ class PlaystationNetwork:
68
68
  self.client = self.psn.me()
69
69
  self.shareable_profile_link = self.client.get_shareable_profile_link()
70
70
  self.trophy_titles = list(self.user.trophy_titles(page_size=500))
71
+ self.friends_list = {
72
+ friend.account_id: friend for friend in self.user.friends_list()
73
+ }
71
74
 
72
75
  async def async_setup(self) -> None:
73
76
  """Setup PSN."""
@@ -18,7 +18,7 @@ from homeassistant.components.notify import (
18
18
  NotifyEntity,
19
19
  NotifyEntityDescription,
20
20
  )
21
- from homeassistant.config_entries import ConfigSubentry
21
+ from homeassistant.const import CONF_NAME
22
22
  from homeassistant.core import HomeAssistant, callback
23
23
  from homeassistant.exceptions import HomeAssistantError
24
24
  from homeassistant.helpers import entity_registry as er
@@ -27,7 +27,7 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
27
27
  from .const import DOMAIN
28
28
  from .coordinator import (
29
29
  PlaystationNetworkConfigEntry,
30
- PlaystationNetworkFriendDataCoordinator,
30
+ PlaystationNetworkFriendlistCoordinator,
31
31
  PlaystationNetworkGroupsUpdateCoordinator,
32
32
  )
33
33
  from .entity import PlaystationNetworkServiceEntity
@@ -50,8 +50,10 @@ async def async_setup_entry(
50
50
  """Set up the notify entity platform."""
51
51
 
52
52
  coordinator = config_entry.runtime_data.groups
53
+ friends_list = config_entry.runtime_data.friends_list
53
54
 
54
55
  groups_added: set[str] = set()
56
+ friends_added: set[str] = set()
55
57
  entity_registry = er.async_get(hass)
56
58
 
57
59
  @callback
@@ -78,16 +80,32 @@ async def async_setup_entry(
78
80
  coordinator.async_add_listener(add_entities)
79
81
  add_entities()
80
82
 
81
- for subentry_id, friend_coordinator in config_entry.runtime_data.friends.items():
82
- async_add_entities(
83
- [
84
- PlaystationNetworkDirectMessageNotifyEntity(
85
- friend_coordinator,
86
- config_entry.subentries[subentry_id],
87
- )
88
- ],
89
- config_subentry_id=subentry_id,
90
- )
83
+ @callback
84
+ def add_dm_entities() -> None:
85
+ nonlocal friends_added
86
+
87
+ new_friends = set(friends_list.psn.friends_list.keys()) - friends_added
88
+ if new_friends:
89
+ async_add_entities(
90
+ [
91
+ PlaystationNetworkDirectMessageNotifyEntity(
92
+ friends_list, account_id
93
+ )
94
+ for account_id in new_friends
95
+ ],
96
+ )
97
+ friends_added |= new_friends
98
+ deleted_friends = friends_added - set(coordinator.psn.friends_list.keys())
99
+ for account_id in deleted_friends:
100
+ if entity_id := entity_registry.async_get_entity_id(
101
+ NOTIFY_DOMAIN,
102
+ DOMAIN,
103
+ f"{coordinator.config_entry.unique_id}_{account_id}_{PlaystationNetworkNotify.DIRECT_MESSAGE}",
104
+ ):
105
+ entity_registry.async_remove(entity_id)
106
+
107
+ friends_list.async_add_listener(add_dm_entities)
108
+ add_dm_entities()
91
109
 
92
110
 
93
111
  class PlaystationNetworkNotifyBaseEntity(PlaystationNetworkServiceEntity, NotifyEntity):
@@ -95,12 +113,17 @@ class PlaystationNetworkNotifyBaseEntity(PlaystationNetworkServiceEntity, Notify
95
113
 
96
114
  group: Group | None = None
97
115
 
98
- def send_message(self, message: str, title: str | None = None) -> None:
99
- """Send a message."""
116
+ def _send_message(self, message: str) -> None:
117
+ """Send message."""
100
118
  if TYPE_CHECKING:
101
119
  assert self.group
120
+ self.group.send_message(message)
121
+
122
+ def send_message(self, message: str, title: str | None = None) -> None:
123
+ """Send a message."""
124
+
102
125
  try:
103
- self.group.send_message(message)
126
+ self._send_message(message)
104
127
  except PSNAWPNotFoundError as e:
105
128
  raise HomeAssistantError(
106
129
  translation_domain=DOMAIN,
@@ -138,7 +161,7 @@ class PlaystationNetworkNotifyEntity(PlaystationNetworkNotifyBaseEntity):
138
161
  key=group_id,
139
162
  translation_key=PlaystationNetworkNotify.GROUP_MESSAGE,
140
163
  translation_placeholders={
141
- "group_name": group_details["groupName"]["value"]
164
+ CONF_NAME: group_details["groupName"]["value"]
142
165
  or ", ".join(
143
166
  member["onlineId"]
144
167
  for member in group_details["members"]
@@ -153,27 +176,29 @@ class PlaystationNetworkNotifyEntity(PlaystationNetworkNotifyBaseEntity):
153
176
  class PlaystationNetworkDirectMessageNotifyEntity(PlaystationNetworkNotifyBaseEntity):
154
177
  """Representation of a PlayStation Network notify entity for sending direct messages."""
155
178
 
156
- coordinator: PlaystationNetworkFriendDataCoordinator
179
+ coordinator: PlaystationNetworkFriendlistCoordinator
157
180
 
158
181
  def __init__(
159
182
  self,
160
- coordinator: PlaystationNetworkFriendDataCoordinator,
161
- subentry: ConfigSubentry,
183
+ coordinator: PlaystationNetworkFriendlistCoordinator,
184
+ account_id: str,
162
185
  ) -> None:
163
186
  """Initialize a notification entity."""
164
-
187
+ self.account_id = account_id
165
188
  self.entity_description = NotifyEntityDescription(
166
- key=PlaystationNetworkNotify.DIRECT_MESSAGE,
189
+ key=f"{account_id}_{PlaystationNetworkNotify.DIRECT_MESSAGE}",
167
190
  translation_key=PlaystationNetworkNotify.DIRECT_MESSAGE,
191
+ translation_placeholders={
192
+ CONF_NAME: coordinator.psn.friends_list[account_id].online_id
193
+ },
194
+ entity_registry_enabled_default=False,
168
195
  )
169
196
 
170
- super().__init__(coordinator, self.entity_description, subentry)
171
-
172
- def send_message(self, message: str, title: str | None = None) -> None:
173
- """Send a message."""
197
+ super().__init__(coordinator, self.entity_description)
174
198
 
199
+ def _send_message(self, message: str) -> None:
175
200
  if not self.group:
176
201
  self.group = self.coordinator.psn.psn.group(
177
- users_list=[self.coordinator.user]
202
+ users_list=[self.coordinator.psn.friends_list[self.account_id]]
178
203
  )
179
- super().send_message(message, title)
204
+ super()._send_message(message)
@@ -82,13 +82,13 @@
82
82
  "message": "Data retrieval failed when trying to access the PlayStation Network."
83
83
  },
84
84
  "group_invalid": {
85
- "message": "Failed to send message to group {group_name}. The group is invalid or does not exist."
85
+ "message": "Failed to send message to group {name}. The group is invalid or does not exist."
86
86
  },
87
87
  "send_message_forbidden": {
88
- "message": "Failed to send message to group {group_name}. You are not allowed to send messages to this group."
88
+ "message": "Failed to send message to {name}. You are not allowed to send messages to this group or friend."
89
89
  },
90
90
  "send_message_failed": {
91
- "message": "Failed to send message to group {group_name}. Try again later."
91
+ "message": "Failed to send message to {name}. Try again later."
92
92
  },
93
93
  "user_profile_private": {
94
94
  "message": "Unable to retrieve data for {user}. Privacy settings restrict access to activity."
@@ -158,11 +158,17 @@
158
158
  },
159
159
  "notify": {
160
160
  "group_message": {
161
- "name": "Group: {group_name}"
161
+ "name": "Group: {name}"
162
162
  },
163
163
  "direct_message": {
164
- "name": "Direct message"
164
+ "name": "Direct message: {name}"
165
165
  }
166
166
  }
167
+ },
168
+ "issues": {
169
+ "group_chat_forbidden": {
170
+ "title": "Failed to retrieve group chats for {name}",
171
+ "description": "The PlayStation Network integration was unable to retrieve group chats for **{name}**.\n\nThis is likely due to insufficient permissions (Error: `{error_message}`).\n\nTo resolve this issue, please ensure the account's chat and messaging feature is not restricted by parental controls or other privacy settings.\n\nIf the restriction is intentional, you can safely ignore this message."
172
+ }
167
173
  }
168
174
  }