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.
- homeassistant/components/aemet/sensor.py +1 -1
- homeassistant/components/airq/coordinator.py +2 -2
- homeassistant/components/alexa_devices/__init__.py +5 -2
- homeassistant/components/alexa_devices/notify.py +2 -0
- homeassistant/components/alexa_devices/quality_scale.yaml +1 -1
- homeassistant/components/alexa_devices/strings.json +11 -4
- homeassistant/components/alexa_devices/switch.py +2 -0
- homeassistant/components/alexa_devices/translations/bg.json +6 -4
- homeassistant/components/alexa_devices/translations/cs.json +0 -4
- homeassistant/components/alexa_devices/translations/de.json +6 -7
- homeassistant/components/alexa_devices/translations/el.json +4 -5
- homeassistant/components/alexa_devices/translations/en.json +12 -5
- homeassistant/components/alexa_devices/translations/es.json +0 -4
- homeassistant/components/alexa_devices/translations/et.json +4 -5
- homeassistant/components/alexa_devices/translations/ga.json +0 -6
- homeassistant/components/alexa_devices/translations/he.json +0 -4
- homeassistant/components/alexa_devices/translations/hu.json +0 -4
- homeassistant/components/alexa_devices/translations/id.json +1 -0
- homeassistant/components/alexa_devices/translations/lt.json +0 -4
- homeassistant/components/alexa_devices/translations/mk.json +12 -0
- homeassistant/components/alexa_devices/translations/nl.json +0 -4
- homeassistant/components/alexa_devices/translations/pl.json +0 -4
- homeassistant/components/alexa_devices/translations/pt.json +0 -4
- homeassistant/components/alexa_devices/translations/ru.json +4 -5
- homeassistant/components/alexa_devices/translations/sk.json +4 -5
- homeassistant/components/alexa_devices/translations/sv.json +17 -5
- homeassistant/components/alexa_devices/translations/tr.json +0 -4
- homeassistant/components/alexa_devices/translations/zh-Hans.json +15 -4
- homeassistant/components/alexa_devices/translations/zh-Hant.json +4 -5
- homeassistant/components/alexa_devices/utils.py +40 -0
- homeassistant/components/altruist/translations/id.json +11 -0
- homeassistant/components/anthropic/__init__.py +8 -1
- homeassistant/components/anthropic/translations/bg.json +21 -0
- homeassistant/components/anthropic/translations/ga.json +32 -1
- homeassistant/components/anthropic/translations/id.json +19 -0
- homeassistant/components/anthropic/translations/ru.json +30 -0
- homeassistant/components/buienradar/sensor.py +0 -1
- homeassistant/components/cambridge_audio/translations/sv.json +1 -1
- homeassistant/components/demo/translations/select.sv.json +2 -2
- homeassistant/components/derivative/translations/ga.json +20 -0
- homeassistant/components/derivative/translations/ru.json +3 -0
- homeassistant/components/devolo_home_control/translations/bg.json +6 -0
- homeassistant/components/devolo_home_control/translations/id.json +5 -0
- homeassistant/components/devolo_home_control/translations/sv.json +10 -0
- homeassistant/components/devolo_home_control/translations/zh-Hans.json +10 -0
- homeassistant/components/dlink/manifest.json +1 -1
- homeassistant/components/ecovacs/translations/sv.json +1 -1
- homeassistant/components/enphase_envoy/translations/sv.json +2 -2
- homeassistant/components/ezviz/translations/bg.json +6 -0
- homeassistant/components/ezviz/translations/mk.json +13 -0
- homeassistant/components/ezviz/translations/sv.json +10 -0
- homeassistant/components/ezviz/translations/zh-Hans.json +10 -0
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/goodwe/translations/sv.json +5 -5
- homeassistant/components/google_generative_ai_conversation/__init__.py +15 -0
- homeassistant/components/google_generative_ai_conversation/config_flow.py +72 -36
- homeassistant/components/google_generative_ai_conversation/const.py +15 -2
- homeassistant/components/google_generative_ai_conversation/diagnostics.py +1 -0
- homeassistant/components/google_generative_ai_conversation/entity.py +7 -2
- homeassistant/components/google_generative_ai_conversation/helpers.py +73 -0
- homeassistant/components/google_generative_ai_conversation/strings.json +28 -1
- homeassistant/components/google_generative_ai_conversation/translations/bg.json +19 -0
- homeassistant/components/google_generative_ai_conversation/translations/de.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/el.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/en.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/es.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/et.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/ga.json +9 -0
- homeassistant/components/google_generative_ai_conversation/translations/id.json +30 -0
- homeassistant/components/google_generative_ai_conversation/translations/mk.json +11 -0
- homeassistant/components/google_generative_ai_conversation/translations/ru.json +67 -0
- homeassistant/components/google_generative_ai_conversation/translations/sk.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/sv.json +21 -0
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +28 -0
- homeassistant/components/google_generative_ai_conversation/tts.py +48 -106
- homeassistant/components/group/translations/el.json +18 -18
- homeassistant/components/habitica/const.py +1 -1
- homeassistant/components/harmony/translations/select.sv.json +1 -1
- homeassistant/components/harmony/translations/sv.json +1 -1
- homeassistant/components/homeassistant_hardware/translations/ga.json +9 -0
- homeassistant/components/homeassistant_hardware/translations/mk.json +9 -0
- homeassistant/components/homeassistant_sky_connect/translations/ga.json +10 -0
- homeassistant/components/homeassistant_sky_connect/translations/mk.json +7 -0
- homeassistant/components/homeassistant_yellow/translations/ga.json +5 -0
- homeassistant/components/homewizard/translations/sv.json +3 -1
- homeassistant/components/http/auth.py +1 -1
- homeassistant/components/image/__init__.py +34 -3
- homeassistant/components/input_select/translations/sv.json +6 -6
- homeassistant/components/iron_os/translations/sv.json +1 -1
- homeassistant/components/keenetic_ndms2/translations/id.json +3 -0
- homeassistant/components/lamarzocco/translations/sv.json +3 -3
- homeassistant/components/lametric/translations/sv.json +2 -2
- homeassistant/components/lametric/update.py +1 -1
- homeassistant/components/lg_thinq/translations/sv.json +5 -5
- homeassistant/components/litterrobot/translations/bg.json +4 -0
- homeassistant/components/litterrobot/translations/ga.json +3 -0
- homeassistant/components/matter/translations/id.json +5 -0
- homeassistant/components/matter/vacuum.py +38 -26
- homeassistant/components/meater/__init__.py +5 -1
- homeassistant/components/meater/coordinator.py +4 -2
- homeassistant/components/media_source/local_source.py +21 -4
- homeassistant/components/mqtt/translations/bg.json +10 -0
- homeassistant/components/mqtt/translations/el.json +21 -0
- homeassistant/components/mqtt/translations/fi.json +3 -0
- homeassistant/components/mqtt/translations/ga.json +25 -0
- homeassistant/components/mqtt/translations/mk.json +23 -0
- homeassistant/components/mqtt/translations/ru.json +1 -0
- homeassistant/components/mqtt/translations/sv.json +24 -0
- homeassistant/components/mqtt/translations/zh-Hans.json +26 -0
- homeassistant/components/mqtt/translations/zh-Hant.json +19 -0
- homeassistant/components/music_assistant/button.py +0 -6
- homeassistant/components/ntfy/translations/id.json +13 -0
- homeassistant/components/ohme/translations/sv.json +1 -1
- homeassistant/components/ollama/__init__.py +2 -0
- homeassistant/components/ollama/const.py +2 -0
- homeassistant/components/ollama/translations/bg.json +19 -0
- homeassistant/components/ollama/translations/ga.json +31 -1
- homeassistant/components/ollama/translations/id.json +18 -0
- homeassistant/components/ollama/translations/mk.json +13 -1
- homeassistant/components/onewire/translations/sv.json +4 -4
- homeassistant/components/openai_conversation/__init__.py +2 -0
- homeassistant/components/openai_conversation/const.py +1 -1
- homeassistant/components/openai_conversation/conversation.py +1 -1
- homeassistant/components/openai_conversation/translations/bg.json +26 -0
- homeassistant/components/openai_conversation/translations/id.json +23 -0
- homeassistant/components/openai_conversation/translations/mk.json +44 -0
- homeassistant/components/playstation_network/translations/bg.json +25 -1
- homeassistant/components/playstation_network/translations/es.json +1 -1
- homeassistant/components/playstation_network/translations/ga.json +31 -0
- homeassistant/components/playstation_network/translations/id.json +14 -0
- homeassistant/components/playstation_network/translations/mk.json +18 -0
- homeassistant/components/playstation_network/translations/sv.json +29 -0
- homeassistant/components/playstation_network/translations/zh-Hans.json +29 -0
- homeassistant/components/qnap/translations/sv.json +1 -1
- homeassistant/components/remote_calendar/translations/fi.json +34 -0
- homeassistant/components/select/translations/sv.json +10 -10
- homeassistant/components/smarla/__init__.py +2 -2
- homeassistant/components/sonos/translations/bg.json +5 -0
- homeassistant/components/sonos/translations/el.json +6 -0
- homeassistant/components/sonos/translations/ga.json +8 -0
- homeassistant/components/sonos/translations/mk.json +10 -0
- homeassistant/components/sonos/translations/ru.json +6 -0
- homeassistant/components/sonos/translations/sv.json +6 -0
- homeassistant/components/sonos/translations/zh-Hans.json +9 -0
- homeassistant/components/sonos/translations/zh-Hant.json +6 -0
- homeassistant/components/switchbot/translations/bg.json +26 -0
- homeassistant/components/switchbot/translations/ga.json +33 -0
- homeassistant/components/switchbot/translations/id.json +19 -0
- homeassistant/components/switchbot/translations/mk.json +49 -0
- homeassistant/components/switchbot/translations/sv.json +52 -0
- homeassistant/components/switchbot/translations/zh-Hans.json +53 -0
- homeassistant/components/telegram_bot/__init__.py +20 -4
- homeassistant/components/telegram_bot/bot.py +33 -29
- homeassistant/components/telegram_bot/config_flow.py +49 -10
- homeassistant/components/telegram_bot/const.py +1 -1
- homeassistant/components/telegram_bot/strings.json +33 -10
- homeassistant/components/telegram_bot/translations/bg.json +0 -1
- homeassistant/components/telegram_bot/translations/cs.json +5 -12
- homeassistant/components/telegram_bot/translations/de.json +12 -11
- homeassistant/components/telegram_bot/translations/el.json +5 -12
- homeassistant/components/telegram_bot/translations/en-GB.json +5 -12
- homeassistant/components/telegram_bot/translations/en.json +35 -12
- homeassistant/components/telegram_bot/translations/es.json +5 -12
- homeassistant/components/telegram_bot/translations/et.json +11 -12
- homeassistant/components/telegram_bot/translations/fr.json +5 -12
- homeassistant/components/telegram_bot/translations/ga.json +5 -11
- homeassistant/components/telegram_bot/translations/he.json +3 -8
- homeassistant/components/telegram_bot/translations/hu.json +5 -12
- homeassistant/components/telegram_bot/translations/id.json +0 -5
- homeassistant/components/telegram_bot/translations/it.json +2 -5
- homeassistant/components/telegram_bot/translations/lt.json +5 -12
- homeassistant/components/telegram_bot/translations/mk.json +7 -5
- homeassistant/components/telegram_bot/translations/nl.json +5 -12
- homeassistant/components/telegram_bot/translations/pt.json +5 -12
- homeassistant/components/telegram_bot/translations/ru.json +12 -11
- homeassistant/components/telegram_bot/translations/sk.json +5 -12
- homeassistant/components/telegram_bot/translations/sv.json +5 -12
- homeassistant/components/telegram_bot/translations/tr.json +5 -12
- homeassistant/components/telegram_bot/translations/zh-Hans.json +5 -12
- homeassistant/components/telegram_bot/translations/zh-Hant.json +5 -12
- homeassistant/components/template/translations/sv.json +5 -5
- homeassistant/components/tilt_pi/translations/id.json +11 -0
- homeassistant/components/tts/__init__.py +15 -0
- homeassistant/components/unifiprotect/translations/zh-Hans.json +3 -3
- homeassistant/components/utility_meter/translations/sv.json +9 -9
- homeassistant/components/vegehub/translations/bg.json +2 -0
- homeassistant/components/vegehub/translations/id.json +11 -0
- homeassistant/components/whirlpool/translations/sv.json +12 -12
- homeassistant/components/zha/translations/bg.json +23 -0
- homeassistant/components/zha/translations/el.json +10 -0
- homeassistant/components/zha/translations/ga.json +20 -0
- homeassistant/components/zha/translations/id.json +6 -0
- homeassistant/components/zha/translations/sv.json +15 -0
- homeassistant/components/zha/translations/zh-Hans.json +50 -0
- homeassistant/components/zwave_js/api.py +1 -1
- homeassistant/components/zwave_js/config_flow.py +12 -8
- homeassistant/components/zwave_js/manifest.json +1 -1
- homeassistant/config_entries.py +6 -0
- homeassistant/const.py +1 -1
- homeassistant/package_constraints.txt +1 -1
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/METADATA +1 -1
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/RECORD +208 -192
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/WHEEL +0 -0
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.7.0b0.dist-info → homeassistant-2025.7.0b1.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {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.
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
94
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
214
|
-
|
|
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
|
}
|
|
@@ -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"
|
|
@@ -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
|
)
|
|
@@ -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
|
+
}
|