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
@@ -62,14 +62,25 @@ class MatterVacuum(MatterEntity, StateVacuumEntity):
62
62
 
63
63
  _last_accepted_commands: list[int] | None = None
64
64
  _supported_run_modes: (
65
- dict[int, clusters.RvcCleanMode.Structs.ModeOptionStruct] | None
65
+ dict[int, clusters.RvcRunMode.Structs.ModeOptionStruct] | None
66
66
  ) = None
67
67
  entity_description: StateVacuumEntityDescription
68
68
  _platform_translation_key = "vacuum"
69
69
 
70
70
  async def async_stop(self, **kwargs: Any) -> None:
71
71
  """Stop the vacuum cleaner."""
72
- await self.send_device_command(clusters.OperationalState.Commands.Stop())
72
+ # We simply set the RvcRunMode to the first runmode
73
+ # that has the idle tag to stop the vacuum cleaner.
74
+ # this is compatible with both Matter 1.2 and 1.3+ devices.
75
+ supported_run_modes = self._supported_run_modes or {}
76
+ for mode in supported_run_modes.values():
77
+ for tag in mode.modeTags:
78
+ if tag.value == ModeTag.IDLE:
79
+ # stop the vacuum by changing the run mode to idle
80
+ await self.send_device_command(
81
+ clusters.RvcRunMode.Commands.ChangeToMode(newMode=mode.mode)
82
+ )
83
+ return
73
84
 
74
85
  async def async_return_to_base(self, **kwargs: Any) -> None:
75
86
  """Set the vacuum cleaner to return to the dock."""
@@ -83,15 +94,30 @@ class MatterVacuum(MatterEntity, StateVacuumEntity):
83
94
  """Start or resume the cleaning task."""
84
95
  if TYPE_CHECKING:
85
96
  assert self._last_accepted_commands is not None
97
+
98
+ accepted_operational_commands = self._last_accepted_commands
86
99
  if (
87
100
  clusters.RvcOperationalState.Commands.Resume.command_id
88
- in self._last_accepted_commands
101
+ in accepted_operational_commands
102
+ and self.state == VacuumActivity.PAUSED
89
103
  ):
104
+ # vacuum is paused and supports resume command
90
105
  await self.send_device_command(
91
106
  clusters.RvcOperationalState.Commands.Resume()
92
107
  )
93
- else:
94
- await self.send_device_command(clusters.OperationalState.Commands.Start())
108
+ return
109
+
110
+ # We simply set the RvcRunMode to the first runmode
111
+ # that has the cleaning tag to start the vacuum cleaner.
112
+ # this is compatible with both Matter 1.2 and 1.3+ devices.
113
+ supported_run_modes = self._supported_run_modes or {}
114
+ for mode in supported_run_modes.values():
115
+ for tag in mode.modeTags:
116
+ if tag.value == ModeTag.CLEANING:
117
+ await self.send_device_command(
118
+ clusters.RvcRunMode.Commands.ChangeToMode(newMode=mode.mode)
119
+ )
120
+ return
95
121
 
96
122
  async def async_pause(self) -> None:
97
123
  """Pause the cleaning task."""
@@ -130,6 +156,8 @@ class MatterVacuum(MatterEntity, StateVacuumEntity):
130
156
  state = VacuumActivity.CLEANING
131
157
  elif ModeTag.IDLE in tags:
132
158
  state = VacuumActivity.IDLE
159
+ elif ModeTag.MAPPING in tags:
160
+ state = VacuumActivity.CLEANING
133
161
  self._attr_activity = state
134
162
 
135
163
  @callback
@@ -143,7 +171,10 @@ class MatterVacuum(MatterEntity, StateVacuumEntity):
143
171
  return
144
172
  self._last_accepted_commands = accepted_operational_commands
145
173
  supported_features: VacuumEntityFeature = VacuumEntityFeature(0)
174
+ supported_features |= VacuumEntityFeature.START
146
175
  supported_features |= VacuumEntityFeature.STATE
176
+ supported_features |= VacuumEntityFeature.STOP
177
+
147
178
  # optional battery attribute = battery feature
148
179
  if self.get_matter_attribute_value(
149
180
  clusters.PowerSource.Attributes.BatPercentRemaining
@@ -153,7 +184,7 @@ class MatterVacuum(MatterEntity, StateVacuumEntity):
153
184
  if self.get_matter_attribute_value(clusters.Identify.Attributes.IdentifyType):
154
185
  supported_features |= VacuumEntityFeature.LOCATE
155
186
  # create a map of supported run modes
156
- run_modes: list[clusters.RvcCleanMode.Structs.ModeOptionStruct] = (
187
+ run_modes: list[clusters.RvcRunMode.Structs.ModeOptionStruct] = (
157
188
  self.get_matter_attribute_value(
158
189
  clusters.RvcRunMode.Attributes.SupportedModes
159
190
  )
@@ -165,22 +196,6 @@ class MatterVacuum(MatterEntity, StateVacuumEntity):
165
196
  in accepted_operational_commands
166
197
  ):
167
198
  supported_features |= VacuumEntityFeature.PAUSE
168
- if (
169
- clusters.OperationalState.Commands.Stop.command_id
170
- in accepted_operational_commands
171
- ):
172
- supported_features |= VacuumEntityFeature.STOP
173
- if (
174
- clusters.OperationalState.Commands.Start.command_id
175
- in accepted_operational_commands
176
- ):
177
- # note that start has been replaced by resume in rev2 of the spec
178
- supported_features |= VacuumEntityFeature.START
179
- if (
180
- clusters.RvcOperationalState.Commands.Resume.command_id
181
- in accepted_operational_commands
182
- ):
183
- supported_features |= VacuumEntityFeature.START
184
199
  if (
185
200
  clusters.RvcOperationalState.Commands.GoHome.command_id
186
201
  in accepted_operational_commands
@@ -202,10 +217,7 @@ DISCOVERY_SCHEMAS = [
202
217
  clusters.RvcRunMode.Attributes.CurrentMode,
203
218
  clusters.RvcOperationalState.Attributes.OperationalState,
204
219
  ),
205
- optional_attributes=(
206
- clusters.RvcCleanMode.Attributes.CurrentMode,
207
- clusters.PowerSource.Attributes.BatPercentRemaining,
208
- ),
220
+ optional_attributes=(clusters.PowerSource.Attributes.BatPercentRemaining,),
209
221
  device_type=(device_types.RoboticVacuumCleaner,),
210
222
  allow_none_value=True,
211
223
  ),
@@ -25,4 +25,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: MeaterConfigEntry) -> bo
25
25
 
26
26
  async def async_unload_entry(hass: HomeAssistant, entry: MeaterConfigEntry) -> bool:
27
27
  """Unload a config entry."""
28
- return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
28
+ if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
29
+ hass.data[MEATER_DATA] = (
30
+ hass.data[MEATER_DATA] - entry.runtime_data.found_probes
31
+ )
32
+ return unload_ok
@@ -44,6 +44,7 @@ class MeaterCoordinator(DataUpdateCoordinator[dict[str, MeaterProbe]]):
44
44
  )
45
45
  session = async_get_clientsession(hass)
46
46
  self.client = MeaterApi(session)
47
+ self.found_probes: set[str] = set()
47
48
 
48
49
  async def _async_setup(self) -> None:
49
50
  """Set up the Meater Coordinator."""
@@ -73,5 +74,6 @@ class MeaterCoordinator(DataUpdateCoordinator[dict[str, MeaterProbe]]):
73
74
  raise UpdateFailed(
74
75
  "Too many requests have been made to the API, rate limiting is in place"
75
76
  ) from err
76
-
77
- return {device.id: device for device in devices}
77
+ res = {device.id: device for device in devices}
78
+ self.found_probes.update(set(res.keys()))
79
+ return res
@@ -210,10 +210,8 @@ class LocalMediaView(http.HomeAssistantView):
210
210
  self.hass = hass
211
211
  self.source = source
212
212
 
213
- async def get(
214
- self, request: web.Request, source_dir_id: str, location: str
215
- ) -> web.FileResponse:
216
- """Start a GET request."""
213
+ async def _validate_media_path(self, source_dir_id: str, location: str) -> Path:
214
+ """Validate media path and return it if valid."""
217
215
  try:
218
216
  raise_if_invalid_path(location)
219
217
  except ValueError as err:
@@ -233,6 +231,25 @@ class LocalMediaView(http.HomeAssistantView):
233
231
  if not mime_type or mime_type.split("/")[0] not in MEDIA_MIME_TYPES:
234
232
  raise web.HTTPNotFound
235
233
 
234
+ return media_path
235
+
236
+ async def head(
237
+ self, request: web.Request, source_dir_id: str, location: str
238
+ ) -> None:
239
+ """Handle a HEAD request.
240
+
241
+ This is sent by some DLNA renderers, like Samsung ones, prior to sending
242
+ the GET request.
243
+
244
+ Check whether the location exists or not.
245
+ """
246
+ await self._validate_media_path(source_dir_id, location)
247
+
248
+ async def get(
249
+ self, request: web.Request, source_dir_id: str, location: str
250
+ ) -> web.FileResponse:
251
+ """Handle a GET request."""
252
+ media_path = await self._validate_media_path(source_dir_id, location)
236
253
  return web.FileResponse(media_path)
237
254
 
238
255
 
@@ -340,5 +340,15 @@
340
340
  "reload": {
341
341
  "name": "\u041f\u0440\u0435\u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435"
342
342
  }
343
+ },
344
+ "triggers": {
345
+ "mqtt": {
346
+ "fields": {
347
+ "topic": {
348
+ "name": "\u0422\u0435\u043c\u0430"
349
+ }
350
+ },
351
+ "name": "MQTT"
352
+ }
343
353
  }
344
354
  }
@@ -123,6 +123,10 @@
123
123
  "entity_platform_config": {
124
124
  "data": {
125
125
  "entity_category": "\u039a\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2"
126
+ },
127
+ "data_description": {
128
+ "device_class": "\u0397 \u03ba\u03bb\u03ac\u03c3\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03c4\u03b7\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 {platform}. [\u039c\u03ac\u03b8\u03b5\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1.]({url}#device_class)",
129
+ "entity_category": "\u0395\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03c3\u03ae\u03bc\u03b1\u03bd\u03c3\u03b7 \u03bc\u03b9\u03b1\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2 \u03c9\u03c2 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2 \u03ae \u03b4\u03b9\u03b1\u03b3\u03bd\u03c9\u03c3\u03c4\u03b9\u03ba\u03bf\u03cd. \u039c\u03b9\u03b1 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bc\u03b5 \u03bc\u03b9\u03b1 \u03ba\u03b1\u03c4\u03b7\u03b3\u03bf\u03c1\u03af\u03b1 \u03b4\u03b5\u03bd \u03b8\u03b1 \u03b5\u03ba\u03c4\u03af\u03b8\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 cloud, Alexa \u03ae Google Assistant, \u03bf\u03cd\u03c4\u03b5 \u03b8\u03b1 \u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03ba\u03bb\u03ae\u03c3\u03b5\u03b9\u03c2 \u03ad\u03bc\u03bc\u03b5\u03c3\u03c9\u03bd \u03b5\u03bd\u03b5\u03c1\u03b3\u03b5\u03b9\u03ce\u03bd \u03c3\u03b5 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2 \u03ae \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ad\u03c2. \u03a3\u03c4\u03b9\u03c2 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b1\u03b9\u03c3\u03b8\u03b7\u03c4\u03ae\u03c1\u03c9\u03bd \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b1\u03bd\u03b1\u03c4\u03b5\u03b8\u03b5\u03af \u03ba\u03bb\u03ac\u03c3\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2. [\u039c\u03ac\u03b8\u03b5\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1.](https://developers.home-assistant.io/docs/core/entity/#registry-properties)"
126
130
  }
127
131
  },
128
132
  "mqtt_platform_config": {
@@ -501,5 +505,22 @@
501
505
  "description": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03c4\u03ce\u03bd\u03b5\u03b9 \u03bf\u03bd\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 MQTT \u03b1\u03c0\u03cc \u03c4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 YAML.",
502
506
  "name": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7"
503
507
  }
508
+ },
509
+ "triggers": {
510
+ "mqtt": {
511
+ "description": "\u039f\u03c4\u03b1\u03bd \u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03c4\u03b1\u03b9 \u03ad\u03bd\u03b1 \u03c3\u03c5\u03b3\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1 \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03c3\u03c5\u03b3\u03ba\u03b5\u03ba\u03c1\u03b9\u03bc\u03ad\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1 MQTT.",
512
+ "description_configured": "\u039f\u03c4\u03b1\u03bd \u03ad\u03c7\u03b5\u03b9 \u03bb\u03b7\u03c6\u03b8\u03b5\u03af \u03ad\u03bd\u03b1 \u03bc\u03ae\u03bd\u03c5\u03bc\u03b1 MQTT",
513
+ "fields": {
514
+ "payload": {
515
+ "description": "\u03a4\u03bf \u03c9\u03c6\u03ad\u03bb\u03b9\u03bc\u03bf \u03c6\u03bf\u03c1\u03c4\u03af\u03bf \u03b3\u03b9\u03b1 \u03c0\u03c5\u03c1\u03bf\u03b4\u03cc\u03c4\u03b7\u03c3\u03b7.",
516
+ "name": "\u03a9\u03c6\u03ad\u03bb\u03b9\u03bc\u03bf \u03c6\u03bf\u03c1\u03c4\u03af\u03bf"
517
+ },
518
+ "topic": {
519
+ "description": "\u0398\u03ad\u03bc\u03b1 MQTT \u03b3\u03b9\u03b1 \u03b1\u03ba\u03c1\u03cc\u03b1\u03c3\u03b7.",
520
+ "name": "\u0398\u03ad\u03bc\u03b1"
521
+ }
522
+ },
523
+ "name": "MQTT"
524
+ }
504
525
  }
505
526
  }
@@ -68,6 +68,9 @@
68
68
  },
69
69
  "config_subentries": {
70
70
  "device": {
71
+ "initiate_flow": {
72
+ "user": "Lis\u00e4\u00e4 MQTT-laite"
73
+ },
71
74
  "step": {
72
75
  "mqtt_platform_config": {
73
76
  "data": {
@@ -118,6 +118,7 @@
118
118
  "entity_platform_config": {
119
119
  "data": {
120
120
  "device_class": "Aicme gl\u00e9as",
121
+ "entity_category": "Catag\u00f3ir eintitis",
121
122
  "fan_feature_direction": "Taca\u00edocht treorach",
122
123
  "fan_feature_oscillation": "Taca\u00edocht luaineachta",
123
124
  "fan_feature_preset_modes": "Taca\u00edocht do mhodhanna r\u00e9amhshocraithe",
@@ -129,6 +130,7 @@
129
130
  "unit_of_measurement": "Aonad tomhais"
130
131
  },
131
132
  "data_description": {
133
+ "entity_category": "Ceada\u00edonn s\u00e9 seo eintiteas a mharc\u00e1il mar chumra\u00edocht n\u00f3 diagn\u00f3isic gl\u00e9is. N\u00ed bheidh eintiteas a bhfuil catag\u00f3ir aige nochtaithe do chomhph\u00e1irteanna scamall, Alexa, n\u00e1 C\u00fant\u00f3ir Google, n\u00e1 n\u00ed bheidh s\u00e9 san \u00e1ireamh i nglaonna gn\u00edomha\u00edochta ind\u00edreacha chuig gl\u00e9asanna n\u00f3 limist\u00e9ir. N\u00ed f\u00e9idir rang cumra\u00edochta gl\u00e9is a shannadh d'eintitis braiteora. [Tuilleadh eolais.](https://developers.home-assistant.io/docs/core/entity/#registry-properties)",
132
134
  "fan_feature_direction": "Taca\u00edonn an lucht lean\u00fana le treo.",
133
135
  "fan_feature_oscillation": "Taca\u00edonn an lucht lean\u00fana le luascadh.",
134
136
  "fan_feature_preset_modes": "Taca\u00edonn an lucht lean\u00fana le modhanna r\u00e9amhshocraithe.",
@@ -556,6 +558,12 @@
556
558
  "wind_direction": "Treo na gaoithe"
557
559
  }
558
560
  },
561
+ "entity_category": {
562
+ "options": {
563
+ "config": "Cumra\u00edocht",
564
+ "diagnostic": "Diagn\u00f3iseach"
565
+ }
566
+ },
559
567
  "light_schema": {
560
568
  "options": {
561
569
  "basic": "Sc\u00e9im r\u00e9amhshocraithe",
@@ -575,5 +583,22 @@
575
583
  "measurement_angle": "Uillinn tomhais"
576
584
  }
577
585
  }
586
+ },
587
+ "triggers": {
588
+ "mqtt": {
589
+ "description": "Nuair a fhaightear teachtaireacht shonrach ar thopaic MQTT ar leith.",
590
+ "description_configured": "Nuair a fhaightear teachtaireacht MQTT",
591
+ "fields": {
592
+ "payload": {
593
+ "description": "An t-ualach le spreagadh air.",
594
+ "name": "Ualach"
595
+ },
596
+ "topic": {
597
+ "description": "Topaic MQTT le h\u00e9isteacht leis.",
598
+ "name": "Topaic"
599
+ }
600
+ },
601
+ "name": "MQTT"
602
+ }
578
603
  }
579
604
  }
@@ -43,6 +43,13 @@
43
43
  "title": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0458\u0442\u0435 \u0433\u043e MQTT-\u0443\u0440\u0435\u0434\u043e\u0442 \u201e {mqtt_device} \u201c"
44
44
  },
45
45
  "entity_platform_config": {
46
+ "data": {
47
+ "entity_category": "\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0458\u0430 \u043d\u0430 \u0435\u043d\u0442\u0438\u0442\u0435\u0442"
48
+ },
49
+ "data_description": {
50
+ "device_class": "\u041a\u043b\u0430\u0441\u0430\u0442\u0430 \u043d\u0430 \u0443\u0440\u0435\u0434 \u043d\u0430 \u0435\u043d\u0442\u0438\u0442\u0435\u0442\u043e\u0442 {platform}. [\u0414\u043e\u0437\u043d\u0430\u0458\u0442\u0435 \u043f\u043e\u0432\u0435\u045c\u0435.]( {url} #device_class)",
51
+ "entity_category": "\u041e\u0432\u043e\u0437\u043c\u043e\u0436\u0443\u0432\u0430 \u043e\u0437\u043d\u0430\u0447\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u0435\u043d\u0442\u0438\u0442\u0435\u0442 \u043a\u0430\u043a\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0458\u0430 \u043d\u0430 \u0443\u0440\u0435\u0434 \u0438\u043b\u0438 \u0434\u0438\u0458\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430. \u0415\u043d\u0442\u0438\u0442\u0435\u0442 \u0441\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0458\u0430 \u043d\u0435\u043c\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0438\u0437\u043b\u043e\u0436\u0435\u043d \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0438 \u043e\u0434 \u043e\u0431\u043b\u0430\u043a\u043e\u0442, \u0410\u043b\u0435\u043a\u0441\u0430 \u0438\u043b\u0438 Google Assistant, \u043d\u0438\u0442\u0443 \u045c\u0435 \u0431\u0438\u0434\u0435 \u0432\u043a\u043b\u0443\u0447\u0435\u043d \u0432\u043e \u043f\u043e\u0432\u0438\u0446\u0438 \u0441\u043e \u0438\u043d\u0434\u0438\u0440\u0435\u043a\u0442\u043d\u043e \u0434\u0435\u0458\u0441\u0442\u0432\u043e \u0434\u043e \u0443\u0440\u0435\u0434\u0438 \u0438\u043b\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u041d\u0430 \u0435\u043d\u0442\u0438\u0442\u0435\u0442\u0438\u0442\u0435 \u043d\u0430 \u0441\u0435\u043d\u0437\u043e\u0440\u0438\u0442\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0438\u043c \u0441\u0435 \u0434\u043e\u0434\u0435\u043b\u0438 \u043a\u043b\u0430\u0441\u0430 \u0437\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0458\u0430 \u043d\u0430 \u0443\u0440\u0435\u0434. [\u0414\u043e\u0437\u043d\u0430\u0458\u0442\u0435 \u043f\u043e\u0432\u0435\u045c\u0435.](https://developers.home-assistant.io/docs/core/entity/#registry-properties)"
52
+ },
46
53
  "sections": {
47
54
  "advanced_settings": {
48
55
  "name": "\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u0438 \u043e\u043f\u0446\u0438\u0438"
@@ -128,10 +135,26 @@
128
135
  }
129
136
  },
130
137
  "selector": {
138
+ "entity_category": {
139
+ "options": {
140
+ "diagnostic": "\u0414\u0438\u0458\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u043a\u0438"
141
+ }
142
+ },
131
143
  "on_command_type": {
132
144
  "options": {
133
145
  "brightness": "\u041e\u0441\u0432\u0435\u0442\u043b\u0435\u043d\u043e\u0441\u0442"
134
146
  }
135
147
  }
148
+ },
149
+ "triggers": {
150
+ "mqtt": {
151
+ "fields": {
152
+ "topic": {
153
+ "description": "MQTT \u0442\u0435\u043c\u0430 \u0437\u0430 \u0441\u043b\u0443\u0448\u0430\u045a\u0435.",
154
+ "name": "\u0422\u0435\u043c\u0430"
155
+ }
156
+ },
157
+ "name": "MQTT"
158
+ }
136
159
  }
137
160
  }
@@ -213,6 +213,7 @@
213
213
  "unit_of_measurement": "\u0415\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f"
214
214
  },
215
215
  "data_description": {
216
+ "device_class": "\u041a\u043b\u0430\u0441\u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 {platform}. [\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435.]({url}#device_class)",
216
217
  "fan_feature_direction": "\u0412\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435.",
217
218
  "fan_feature_oscillation": "\u0412\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f.",
218
219
  "fan_feature_preset_modes": "\u0412\u0435\u043d\u0442\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0436\u0438\u043c\u044b.",
@@ -208,6 +208,7 @@
208
208
  "entity_platform_config": {
209
209
  "data": {
210
210
  "device_class": "Enhetsklass",
211
+ "entity_category": "Entitetskategori",
211
212
  "fan_feature_direction": "St\u00f6d f\u00f6r riktning",
212
213
  "fan_feature_oscillation": "St\u00f6d f\u00f6r oscillation",
213
214
  "fan_feature_preset_modes": "St\u00f6d f\u00f6r f\u00f6rinst\u00e4llningsl\u00e4gen",
@@ -802,6 +803,12 @@
802
803
  "switch": "Brytare"
803
804
  }
804
805
  },
806
+ "entity_category": {
807
+ "options": {
808
+ "config": "Konfiguration",
809
+ "diagnostic": "Diagnostisk"
810
+ }
811
+ },
805
812
  "light_schema": {
806
813
  "options": {
807
814
  "basic": "Standardschema",
@@ -902,5 +909,22 @@
902
909
  "description": "Laddar om MQTT-entiteter fr\u00e5n YAML-konfigurationen.",
903
910
  "name": "Ladda om"
904
911
  }
912
+ },
913
+ "triggers": {
914
+ "mqtt": {
915
+ "description": "N\u00e4r ett specifikt meddelande tas emot p\u00e5 ett visst MQTT-\u00e4mne.",
916
+ "description_configured": "N\u00e4r ett MQTT-meddelande har mottagits",
917
+ "fields": {
918
+ "payload": {
919
+ "description": "Nyttolasten att utl\u00f6sa p\u00e5.",
920
+ "name": "Nyttolast"
921
+ },
922
+ "topic": {
923
+ "description": "MQTT-\u00e4mne att lyssna p\u00e5.",
924
+ "name": "\u00c4mne"
925
+ }
926
+ },
927
+ "name": "MQTT"
928
+ }
905
929
  }
906
930
  }
@@ -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"
@@ -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
  )
@@ -138,6 +139,7 @@ async def async_migrate_integration(hass: HomeAssistant) -> None:
138
139
  else:
139
140
  hass.config_entries.async_update_entry(
140
141
  entry,
142
+ title=DEFAULT_NAME,
141
143
  options={},
142
144
  version=2,
143
145
  )
@@ -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
+ }