homeassistant 2025.7.0b0__py3-none-any.whl → 2025.7.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 (312) hide show
  1. homeassistant/components/aemet/sensor.py +1 -1
  2. homeassistant/components/airq/coordinator.py +2 -2
  3. homeassistant/components/alexa_devices/__init__.py +5 -2
  4. homeassistant/components/alexa_devices/notify.py +2 -0
  5. homeassistant/components/alexa_devices/quality_scale.yaml +1 -1
  6. homeassistant/components/alexa_devices/strings.json +11 -4
  7. homeassistant/components/alexa_devices/switch.py +2 -0
  8. homeassistant/components/alexa_devices/translations/bg.json +6 -4
  9. homeassistant/components/alexa_devices/translations/cs.json +12 -5
  10. homeassistant/components/alexa_devices/translations/de.json +14 -7
  11. homeassistant/components/alexa_devices/translations/el.json +12 -5
  12. homeassistant/components/alexa_devices/translations/en.json +12 -5
  13. homeassistant/components/alexa_devices/translations/es.json +12 -5
  14. homeassistant/components/alexa_devices/translations/et.json +12 -5
  15. homeassistant/components/alexa_devices/translations/ga.json +0 -6
  16. homeassistant/components/alexa_devices/translations/he.json +0 -4
  17. homeassistant/components/alexa_devices/translations/hu.json +0 -4
  18. homeassistant/components/alexa_devices/translations/id.json +1 -0
  19. homeassistant/components/alexa_devices/translations/lt.json +0 -4
  20. homeassistant/components/alexa_devices/translations/mk.json +12 -0
  21. homeassistant/components/alexa_devices/translations/nl.json +0 -4
  22. homeassistant/components/alexa_devices/translations/pl.json +0 -4
  23. homeassistant/components/alexa_devices/translations/pt.json +0 -4
  24. homeassistant/components/alexa_devices/translations/ru.json +4 -5
  25. homeassistant/components/alexa_devices/translations/sk.json +12 -5
  26. homeassistant/components/alexa_devices/translations/sv.json +17 -5
  27. homeassistant/components/alexa_devices/translations/tr.json +0 -4
  28. homeassistant/components/alexa_devices/translations/zh-Hans.json +27 -5
  29. homeassistant/components/alexa_devices/translations/zh-Hant.json +12 -5
  30. homeassistant/components/alexa_devices/utils.py +40 -0
  31. homeassistant/components/altruist/translations/id.json +11 -0
  32. homeassistant/components/anthropic/__init__.py +14 -1
  33. homeassistant/components/anthropic/translations/bg.json +21 -0
  34. homeassistant/components/anthropic/translations/ga.json +32 -1
  35. homeassistant/components/anthropic/translations/id.json +19 -0
  36. homeassistant/components/anthropic/translations/ru.json +30 -0
  37. homeassistant/components/backup/translations/de.json +1 -1
  38. homeassistant/components/buienradar/sensor.py +0 -1
  39. homeassistant/components/cambridge_audio/translations/sv.json +1 -1
  40. homeassistant/components/comelit/translations/de.json +1 -1
  41. homeassistant/components/counter/translations/sv.json +2 -2
  42. homeassistant/components/demo/translations/select.sv.json +2 -2
  43. homeassistant/components/derivative/translations/ga.json +20 -0
  44. homeassistant/components/derivative/translations/ru.json +3 -0
  45. homeassistant/components/devolo_home_control/translations/bg.json +6 -0
  46. homeassistant/components/devolo_home_control/translations/id.json +5 -0
  47. homeassistant/components/devolo_home_control/translations/sv.json +10 -0
  48. homeassistant/components/devolo_home_control/translations/zh-Hans.json +10 -0
  49. homeassistant/components/dlink/manifest.json +1 -1
  50. homeassistant/components/ecovacs/translations/sv.json +1 -1
  51. homeassistant/components/enphase_envoy/translations/sv.json +5 -2
  52. homeassistant/components/ezviz/translations/bg.json +6 -0
  53. homeassistant/components/ezviz/translations/mk.json +13 -0
  54. homeassistant/components/ezviz/translations/sv.json +10 -0
  55. homeassistant/components/ezviz/translations/zh-Hans.json +10 -0
  56. homeassistant/components/fronius/translations/sv.json +2 -2
  57. homeassistant/components/frontend/manifest.json +1 -1
  58. homeassistant/components/goodwe/translations/sv.json +5 -5
  59. homeassistant/components/google_generative_ai_conversation/__init__.py +21 -0
  60. homeassistant/components/google_generative_ai_conversation/config_flow.py +72 -36
  61. homeassistant/components/google_generative_ai_conversation/const.py +15 -2
  62. homeassistant/components/google_generative_ai_conversation/diagnostics.py +1 -0
  63. homeassistant/components/google_generative_ai_conversation/entity.py +7 -2
  64. homeassistant/components/google_generative_ai_conversation/helpers.py +73 -0
  65. homeassistant/components/google_generative_ai_conversation/strings.json +28 -1
  66. homeassistant/components/google_generative_ai_conversation/translations/bg.json +19 -0
  67. homeassistant/components/google_generative_ai_conversation/translations/cs.json +28 -0
  68. homeassistant/components/google_generative_ai_conversation/translations/de.json +28 -0
  69. homeassistant/components/google_generative_ai_conversation/translations/el.json +28 -0
  70. homeassistant/components/google_generative_ai_conversation/translations/en.json +28 -0
  71. homeassistant/components/google_generative_ai_conversation/translations/es.json +28 -0
  72. homeassistant/components/google_generative_ai_conversation/translations/et.json +28 -0
  73. homeassistant/components/google_generative_ai_conversation/translations/ga.json +9 -0
  74. homeassistant/components/google_generative_ai_conversation/translations/id.json +30 -0
  75. homeassistant/components/google_generative_ai_conversation/translations/mk.json +11 -0
  76. homeassistant/components/google_generative_ai_conversation/translations/ru.json +67 -0
  77. homeassistant/components/google_generative_ai_conversation/translations/sk.json +28 -0
  78. homeassistant/components/google_generative_ai_conversation/translations/sv.json +23 -0
  79. homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +28 -0
  80. homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +28 -0
  81. homeassistant/components/google_generative_ai_conversation/tts.py +48 -106
  82. homeassistant/components/group/translations/el.json +18 -18
  83. homeassistant/components/habitica/const.py +1 -1
  84. homeassistant/components/harmony/translations/select.sv.json +1 -1
  85. homeassistant/components/harmony/translations/sv.json +1 -1
  86. homeassistant/components/homeassistant_hardware/firmware_config_flow.py +89 -7
  87. homeassistant/components/homeassistant_hardware/strings.json +2 -1
  88. homeassistant/components/homeassistant_hardware/translations/de.json +1 -0
  89. homeassistant/components/homeassistant_hardware/translations/en-GB.json +1 -0
  90. homeassistant/components/homeassistant_hardware/translations/en.json +1 -0
  91. homeassistant/components/homeassistant_hardware/translations/ga.json +9 -0
  92. homeassistant/components/homeassistant_hardware/translations/mk.json +9 -0
  93. homeassistant/components/homeassistant_sky_connect/config_flow.py +1 -1
  94. homeassistant/components/homeassistant_sky_connect/strings.json +4 -2
  95. homeassistant/components/homeassistant_sky_connect/translations/de.json +2 -0
  96. homeassistant/components/homeassistant_sky_connect/translations/en-GB.json +2 -0
  97. homeassistant/components/homeassistant_sky_connect/translations/en.json +2 -0
  98. homeassistant/components/homeassistant_sky_connect/translations/ga.json +10 -0
  99. homeassistant/components/homeassistant_sky_connect/translations/mk.json +7 -0
  100. homeassistant/components/homeassistant_yellow/strings.json +2 -1
  101. homeassistant/components/homeassistant_yellow/translations/bg.json +0 -1
  102. homeassistant/components/homeassistant_yellow/translations/cs.json +0 -1
  103. homeassistant/components/homeassistant_yellow/translations/de.json +1 -0
  104. homeassistant/components/homeassistant_yellow/translations/el.json +0 -1
  105. homeassistant/components/homeassistant_yellow/translations/en-GB.json +2 -1
  106. homeassistant/components/homeassistant_yellow/translations/en.json +2 -1
  107. homeassistant/components/homeassistant_yellow/translations/es.json +0 -1
  108. homeassistant/components/homeassistant_yellow/translations/et.json +0 -1
  109. homeassistant/components/homeassistant_yellow/translations/fr.json +0 -1
  110. homeassistant/components/homeassistant_yellow/translations/ga.json +5 -0
  111. homeassistant/components/homeassistant_yellow/translations/he.json +0 -1
  112. homeassistant/components/homeassistant_yellow/translations/hu.json +0 -1
  113. homeassistant/components/homeassistant_yellow/translations/id.json +0 -1
  114. homeassistant/components/homeassistant_yellow/translations/it.json +0 -1
  115. homeassistant/components/homeassistant_yellow/translations/ja.json +0 -1
  116. homeassistant/components/homeassistant_yellow/translations/lt.json +0 -1
  117. homeassistant/components/homeassistant_yellow/translations/pt.json +0 -1
  118. homeassistant/components/homeassistant_yellow/translations/ru.json +0 -1
  119. homeassistant/components/homeassistant_yellow/translations/sk.json +0 -1
  120. homeassistant/components/homeassistant_yellow/translations/sv.json +0 -1
  121. homeassistant/components/homeassistant_yellow/translations/tr.json +0 -1
  122. homeassistant/components/homeassistant_yellow/translations/zh-Hans.json +0 -1
  123. homeassistant/components/homeassistant_yellow/translations/zh-Hant.json +0 -1
  124. homeassistant/components/homewizard/translations/sv.json +3 -1
  125. homeassistant/components/http/auth.py +1 -1
  126. homeassistant/components/image/__init__.py +34 -3
  127. homeassistant/components/input_number/translations/sv.json +2 -2
  128. homeassistant/components/input_select/translations/sv.json +6 -6
  129. homeassistant/components/input_text/translations/sv.json +1 -1
  130. homeassistant/components/iron_os/manifest.json +1 -1
  131. homeassistant/components/iron_os/translations/sv.json +1 -1
  132. homeassistant/components/keenetic_ndms2/translations/id.json +3 -0
  133. homeassistant/components/lamarzocco/entity.py +19 -1
  134. homeassistant/components/lamarzocco/number.py +0 -4
  135. homeassistant/components/lamarzocco/sensor.py +2 -4
  136. homeassistant/components/lamarzocco/translations/sv.json +3 -3
  137. homeassistant/components/lametric/translations/sv.json +2 -2
  138. homeassistant/components/lametric/update.py +1 -1
  139. homeassistant/components/lg_thinq/translations/sv.json +5 -5
  140. homeassistant/components/litterrobot/translations/bg.json +4 -0
  141. homeassistant/components/litterrobot/translations/ga.json +3 -0
  142. homeassistant/components/matter/translations/id.json +5 -0
  143. homeassistant/components/matter/vacuum.py +38 -26
  144. homeassistant/components/meater/__init__.py +5 -1
  145. homeassistant/components/meater/coordinator.py +4 -2
  146. homeassistant/components/media_source/local_source.py +21 -4
  147. homeassistant/components/minecraft_server/translations/sv.json +1 -1
  148. homeassistant/components/motioneye/translations/sv.json +1 -1
  149. homeassistant/components/mqtt/translations/bg.json +10 -0
  150. homeassistant/components/mqtt/translations/cs.json +19 -0
  151. homeassistant/components/mqtt/translations/el.json +21 -0
  152. homeassistant/components/mqtt/translations/fi.json +3 -0
  153. homeassistant/components/mqtt/translations/ga.json +25 -0
  154. homeassistant/components/mqtt/translations/mk.json +23 -0
  155. homeassistant/components/mqtt/translations/ru.json +1 -0
  156. homeassistant/components/mqtt/translations/sv.json +24 -0
  157. homeassistant/components/mqtt/translations/zh-Hans.json +26 -0
  158. homeassistant/components/mqtt/translations/zh-Hant.json +19 -0
  159. homeassistant/components/music_assistant/button.py +0 -6
  160. homeassistant/components/ntfy/translations/id.json +13 -0
  161. homeassistant/components/ntfy/translations/sv.json +1 -0
  162. homeassistant/components/number/translations/sv.json +2 -2
  163. homeassistant/components/nut/config_flow.py +4 -2
  164. homeassistant/components/ohme/translations/sv.json +1 -1
  165. homeassistant/components/ollama/__init__.py +8 -0
  166. homeassistant/components/ollama/const.py +2 -0
  167. homeassistant/components/ollama/translations/bg.json +19 -0
  168. homeassistant/components/ollama/translations/ga.json +31 -1
  169. homeassistant/components/ollama/translations/id.json +18 -0
  170. homeassistant/components/ollama/translations/mk.json +13 -1
  171. homeassistant/components/ollama/translations/sv.json +1 -0
  172. homeassistant/components/onewire/translations/sv.json +4 -4
  173. homeassistant/components/openai_conversation/__init__.py +8 -0
  174. homeassistant/components/openai_conversation/const.py +1 -1
  175. homeassistant/components/openai_conversation/conversation.py +1 -1
  176. homeassistant/components/openai_conversation/translations/bg.json +26 -0
  177. homeassistant/components/openai_conversation/translations/id.json +23 -0
  178. homeassistant/components/openai_conversation/translations/mk.json +44 -0
  179. homeassistant/components/openai_conversation/translations/sv.json +4 -0
  180. homeassistant/components/playstation_network/diagnostics.py +55 -0
  181. homeassistant/components/playstation_network/quality_scale.yaml +1 -1
  182. homeassistant/components/playstation_network/translations/bg.json +25 -1
  183. homeassistant/components/playstation_network/translations/es.json +1 -1
  184. homeassistant/components/playstation_network/translations/ga.json +31 -0
  185. homeassistant/components/playstation_network/translations/id.json +14 -0
  186. homeassistant/components/playstation_network/translations/mk.json +18 -0
  187. homeassistant/components/playstation_network/translations/pl.json +73 -0
  188. homeassistant/components/playstation_network/translations/sv.json +29 -0
  189. homeassistant/components/playstation_network/translations/zh-Hans.json +29 -0
  190. homeassistant/components/plugwise/translations/sv.json +2 -2
  191. homeassistant/components/qnap/translations/sv.json +1 -1
  192. homeassistant/components/random/translations/sv.json +4 -4
  193. homeassistant/components/remote_calendar/translations/fi.json +34 -0
  194. homeassistant/components/select/translations/sv.json +10 -10
  195. homeassistant/components/smarla/__init__.py +2 -2
  196. homeassistant/components/sonos/translations/bg.json +5 -0
  197. homeassistant/components/sonos/translations/cs.json +6 -0
  198. homeassistant/components/sonos/translations/el.json +6 -0
  199. homeassistant/components/sonos/translations/ga.json +8 -0
  200. homeassistant/components/sonos/translations/mk.json +10 -0
  201. homeassistant/components/sonos/translations/ru.json +6 -0
  202. homeassistant/components/sonos/translations/sv.json +6 -0
  203. homeassistant/components/sonos/translations/zh-Hans.json +9 -0
  204. homeassistant/components/sonos/translations/zh-Hant.json +6 -0
  205. homeassistant/components/subaru/strings.json +2 -2
  206. homeassistant/components/subaru/translations/ca.json +0 -1
  207. homeassistant/components/subaru/translations/cs.json +0 -2
  208. homeassistant/components/subaru/translations/de.json +2 -2
  209. homeassistant/components/subaru/translations/el.json +0 -2
  210. homeassistant/components/subaru/translations/en-GB.json +0 -2
  211. homeassistant/components/subaru/translations/en.json +2 -2
  212. homeassistant/components/subaru/translations/es.json +0 -2
  213. homeassistant/components/subaru/translations/et.json +0 -2
  214. homeassistant/components/subaru/translations/fi.json +0 -1
  215. homeassistant/components/subaru/translations/hu.json +0 -2
  216. homeassistant/components/subaru/translations/it.json +0 -1
  217. homeassistant/components/subaru/translations/ja.json +0 -1
  218. homeassistant/components/subaru/translations/ko.json +0 -1
  219. homeassistant/components/subaru/translations/lt.json +0 -2
  220. homeassistant/components/subaru/translations/pt-BR.json +0 -1
  221. homeassistant/components/subaru/translations/pt.json +0 -2
  222. homeassistant/components/subaru/translations/ru.json +0 -2
  223. homeassistant/components/subaru/translations/sk.json +0 -2
  224. homeassistant/components/subaru/translations/sv.json +0 -2
  225. homeassistant/components/subaru/translations/tr.json +0 -2
  226. homeassistant/components/subaru/translations/zh-Hans.json +0 -2
  227. homeassistant/components/subaru/translations/zh-Hant.json +0 -2
  228. homeassistant/components/switchbot/translations/bg.json +26 -0
  229. homeassistant/components/switchbot/translations/ga.json +33 -0
  230. homeassistant/components/switchbot/translations/id.json +19 -0
  231. homeassistant/components/switchbot/translations/mk.json +49 -0
  232. homeassistant/components/switchbot/translations/sv.json +54 -0
  233. homeassistant/components/switchbot/translations/zh-Hans.json +53 -0
  234. homeassistant/components/telegram_bot/__init__.py +20 -4
  235. homeassistant/components/telegram_bot/bot.py +33 -29
  236. homeassistant/components/telegram_bot/config_flow.py +66 -20
  237. homeassistant/components/telegram_bot/const.py +1 -1
  238. homeassistant/components/telegram_bot/strings.json +33 -10
  239. homeassistant/components/telegram_bot/translations/bg.json +0 -1
  240. homeassistant/components/telegram_bot/translations/cs.json +35 -12
  241. homeassistant/components/telegram_bot/translations/de.json +35 -12
  242. homeassistant/components/telegram_bot/translations/el.json +35 -12
  243. homeassistant/components/telegram_bot/translations/en-GB.json +6 -11
  244. homeassistant/components/telegram_bot/translations/en.json +35 -12
  245. homeassistant/components/telegram_bot/translations/es.json +35 -12
  246. homeassistant/components/telegram_bot/translations/et.json +34 -11
  247. homeassistant/components/telegram_bot/translations/fr.json +5 -12
  248. homeassistant/components/telegram_bot/translations/ga.json +5 -11
  249. homeassistant/components/telegram_bot/translations/he.json +3 -8
  250. homeassistant/components/telegram_bot/translations/hu.json +5 -12
  251. homeassistant/components/telegram_bot/translations/id.json +0 -5
  252. homeassistant/components/telegram_bot/translations/it.json +2 -5
  253. homeassistant/components/telegram_bot/translations/lt.json +5 -12
  254. homeassistant/components/telegram_bot/translations/mk.json +7 -5
  255. homeassistant/components/telegram_bot/translations/nl.json +5 -12
  256. homeassistant/components/telegram_bot/translations/pt.json +5 -12
  257. homeassistant/components/telegram_bot/translations/ru.json +12 -11
  258. homeassistant/components/telegram_bot/translations/sk.json +35 -12
  259. homeassistant/components/telegram_bot/translations/sv.json +28 -12
  260. homeassistant/components/telegram_bot/translations/tr.json +5 -12
  261. homeassistant/components/telegram_bot/translations/zh-Hans.json +35 -12
  262. homeassistant/components/telegram_bot/translations/zh-Hant.json +35 -12
  263. homeassistant/components/template/translations/sv.json +5 -5
  264. homeassistant/components/text/translations/sv.json +1 -1
  265. homeassistant/components/tilt_pi/translations/id.json +11 -0
  266. homeassistant/components/tts/__init__.py +15 -0
  267. homeassistant/components/unifiprotect/translations/zh-Hans.json +3 -3
  268. homeassistant/components/utility_meter/translations/sv.json +9 -9
  269. homeassistant/components/vegehub/translations/bg.json +2 -0
  270. homeassistant/components/vegehub/translations/id.json +11 -0
  271. homeassistant/components/vegehub/translations/sv.json +2 -1
  272. homeassistant/components/vicare/translations/sv.json +2 -2
  273. homeassistant/components/whirlpool/translations/sv.json +12 -12
  274. homeassistant/components/wyoming/translations/sv.json +2 -2
  275. homeassistant/components/zha/translations/bg.json +23 -0
  276. homeassistant/components/zha/translations/el.json +10 -0
  277. homeassistant/components/zha/translations/ga.json +20 -0
  278. homeassistant/components/zha/translations/id.json +6 -0
  279. homeassistant/components/zha/translations/sv.json +23 -0
  280. homeassistant/components/zha/translations/zh-Hans.json +50 -0
  281. homeassistant/components/zwave_js/api.py +1 -1
  282. homeassistant/components/zwave_js/config_flow.py +15 -68
  283. homeassistant/components/zwave_js/manifest.json +1 -1
  284. homeassistant/components/zwave_js/strings.json +1 -5
  285. homeassistant/components/zwave_js/translations/bg.json +0 -3
  286. homeassistant/components/zwave_js/translations/cs.json +0 -5
  287. homeassistant/components/zwave_js/translations/de.json +1 -5
  288. homeassistant/components/zwave_js/translations/el.json +0 -5
  289. homeassistant/components/zwave_js/translations/en-GB.json +1 -5
  290. homeassistant/components/zwave_js/translations/en.json +1 -5
  291. homeassistant/components/zwave_js/translations/es.json +1 -5
  292. homeassistant/components/zwave_js/translations/et.json +0 -5
  293. homeassistant/components/zwave_js/translations/ga.json +0 -5
  294. homeassistant/components/zwave_js/translations/hu.json +0 -5
  295. homeassistant/components/zwave_js/translations/lt.json +0 -5
  296. homeassistant/components/zwave_js/translations/mk.json +0 -5
  297. homeassistant/components/zwave_js/translations/pt.json +0 -5
  298. homeassistant/components/zwave_js/translations/ru.json +0 -5
  299. homeassistant/components/zwave_js/translations/sk.json +0 -5
  300. homeassistant/components/zwave_js/translations/sv.json +0 -5
  301. homeassistant/components/zwave_js/translations/zh-Hans.json +0 -5
  302. homeassistant/components/zwave_js/translations/zh-Hant.json +1 -5
  303. homeassistant/config_entries.py +6 -0
  304. homeassistant/const.py +1 -1
  305. homeassistant/package_constraints.txt +1 -1
  306. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/METADATA +1 -1
  307. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/RECORD +312 -294
  308. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/WHEEL +0 -0
  309. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/entry_points.txt +0 -0
  310. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/licenses/LICENSE.md +0 -0
  311. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  312. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b2.dist-info}/top_level.txt +0 -0
@@ -209,6 +209,7 @@
209
209
  "entity_platform_config": {
210
210
  "data": {
211
211
  "device_class": "\u8bbe\u5907\u7c7b\u522b",
212
+ "entity_category": "\u5b9e\u4f53\u7c7b\u522b",
212
213
  "fan_feature_direction": "\u652f\u6301\u65b9\u5411",
213
214
  "fan_feature_oscillation": "\u652f\u6301\u6446\u52a8",
214
215
  "fan_feature_preset_modes": "\u652f\u6301\u9884\u8bbe\u6a21\u5f0f",
@@ -220,6 +221,8 @@
220
221
  "unit_of_measurement": "\u5ea6\u91cf\u5355\u4f4d"
221
222
  },
222
223
  "data_description": {
224
+ "device_class": "{platform}\u5b9e\u4f53\u7684\u8bbe\u5907\u7c7b\u522b\u3002\u3010\u4e86\u89e3\u8be6\u60c5\u3002\u3011({url}#device_class)",
225
+ "entity_category": "\u5141\u8bb8\u5c06\u5b9e\u4f53\u6807\u8bb0\u4e3a\u8bbe\u5907\u914d\u7f6e\u6216\u8bca\u65ad\u3002\u5177\u6709\u7c7b\u522b\u7684\u5b9e\u4f53\u4e0d\u4f1a\u66b4\u9732\u7ed9\u4e91\u7aef\u3001Alexa \u6216 Google Assistant \u7ec4\u4ef6\uff0c\u4e5f\u4e0d\u4f1a\u5305\u542b\u5728\u5bf9\u8bbe\u5907\u6216\u533a\u57df\u7684\u95f4\u63a5\u64cd\u4f5c\u8c03\u7528\u4e2d\u3002\u4f20\u611f\u5668\u5b9e\u4f53\u65e0\u6cd5\u5206\u914d\u8bbe\u5907\u914d\u7f6e\u7c7b\u522b\u3002\u3010\u4e86\u89e3\u66f4\u591a\u3011(https://developers.home-assistant.io/docs/core/entity/#registry-properties)",
223
226
  "fan_feature_direction": "\u98ce\u6247\u652f\u6301\u65b9\u5411\u3002",
224
227
  "fan_feature_oscillation": "\u98ce\u6247\u652f\u6301\u6446\u52a8\u3002",
225
228
  "fan_feature_preset_modes": "\u98ce\u6247\u652f\u6301\u9884\u8bbe\u6a21\u5f0f\u3002",
@@ -914,6 +917,12 @@
914
917
  "switch": "\u5f00\u5173"
915
918
  }
916
919
  },
920
+ "entity_category": {
921
+ "options": {
922
+ "config": "\u914d\u7f6e",
923
+ "diagnostic": "\u8bca\u65ad"
924
+ }
925
+ },
917
926
  "light_schema": {
918
927
  "options": {
919
928
  "basic": "\u9ed8\u8ba4\u67b6\u6784",
@@ -1014,5 +1023,22 @@
1014
1023
  "description": "\u4ece YAML \u914d\u7f6e\u91cd\u65b0\u52a0\u8f7d MQTT \u5b9e\u4f53\u3002",
1015
1024
  "name": "\u91cd\u65b0\u52a0\u8f7d"
1016
1025
  }
1026
+ },
1027
+ "triggers": {
1028
+ "mqtt": {
1029
+ "description": "\u5f53\u5728\u7ed9\u5b9a\u7684 MQTT \u4e3b\u9898\u4e0a\u6536\u5230\u7279\u5b9a\u6d88\u606f\u65f6\u3002",
1030
+ "description_configured": "\u5f53\u6536\u5230\u67d0\u4e2a MQTT \u6d88\u606f\u65f6",
1031
+ "fields": {
1032
+ "payload": {
1033
+ "description": "\u5bfc\u81f4\u89e6\u53d1\u7684\u6709\u6548\u8f7d\u8377\u3002",
1034
+ "name": "\u6709\u6548\u8f7d\u8377"
1035
+ },
1036
+ "topic": {
1037
+ "description": "\u8981\u76d1\u542c\u7684 MQTT \u4e3b\u9898\u3002",
1038
+ "name": "\u4e3b\u9898"
1039
+ }
1040
+ },
1041
+ "name": "MQTT"
1042
+ }
1017
1043
  }
1018
1044
  }
@@ -221,6 +221,8 @@
221
221
  "unit_of_measurement": "\u6e2c\u91cf\u55ae\u4f4d"
222
222
  },
223
223
  "data_description": {
224
+ "device_class": "{platform}\u5be6\u9ad4\u7684\u88dd\u7f6e\u985e\u5225\u3002 [\u8a73\u7d30\u77ad\u89e3\u3002 ]( {url} #device_class)",
225
+ "entity_category": "\u5141\u8a31\u5c07\u5be6\u9ad4\u6a19\u8a18\u70ba\u88dd\u7f6e\u8a2d\u5b9a\u6216\u8a3a\u65b7\u8cc7\u6599\u3002\u5177\u6709\u985e\u5225\u7684\u5be6\u9ad4\u5c07\u4e0d\u6703\u9023\u7d50\u81f3\u96f2\u7aef\u3001Alexa \u6216 Google Assistant \u5143\u4ef6\uff0c\u4e5f\u4e0d\u6703\u5305\u542b\u5728\u5c0d\u88dd\u7f6e\u6216\u5340\u57df\u7684\u9593\u63a5\u64cd\u4f5c\u547c\u53eb\u4e2d\u3002\u611f\u6e2c\u5668\u5be6\u9ad4\u7121\u6cd5\u6307\u6d3e\u70ba\u88dd\u7f6e\u8a2d\u5b9a\u985e\u5225\u3002[\u8a73\u7d30\u8cc7\u8a0a\u3002](https://developers.home-assistant.io/docs/core/entity/#registry-properties)",
224
226
  "fan_feature_direction": "\u98a8\u6247\u652f\u63f4\u65b9\u5411\u3002",
225
227
  "fan_feature_oscillation": "\u98a8\u6247\u652f\u63f4\u64fa\u52d5\u3002",
226
228
  "fan_feature_preset_modes": "\u98a8\u6247\u652f\u63f4\u9810\u7f6e\u6a21\u5f0f\u3002",
@@ -1021,5 +1023,22 @@
1021
1023
  "description": "\u91cd\u65b0\u8f09\u5165 YAML \u8a2d\u5b9a MQTT \u5be6\u9ad4\u3002",
1022
1024
  "name": "\u91cd\u65b0\u8f09\u5165"
1023
1025
  }
1026
+ },
1027
+ "triggers": {
1028
+ "mqtt": {
1029
+ "description": "\u7576\u6307\u5b9a\u7684 MQTT \u4e3b\u984c\u63a5\u6536\u5230\u6307\u5b9a\u8a0a\u606f\u6642\u3002",
1030
+ "description_configured": "\u7576\u6536\u5230 MQTT \u8a0a\u606f\u6642",
1031
+ "fields": {
1032
+ "payload": {
1033
+ "description": "\u89f8\u767c\u7684\u8ca0\u8f09\u3002",
1034
+ "name": "\u8ca0\u8f09"
1035
+ },
1036
+ "topic": {
1037
+ "description": "\u76e3\u807d\u7684 MQTT \u4e3b\u984c\u3002",
1038
+ "name": "\u4e3b\u984c"
1039
+ }
1040
+ },
1041
+ "name": "MQTT"
1042
+ }
1024
1043
  }
1025
1044
  }
@@ -41,12 +41,6 @@ class MusicAssistantFavoriteButton(MusicAssistantEntity, ButtonEntity):
41
41
  translation_key="favorite_now_playing",
42
42
  )
43
43
 
44
- @property
45
- def available(self) -> bool:
46
- """Return availability of entity."""
47
- # mark the button as unavailable if the player has no current media item
48
- return super().available and self.player.current_media is not None
49
-
50
44
  @catch_musicassistant_error
51
45
  async def async_press(self) -> None:
52
46
  """Handle the button press command."""
@@ -16,6 +16,19 @@
16
16
  "token": "Token akses"
17
17
  }
18
18
  },
19
+ "reconfigure": {
20
+ "data": {
21
+ "password": "Kata Sandi",
22
+ "token": "Token akses",
23
+ "username": "Nama Pengguna"
24
+ }
25
+ },
26
+ "reconfigure_user": {
27
+ "data": {
28
+ "password": "Kata Sandi",
29
+ "token": "Token akses"
30
+ }
31
+ },
19
32
  "user": {
20
33
  "data": {
21
34
  "verify_ssl": "Verifikasi sertifikat SSL"
@@ -169,6 +169,7 @@
169
169
  "unit_of_measurement": "meddelanden"
170
170
  },
171
171
  "messages_remaining": {
172
+ "name": "\u00c5terst\u00e5ende meddelanden",
172
173
  "unit_of_measurement": "meddelanden"
173
174
  },
174
175
  "reservations": {
@@ -12,10 +12,10 @@
12
12
  "name": "Nummer",
13
13
  "state_attributes": {
14
14
  "max": {
15
- "name": "Maximum"
15
+ "name": "H\u00f6gst"
16
16
  },
17
17
  "min": {
18
- "name": "Minimum"
18
+ "name": "L\u00e4gst"
19
19
  },
20
20
  "mode": {
21
21
  "name": "L\u00e4ge",
@@ -39,10 +39,12 @@ def _base_schema(
39
39
  base_schema = {
40
40
  vol.Optional(CONF_HOST, default=nut_config.get(CONF_HOST) or DEFAULT_HOST): str,
41
41
  vol.Optional(CONF_PORT, default=nut_config.get(CONF_PORT) or DEFAULT_PORT): int,
42
- vol.Optional(CONF_USERNAME, default=nut_config.get(CONF_USERNAME) or ""): str,
42
+ vol.Optional(
43
+ CONF_USERNAME, default=nut_config.get(CONF_USERNAME, vol.UNDEFINED)
44
+ ): str,
43
45
  vol.Optional(
44
46
  CONF_PASSWORD,
45
- default=PASSWORD_NOT_CHANGED if use_password_not_changed else "",
47
+ default=PASSWORD_NOT_CHANGED if use_password_not_changed else vol.UNDEFINED,
46
48
  ): str,
47
49
  }
48
50
 
@@ -61,7 +61,7 @@
61
61
  "charge_mode": {
62
62
  "name": "Laddningsl\u00e4ge",
63
63
  "state": {
64
- "max_charge": "Max laddning",
64
+ "max_charge": "Maxladdning",
65
65
  "paused": "Pausad",
66
66
  "smart_charge": "Smart laddning"
67
67
  }
@@ -27,6 +27,7 @@ from .const import (
27
27
  CONF_NUM_CTX,
28
28
  CONF_PROMPT,
29
29
  CONF_THINK,
30
+ DEFAULT_NAME,
30
31
  DEFAULT_TIMEOUT,
31
32
  DOMAIN,
32
33
  )
@@ -132,12 +133,19 @@ async def async_migrate_integration(hass: HomeAssistant) -> None:
132
133
  device.id,
133
134
  remove_config_entry_id=entry.entry_id,
134
135
  )
136
+ else:
137
+ device_registry.async_update_device(
138
+ device.id,
139
+ remove_config_entry_id=entry.entry_id,
140
+ remove_config_subentry_id=None,
141
+ )
135
142
 
136
143
  if not use_existing:
137
144
  await hass.config_entries.async_remove(entry.entry_id)
138
145
  else:
139
146
  hass.config_entries.async_update_entry(
140
147
  entry,
148
+ title=DEFAULT_NAME,
141
149
  options={},
142
150
  version=2,
143
151
  )
@@ -2,6 +2,8 @@
2
2
 
3
3
  DOMAIN = "ollama"
4
4
 
5
+ DEFAULT_NAME = "Ollama"
6
+
5
7
  CONF_MODEL = "model"
6
8
  CONF_PROMPT = "prompt"
7
9
  CONF_THINK = "think"
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "config": {
3
+ "abort": {
4
+ "already_configured": "\u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430"
5
+ },
3
6
  "error": {
4
7
  "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
5
8
  "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430"
@@ -12,5 +15,21 @@
12
15
  }
13
16
  }
14
17
  }
18
+ },
19
+ "config_subentries": {
20
+ "conversation": {
21
+ "abort": {
22
+ "reconfigure_successful": "\u041f\u0440\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e"
23
+ },
24
+ "step": {
25
+ "set_options": {
26
+ "data": {
27
+ "llm_hass_api": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 Home Assistant",
28
+ "name": "\u0418\u043c\u0435",
29
+ "prompt": "\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438"
30
+ }
31
+ }
32
+ }
33
+ }
15
34
  }
16
35
  }
@@ -1 +1,31 @@
1
- {}
1
+ {
2
+ "config_subentries": {
3
+ "conversation": {
4
+ "abort": {
5
+ "entry_not_loaded": "N\u00ed f\u00e9idir ruda\u00ed a chur leis agus an chumra\u00edocht d\u00edchumasaithe."
6
+ },
7
+ "entry_type": "Gn\u00edomhaire comhr\u00e1",
8
+ "initiate_flow": {
9
+ "reconfigure": "Athchumraigh gn\u00edomhaire comhr\u00e1",
10
+ "user": "Cuir gn\u00edomhaire comhr\u00e1 leis"
11
+ },
12
+ "step": {
13
+ "set_options": {
14
+ "data": {
15
+ "keep_alive": "Coinnigh beo",
16
+ "max_history": "Uasmh\u00e9id teachtaireachta\u00ed staire",
17
+ "num_ctx": "M\u00e9id na fuinneoige comhth\u00e9acs",
18
+ "prompt": "Treoracha",
19
+ "think": "Smaoinigh sula bhfreagra\u00edonn t\u00fa"
20
+ },
21
+ "data_description": {
22
+ "keep_alive": "Fad i soicind\u00ed a th\u00f3gann s\u00e9 ar Ollama an tsamhail a choinne\u00e1il i gcuimhne. -1 = neamhchinnte, 0 = riamh.",
23
+ "num_ctx": "Uasmh\u00e9id na dt\u00f3c\u00e1n t\u00e9acs is f\u00e9idir leis an tsamhail a phr\u00f3ise\u00e1il. \u00cdsligh chun RAM Ollama a laghd\u00fa, n\u00f3 m\u00e9adaigh le haghaidh l\u00edon m\u00f3r eintiteas nochta.",
24
+ "prompt": "Treoraigh conas ba ch\u00f3ir don LLM freagairt. Is f\u00e9idir \u00e9 seo a bheith ina theimpl\u00e9ad.",
25
+ "think": "M\u00e1 chuirtear ar chumas \u00e9, smaoineoidh an LLM sula bhfreagr\u00f3idh s\u00e9. Is f\u00e9idir leis seo feabhas a chur ar ch\u00e1il\u00edocht na bhfreagra\u00ed ach d\u2019fh\u00e9adfadh s\u00e9 moill a mh\u00e9ad\u00fa."
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "config": {
3
+ "abort": {
4
+ "already_configured": "Layanan sudah dikonfigurasi"
5
+ },
3
6
  "error": {
4
7
  "cannot_connect": "Gagal terhubung",
5
8
  "unknown": "Kesalahan tak terduga"
@@ -11,5 +14,20 @@
11
14
  }
12
15
  }
13
16
  }
17
+ },
18
+ "config_subentries": {
19
+ "conversation": {
20
+ "abort": {
21
+ "reconfigure_successful": "Konfigurasi ulang berhasil"
22
+ },
23
+ "step": {
24
+ "set_options": {
25
+ "data": {
26
+ "llm_hass_api": "Kendalikan Home Assistant",
27
+ "name": "Nama"
28
+ }
29
+ }
30
+ }
31
+ }
14
32
  }
15
33
  }
@@ -1 +1,13 @@
1
- {}
1
+ {
2
+ "config_subentries": {
3
+ "conversation": {
4
+ "step": {
5
+ "set_options": {
6
+ "data_description": {
7
+ "think": "\u0410\u043a\u043e \u0435 \u0432\u043a\u043b\u0443\u0447\u0435\u043d\u043e, LLM \u045c\u0435 \u0440\u0430\u0437\u043c\u0438\u0441\u043b\u0438 \u043f\u0440\u0435\u0434 \u0434\u0430 \u043e\u0434\u0433\u043e\u0432\u043e\u0440\u0438. \u041e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0433\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0438 \u043a\u0432\u0430\u043b\u0438\u0442\u0435\u0442\u043e\u0442 \u043d\u0430 \u043e\u0434\u0433\u043e\u0432\u043e\u0440\u043e\u0442, \u043d\u043e \u043c\u043e\u0436\u0435 \u0434\u0430 \u0433\u043e \u0437\u0433\u043e\u043b\u0435\u043c\u0438 \u0437\u0430\u0434\u043e\u0446\u043d\u0443\u0432\u0430\u045a\u0435\u0442\u043e."
8
+ }
9
+ }
10
+ }
11
+ }
12
+ }
13
+ }
@@ -26,6 +26,7 @@
26
26
  "config_subentries": {
27
27
  "conversation": {
28
28
  "abort": {
29
+ "entry_not_loaded": "Det g\u00e5r inte att l\u00e4gga till saker n\u00e4r konfigurationen \u00e4r inaktiverad.",
29
30
  "reconfigure_successful": "Omkonfigureringen lyckades"
30
31
  },
31
32
  "step": {
@@ -48,10 +48,10 @@
48
48
  "tempres": {
49
49
  "name": "Temperaturuppl\u00f6sning",
50
50
  "state": {
51
- "10": "10 bitar (0,25 \u00b0C, upp till 187,5 ms)",
52
- "11": "11 bitar (0,125 \u00b0C, upp till 375 ms)",
53
- "12": "12 bitar (0,0625 \u00b0C, l\u00e5ngsammast, upp till 750 ms)",
54
- "9": "9 bitar (0,5 \u00b0C, snabbast, upp till 93,75 ms)"
51
+ "10": "10 bitar (0,25 \u00b0C; upp till 187,5 ms)",
52
+ "11": "11 bitar (0,125 \u00b0C; upp till 375 ms)",
53
+ "12": "12 bitar (0,0625 \u00b0C; l\u00e5ngsammast, upp till 750 ms)",
54
+ "9": "9 bitar (0,5 \u00b0C,;snabbast, upp till 93,75 ms)"
55
55
  }
56
56
  }
57
57
  },
@@ -49,6 +49,7 @@ from .const import (
49
49
  CONF_REASONING_EFFORT,
50
50
  CONF_TEMPERATURE,
51
51
  CONF_TOP_P,
52
+ DEFAULT_NAME,
52
53
  DOMAIN,
53
54
  LOGGER,
54
55
  RECOMMENDED_CHAT_MODEL,
@@ -345,12 +346,19 @@ async def async_migrate_integration(hass: HomeAssistant) -> None:
345
346
  device.id,
346
347
  remove_config_entry_id=entry.entry_id,
347
348
  )
349
+ else:
350
+ device_registry.async_update_device(
351
+ device.id,
352
+ remove_config_entry_id=entry.entry_id,
353
+ remove_config_subentry_id=None,
354
+ )
348
355
 
349
356
  if not use_existing:
350
357
  await hass.config_entries.async_remove(entry.entry_id)
351
358
  else:
352
359
  hass.config_entries.async_update_entry(
353
360
  entry,
361
+ title=DEFAULT_NAME,
354
362
  options={},
355
363
  version=2,
356
364
  )
@@ -6,12 +6,12 @@ DOMAIN = "openai_conversation"
6
6
  LOGGER: logging.Logger = logging.getLogger(__package__)
7
7
 
8
8
  DEFAULT_CONVERSATION_NAME = "OpenAI Conversation"
9
+ DEFAULT_NAME = "OpenAI Conversation"
9
10
 
10
11
  CONF_CHAT_MODEL = "chat_model"
11
12
  CONF_FILENAMES = "filenames"
12
13
  CONF_MAX_TOKENS = "max_tokens"
13
14
  CONF_PROMPT = "prompt"
14
- CONF_PROMPT = "prompt"
15
15
  CONF_REASONING_EFFORT = "reasoning_effort"
16
16
  CONF_RECOMMENDED = "recommended"
17
17
  CONF_TEMPERATURE = "temperature"
@@ -247,7 +247,7 @@ class OpenAIConversationEntity(
247
247
  identifiers={(DOMAIN, subentry.subentry_id)},
248
248
  name=subentry.title,
249
249
  manufacturer="OpenAI",
250
- model=entry.data.get(CONF_CHAT_MODEL, RECOMMENDED_CHAT_MODEL),
250
+ model=subentry.data.get(CONF_CHAT_MODEL, RECOMMENDED_CHAT_MODEL),
251
251
  entry_type=dr.DeviceEntryType.SERVICE,
252
252
  )
253
253
  if self.subentry.data.get(CONF_LLM_HASS_API):
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "config": {
3
+ "abort": {
4
+ "already_configured": "\u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430"
5
+ },
3
6
  "error": {
4
7
  "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
5
8
  "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f",
@@ -13,6 +16,29 @@
13
16
  }
14
17
  }
15
18
  },
19
+ "config_subentries": {
20
+ "conversation": {
21
+ "abort": {
22
+ "reconfigure_successful": "\u041f\u0440\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e"
23
+ },
24
+ "step": {
25
+ "advanced": {
26
+ "data": {
27
+ "chat_model": "\u041c\u043e\u0434\u0435\u043b",
28
+ "temperature": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430"
29
+ },
30
+ "title": "\u0420\u0430\u0437\u0448\u0438\u0440\u0435\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438"
31
+ },
32
+ "init": {
33
+ "data": {
34
+ "llm_hass_api": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 Home Assistant",
35
+ "name": "\u0418\u043c\u0435",
36
+ "prompt": "\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438"
37
+ }
38
+ }
39
+ }
40
+ }
41
+ },
16
42
  "services": {
17
43
  "generate_content": {
18
44
  "fields": {
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "config": {
3
+ "abort": {
4
+ "already_configured": "Layanan sudah dikonfigurasi"
5
+ },
3
6
  "error": {
4
7
  "cannot_connect": "Gagal terhubung",
5
8
  "invalid_auth": "Autentikasi tidak valid",
@@ -13,6 +16,26 @@
13
16
  }
14
17
  }
15
18
  },
19
+ "config_subentries": {
20
+ "conversation": {
21
+ "abort": {
22
+ "reconfigure_successful": "Konfigurasi ulang berhasil"
23
+ },
24
+ "step": {
25
+ "advanced": {
26
+ "data": {
27
+ "chat_model": "Model"
28
+ }
29
+ },
30
+ "init": {
31
+ "data": {
32
+ "llm_hass_api": "Kendalikan Home Assistant",
33
+ "name": "Nama"
34
+ }
35
+ }
36
+ }
37
+ }
38
+ },
16
39
  "exceptions": {
17
40
  "invalid_config_entry": {
18
41
  "message": "Entri konfigurasi yang diberikan tidak valid. {config_entry} didapatkan"
@@ -1,4 +1,48 @@
1
1
  {
2
+ "config_subentries": {
3
+ "conversation": {
4
+ "abort": {
5
+ "entry_not_loaded": "\u041d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0434\u0430\u0432\u0430\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u0438 \u0434\u043e\u0434\u0435\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0458\u0430\u0442\u0430 \u0435 \u043e\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d\u0430."
6
+ },
7
+ "entry_type": "\u0410\u0433\u0435\u043d\u0442 \u0437\u0430 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440",
8
+ "error": {
9
+ "model_not_supported": "\u041e\u0432\u043e\u0458 \u043c\u043e\u0434\u0435\u043b \u043d\u0435 \u0435 \u043f\u043e\u0434\u0434\u0440\u0436\u0430\u043d, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0440\u0443\u0433 \u043c\u043e\u0434\u0435\u043b"
10
+ },
11
+ "initiate_flow": {
12
+ "reconfigure": "\u0420\u0435\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u0442 \u0437\u0430 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440",
13
+ "user": "\u0414\u043e\u0434\u0430\u0458 \u0430\u0433\u0435\u043d\u0442 \u0437\u0430 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440"
14
+ },
15
+ "step": {
16
+ "advanced": {
17
+ "data": {
18
+ "max_tokens": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u0435\u043d \u0431\u0440\u043e\u0458 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d\u0438 \u0437\u0430 \u0432\u0440\u0430\u045c\u0430\u045a\u0435 \u0432\u043e \u043e\u0434\u0433\u043e\u0432\u043e\u0440",
19
+ "temperature": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430",
20
+ "top_p": "\u0422\u043e\u043f \u041f"
21
+ },
22
+ "title": "\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438"
23
+ },
24
+ "init": {
25
+ "data": {
26
+ "prompt": "\u0423\u043f\u0430\u0442\u0441\u0442\u0432\u0430",
27
+ "recommended": "\u041f\u0440\u0435\u043f\u043e\u0440\u0430\u0447\u0430\u043d\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u043e\u0442"
28
+ }
29
+ },
30
+ "model": {
31
+ "data": {
32
+ "search_context_size": "\u0413\u043e\u043b\u0435\u043c\u0438\u043d\u0430 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u0442 \u0437\u0430 \u043f\u0440\u0435\u0431\u0430\u0440\u0443\u0432\u0430\u045a\u0435",
33
+ "user_location": "\u0412\u043a\u043b\u0443\u0447\u0438 \u0458\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0430\u0442\u0430 \u043b\u043e\u043a\u0430\u0446\u0438\u0458\u0430",
34
+ "web_search": "\u041e\u0432\u043e\u0437\u043c\u043e\u0436\u0438 \u0432\u0435\u0431 \u043f\u0440\u0435\u0431\u0430\u0440\u0443\u0432\u0430\u045a\u0435"
35
+ },
36
+ "data_description": {
37
+ "reasoning_effort": "\u041a\u043e\u043b\u043a\u0443 \u0442\u043e\u043a\u0435\u043d\u0438 \u0437\u0430 \u0440\u0430\u0441\u0443\u0434\u0443\u0432\u0430\u045a\u0435 \u0442\u0440\u0435\u0431\u0430 \u0434\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u043e\u0442 \u043f\u0440\u0435\u0434 \u0434\u0430 \u043a\u0440\u0435\u0438\u0440\u0430 \u043e\u0434\u0433\u043e\u0432\u043e\u0440 \u043d\u0430 \u043f\u0440\u0430\u0448\u0430\u045a\u0435\u0442\u043e",
38
+ "search_context_size": "\u0412\u0438\u0441\u043e\u043a\u043e \u043d\u0438\u0432\u043e \u043d\u0430 \u043d\u0430\u0441\u043e\u043a\u0438 \u0437\u0430 \u043a\u043e\u043b\u0438\u0447\u0438\u043d\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u0438\u043e\u0442 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 \u0437\u0430 \u043a\u043e\u0440\u0438\u0441\u0442\u0435\u045a\u0435 \u0437\u0430 \u043f\u0440\u0435\u0431\u0430\u0440\u0443\u0432\u0430\u045a\u0435",
39
+ "user_location": "\u041f\u0440\u0435\u0446\u0438\u0437\u0438\u0440\u0430\u045a\u0435 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438\u0442\u0435 \u043e\u0434 \u043f\u0440\u0435\u0431\u0430\u0440\u0443\u0432\u0430\u045a\u0435\u0442\u043e \u0432\u0440\u0437 \u043e\u0441\u043d\u043e\u0432\u0430 \u043d\u0430 \u0433\u0435\u043e\u0433\u0440\u0430\u0444\u0441\u043a\u0430 \u043f\u043e\u043b\u043e\u0436\u0431\u0430",
40
+ "web_search": "\u0414\u043e\u0437\u0432\u043e\u043b\u0435\u0442\u0435 \u043c\u0443 \u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u043e\u0442 \u0434\u0430 \u043f\u0440\u0435\u0431\u0430\u0440\u0443\u0432\u0430 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0437\u0430 \u043d\u0430\u0458\u043d\u043e\u0432\u0438\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434 \u0434\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0430 \u043e\u0434\u0433\u043e\u0432\u043e\u0440"
41
+ }
42
+ }
43
+ }
44
+ }
45
+ },
2
46
  "services": {
3
47
  "generate_content": {
4
48
  "fields": {
@@ -46,6 +46,10 @@
46
46
  "user_location": "Inkludera hemplats",
47
47
  "web_search": "Aktivera webbs\u00f6kning"
48
48
  },
49
+ "data_description": {
50
+ "user_location": "F\u00f6rfina s\u00f6kresultaten baserat p\u00e5 geografi",
51
+ "web_search": "Till\u00e5t modellen att s\u00f6ka p\u00e5 webben efter den senaste informationen innan ett svar genereras"
52
+ },
49
53
  "title": "Modellspecifika alternativ"
50
54
  }
51
55
  }
@@ -0,0 +1,55 @@
1
+ """Diagnostics support for PlayStation Network."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import asdict
6
+ from typing import Any
7
+
8
+ from psnawp_api.models.trophies import PlatformType
9
+
10
+ from homeassistant.components.diagnostics import async_redact_data
11
+ from homeassistant.core import HomeAssistant
12
+
13
+ from .coordinator import PlaystationNetworkConfigEntry, PlaystationNetworkCoordinator
14
+
15
+ TO_REDACT = {
16
+ "account_id",
17
+ "firstName",
18
+ "lastName",
19
+ "middleName",
20
+ "onlineId",
21
+ "url",
22
+ "username",
23
+ }
24
+
25
+
26
+ async def async_get_config_entry_diagnostics(
27
+ hass: HomeAssistant, entry: PlaystationNetworkConfigEntry
28
+ ) -> dict[str, Any]:
29
+ """Return diagnostics for a config entry."""
30
+ coordinator: PlaystationNetworkCoordinator = entry.runtime_data
31
+
32
+ return {
33
+ "data": async_redact_data(
34
+ _serialize_platform_types(asdict(coordinator.data)), TO_REDACT
35
+ ),
36
+ }
37
+
38
+
39
+ def _serialize_platform_types(data: Any) -> Any:
40
+ """Recursively convert PlatformType enums to strings in dicts and sets."""
41
+ if isinstance(data, dict):
42
+ return {
43
+ (
44
+ platform.value if isinstance(platform, PlatformType) else platform
45
+ ): _serialize_platform_types(record)
46
+ for platform, record in data.items()
47
+ }
48
+ if isinstance(data, set):
49
+ return [
50
+ record.value if isinstance(record, PlatformType) else record
51
+ for record in data
52
+ ]
53
+ if isinstance(data, PlatformType):
54
+ return data.value
55
+ return data
@@ -44,7 +44,7 @@ rules:
44
44
 
45
45
  # Gold
46
46
  devices: done
47
- diagnostics: todo
47
+ diagnostics: done
48
48
  discovery-update-info:
49
49
  status: exempt
50
50
  comment: Discovery flow is not applicable for this integration
@@ -1,12 +1,36 @@
1
1
  {
2
2
  "config": {
3
3
  "abort": {
4
- "already_configured": "\u0410\u043a\u0430\u0443\u043d\u0442\u044a\u0442 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d"
4
+ "already_configured": "\u0410\u043a\u0430\u0443\u043d\u0442\u044a\u0442 \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d",
5
+ "reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430"
5
6
  },
6
7
  "error": {
7
8
  "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
8
9
  "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f",
9
10
  "unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430"
10
11
  }
12
+ },
13
+ "entity": {
14
+ "sensor": {
15
+ "earned_trophies_bronze": {
16
+ "name": "\u0411\u0440\u043e\u043d\u0437\u043e\u0432\u0438 \u0442\u0440\u043e\u0444\u0435\u0438",
17
+ "unit_of_measurement": "\u0442\u0440\u043e\u0444\u0435\u0438"
18
+ },
19
+ "earned_trophies_gold": {
20
+ "name": "\u0417\u043b\u0430\u0442\u043d\u0438 \u0442\u0440\u043e\u0444\u0435\u0438",
21
+ "unit_of_measurement": "\u0442\u0440\u043e\u0444\u0435\u0438"
22
+ },
23
+ "earned_trophies_platinum": {
24
+ "name": "\u041f\u043b\u0430\u0442\u0438\u043d\u0435\u043d\u0438 \u0442\u0440\u043e\u0444\u0435\u0438",
25
+ "unit_of_measurement": "\u0442\u0440\u043e\u0444\u0435\u0438"
26
+ },
27
+ "earned_trophies_silver": {
28
+ "name": "\u0421\u0440\u0435\u0431\u044a\u0440\u043d\u0438 \u0442\u0440\u043e\u0444\u0435\u0438",
29
+ "unit_of_measurement": "\u0442\u0440\u043e\u0444\u0435\u0438"
30
+ },
31
+ "trophy_level_progress": {
32
+ "name": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449\u043e \u043d\u0438\u0432\u043e"
33
+ }
34
+ }
11
35
  }
12
36
  }