homeassistant 2025.7.0b0__py3-none-any.whl → 2025.7.0b1__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 (208) 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 +0 -4
  10. homeassistant/components/alexa_devices/translations/de.json +6 -7
  11. homeassistant/components/alexa_devices/translations/el.json +4 -5
  12. homeassistant/components/alexa_devices/translations/en.json +12 -5
  13. homeassistant/components/alexa_devices/translations/es.json +0 -4
  14. homeassistant/components/alexa_devices/translations/et.json +4 -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 +4 -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 +15 -4
  29. homeassistant/components/alexa_devices/translations/zh-Hant.json +4 -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 +8 -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/buienradar/sensor.py +0 -1
  38. homeassistant/components/cambridge_audio/translations/sv.json +1 -1
  39. homeassistant/components/demo/translations/select.sv.json +2 -2
  40. homeassistant/components/derivative/translations/ga.json +20 -0
  41. homeassistant/components/derivative/translations/ru.json +3 -0
  42. homeassistant/components/devolo_home_control/translations/bg.json +6 -0
  43. homeassistant/components/devolo_home_control/translations/id.json +5 -0
  44. homeassistant/components/devolo_home_control/translations/sv.json +10 -0
  45. homeassistant/components/devolo_home_control/translations/zh-Hans.json +10 -0
  46. homeassistant/components/dlink/manifest.json +1 -1
  47. homeassistant/components/ecovacs/translations/sv.json +1 -1
  48. homeassistant/components/enphase_envoy/translations/sv.json +2 -2
  49. homeassistant/components/ezviz/translations/bg.json +6 -0
  50. homeassistant/components/ezviz/translations/mk.json +13 -0
  51. homeassistant/components/ezviz/translations/sv.json +10 -0
  52. homeassistant/components/ezviz/translations/zh-Hans.json +10 -0
  53. homeassistant/components/frontend/manifest.json +1 -1
  54. homeassistant/components/goodwe/translations/sv.json +5 -5
  55. homeassistant/components/google_generative_ai_conversation/__init__.py +15 -0
  56. homeassistant/components/google_generative_ai_conversation/config_flow.py +72 -36
  57. homeassistant/components/google_generative_ai_conversation/const.py +15 -2
  58. homeassistant/components/google_generative_ai_conversation/diagnostics.py +1 -0
  59. homeassistant/components/google_generative_ai_conversation/entity.py +7 -2
  60. homeassistant/components/google_generative_ai_conversation/helpers.py +73 -0
  61. homeassistant/components/google_generative_ai_conversation/strings.json +28 -1
  62. homeassistant/components/google_generative_ai_conversation/translations/bg.json +19 -0
  63. homeassistant/components/google_generative_ai_conversation/translations/de.json +28 -0
  64. homeassistant/components/google_generative_ai_conversation/translations/el.json +28 -0
  65. homeassistant/components/google_generative_ai_conversation/translations/en.json +28 -0
  66. homeassistant/components/google_generative_ai_conversation/translations/es.json +28 -0
  67. homeassistant/components/google_generative_ai_conversation/translations/et.json +28 -0
  68. homeassistant/components/google_generative_ai_conversation/translations/ga.json +9 -0
  69. homeassistant/components/google_generative_ai_conversation/translations/id.json +30 -0
  70. homeassistant/components/google_generative_ai_conversation/translations/mk.json +11 -0
  71. homeassistant/components/google_generative_ai_conversation/translations/ru.json +67 -0
  72. homeassistant/components/google_generative_ai_conversation/translations/sk.json +28 -0
  73. homeassistant/components/google_generative_ai_conversation/translations/sv.json +21 -0
  74. homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +28 -0
  75. homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +28 -0
  76. homeassistant/components/google_generative_ai_conversation/tts.py +48 -106
  77. homeassistant/components/group/translations/el.json +18 -18
  78. homeassistant/components/habitica/const.py +1 -1
  79. homeassistant/components/harmony/translations/select.sv.json +1 -1
  80. homeassistant/components/harmony/translations/sv.json +1 -1
  81. homeassistant/components/homeassistant_hardware/translations/ga.json +9 -0
  82. homeassistant/components/homeassistant_hardware/translations/mk.json +9 -0
  83. homeassistant/components/homeassistant_sky_connect/translations/ga.json +10 -0
  84. homeassistant/components/homeassistant_sky_connect/translations/mk.json +7 -0
  85. homeassistant/components/homeassistant_yellow/translations/ga.json +5 -0
  86. homeassistant/components/homewizard/translations/sv.json +3 -1
  87. homeassistant/components/http/auth.py +1 -1
  88. homeassistant/components/image/__init__.py +34 -3
  89. homeassistant/components/input_select/translations/sv.json +6 -6
  90. homeassistant/components/iron_os/translations/sv.json +1 -1
  91. homeassistant/components/keenetic_ndms2/translations/id.json +3 -0
  92. homeassistant/components/lamarzocco/translations/sv.json +3 -3
  93. homeassistant/components/lametric/translations/sv.json +2 -2
  94. homeassistant/components/lametric/update.py +1 -1
  95. homeassistant/components/lg_thinq/translations/sv.json +5 -5
  96. homeassistant/components/litterrobot/translations/bg.json +4 -0
  97. homeassistant/components/litterrobot/translations/ga.json +3 -0
  98. homeassistant/components/matter/translations/id.json +5 -0
  99. homeassistant/components/matter/vacuum.py +38 -26
  100. homeassistant/components/meater/__init__.py +5 -1
  101. homeassistant/components/meater/coordinator.py +4 -2
  102. homeassistant/components/media_source/local_source.py +21 -4
  103. homeassistant/components/mqtt/translations/bg.json +10 -0
  104. homeassistant/components/mqtt/translations/el.json +21 -0
  105. homeassistant/components/mqtt/translations/fi.json +3 -0
  106. homeassistant/components/mqtt/translations/ga.json +25 -0
  107. homeassistant/components/mqtt/translations/mk.json +23 -0
  108. homeassistant/components/mqtt/translations/ru.json +1 -0
  109. homeassistant/components/mqtt/translations/sv.json +24 -0
  110. homeassistant/components/mqtt/translations/zh-Hans.json +26 -0
  111. homeassistant/components/mqtt/translations/zh-Hant.json +19 -0
  112. homeassistant/components/music_assistant/button.py +0 -6
  113. homeassistant/components/ntfy/translations/id.json +13 -0
  114. homeassistant/components/ohme/translations/sv.json +1 -1
  115. homeassistant/components/ollama/__init__.py +2 -0
  116. homeassistant/components/ollama/const.py +2 -0
  117. homeassistant/components/ollama/translations/bg.json +19 -0
  118. homeassistant/components/ollama/translations/ga.json +31 -1
  119. homeassistant/components/ollama/translations/id.json +18 -0
  120. homeassistant/components/ollama/translations/mk.json +13 -1
  121. homeassistant/components/onewire/translations/sv.json +4 -4
  122. homeassistant/components/openai_conversation/__init__.py +2 -0
  123. homeassistant/components/openai_conversation/const.py +1 -1
  124. homeassistant/components/openai_conversation/conversation.py +1 -1
  125. homeassistant/components/openai_conversation/translations/bg.json +26 -0
  126. homeassistant/components/openai_conversation/translations/id.json +23 -0
  127. homeassistant/components/openai_conversation/translations/mk.json +44 -0
  128. homeassistant/components/playstation_network/translations/bg.json +25 -1
  129. homeassistant/components/playstation_network/translations/es.json +1 -1
  130. homeassistant/components/playstation_network/translations/ga.json +31 -0
  131. homeassistant/components/playstation_network/translations/id.json +14 -0
  132. homeassistant/components/playstation_network/translations/mk.json +18 -0
  133. homeassistant/components/playstation_network/translations/sv.json +29 -0
  134. homeassistant/components/playstation_network/translations/zh-Hans.json +29 -0
  135. homeassistant/components/qnap/translations/sv.json +1 -1
  136. homeassistant/components/remote_calendar/translations/fi.json +34 -0
  137. homeassistant/components/select/translations/sv.json +10 -10
  138. homeassistant/components/smarla/__init__.py +2 -2
  139. homeassistant/components/sonos/translations/bg.json +5 -0
  140. homeassistant/components/sonos/translations/el.json +6 -0
  141. homeassistant/components/sonos/translations/ga.json +8 -0
  142. homeassistant/components/sonos/translations/mk.json +10 -0
  143. homeassistant/components/sonos/translations/ru.json +6 -0
  144. homeassistant/components/sonos/translations/sv.json +6 -0
  145. homeassistant/components/sonos/translations/zh-Hans.json +9 -0
  146. homeassistant/components/sonos/translations/zh-Hant.json +6 -0
  147. homeassistant/components/switchbot/translations/bg.json +26 -0
  148. homeassistant/components/switchbot/translations/ga.json +33 -0
  149. homeassistant/components/switchbot/translations/id.json +19 -0
  150. homeassistant/components/switchbot/translations/mk.json +49 -0
  151. homeassistant/components/switchbot/translations/sv.json +52 -0
  152. homeassistant/components/switchbot/translations/zh-Hans.json +53 -0
  153. homeassistant/components/telegram_bot/__init__.py +20 -4
  154. homeassistant/components/telegram_bot/bot.py +33 -29
  155. homeassistant/components/telegram_bot/config_flow.py +49 -10
  156. homeassistant/components/telegram_bot/const.py +1 -1
  157. homeassistant/components/telegram_bot/strings.json +33 -10
  158. homeassistant/components/telegram_bot/translations/bg.json +0 -1
  159. homeassistant/components/telegram_bot/translations/cs.json +5 -12
  160. homeassistant/components/telegram_bot/translations/de.json +12 -11
  161. homeassistant/components/telegram_bot/translations/el.json +5 -12
  162. homeassistant/components/telegram_bot/translations/en-GB.json +5 -12
  163. homeassistant/components/telegram_bot/translations/en.json +35 -12
  164. homeassistant/components/telegram_bot/translations/es.json +5 -12
  165. homeassistant/components/telegram_bot/translations/et.json +11 -12
  166. homeassistant/components/telegram_bot/translations/fr.json +5 -12
  167. homeassistant/components/telegram_bot/translations/ga.json +5 -11
  168. homeassistant/components/telegram_bot/translations/he.json +3 -8
  169. homeassistant/components/telegram_bot/translations/hu.json +5 -12
  170. homeassistant/components/telegram_bot/translations/id.json +0 -5
  171. homeassistant/components/telegram_bot/translations/it.json +2 -5
  172. homeassistant/components/telegram_bot/translations/lt.json +5 -12
  173. homeassistant/components/telegram_bot/translations/mk.json +7 -5
  174. homeassistant/components/telegram_bot/translations/nl.json +5 -12
  175. homeassistant/components/telegram_bot/translations/pt.json +5 -12
  176. homeassistant/components/telegram_bot/translations/ru.json +12 -11
  177. homeassistant/components/telegram_bot/translations/sk.json +5 -12
  178. homeassistant/components/telegram_bot/translations/sv.json +5 -12
  179. homeassistant/components/telegram_bot/translations/tr.json +5 -12
  180. homeassistant/components/telegram_bot/translations/zh-Hans.json +5 -12
  181. homeassistant/components/telegram_bot/translations/zh-Hant.json +5 -12
  182. homeassistant/components/template/translations/sv.json +5 -5
  183. homeassistant/components/tilt_pi/translations/id.json +11 -0
  184. homeassistant/components/tts/__init__.py +15 -0
  185. homeassistant/components/unifiprotect/translations/zh-Hans.json +3 -3
  186. homeassistant/components/utility_meter/translations/sv.json +9 -9
  187. homeassistant/components/vegehub/translations/bg.json +2 -0
  188. homeassistant/components/vegehub/translations/id.json +11 -0
  189. homeassistant/components/whirlpool/translations/sv.json +12 -12
  190. homeassistant/components/zha/translations/bg.json +23 -0
  191. homeassistant/components/zha/translations/el.json +10 -0
  192. homeassistant/components/zha/translations/ga.json +20 -0
  193. homeassistant/components/zha/translations/id.json +6 -0
  194. homeassistant/components/zha/translations/sv.json +15 -0
  195. homeassistant/components/zha/translations/zh-Hans.json +50 -0
  196. homeassistant/components/zwave_js/api.py +1 -1
  197. homeassistant/components/zwave_js/config_flow.py +12 -8
  198. homeassistant/components/zwave_js/manifest.json +1 -1
  199. homeassistant/config_entries.py +6 -0
  200. homeassistant/const.py +1 -1
  201. homeassistant/package_constraints.txt +1 -1
  202. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/METADATA +1 -1
  203. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/RECORD +208 -192
  204. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/WHEEL +0 -0
  205. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/entry_points.txt +0 -0
  206. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/licenses/LICENSE.md +0 -0
  207. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  208. {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "data_code": "Tek kullan\u0131ml\u0131k \u015fifre (OTP kodu)",
4
- "data_country": "\u00dclke kodu",
5
4
  "data_description_code": "Hesab\u0131n\u0131za giri\u015f yapmak i\u00e7in tek seferlik \u015fifre. \u015eu anda yaln\u0131zca OTP uygulamalar\u0131ndan gelen tokenlar destekleniyor.",
6
- "data_description_country": "Amazon hesab\u0131n\u0131z\u0131n bulundu\u011fu \u00fclke.",
7
5
  "data_description_password": "Amazon hesab\u0131n\u0131z\u0131n \u015fifresi.",
8
6
  "data_description_username": "Amazon hesab\u0131n\u0131z\u0131n e-posta adresi."
9
7
  },
@@ -23,8 +21,6 @@
23
21
  "step": {
24
22
  "user": {
25
23
  "data": {
26
- "code": "Hesab\u0131n\u0131za giri\u015f yapmak i\u00e7in tek seferlik \u015fifre. \u015eu anda yaln\u0131zca OTP uygulamalar\u0131ndan gelen tokenlar destekleniyor.",
27
- "country": "\u00dclke kodu",
28
24
  "password": "\u015eifre",
29
25
  "username": "Kullan\u0131c\u0131 Ad\u0131"
30
26
  },
@@ -1,9 +1,7 @@
1
1
  {
2
2
  "common": {
3
3
  "data_code": "\u4e00\u6b21\u6027\u5bc6\u7801\uff08OTP \u4ee3\u7801\uff09",
4
- "data_country": "\u56fd\u5bb6/\u5730\u533a\u4ee3\u7801",
5
4
  "data_description_code": "\u7528\u4e8e\u767b\u5f55\u60a8\u8d26\u6237\u7684\u4e00\u6b21\u6027\u5bc6\u7801\u3002\u76ee\u524d\u4ec5\u652f\u6301\u6765\u81ea OTP \u5e94\u7528\u7a0b\u5e8f\u7684\u4ee4\u724c\u3002",
6
- "data_description_country": "\u60a8\u7684\u4e9a\u9a6c\u900a\u8d26\u6237\u6240\u5728\u7684\u56fd\u5bb6/\u5730\u533a\u3002",
7
5
  "data_description_password": "\u60a8\u7684\u4e9a\u9a6c\u900a\u8d26\u6237\u7684\u5bc6\u7801\u3002",
8
6
  "data_description_username": "\u60a8\u7684\u4e9a\u9a6c\u900a\u8d26\u6237\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u3002"
9
7
  },
@@ -23,8 +21,6 @@
23
21
  "step": {
24
22
  "user": {
25
23
  "data": {
26
- "code": "\u7528\u4e8e\u767b\u5f55\u60a8\u8d26\u6237\u7684\u4e00\u6b21\u6027\u5bc6\u7801\u3002\u76ee\u524d\u4ec5\u652f\u6301\u6765\u81ea OTP \u5e94\u7528\u7a0b\u5e8f\u7684\u4ee4\u724c\u3002",
27
- "country": "\u56fd\u5bb6/\u5730\u533a\u4ee3\u7801",
28
24
  "password": "\u5bc6\u7801",
29
25
  "username": "\u7528\u6237\u540d"
30
26
  },
@@ -39,8 +35,23 @@
39
35
  },
40
36
  "entity": {
41
37
  "binary_sensor": {
38
+ "baby_cry_detection": {
39
+ "name": "\u5a74\u513f\u54ed\u95f9"
40
+ },
41
+ "beeping_appliance_detection": {
42
+ "name": "\u8702\u9e23\u5668"
43
+ },
42
44
  "bluetooth": {
43
45
  "name": "\u84dd\u7259"
46
+ },
47
+ "cough_detection": {
48
+ "name": "\u54b3\u55fd"
49
+ },
50
+ "dog_bark_detection": {
51
+ "name": "\u72d7\u53eb\u58f0"
52
+ },
53
+ "water_sounds_detection": {
54
+ "name": "\u6c34\u58f0"
44
55
  }
45
56
  },
46
57
  "notify": {
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "common": {
3
3
  "data_code": "\u4e00\u6b21\u6027\u5bc6\u78bc\uff08OTP \u4ee3\u78bc\uff09",
4
- "data_country": "\u570b\u78bc",
5
4
  "data_description_code": "\u4e00\u6b21\u6027\u5bc6\u78bc\u5df2\u50b3\u9001\u81f3\u60a8\u7684\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u3002\u76ee\u524d\u50c5\u652f\u63f4\u4f86\u81ea OTP \u61c9\u7528\u7a0b\u5f0f\u7684\u6b0a\u6756\u3002",
6
- "data_description_country": "Amazon \u5e33\u865f\u6240\u5728\u570b\u5bb6\u3002",
5
+ "data_description_country": "Amazon \u5e33\u865f\u8a3b\u518a\u6240\u5728\u570b\u5bb6\u3002",
7
6
  "data_description_password": "Amazon \u5e33\u865f\u5bc6\u78bc\u3002",
8
7
  "data_description_username": "Amazon \u5e33\u865f\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u3002"
9
8
  },
@@ -23,14 +22,14 @@
23
22
  "step": {
24
23
  "user": {
25
24
  "data": {
26
- "code": "\u4e00\u6b21\u6027\u5bc6\u78bc\u5df2\u50b3\u9001\u81f3\u60a8\u7684\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u3002\u76ee\u524d\u50c5\u652f\u63f4\u4f86\u81ea OTP \u61c9\u7528\u7a0b\u5f0f\u7684\u6b0a\u6756\u3002",
27
- "country": "\u570b\u78bc",
25
+ "code": "\u4e00\u6b21\u6027\u5bc6\u78bc\uff08OTP \u4ee3\u78bc\uff09",
26
+ "country": "\u570b\u5bb6",
28
27
  "password": "\u5bc6\u78bc",
29
28
  "username": "\u4f7f\u7528\u8005\u540d\u7a31"
30
29
  },
31
30
  "data_description": {
32
31
  "code": "\u4e00\u6b21\u6027\u5bc6\u78bc\u5df2\u50b3\u9001\u81f3\u60a8\u7684\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u3002\u76ee\u524d\u50c5\u652f\u63f4\u4f86\u81ea OTP \u61c9\u7528\u7a0b\u5f0f\u7684\u6b0a\u6756\u3002",
33
- "country": "Amazon \u5e33\u865f\u6240\u5728\u570b\u5bb6\u3002",
32
+ "country": "Amazon \u5e33\u865f\u8a3b\u518a\u6240\u5728\u570b\u5bb6\u3002",
34
33
  "password": "Amazon \u5e33\u865f\u5bc6\u78bc\u3002",
35
34
  "username": "Amazon \u5e33\u865f\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u3002"
36
35
  }
@@ -0,0 +1,40 @@
1
+ """Utils for Alexa Devices."""
2
+
3
+ from collections.abc import Awaitable, Callable, Coroutine
4
+ from functools import wraps
5
+ from typing import Any, Concatenate
6
+
7
+ from aioamazondevices.exceptions import CannotConnect, CannotRetrieveData
8
+
9
+ from homeassistant.exceptions import HomeAssistantError
10
+
11
+ from .const import DOMAIN
12
+ from .entity import AmazonEntity
13
+
14
+
15
+ def alexa_api_call[_T: AmazonEntity, **_P](
16
+ func: Callable[Concatenate[_T, _P], Awaitable[None]],
17
+ ) -> Callable[Concatenate[_T, _P], Coroutine[Any, Any, None]]:
18
+ """Catch Alexa API call exceptions."""
19
+
20
+ @wraps(func)
21
+ async def cmd_wrapper(self: _T, *args: _P.args, **kwargs: _P.kwargs) -> None:
22
+ """Wrap all command methods."""
23
+ try:
24
+ await func(self, *args, **kwargs)
25
+ except CannotConnect as err:
26
+ self.coordinator.last_update_success = False
27
+ raise HomeAssistantError(
28
+ translation_domain=DOMAIN,
29
+ translation_key="cannot_connect",
30
+ translation_placeholders={"error": repr(err)},
31
+ ) from err
32
+ except CannotRetrieveData as err:
33
+ self.coordinator.last_update_success = False
34
+ raise HomeAssistantError(
35
+ translation_domain=DOMAIN,
36
+ translation_key="cannot_retrieve_data",
37
+ translation_placeholders={"error": repr(err)},
38
+ ) from err
39
+
40
+ return cmd_wrapper
@@ -0,0 +1,11 @@
1
+ {
2
+ "config": {
3
+ "step": {
4
+ "user": {
5
+ "data": {
6
+ "host": "Host"
7
+ }
8
+ }
9
+ }
10
+ }
11
+ }
@@ -17,7 +17,13 @@ from homeassistant.helpers import (
17
17
  )
18
18
  from homeassistant.helpers.typing import ConfigType
19
19
 
20
- from .const import CONF_CHAT_MODEL, DOMAIN, LOGGER, RECOMMENDED_CHAT_MODEL
20
+ from .const import (
21
+ CONF_CHAT_MODEL,
22
+ DEFAULT_CONVERSATION_NAME,
23
+ DOMAIN,
24
+ LOGGER,
25
+ RECOMMENDED_CHAT_MODEL,
26
+ )
21
27
 
22
28
  PLATFORMS = (Platform.CONVERSATION,)
23
29
  CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
@@ -123,6 +129,7 @@ async def async_migrate_integration(hass: HomeAssistant) -> None:
123
129
  else:
124
130
  hass.config_entries.async_update_entry(
125
131
  entry,
132
+ title=DEFAULT_CONVERSATION_NAME,
126
133
  options={},
127
134
  version=2,
128
135
  )
@@ -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
  "authentication_error": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f",
5
8
  "cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
@@ -12,5 +15,23 @@
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
+ "chat_model": "\u041c\u043e\u0434\u0435\u043b",
28
+ "llm_hass_api": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 Home Assistant",
29
+ "name": "\u0418\u043c\u0435",
30
+ "prompt": "\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438",
31
+ "temperature": "\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430"
32
+ }
33
+ }
34
+ }
35
+ }
15
36
  }
16
37
  }
@@ -1 +1,32 @@
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
+ "error": {
9
+ "thinking_budget_too_large": "Caithfidh uasmh\u00e9id na gcomhartha\u00ed a bheith n\u00edos m\u00f3 n\u00e1 an buis\u00e9ad smaointeoireachta."
10
+ },
11
+ "initiate_flow": {
12
+ "reconfigure": "Athchumraigh gn\u00edomhaire comhr\u00e1",
13
+ "user": "Cuir gn\u00edomhaire comhr\u00e1 leis"
14
+ },
15
+ "step": {
16
+ "set_options": {
17
+ "data": {
18
+ "max_tokens": "Uasmh\u00e9id comhartha\u00ed le tabhairt ar ais mar fhreagra",
19
+ "prompt": "Treoracha",
20
+ "recommended": "Socruithe samhail molta",
21
+ "temperature": "Teocht",
22
+ "thinking_budget_tokens": "Buis\u00e9ad smaointeoireachta"
23
+ },
24
+ "data_description": {
25
+ "prompt": "Treoraigh conas ba ch\u00f3ir don LLM freagairt. Is f\u00e9idir \u00e9 seo a bheith ina theimpl\u00e9ad.",
26
+ "thinking_budget_tokens": "L\u00edon na dt\u00f3c\u00e1n is f\u00e9idir leis an tsamhail a \u00fas\u00e1id chun smaoineamh ar an bhfreagra as an uasl\u00edon ioml\u00e1n c\u00f3\u00e1n. Socraigh go 1024 n\u00f3 n\u00edos m\u00f3 chun smaointeoireacht fhairsing a chumas\u00fa."
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "config": {
3
+ "abort": {
4
+ "already_configured": "Layanan sudah dikonfigurasi"
5
+ },
3
6
  "error": {
4
7
  "authentication_error": "Autentikasi tidak valid",
5
8
  "cannot_connect": "Gagal terhubung",
@@ -13,5 +16,21 @@
13
16
  }
14
17
  }
15
18
  }
19
+ },
20
+ "config_subentries": {
21
+ "conversation": {
22
+ "abort": {
23
+ "reconfigure_successful": "Konfigurasi ulang berhasil"
24
+ },
25
+ "step": {
26
+ "set_options": {
27
+ "data": {
28
+ "chat_model": "Model",
29
+ "llm_hass_api": "Kendalikan Home Assistant",
30
+ "name": "Nama"
31
+ }
32
+ }
33
+ }
34
+ }
16
35
  }
17
36
  }
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "config": {
3
+ "abort": {
4
+ "already_configured": "\u042d\u0442\u0430 \u0441\u043b\u0443\u0436\u0431\u0430 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432 Home Assistant"
5
+ },
3
6
  "error": {
4
7
  "authentication_error": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438",
5
8
  "cannot_connect": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f",
@@ -13,5 +16,32 @@
13
16
  }
14
17
  }
15
18
  }
19
+ },
20
+ "config_subentries": {
21
+ "conversation": {
22
+ "abort": {
23
+ "entry_not_loaded": "\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0430.",
24
+ "reconfigure_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e"
25
+ },
26
+ "entry_type": "\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430",
27
+ "error": {
28
+ "thinking_budget_too_large": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0431\u044e\u0434\u0436\u0435\u0442 \u043d\u0430 \u043e\u0431\u0434\u0443\u043c\u044b\u0432\u0430\u043d\u0438\u0435."
29
+ },
30
+ "initiate_flow": {
31
+ "reconfigure": "\u041f\u0435\u0440\u0435\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443",
32
+ "user": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443"
33
+ },
34
+ "step": {
35
+ "set_options": {
36
+ "data": {
37
+ "chat_model": "\u041c\u043e\u0434\u0435\u043b\u044c",
38
+ "llm_hass_api": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Home Assistant",
39
+ "max_tokens": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0445 \u0432 \u043e\u0442\u0432\u0435\u0442",
40
+ "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",
41
+ "prompt": "\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438"
42
+ }
43
+ }
44
+ }
45
+ }
16
46
  }
17
47
  }
@@ -168,7 +168,6 @@ SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
168
168
  key="windazimuth",
169
169
  translation_key="windazimuth",
170
170
  native_unit_of_measurement=DEGREE,
171
- icon="mdi:compass-outline",
172
171
  device_class=SensorDeviceClass.WIND_DIRECTION,
173
172
  state_class=SensorStateClass.MEASUREMENT_ANGLE,
174
173
  ),
@@ -50,7 +50,7 @@
50
50
  "display_brightness": {
51
51
  "name": "Sk\u00e4rmens ljusstyrka",
52
52
  "state": {
53
- "bright": "Ljust",
53
+ "bright": "Ljus",
54
54
  "dim": "D\u00e4mpad",
55
55
  "off": "Av"
56
56
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "state": {
3
3
  "demo__speed": {
4
- "light_speed": "Ljushastighet",
5
- "ludicrous_speed": "Ludicrous hastighet",
4
+ "light_speed": "Ljusets hastighet",
5
+ "ludicrous_speed": "Skrattretande hastighet",
6
6
  "ridiculous_speed": "L\u00f6jlig hastighet"
7
7
  }
8
8
  }
@@ -0,0 +1,20 @@
1
+ {
2
+ "config": {
3
+ "step": {
4
+ "user": {
5
+ "data_description": {
6
+ "max_sub_interval": "M\u00e1 shainmh\u00edn\u00edtear \u00e9, d\u00e9antar an d\u00edorthach a athr\u00edomh go huathoibr\u00edoch mura bhfuil an fhoinse nuashonraithe don tr\u00e9imhse seo."
7
+ }
8
+ }
9
+ }
10
+ },
11
+ "options": {
12
+ "step": {
13
+ "init": {
14
+ "data_description": {
15
+ "max_sub_interval": "M\u00e1 shainmh\u00edn\u00edtear \u00e9, d\u00e9antar an d\u00edorthach a athr\u00edomh go huathoibr\u00edoch mura bhfuil an fhoinse nuashonraithe don tr\u00e9imhse seo."
16
+ }
17
+ }
18
+ }
19
+ }
20
+ }
@@ -12,6 +12,7 @@
12
12
  "unit_time": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438"
13
13
  },
14
14
  "data_description": {
15
+ "max_sub_interval": "\u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.",
15
16
  "round": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.",
16
17
  "time_window": "\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u043c\u0443 \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0445 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u043d\u0430.",
17
18
  "unit_prefix": "\u0414\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0439."
@@ -25,6 +26,7 @@
25
26
  "step": {
26
27
  "init": {
27
28
  "data": {
29
+ "max_sub_interval": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
28
30
  "name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",
29
31
  "round": "\u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435",
30
32
  "source": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0441\u0435\u043d\u0441\u043e\u0440",
@@ -33,6 +35,7 @@
33
35
  "unit_time": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438"
34
36
  },
35
37
  "data_description": {
38
+ "max_sub_interval": "\u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.",
36
39
  "round": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439.",
37
40
  "time_window": "\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u043d\u0441\u043e\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u043c\u0443 \u0441\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0445 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u043d\u0430.",
38
41
  "unit_prefix": "\u0414\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0438 \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u043e\u0439."
@@ -8,6 +8,12 @@
8
8
  "invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f"
9
9
  },
10
10
  "step": {
11
+ "reauth_confirm": {
12
+ "data": {
13
+ "password": "\u041f\u0430\u0440\u043e\u043b\u0430",
14
+ "username": "\u0418\u043c\u0435\u0439\u043b / devolo ID"
15
+ }
16
+ },
11
17
  "user": {
12
18
  "data": {
13
19
  "password": "\u041f\u0430\u0440\u043e\u043b\u0430"
@@ -9,6 +9,11 @@
9
9
  "reauth_failed": "Gunakan pengguna mydevolo yang sama seperti sebelumnya."
10
10
  },
11
11
  "step": {
12
+ "reauth_confirm": {
13
+ "data": {
14
+ "password": "Kata Sandi"
15
+ }
16
+ },
12
17
  "user": {
13
18
  "data": {
14
19
  "password": "Kata Sandi",
@@ -9,6 +9,16 @@
9
9
  "reauth_failed": "Anv\u00e4nd samma mydevolo-anv\u00e4ndare som tidigare."
10
10
  },
11
11
  "step": {
12
+ "reauth_confirm": {
13
+ "data": {
14
+ "password": "L\u00f6senord",
15
+ "username": "E-postadress/Devolo-ID"
16
+ },
17
+ "data_description": {
18
+ "password": "L\u00f6senordet f\u00f6r ditt mydevolo-konto.",
19
+ "username": "E-postadress som anv\u00e4ndes f\u00f6r att registrera centralenheten p\u00e5 mydevolo."
20
+ }
21
+ },
12
22
  "user": {
13
23
  "data": {
14
24
  "password": "L\u00f6senord",
@@ -9,6 +9,16 @@
9
9
  "reauth_failed": "\u8bf7\u4f7f\u7528\u4e0e\u4e4b\u524d\u76f8\u540c\u7684 mydevolo \u7528\u6237\u3002"
10
10
  },
11
11
  "step": {
12
+ "reauth_confirm": {
13
+ "data": {
14
+ "password": "\u5bc6\u7801",
15
+ "username": "\u7535\u5b50\u90ae\u4ef6/devolo ID"
16
+ },
17
+ "data_description": {
18
+ "password": "\u60a8 mydevolo \u8d26\u6237\u7684\u5bc6\u7801\u3002",
19
+ "username": "\u60a8\u7528\u4e8e\u5728 mydevolo \u6ce8\u518c\u4e2d\u592e\u5355\u5143\u7684\u7535\u5b50\u90ae\u4ef6\u5730\u5740\u3002"
20
+ }
21
+ },
12
22
  "user": {
13
23
  "data": {
14
24
  "password": "\u5bc6\u7801",
@@ -12,5 +12,5 @@
12
12
  "integration_type": "device",
13
13
  "iot_class": "local_polling",
14
14
  "loggers": ["pyW215"],
15
- "requirements": ["pyW215==0.7.0"]
15
+ "requirements": ["pyW215==0.8.0"]
16
16
  }
@@ -117,7 +117,7 @@
117
117
  "work_mode": {
118
118
  "name": "Arbetsl\u00e4ge",
119
119
  "state": {
120
- "mop": "Mopp",
120
+ "mop": "Moppa",
121
121
  "mop_after_vacuum": "Moppa efter dammsugning",
122
122
  "vacuum": "Dammsug",
123
123
  "vacuum_and_mop": "Dammsug och moppa"
@@ -86,7 +86,7 @@
86
86
  }
87
87
  },
88
88
  "relay_grid_action": {
89
- "name": "\u00c5tg\u00e4rd f\u00f6r eln\u00e4t",
89
+ "name": "Eln\u00e4ts\u00e5tg\u00e4rd",
90
90
  "state": {
91
91
  "none": "Ingen",
92
92
  "not_powered": "Ej str\u00f6msatt",
@@ -95,7 +95,7 @@
95
95
  }
96
96
  },
97
97
  "relay_microgrid_action": {
98
- "name": "\u00c5tg\u00e4rd f\u00f6r mikron\u00e4t",
98
+ "name": "Mikron\u00e4ts\u00e5tg\u00e4rd",
99
99
  "state": {
100
100
  "none": "Ingen",
101
101
  "not_powered": "Ej str\u00f6msatt",
@@ -82,6 +82,12 @@
82
82
  "silent": "\u0411\u0435\u0437\u0448\u0443\u043c\u0435\u043d",
83
83
  "soft": "\u041c\u0435\u043a"
84
84
  }
85
+ },
86
+ "battery_camera_work_mode": {
87
+ "state": {
88
+ "custom": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438",
89
+ "plugged_in": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u043c\u0440\u0435\u0436\u0430\u0442\u0430"
90
+ }
85
91
  }
86
92
  },
87
93
  "sensor": {
@@ -0,0 +1,13 @@
1
+ {
2
+ "entity": {
3
+ "select": {
4
+ "battery_camera_work_mode": {
5
+ "state": {
6
+ "custom": "\u041f\u0440\u0438\u043b\u0430\u0433\u043e\u0434\u0435\u043d\u043e",
7
+ "high_performance": "\u0412\u0438\u0441\u043e\u043a\u0438 \u043f\u0435\u0440\u0444\u043e\u0440\u043c\u0430\u043d\u0441\u0438",
8
+ "plugged_in": "\u0412\u043a\u043b\u0443\u0447\u0435\u043d\u043e"
9
+ }
10
+ }
11
+ }
12
+ }
13
+ }
@@ -95,6 +95,16 @@
95
95
  "silent": "Tyst",
96
96
  "soft": "Mjuk"
97
97
  }
98
+ },
99
+ "battery_camera_work_mode": {
100
+ "name": "Arbetsl\u00e4ge f\u00f6r batteri",
101
+ "state": {
102
+ "custom": "Anpassad",
103
+ "high_performance": "H\u00f6g prestanda",
104
+ "plugged_in": "Inkopplad",
105
+ "power_save": "Str\u00f6msparl\u00e4ge",
106
+ "super_power_save": "Superstr\u00f6msparl\u00e4ge"
107
+ }
98
108
  }
99
109
  },
100
110
  "sensor": {
@@ -95,6 +95,16 @@
95
95
  "silent": "\u9759\u9ed8",
96
96
  "soft": "\u67d4\u548c"
97
97
  }
98
+ },
99
+ "battery_camera_work_mode": {
100
+ "name": "\u7535\u6c60\u5de5\u4f5c\u6a21\u5f0f",
101
+ "state": {
102
+ "custom": "\u5b9a\u5236",
103
+ "high_performance": "\u9ad8\u6027\u80fd",
104
+ "plugged_in": "\u5df2\u63d2\u5165",
105
+ "power_save": "\u7701\u7535",
106
+ "super_power_save": "\u8d85\u7ea7\u7701\u7535"
107
+ }
98
108
  }
99
109
  },
100
110
  "sensor": {
@@ -20,5 +20,5 @@
20
20
  "documentation": "https://www.home-assistant.io/integrations/frontend",
21
21
  "integration_type": "system",
22
22
  "quality_scale": "internal",
23
- "requirements": ["home-assistant-frontend==20250625.0"]
23
+ "requirements": ["home-assistant-frontend==20250626.0"]
24
24
  }
@@ -36,12 +36,12 @@
36
36
  "name": "Driftl\u00e4ge f\u00f6r v\u00e4xelriktaren",
37
37
  "state": {
38
38
  "backup": "L\u00e4ge f\u00f6r s\u00e4kerhetskopiering",
39
- "eco": "Eco-l\u00e4ge",
40
- "eco_charge": "Eco-laddningsl\u00e4ge",
41
- "eco_discharge": "Eco-urladdningsl\u00e4ge",
42
- "general": "Allm\u00e4nt l\u00e4ge",
39
+ "eco": "Eko-l\u00e4ge",
40
+ "eco_charge": "Eko-laddningsl\u00e4ge",
41
+ "eco_discharge": "Eko-urladdningsl\u00e4ge",
42
+ "general": "Generellt l\u00e4ge",
43
43
  "off_grid": "\u00d6driftsl\u00e4ge",
44
- "peak_shaving": "Kapa toppar-l\u00e4ge"
44
+ "peak_shaving": "Topputj\u00e4mningsl\u00e4ge"
45
45
  }
46
46
  }
47
47
  }
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  import asyncio
6
6
  import mimetypes
7
7
  from pathlib import Path
8
+ from types import MappingProxyType
8
9
 
9
10
  from google.genai import Client
10
11
  from google.genai.errors import APIError, ClientError
@@ -36,10 +37,13 @@ from homeassistant.helpers.typing import ConfigType
36
37
 
37
38
  from .const import (
38
39
  CONF_PROMPT,
40
+ DEFAULT_TITLE,
41
+ DEFAULT_TTS_NAME,
39
42
  DOMAIN,
40
43
  FILE_POLLING_INTERVAL_SECONDS,
41
44
  LOGGER,
42
45
  RECOMMENDED_CHAT_MODEL,
46
+ RECOMMENDED_TTS_OPTIONS,
43
47
  TIMEOUT_MILLIS,
44
48
  )
45
49
 
@@ -242,6 +246,16 @@ async def async_migrate_integration(hass: HomeAssistant) -> None:
242
246
  parent_entry = api_keys_entries[entry.data[CONF_API_KEY]]
243
247
 
244
248
  hass.config_entries.async_add_subentry(parent_entry, subentry)
249
+ if use_existing:
250
+ hass.config_entries.async_add_subentry(
251
+ parent_entry,
252
+ ConfigSubentry(
253
+ data=MappingProxyType(RECOMMENDED_TTS_OPTIONS),
254
+ subentry_type="tts",
255
+ title=DEFAULT_TTS_NAME,
256
+ unique_id=None,
257
+ ),
258
+ )
245
259
  conversation_entity = entity_registry.async_get_entity_id(
246
260
  "conversation",
247
261
  DOMAIN,
@@ -276,6 +290,7 @@ async def async_migrate_integration(hass: HomeAssistant) -> None:
276
290
  else:
277
291
  hass.config_entries.async_update_entry(
278
292
  entry,
293
+ title=DEFAULT_TITLE,
279
294
  options={},
280
295
  version=2,
281
296
  )