homeassistant 2025.7.0b7__py3-none-any.whl → 2025.7.0b9__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/ai_task/translations/nl.json +3 -0
- homeassistant/components/alexa_devices/config_flow.py +3 -1
- homeassistant/components/alexa_devices/manifest.json +1 -1
- homeassistant/components/alexa_devices/strings.json +1 -0
- homeassistant/components/alexa_devices/translations/de.json +2 -1
- homeassistant/components/alexa_devices/translations/en.json +2 -1
- homeassistant/components/alexa_devices/translations/es.json +2 -1
- homeassistant/components/alexa_devices/translations/et.json +2 -1
- homeassistant/components/alexa_devices/translations/ga.json +11 -0
- homeassistant/components/alexa_devices/translations/lt.json +29 -2
- homeassistant/components/alexa_devices/translations/mk.json +8 -0
- homeassistant/components/alexa_devices/translations/sk.json +2 -1
- homeassistant/components/alexa_devices/translations/zh-Hant.json +2 -1
- homeassistant/components/androidtv_remote/translations/ko.json +1 -1
- homeassistant/components/aosmith/translations/ko.json +1 -1
- homeassistant/components/assist_satellite/translations/nl.json +7 -0
- homeassistant/components/aussie_broadband/translations/ko.json +1 -1
- homeassistant/components/bluetooth/manifest.json +1 -1
- homeassistant/components/bosch_shc/translations/ko.json +1 -1
- homeassistant/components/brunt/translations/ko.json +1 -1
- homeassistant/components/caldav/translations/ko.json +1 -1
- homeassistant/components/devolo_home_control/translations/lt.json +10 -0
- homeassistant/components/ecovacs/manifest.json +1 -1
- homeassistant/components/electric_kiwi/translations/ko.json +1 -1
- homeassistant/components/emoncms/translations/ga.json +1 -0
- homeassistant/components/enphase_envoy/translations/et.json +1 -0
- homeassistant/components/enphase_envoy/translations/lt.json +1 -0
- homeassistant/components/enphase_envoy/translations/nl.json +2 -1
- homeassistant/components/ezviz/translations/lt.json +10 -0
- homeassistant/components/fibaro/translations/ko.json +1 -1
- homeassistant/components/fitbit/translations/ko.json +1 -1
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/geocaching/translations/ko.json +1 -1
- homeassistant/components/google/translations/ko.json +1 -1
- homeassistant/components/google_generative_ai_conversation/config_flow.py +5 -4
- homeassistant/components/google_generative_ai_conversation/translations/lt.json +28 -0
- homeassistant/components/google_photos/translations/ko.json +1 -1
- homeassistant/components/google_sheets/translations/ko.json +1 -1
- homeassistant/components/google_tasks/translations/ko.json +1 -1
- homeassistant/components/google_travel_time/translations/it.json +7 -0
- homeassistant/components/hassio/ingress.py +6 -2
- homeassistant/components/home_connect/translations/it.json +3 -0
- homeassistant/components/homeassistant/translations/it.json +24 -0
- homeassistant/components/homeassistant_hardware/translations/et.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/ga.json +4 -0
- homeassistant/components/homeassistant_hardware/translations/lt.json +2 -0
- homeassistant/components/homeassistant_hardware/translations/mk.json +3 -0
- homeassistant/components/homeassistant_sky_connect/translations/et.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/ga.json +8 -0
- homeassistant/components/homeassistant_sky_connect/translations/lt.json +4 -0
- homeassistant/components/homeassistant_yellow/translations/et.json +1 -0
- homeassistant/components/homeassistant_yellow/translations/ga.json +4 -0
- homeassistant/components/homeassistant_yellow/translations/lt.json +3 -0
- homeassistant/components/huawei_lte/translations/ko.json +1 -1
- homeassistant/components/icloud/translations/ko.json +1 -1
- homeassistant/components/immich/translations/nl.json +5 -0
- homeassistant/components/jellyfin/translations/ko.json +1 -1
- homeassistant/components/jvc_projector/translations/ko.json +1 -1
- homeassistant/components/laundrify/translations/ko.json +1 -1
- homeassistant/components/lcn/translations/cs.json +0 -3
- homeassistant/components/lcn/translations/de.json +1 -1
- homeassistant/components/lcn/translations/el.json +0 -3
- homeassistant/components/lcn/translations/en-GB.json +0 -3
- homeassistant/components/lcn/translations/en.json +1 -1
- homeassistant/components/lcn/translations/es.json +1 -1
- homeassistant/components/lcn/translations/et.json +0 -3
- homeassistant/components/lcn/translations/hu.json +0 -3
- homeassistant/components/lcn/translations/ja.json +0 -3
- homeassistant/components/lcn/translations/lt.json +0 -3
- homeassistant/components/lcn/translations/pt-BR.json +0 -3
- homeassistant/components/lcn/translations/pt.json +0 -3
- homeassistant/components/lcn/translations/ru.json +0 -3
- homeassistant/components/lcn/translations/sk.json +0 -3
- homeassistant/components/lcn/translations/sv.json +0 -3
- homeassistant/components/lcn/translations/tr.json +0 -3
- homeassistant/components/lcn/translations/zh-Hans.json +0 -3
- homeassistant/components/lcn/translations/zh-Hant.json +0 -3
- homeassistant/components/ld2410_ble/manifest.json +1 -1
- homeassistant/components/led_ble/manifest.json +1 -1
- homeassistant/components/lg_thinq/translations/et.json +3 -1
- homeassistant/components/lg_thinq/translations/lt.json +3 -1
- homeassistant/components/lidarr/translations/ko.json +1 -1
- homeassistant/components/litterrobot/translations/en-GB.json +1 -0
- homeassistant/components/litterrobot/translations/et.json +1 -0
- homeassistant/components/litterrobot/translations/ko.json +1 -1
- homeassistant/components/litterrobot/translations/lt.json +1 -0
- homeassistant/components/litterrobot/translations/sk.json +1 -0
- homeassistant/components/litterrobot/translations/zh-Hans.json +1 -0
- homeassistant/components/lyric/translations/it.json +3 -0
- homeassistant/components/lyric/translations/ko.json +1 -1
- homeassistant/components/melcloud/translations/ko.json +1 -1
- homeassistant/components/miele/translations/it.json +3 -0
- homeassistant/components/miele/translations/sk.json +1 -0
- homeassistant/components/mikrotik/translations/ko.json +1 -1
- homeassistant/components/mqtt/translations/bg.json +10 -0
- homeassistant/components/mqtt/translations/ga.json +10 -0
- homeassistant/components/mqtt/translations/it.json +7 -1
- homeassistant/components/mqtt/translations/lt.json +37 -0
- homeassistant/components/mqtt/translations/mk.json +9 -0
- homeassistant/components/nest/translations/ko.json +1 -1
- homeassistant/components/netatmo/translations/ko.json +1 -1
- homeassistant/components/nordpool/coordinator.py +3 -0
- homeassistant/components/notion/translations/ko.json +1 -1
- homeassistant/components/nuki/translations/ko.json +1 -1
- homeassistant/components/ollama/__init__.py +30 -4
- homeassistant/components/ollama/config_flow.py +164 -135
- homeassistant/components/ollama/conversation.py +8 -243
- homeassistant/components/ollama/entity.py +261 -0
- homeassistant/components/ollama/strings.json +12 -10
- homeassistant/components/ollama/translations/bg.json +0 -1
- homeassistant/components/ollama/translations/ca.json +0 -10
- homeassistant/components/ollama/translations/cs.json +1 -10
- homeassistant/components/ollama/translations/de.json +1 -10
- homeassistant/components/ollama/translations/el.json +1 -10
- homeassistant/components/ollama/translations/en-GB.json +0 -10
- homeassistant/components/ollama/translations/en.json +12 -10
- homeassistant/components/ollama/translations/es.json +1 -10
- homeassistant/components/ollama/translations/et.json +1 -10
- homeassistant/components/ollama/translations/fi.json +0 -7
- homeassistant/components/ollama/translations/fr.json +1 -10
- homeassistant/components/ollama/translations/ga.json +0 -3
- homeassistant/components/ollama/translations/hu.json +1 -10
- homeassistant/components/ollama/translations/it.json +0 -8
- homeassistant/components/ollama/translations/ja.json +1 -10
- homeassistant/components/ollama/translations/lt.json +1 -10
- homeassistant/components/ollama/translations/pt-BR.json +0 -3
- homeassistant/components/ollama/translations/pt.json +1 -10
- homeassistant/components/ollama/translations/ru.json +1 -10
- homeassistant/components/ollama/translations/sk.json +1 -10
- homeassistant/components/ollama/translations/sv.json +1 -10
- homeassistant/components/ollama/translations/tr.json +0 -10
- homeassistant/components/ollama/translations/zh-Hans.json +1 -10
- homeassistant/components/ollama/translations/zh-Hant.json +1 -10
- homeassistant/components/opentherm_gw/translations/bg.json +3 -0
- homeassistant/components/opentherm_gw/translations/et.json +3 -0
- homeassistant/components/opentherm_gw/translations/ga.json +3 -0
- homeassistant/components/opentherm_gw/translations/lt.json +3 -0
- homeassistant/components/opentherm_gw/translations/mk.json +7 -0
- homeassistant/components/openuv/translations/ko.json +1 -1
- homeassistant/components/opower/translations/ko.json +1 -1
- homeassistant/components/overkiz/translations/et.json +1 -0
- homeassistant/components/overkiz/translations/lt.json +1 -0
- homeassistant/components/overkiz/translations/zh-Hans.json +1 -0
- homeassistant/components/pegel_online/translations/lt.json +2 -1
- homeassistant/components/playstation_network/translations/cs.json +0 -3
- homeassistant/components/playstation_network/translations/el.json +0 -3
- homeassistant/components/playstation_network/translations/en.json +1 -1
- homeassistant/components/playstation_network/translations/et.json +1 -1
- homeassistant/components/playstation_network/translations/ga.json +0 -3
- homeassistant/components/playstation_network/translations/hu.json +0 -3
- homeassistant/components/playstation_network/translations/it.json +0 -3
- homeassistant/components/playstation_network/translations/lt.json +29 -0
- homeassistant/components/playstation_network/translations/mk.json +0 -3
- homeassistant/components/playstation_network/translations/nl.json +0 -3
- homeassistant/components/playstation_network/translations/pl.json +0 -3
- homeassistant/components/playstation_network/translations/pt.json +0 -3
- homeassistant/components/playstation_network/translations/sk.json +1 -1
- homeassistant/components/playstation_network/translations/sv.json +0 -3
- homeassistant/components/playstation_network/translations/zh-Hans.json +0 -3
- homeassistant/components/playstation_network/translations/zh-Hant.json +1 -1
- homeassistant/components/private_ble_device/manifest.json +1 -1
- homeassistant/components/proximity/translations/lt.json +25 -1
- homeassistant/components/proximity/translations/nl.json +3 -0
- homeassistant/components/pushover/translations/ko.json +1 -1
- homeassistant/components/radarr/translations/ko.json +1 -1
- homeassistant/components/renault/translations/ko.json +1 -1
- homeassistant/components/reolink/translations/it.json +3 -0
- homeassistant/components/reolink/translations/pl.json +2 -1
- homeassistant/components/ridwell/translations/ko.json +1 -1
- homeassistant/components/ring/translations/ko.json +1 -1
- homeassistant/components/roborock/translations/ko.json +1 -1
- homeassistant/components/russound_rio/translations/nl.json +7 -0
- homeassistant/components/schlage/translations/ko.json +1 -1
- homeassistant/components/scrape/translations/it.json +1 -0
- homeassistant/components/sense/translations/ko.json +1 -1
- homeassistant/components/sensibo/translations/pt-BR.json +4 -1
- homeassistant/components/sensibo/translations/sv.json +3 -3
- homeassistant/components/sensor/translations/it.json +1 -0
- homeassistant/components/shelly/__init__.py +8 -1
- homeassistant/components/shelly/const.py +3 -0
- homeassistant/components/shelly/repairs.py +87 -4
- homeassistant/components/shelly/strings.json +14 -0
- homeassistant/components/shelly/translations/bg.json +7 -0
- homeassistant/components/shelly/translations/de.json +14 -0
- homeassistant/components/shelly/translations/en.json +14 -0
- homeassistant/components/shelly/translations/es.json +14 -0
- homeassistant/components/shelly/translations/et.json +11 -0
- homeassistant/components/shelly/translations/ko.json +1 -1
- homeassistant/components/skybell/translations/ko.json +1 -1
- homeassistant/components/sleepiq/translations/ko.json +1 -1
- homeassistant/components/sma/config_flow.py +30 -1
- homeassistant/components/smarla/translations/it.json +9 -0
- homeassistant/components/smarttub/translations/ko.json +1 -1
- homeassistant/components/sonarr/translations/ko.json +1 -1
- homeassistant/components/sonos/translations/lt.json +9 -0
- homeassistant/components/spotify/translations/ko.json +1 -1
- homeassistant/components/sql/translations/it.json +1 -0
- homeassistant/components/squeezebox/translations/it.json +5 -0
- homeassistant/components/steam_online/translations/ko.json +1 -1
- homeassistant/components/subaru/translations/lt.json +2 -0
- homeassistant/components/subaru/translations/mk.json +12 -0
- homeassistant/components/surepetcare/translations/ko.json +1 -1
- homeassistant/components/switchbot/translations/en-GB.json +5 -0
- homeassistant/components/switchbot/translations/es.json +1 -0
- homeassistant/components/switchbot/translations/et.json +1 -0
- homeassistant/components/switchbot/translations/ga.json +13 -0
- homeassistant/components/switchbot/translations/lt.json +54 -0
- homeassistant/components/switchbot/translations/nl.json +1 -0
- homeassistant/components/switchbot/translations/sk.json +1 -0
- homeassistant/components/switchbot/translations/zh-Hans.json +1 -0
- homeassistant/components/switchbot/translations/zh-Hant.json +1 -0
- homeassistant/components/telegram_bot/translations/bg.json +10 -0
- homeassistant/components/telegram_bot/translations/ga.json +28 -0
- homeassistant/components/telegram_bot/translations/it.json +12 -0
- homeassistant/components/telegram_bot/translations/lt.json +30 -0
- homeassistant/components/telegram_bot/translations/mk.json +5 -0
- homeassistant/components/template/translations/it.json +1 -0
- homeassistant/components/tesla_fleet/translations/en-GB.json +3 -0
- homeassistant/components/tesla_fleet/translations/et.json +3 -0
- homeassistant/components/tesla_fleet/translations/lt.json +3 -0
- homeassistant/components/tesla_fleet/translations/mk.json +3 -0
- homeassistant/components/tesla_fleet/translations/nl.json +3 -0
- homeassistant/components/tesla_fleet/translations/zh-Hans.json +3 -0
- homeassistant/components/tessie/translations/ko.json +1 -1
- homeassistant/components/thermopro/manifest.json +1 -1
- homeassistant/components/thermopro/translations/lt.json +7 -0
- homeassistant/components/timer/translations/ko.json +2 -1
- homeassistant/components/totalconnect/translations/ko.json +1 -1
- homeassistant/components/transmission/translations/ko.json +1 -1
- homeassistant/components/tuya/translations/it.json +13 -0
- homeassistant/components/twitch/translations/ko.json +1 -1
- homeassistant/components/unifiprotect/config_flow.py +1 -1
- homeassistant/components/uptimerobot/translations/it.json +5 -0
- homeassistant/components/uptimerobot/translations/ko.json +1 -1
- homeassistant/components/watttime/translations/ko.json +1 -1
- homeassistant/components/weatherflow_cloud/translations/ga.json +1 -0
- homeassistant/components/webdav/translations/et.json +1 -0
- homeassistant/components/webdav/translations/ga.json +1 -0
- homeassistant/components/webdav/translations/lt.json +1 -0
- homeassistant/components/webdav/translations/mk.json +7 -0
- homeassistant/components/webdav/translations/zh-Hans.json +1 -0
- homeassistant/components/whirlpool/translations/et.json +1 -0
- homeassistant/components/whirlpool/translations/lt.json +1 -0
- homeassistant/components/whirlpool/translations/zh-Hans.json +1 -0
- homeassistant/components/withings/translations/it.json +3 -0
- homeassistant/components/withings/translations/ko.json +1 -1
- homeassistant/components/xiaomi_miio/translations/ko.json +1 -1
- homeassistant/components/yolink/translations/ko.json +1 -1
- homeassistant/components/youtube/translations/ko.json +1 -1
- homeassistant/components/zha/translations/it.json +10 -2
- homeassistant/components/zha/translations/lt.json +50 -0
- homeassistant/components/zwave_js/strings.json +11 -11
- homeassistant/components/zwave_js/translations/bg.json +6 -20
- homeassistant/components/zwave_js/translations/cs.json +0 -22
- homeassistant/components/zwave_js/translations/de.json +0 -23
- homeassistant/components/zwave_js/translations/el.json +0 -23
- homeassistant/components/zwave_js/translations/en-GB.json +0 -23
- homeassistant/components/zwave_js/translations/en.json +11 -11
- homeassistant/components/zwave_js/translations/es.json +0 -23
- homeassistant/components/zwave_js/translations/et.json +0 -23
- homeassistant/components/zwave_js/translations/fi.json +0 -11
- homeassistant/components/zwave_js/translations/ga.json +16 -22
- homeassistant/components/zwave_js/translations/hu.json +0 -23
- homeassistant/components/zwave_js/translations/it.json +0 -12
- homeassistant/components/zwave_js/translations/lt.json +32 -22
- homeassistant/components/zwave_js/translations/mk.json +16 -7
- homeassistant/components/zwave_js/translations/pt.json +0 -23
- homeassistant/components/zwave_js/translations/ru.json +0 -21
- homeassistant/components/zwave_js/translations/sk.json +0 -23
- homeassistant/components/zwave_js/translations/sv.json +0 -23
- homeassistant/components/zwave_js/translations/tr.json +0 -13
- homeassistant/components/zwave_js/translations/zh-Hans.json +0 -23
- homeassistant/components/zwave_js/translations/zh-Hant.json +0 -23
- homeassistant/const.py +1 -1
- homeassistant/package_constraints.txt +2 -2
- {homeassistant-2025.7.0b7.dist-info → homeassistant-2025.7.0b9.dist-info}/METADATA +1 -1
- {homeassistant-2025.7.0b7.dist-info → homeassistant-2025.7.0b9.dist-info}/RECORD +282 -277
- homeassistant/components/zwave_js/translations/sq.json +0 -7
- {homeassistant-2025.7.0b7.dist-info → homeassistant-2025.7.0b9.dist-info}/WHEEL +0 -0
- {homeassistant-2025.7.0b7.dist-info → homeassistant-2025.7.0b9.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.7.0b7.dist-info → homeassistant-2025.7.0b9.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.7.0b7.dist-info → homeassistant-2025.7.0b9.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.7.0b7.dist-info → homeassistant-2025.7.0b9.dist-info}/top_level.txt +0 -0
|
@@ -11,7 +11,7 @@ from awesomeversion import AwesomeVersion
|
|
|
11
11
|
import voluptuous as vol
|
|
12
12
|
|
|
13
13
|
from homeassistant import data_entry_flow
|
|
14
|
-
from homeassistant.components.repairs import RepairsFlow
|
|
14
|
+
from homeassistant.components.repairs import ConfirmRepairFlow, RepairsFlow
|
|
15
15
|
from homeassistant.core import HomeAssistant, callback
|
|
16
16
|
from homeassistant.helpers import issue_registry as ir
|
|
17
17
|
|
|
@@ -20,9 +20,11 @@ from .const import (
|
|
|
20
20
|
BLE_SCANNER_MIN_FIRMWARE,
|
|
21
21
|
CONF_BLE_SCANNER_MODE,
|
|
22
22
|
DOMAIN,
|
|
23
|
+
OUTBOUND_WEBSOCKET_INCORRECTLY_ENABLED_ISSUE_ID,
|
|
23
24
|
BLEScannerMode,
|
|
24
25
|
)
|
|
25
26
|
from .coordinator import ShellyConfigEntry
|
|
27
|
+
from .utils import get_rpc_ws_url
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
@callback
|
|
@@ -65,7 +67,46 @@ def async_manage_ble_scanner_firmware_unsupported_issue(
|
|
|
65
67
|
ir.async_delete_issue(hass, DOMAIN, issue_id)
|
|
66
68
|
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
@callback
|
|
71
|
+
def async_manage_outbound_websocket_incorrectly_enabled_issue(
|
|
72
|
+
hass: HomeAssistant,
|
|
73
|
+
entry: ShellyConfigEntry,
|
|
74
|
+
) -> None:
|
|
75
|
+
"""Manage the Outbound WebSocket incorrectly enabled issue."""
|
|
76
|
+
issue_id = OUTBOUND_WEBSOCKET_INCORRECTLY_ENABLED_ISSUE_ID.format(
|
|
77
|
+
unique=entry.unique_id
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
if TYPE_CHECKING:
|
|
81
|
+
assert entry.runtime_data.rpc is not None
|
|
82
|
+
|
|
83
|
+
device = entry.runtime_data.rpc.device
|
|
84
|
+
|
|
85
|
+
if (
|
|
86
|
+
(ws_config := device.config.get("ws"))
|
|
87
|
+
and ws_config["enable"]
|
|
88
|
+
and ws_config["server"] == get_rpc_ws_url(hass)
|
|
89
|
+
):
|
|
90
|
+
ir.async_create_issue(
|
|
91
|
+
hass,
|
|
92
|
+
DOMAIN,
|
|
93
|
+
issue_id,
|
|
94
|
+
is_fixable=True,
|
|
95
|
+
is_persistent=True,
|
|
96
|
+
severity=ir.IssueSeverity.WARNING,
|
|
97
|
+
translation_key="outbound_websocket_incorrectly_enabled",
|
|
98
|
+
translation_placeholders={
|
|
99
|
+
"device_name": device.name,
|
|
100
|
+
"ip_address": device.ip_address,
|
|
101
|
+
},
|
|
102
|
+
data={"entry_id": entry.entry_id},
|
|
103
|
+
)
|
|
104
|
+
return
|
|
105
|
+
|
|
106
|
+
ir.async_delete_issue(hass, DOMAIN, issue_id)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class ShellyRpcRepairsFlow(RepairsFlow):
|
|
69
110
|
"""Handler for an issue fixing flow."""
|
|
70
111
|
|
|
71
112
|
def __init__(self, device: RpcDevice) -> None:
|
|
@@ -83,7 +124,7 @@ class BleScannerFirmwareUpdateFlow(RepairsFlow):
|
|
|
83
124
|
) -> data_entry_flow.FlowResult:
|
|
84
125
|
"""Handle the confirm step of a fix flow."""
|
|
85
126
|
if user_input is not None:
|
|
86
|
-
return await self.
|
|
127
|
+
return await self._async_step_confirm()
|
|
87
128
|
|
|
88
129
|
issue_registry = ir.async_get(self.hass)
|
|
89
130
|
description_placeholders = None
|
|
@@ -96,6 +137,18 @@ class BleScannerFirmwareUpdateFlow(RepairsFlow):
|
|
|
96
137
|
description_placeholders=description_placeholders,
|
|
97
138
|
)
|
|
98
139
|
|
|
140
|
+
async def _async_step_confirm(self) -> data_entry_flow.FlowResult:
|
|
141
|
+
"""Handle the confirm step of a fix flow."""
|
|
142
|
+
raise NotImplementedError
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class BleScannerFirmwareUpdateFlow(ShellyRpcRepairsFlow):
|
|
146
|
+
"""Handler for BLE Scanner Firmware Update flow."""
|
|
147
|
+
|
|
148
|
+
async def _async_step_confirm(self) -> data_entry_flow.FlowResult:
|
|
149
|
+
"""Handle the confirm step of a fix flow."""
|
|
150
|
+
return await self.async_step_update_firmware()
|
|
151
|
+
|
|
99
152
|
async def async_step_update_firmware(
|
|
100
153
|
self, user_input: dict[str, str] | None = None
|
|
101
154
|
) -> data_entry_flow.FlowResult:
|
|
@@ -110,6 +163,29 @@ class BleScannerFirmwareUpdateFlow(RepairsFlow):
|
|
|
110
163
|
return self.async_create_entry(title="", data={})
|
|
111
164
|
|
|
112
165
|
|
|
166
|
+
class DisableOutboundWebSocketFlow(ShellyRpcRepairsFlow):
|
|
167
|
+
"""Handler for Disable Outbound WebSocket flow."""
|
|
168
|
+
|
|
169
|
+
async def _async_step_confirm(self) -> data_entry_flow.FlowResult:
|
|
170
|
+
"""Handle the confirm step of a fix flow."""
|
|
171
|
+
return await self.async_step_disable_outbound_websocket()
|
|
172
|
+
|
|
173
|
+
async def async_step_disable_outbound_websocket(
|
|
174
|
+
self, user_input: dict[str, str] | None = None
|
|
175
|
+
) -> data_entry_flow.FlowResult:
|
|
176
|
+
"""Handle the confirm step of a fix flow."""
|
|
177
|
+
try:
|
|
178
|
+
result = await self._device.ws_setconfig(
|
|
179
|
+
False, self._device.config["ws"]["server"]
|
|
180
|
+
)
|
|
181
|
+
if result["restart_required"]:
|
|
182
|
+
await self._device.trigger_reboot()
|
|
183
|
+
except (DeviceConnectionError, RpcCallError):
|
|
184
|
+
return self.async_abort(reason="cannot_connect")
|
|
185
|
+
|
|
186
|
+
return self.async_create_entry(title="", data={})
|
|
187
|
+
|
|
188
|
+
|
|
113
189
|
async def async_create_fix_flow(
|
|
114
190
|
hass: HomeAssistant, issue_id: str, data: dict[str, str] | None
|
|
115
191
|
) -> RepairsFlow:
|
|
@@ -124,4 +200,11 @@ async def async_create_fix_flow(
|
|
|
124
200
|
assert entry is not None
|
|
125
201
|
|
|
126
202
|
device = entry.runtime_data.rpc.device
|
|
127
|
-
|
|
203
|
+
|
|
204
|
+
if "ble_scanner_firmware_unsupported" in issue_id:
|
|
205
|
+
return BleScannerFirmwareUpdateFlow(device)
|
|
206
|
+
|
|
207
|
+
if "outbound_websocket_incorrectly_enabled" in issue_id:
|
|
208
|
+
return DisableOutboundWebSocketFlow(device)
|
|
209
|
+
|
|
210
|
+
return ConfirmRepairFlow()
|
|
@@ -288,6 +288,20 @@
|
|
|
288
288
|
"unsupported_firmware": {
|
|
289
289
|
"title": "Unsupported firmware for device {device_name}",
|
|
290
290
|
"description": "Your Shelly device {device_name} with IP address {ip_address} is running an unsupported firmware. Please update the firmware.\n\nIf the device does not offer an update, check internet connectivity (gateway, DNS, time) and restart the device."
|
|
291
|
+
},
|
|
292
|
+
"outbound_websocket_incorrectly_enabled": {
|
|
293
|
+
"title": "Outbound WebSocket is enabled for {device_name}",
|
|
294
|
+
"fix_flow": {
|
|
295
|
+
"step": {
|
|
296
|
+
"confirm": {
|
|
297
|
+
"title": "Outbound WebSocket is enabled for {device_name}",
|
|
298
|
+
"description": "Your Shelly device {device_name} with IP address {ip_address} is a non-sleeping device and Outbound WebSocket should be disabled in its configuration.\n\nSelect **Submit** button to disable Outbound WebSocket."
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"abort": {
|
|
302
|
+
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]"
|
|
303
|
+
}
|
|
304
|
+
}
|
|
291
305
|
}
|
|
292
306
|
}
|
|
293
307
|
}
|
|
@@ -138,6 +138,13 @@
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
},
|
|
141
|
+
"outbound_websocket_incorrectly_enabled": {
|
|
142
|
+
"fix_flow": {
|
|
143
|
+
"abort": {
|
|
144
|
+
"cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
},
|
|
141
148
|
"unsupported_firmware": {
|
|
142
149
|
"description": "\u0412\u0430\u0448\u0435\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e Shelly {device_name} \u0441 IP \u0430\u0434\u0440\u0435\u0441 {ip_address} \u0440\u0430\u0431\u043e\u0442\u0438 \u0441 \u043d\u0435\u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u043d \u0444\u044a\u0440\u043c\u0443\u0435\u0440. \u041c\u043e\u043b\u044f, \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u0439\u0442\u0435 \u0444\u044a\u0440\u043c\u0443\u0435\u0440\u0430.\n\n\u0410\u043a\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 (\u0448\u043b\u044e\u0437, DNS, \u0432\u0440\u0435\u043c\u0435) \u0438 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e.",
|
|
143
150
|
"title": "\u041d\u0435\u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u043d \u0444\u044a\u0440\u043c\u0443\u0435\u0440 \u0437\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e {device_name}"
|
|
@@ -254,6 +254,20 @@
|
|
|
254
254
|
"description": "Das Shelly-Ger\u00e4t {device_name} mit der IP-Adresse {ip_address} erfordert eine Kalibrierung. Um das Ger\u00e4t zu kalibrieren, muss es nach ordnungsgem\u00e4\u00dfer Installation am Ventil neu gestartet werden. Du kannst das Ger\u00e4t in seiner Weboberfl\u00e4che neu starten. Gehe dazu zu \u201eSettings\u201c \u2192 \u201eDevice Reboot\u201c.",
|
|
255
255
|
"title": "Das Shelly-Ger\u00e4t {device_name} ist nicht kalibriert"
|
|
256
256
|
},
|
|
257
|
+
"outbound_websocket_incorrectly_enabled": {
|
|
258
|
+
"fix_flow": {
|
|
259
|
+
"abort": {
|
|
260
|
+
"cannot_connect": "Verbindung fehlgeschlagen"
|
|
261
|
+
},
|
|
262
|
+
"step": {
|
|
263
|
+
"confirm": {
|
|
264
|
+
"description": "Dein Shelly-Ger\u00e4t {device_name} mit der IP-Adresse {ip_address} ist ein nicht-schlafendes Ger\u00e4t, und Outbound WebSocket sollte in seiner Konfiguration deaktiviert sein. \n \nDr\u00fccke **OK**, um Outbound WebSocket zu deaktivieren.",
|
|
265
|
+
"title": "F\u00fcr {device_name} ist Outbound WebSocket aktiviert"
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"title": "F\u00fcr {device_name} ist Outbound WebSocket aktiviert"
|
|
270
|
+
},
|
|
257
271
|
"push_update_failure": {
|
|
258
272
|
"description": "Home Assistant empf\u00e4ngt keine Push-Updates vom Shelly-Ger\u00e4t {device_name} mit der IP-Adresse {ip_address}. \u00dcberpr\u00fcfe die CoIoT-Konfiguration in der Weboberfl\u00e4che des Ger\u00e4ts und deine Netzwerkkonfiguration.",
|
|
259
273
|
"title": "Shelly-Ger\u00e4t {device_name} Push-Update fehlgeschlagen"
|
|
@@ -254,6 +254,20 @@
|
|
|
254
254
|
"description": "Shelly device {device_name} with IP address {ip_address} requires calibration. To calibrate the device, it must be rebooted after proper installation on the valve. You can reboot the device in its web panel, go to 'Settings' > 'Device Reboot'.",
|
|
255
255
|
"title": "Shelly device {device_name} is not calibrated"
|
|
256
256
|
},
|
|
257
|
+
"outbound_websocket_incorrectly_enabled": {
|
|
258
|
+
"fix_flow": {
|
|
259
|
+
"abort": {
|
|
260
|
+
"cannot_connect": "Failed to connect"
|
|
261
|
+
},
|
|
262
|
+
"step": {
|
|
263
|
+
"confirm": {
|
|
264
|
+
"description": "Your Shelly device {device_name} with IP address {ip_address} is a non-sleeping device and Outbound WebSocket should be disabled in its configuration.\n\nSelect **Submit** button to disable Outbound WebSocket.",
|
|
265
|
+
"title": "Outbound WebSocket is enabled for {device_name}"
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"title": "Outbound WebSocket is enabled for {device_name}"
|
|
270
|
+
},
|
|
257
271
|
"push_update_failure": {
|
|
258
272
|
"description": "Home Assistant is not receiving push updates from the Shelly device {device_name} with IP address {ip_address}. Check the CoIoT configuration in the web panel of the device and your network configuration.",
|
|
259
273
|
"title": "Shelly device {device_name} push update failure"
|
|
@@ -254,6 +254,20 @@
|
|
|
254
254
|
"description": "El dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} requiere calibraci\u00f3n. Para calibrar el dispositivo, debe reiniciarse despu\u00e9s de la instalaci\u00f3n adecuada en la v\u00e1lvula. Puedes reiniciar el dispositivo en su panel web, ve a 'Configuraci\u00f3n' > 'Reinicio del dispositivo'.",
|
|
255
255
|
"title": "El dispositivo Shelly {device_name} no est\u00e1 calibrado"
|
|
256
256
|
},
|
|
257
|
+
"outbound_websocket_incorrectly_enabled": {
|
|
258
|
+
"fix_flow": {
|
|
259
|
+
"abort": {
|
|
260
|
+
"cannot_connect": "No se pudo conectar"
|
|
261
|
+
},
|
|
262
|
+
"step": {
|
|
263
|
+
"confirm": {
|
|
264
|
+
"description": "Tu dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address} es un dispositivo que no est\u00e1 inactivo y el WebSocket de salida debe estar deshabilitado en su configuraci\u00f3n. \n \nSelecciona el bot\u00f3n **Enviar** para deshabilitar el WebSocket de salida.",
|
|
265
|
+
"title": "El WebSocket de salida est\u00e1 habilitado para {device_name}"
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"title": "El WebSocket de salida est\u00e1 habilitado para {device_name}"
|
|
270
|
+
},
|
|
257
271
|
"push_update_failure": {
|
|
258
272
|
"description": "Home Assistant no est\u00e1 recibiendo actualizaciones autom\u00e1ticas del dispositivo Shelly {device_name} con direcci\u00f3n IP {ip_address}. Consulta la configuraci\u00f3n de CoIoT en el panel web del dispositivo y tu configuraci\u00f3n de red.",
|
|
259
273
|
"title": "Fallo en la actualizaci\u00f3n push del dispositivo {device_name} de Shelly"
|
|
@@ -254,6 +254,17 @@
|
|
|
254
254
|
"description": "Shelly seade {device_name} IP-aadressiga {ip_address} n\u00f5uab kalibreerimist. Seadme kalibreerimiseks tuleb see p\u00e4rast klapile n\u00f5uetekohast paigaldamist taask\u00e4ivitada. Saad seadme taask\u00e4ivitada selle veebipaneelil, mine jaotisse \"Seaded\" > \"Seadme taask\u00e4ivitamine\".",
|
|
255
255
|
"title": "Shelly seade {device_name} ei ole kalibreeritud"
|
|
256
256
|
},
|
|
257
|
+
"outbound_websocket_incorrectly_enabled": {
|
|
258
|
+
"fix_flow": {
|
|
259
|
+
"step": {
|
|
260
|
+
"confirm": {
|
|
261
|
+
"description": "Shelly seade {device_name} IP-aadressiga {ip_address} on mitteunere\u017eiimis olev seade ja v\u00e4ljaminev WebSocket tuleks selle konfiguratsioonis keelata.\n\nVali nupp **Esita**, et keelata v\u00e4ljaminev WebSocket.",
|
|
262
|
+
"title": "V\u00e4ljaminev WebSocket on seadmel {device_name} lubatud"
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"title": "V\u00e4ljaminev WebSocket on seadmel {device_name} lubatud"
|
|
267
|
+
},
|
|
257
268
|
"push_update_failure": {
|
|
258
269
|
"description": "Home Assistant ei saa t\u00f5ukev\u00e4rskendusi Shelly seadmest {device_name} IP-aadressiga {ip_address}. Kontrolli CoIoT konfiguratsiooni seadme veebipaneelil ja oma v\u00f5rgu konfiguratsiooni.",
|
|
259
270
|
"title": "Shelly seadme {device_name} t\u00f5ukev\u00e4rskenduse t\u00f5rge"
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
},
|
|
116
116
|
"issues": {
|
|
117
117
|
"device_not_calibrated": {
|
|
118
|
-
"description": "IP \uc8fc\uc18c\uac00 {ip_address} \uc778 Shelly \uae30\uae30 {device_name}
|
|
118
|
+
"description": "IP \uc8fc\uc18c\uac00 {ip_address} \uc778 Shelly \uae30\uae30 {device_name}\uc740 \ubcf4\uc815\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uae30\uae30\ub97c \ubcf4\uc815\ud558\ub824\uba74 \ubc38\ube0c\uc5d0 \uc62c\ubc14\ub974\uac8c \uc124\uce58\ud55c \ud6c4 \uc7ac\ubd80\ud305\ud574\uc57c \ud569\ub2c8\ub2e4. \uc6f9 \ud328\ub110\uc5d0\uc11c '\uc124\uc815' > '\uae30\uae30 \uc7ac\ubd80\ud305'\uc73c\ub85c \uc774\ub3d9\ud558\uc5ec \uae30\uae30\ub97c \uc7ac\ubd80\ud305\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
|
|
119
119
|
"title": "Shelly \uae30\uae30 {device_name} \ubcf4\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."
|
|
120
120
|
},
|
|
121
121
|
"push_update_failure": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"password": "\uc554\ud638"
|
|
16
16
|
},
|
|
17
17
|
"description": "{email}\uc758 \uc554\ud638\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uc138\uc694.",
|
|
18
|
-
"title": "\
|
|
18
|
+
"title": "{name}\uc758 \uc778\uc99d\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
|
19
19
|
},
|
|
20
20
|
"user": {
|
|
21
21
|
"data": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"password": "\uc554\ud638"
|
|
15
15
|
},
|
|
16
16
|
"description": "SleepIQ \ud1b5\ud569\uad6c\uc131\uc694\uc18c\ub294 {username} \uacc4\uc815\uc744 \ub2e4\uc2dc \uc778\uc99d\ud574\uc57c \ud569\ub2c8\ub2e4.",
|
|
17
|
-
"title": "\
|
|
17
|
+
"title": "{name}\uc758 \uc778\uc99d\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
|
18
18
|
},
|
|
19
19
|
"user": {
|
|
20
20
|
"data": {
|
|
@@ -184,7 +184,36 @@ class SmaConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
184
184
|
self._data[CONF_HOST] = discovery_info.ip
|
|
185
185
|
self._data[CONF_MAC] = format_mac(self._discovery_data[CONF_MAC])
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
_LOGGER.debug(
|
|
188
|
+
"DHCP discovery detected SMA device: %s, IP: %s, MAC: %s",
|
|
189
|
+
self._discovery_data[CONF_NAME],
|
|
190
|
+
self._discovery_data[CONF_HOST],
|
|
191
|
+
self._discovery_data[CONF_MAC],
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
existing_entries_with_host = [
|
|
195
|
+
entry
|
|
196
|
+
for entry in self._async_current_entries(include_ignore=False)
|
|
197
|
+
if entry.data.get(CONF_HOST) == self._data[CONF_HOST]
|
|
198
|
+
and not entry.data.get(CONF_MAC)
|
|
199
|
+
]
|
|
200
|
+
|
|
201
|
+
# If we have an existing entry with the same host but no MAC address,
|
|
202
|
+
# we update the entry with the MAC address and reload it.
|
|
203
|
+
if existing_entries_with_host:
|
|
204
|
+
entry = existing_entries_with_host[0]
|
|
205
|
+
self.async_update_reload_and_abort(
|
|
206
|
+
entry, data_updates={CONF_MAC: self._data[CONF_MAC]}
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
# Finally, check if the hostname (which represents the SMA serial number) is unique
|
|
210
|
+
serial_number = discovery_info.hostname.lower()
|
|
211
|
+
# Example hostname: sma12345678-01
|
|
212
|
+
# Remove 'sma' prefix and strip everything after the dash (including the dash)
|
|
213
|
+
if serial_number.startswith("sma"):
|
|
214
|
+
serial_number = serial_number.removeprefix("sma")
|
|
215
|
+
serial_number = serial_number.split("-", 1)[0]
|
|
216
|
+
await self.async_set_unique_id(serial_number)
|
|
188
217
|
self._abort_if_unique_id_configured()
|
|
189
218
|
|
|
190
219
|
return await self.async_step_discovery_confirm()
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
+
"config": {
|
|
3
|
+
"abort": {
|
|
4
|
+
"already_configured": "Il dispositivo \u00e8 gi\u00e0 configurato"
|
|
5
|
+
},
|
|
6
|
+
"error": {
|
|
7
|
+
"invalid_auth": "Autenticazione non valida",
|
|
8
|
+
"malformed_token": "Token di accesso non valido"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
2
11
|
"entity": {
|
|
3
12
|
"number": {
|
|
4
13
|
"intensity": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"step": {
|
|
11
11
|
"reauth_confirm": {
|
|
12
12
|
"description": "SmartTub \ud1b5\ud569\uad6c\uc131\uc694\uc18c\ub294 \uacc4\uc815\uc744 \ub2e4\uc2dc \uc778\uc99d\ud574\uc57c \ud569\ub2c8\ub2e4.",
|
|
13
|
-
"title": "\
|
|
13
|
+
"title": "{name}\uc758 \uc778\uc99d\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
|
14
14
|
},
|
|
15
15
|
"user": {
|
|
16
16
|
"data": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"step": {
|
|
14
14
|
"reauth_confirm": {
|
|
15
15
|
"description": "Sonarr \ud1b5\ud569\uad6c\uc131\uc694\uc18c\ub294 {url}\uc5d0\uc11c \ud638\uc2a4\ud305\ub418\ub294 Sonarr API\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc218\ub3d9\uc73c\ub85c \ub2e4\uc2dc \uc778\uc99d\ud574\uc57c \ud569\ub2c8\ub2e4.",
|
|
16
|
-
"title": "\
|
|
16
|
+
"title": "{name}\uc758 \uc778\uc99d\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
|
17
17
|
},
|
|
18
18
|
"user": {
|
|
19
19
|
"data": {
|
|
@@ -83,6 +83,9 @@
|
|
|
83
83
|
"announce_media_error": {
|
|
84
84
|
"message": "Nepavyko paskelbti klipo {media_id} {response}"
|
|
85
85
|
},
|
|
86
|
+
"entity_not_found": {
|
|
87
|
+
"message": "Objektas {entity_id} nerastas."
|
|
88
|
+
},
|
|
86
89
|
"invalid_content_type": {
|
|
87
90
|
"message": "\u201eSonos\u201c nepalaiko medijos turinio tipo: {media_type}"
|
|
88
91
|
},
|
|
@@ -94,6 +97,12 @@
|
|
|
94
97
|
},
|
|
95
98
|
"invalid_sonos_playlist": {
|
|
96
99
|
"message": "Nepavyko rasti \u201eSonos\u201c grojara\u0161\u010dio: {name}"
|
|
100
|
+
},
|
|
101
|
+
"speaker_not_found": {
|
|
102
|
+
"message": "{entity_id} n\u0117ra \u017einomas Sonos garsiakalbis."
|
|
103
|
+
},
|
|
104
|
+
"timeout_join": {
|
|
105
|
+
"message": "Laukiant, kol Sonos grotuvas prisijungs prie grup\u0117s {group_description} baig\u0117si skirtasis laikas."
|
|
97
106
|
}
|
|
98
107
|
},
|
|
99
108
|
"issues": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"reauth_confirm": {
|
|
20
20
|
"description": "Spotify \ud1b5\ud569\uad6c\uc131\uc694\uc18c\ub294 {account} \uacc4\uc815\uc5d0 \ub300\ud574 Spotify\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub2e4\uc2dc \uc778\uc99d\ud574\uc57c \ud569\ub2c8\ub2e4.",
|
|
21
|
-
"title": "\
|
|
21
|
+
"title": "{name}\uc758 \uc778\uc99d\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
},
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"step": {
|
|
14
14
|
"reauth_confirm": {
|
|
15
15
|
"description": "Steam \ud1b5\ud569\uad6c\uc131\uc694\uc18c\ub294 \uacc4\uc815\uc744 \ub2e4\uc2dc \uc778\uc99d\ud574\uc57c\ud569\ub2c8\ub2e4.\n\n\uc5ec\uae30\uc5d0\uc11c \ud0a4\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4: {api_key_url}",
|
|
16
|
-
"title": "\
|
|
16
|
+
"title": "{name}\uc758 \uc778\uc99d\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
|
17
17
|
},
|
|
18
18
|
"user": {
|
|
19
19
|
"data": {
|
|
@@ -101,8 +101,10 @@
|
|
|
101
101
|
},
|
|
102
102
|
"services": {
|
|
103
103
|
"unlock_specific_door": {
|
|
104
|
+
"description": "Atrakina vairuotojo duris, visas duris arba baga\u017ein\u0117s dangt\u012f.",
|
|
104
105
|
"fields": {
|
|
105
106
|
"door": {
|
|
107
|
+
"description": "Konkre\u010dios durys, kurias reikia atrakinti.",
|
|
106
108
|
"name": "Durys"
|
|
107
109
|
}
|
|
108
110
|
},
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"services": {
|
|
3
|
+
"unlock_specific_door": {
|
|
4
|
+
"description": "\u0408\u0430 \u043e\u0442\u043a\u043b\u0443\u0447\u0443\u0432\u0430 \u0432\u0440\u0430\u0442\u0430\u0442\u0430 \u043d\u0430 \u0432\u043e\u0437\u0430\u0447\u043e\u0442, \u0441\u0438\u0442\u0435 \u0432\u0440\u0430\u0442\u0438 \u0438\u043b\u0438 \u0437\u0430\u0434\u043d\u0430\u0442\u0430 \u0432\u0440\u0430\u0442\u0430.",
|
|
5
|
+
"fields": {
|
|
6
|
+
"door": {
|
|
7
|
+
"description": "\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u0430\u0442\u0430(\u0438\u0442\u0435) \u0432\u0440\u0430\u0442\u0430(\u0438) \u0448\u0442\u043e \u0442\u0440\u0435\u0431\u0430 \u0434\u0430 \u0441\u0435 \u043e\u0442\u043a\u043b\u0443\u0447\u0430\u0442."
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"password": "\uc554\ud638"
|
|
15
15
|
},
|
|
16
16
|
"description": "{username}\uc5d0 \ub300\ud55c \uc554\ud638\ub97c \uc785\ub825\ud558\uc5ec \ub2e4\uc2dc \uc778\uc99d\ud569\ub2c8\ub2e4.",
|
|
17
|
-
"title": "\
|
|
17
|
+
"title": "{name}\uc758 \uc778\uc99d\uc774 \ub9cc\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
|
18
18
|
},
|
|
19
19
|
"user": {
|
|
20
20
|
"data": {
|
|
@@ -81,6 +81,13 @@
|
|
|
81
81
|
"cool": "Fionnuar",
|
|
82
82
|
"fade": "C\u00e9imni\u00fa",
|
|
83
83
|
"flashing": "Ag splancadh",
|
|
84
|
+
"modern": "Nua-Aimseartha",
|
|
85
|
+
"ocean": "Aig\u00e9an",
|
|
86
|
+
"relax": "Sc\u00edth a ligean",
|
|
87
|
+
"rose": "R\u00f3s",
|
|
88
|
+
"smooth": "R\u00e9idh",
|
|
89
|
+
"strobe": "Strob",
|
|
90
|
+
"sunset": "Lu\u00ed na gr\u00e9ine",
|
|
84
91
|
"vitality": "Beocht"
|
|
85
92
|
}
|
|
86
93
|
}
|
|
@@ -96,6 +103,12 @@
|
|
|
96
103
|
"moderate": "Measartha",
|
|
97
104
|
"unhealthy": "M\u00edshl\u00e1inti\u00fail"
|
|
98
105
|
}
|
|
106
|
+
},
|
|
107
|
+
"water_level": {
|
|
108
|
+
"state": {
|
|
109
|
+
"empty": "Folamh",
|
|
110
|
+
"high": "Ard"
|
|
111
|
+
}
|
|
99
112
|
}
|
|
100
113
|
}
|
|
101
114
|
},
|
|
@@ -135,6 +135,22 @@
|
|
|
135
135
|
}
|
|
136
136
|
},
|
|
137
137
|
"humidifier": {
|
|
138
|
+
"evaporative_humidifier": {
|
|
139
|
+
"state_attributes": {
|
|
140
|
+
"mode": {
|
|
141
|
+
"state": {
|
|
142
|
+
"auto": "Automatinis",
|
|
143
|
+
"drying_filter": "D\u017eiovinimo filtras",
|
|
144
|
+
"high": "Auk\u0161tas",
|
|
145
|
+
"low": "\u017demas",
|
|
146
|
+
"medium": "Vidutinis",
|
|
147
|
+
"quiet": "Tyliai",
|
|
148
|
+
"sleep": "Miegas",
|
|
149
|
+
"target_humidity": "Tikslin\u0117 dr\u0117gm\u0117"
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
138
154
|
"humidifier": {
|
|
139
155
|
"state_attributes": {
|
|
140
156
|
"last_run_success": {
|
|
@@ -146,6 +162,35 @@
|
|
|
146
162
|
}
|
|
147
163
|
}
|
|
148
164
|
},
|
|
165
|
+
"light": {
|
|
166
|
+
"light": {
|
|
167
|
+
"state_attributes": {
|
|
168
|
+
"effect": {
|
|
169
|
+
"state": {
|
|
170
|
+
"autumn": "Ruduo",
|
|
171
|
+
"breathing": "Kv\u0117pavimas",
|
|
172
|
+
"christmas": "Kal\u0117dos",
|
|
173
|
+
"colorful": "Spalvingas",
|
|
174
|
+
"cool": "\u0160aunu",
|
|
175
|
+
"fade": "I\u0161blukimas",
|
|
176
|
+
"flashing": "Mirksintis",
|
|
177
|
+
"flickering": "Mirg\u0117jimas",
|
|
178
|
+
"flow": "Srautas",
|
|
179
|
+
"forest": "Mi\u0161kas",
|
|
180
|
+
"halloween": "Helovinas",
|
|
181
|
+
"modern": "\u0160iuolaikinis",
|
|
182
|
+
"ocean": "Vandenynas",
|
|
183
|
+
"relax": "Atsipalaiduokite",
|
|
184
|
+
"rose": "Ro\u017e\u0117",
|
|
185
|
+
"smooth": "Sklandus",
|
|
186
|
+
"strobe": "Stroboskopas",
|
|
187
|
+
"sunset": "Saul\u0117lydis",
|
|
188
|
+
"vitality": "Gyvybingumas"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
},
|
|
149
194
|
"lock": {
|
|
150
195
|
"lock": {
|
|
151
196
|
"state_attributes": {
|
|
@@ -174,6 +219,15 @@
|
|
|
174
219
|
"light_level": {
|
|
175
220
|
"name": "\u0160viesos lygis"
|
|
176
221
|
},
|
|
222
|
+
"water_level": {
|
|
223
|
+
"name": "Vandens lygis",
|
|
224
|
+
"state": {
|
|
225
|
+
"empty": "Tu\u0161\u010dias",
|
|
226
|
+
"high": "Auk\u0161tas",
|
|
227
|
+
"low": "\u017demas",
|
|
228
|
+
"medium": "Vidutinis"
|
|
229
|
+
}
|
|
230
|
+
},
|
|
177
231
|
"wifi_signal": {
|
|
178
232
|
"name": "Wi-Fi signalas"
|
|
179
233
|
}
|