homeassistant 2025.11.0b2__py3-none-any.whl → 2025.11.0b5__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/alexa_devices/manifest.json +1 -1
- homeassistant/components/alexa_devices/translations/bg.json +13 -0
- homeassistant/components/ambient_network/sensor.py +5 -5
- homeassistant/components/blink/translations/bg.json +8 -1
- homeassistant/components/brother/translations/bg.json +0 -6
- homeassistant/components/brother/translations/ca.json +1 -5
- homeassistant/components/brother/translations/cs.json +2 -2
- homeassistant/components/brother/translations/da.json +1 -5
- homeassistant/components/brother/translations/de.json +4 -4
- homeassistant/components/brother/translations/el.json +1 -5
- homeassistant/components/brother/translations/en-GB.json +4 -4
- homeassistant/components/brother/translations/en.json +4 -4
- homeassistant/components/brother/translations/es-419.json +0 -5
- homeassistant/components/brother/translations/es.json +2 -2
- homeassistant/components/brother/translations/et.json +2 -2
- homeassistant/components/brother/translations/fi.json +1 -5
- homeassistant/components/brother/translations/fr.json +1 -5
- homeassistant/components/brother/translations/ga.json +2 -10
- homeassistant/components/brother/translations/hu.json +1 -5
- homeassistant/components/brother/translations/id.json +1 -5
- homeassistant/components/brother/translations/it.json +1 -5
- homeassistant/components/brother/translations/ja.json +1 -5
- homeassistant/components/brother/translations/ko.json +1 -5
- homeassistant/components/brother/translations/lb.json +1 -2
- homeassistant/components/brother/translations/lt.json +2 -2
- homeassistant/components/brother/translations/nb.json +1 -5
- homeassistant/components/brother/translations/nl.json +1 -5
- homeassistant/components/brother/translations/pl.json +3 -7
- homeassistant/components/brother/translations/pt-BR.json +1 -5
- homeassistant/components/brother/translations/pt.json +2 -10
- homeassistant/components/brother/translations/ro.json +1 -2
- homeassistant/components/brother/translations/ru.json +1 -5
- homeassistant/components/brother/translations/sk.json +2 -2
- homeassistant/components/brother/translations/sl.json +2 -10
- homeassistant/components/brother/translations/sv.json +2 -10
- homeassistant/components/brother/translations/tr.json +1 -5
- homeassistant/components/brother/translations/uk.json +1 -5
- homeassistant/components/brother/translations/vi.json +1 -5
- homeassistant/components/brother/translations/zh-Hans.json +2 -2
- homeassistant/components/brother/translations/zh-Hant.json +4 -4
- homeassistant/components/bryant_evolution/translations/lt.json +3 -0
- homeassistant/components/control4/translations/es.json +2 -1
- homeassistant/components/cover/translations/es.json +7 -7
- homeassistant/components/daikin/translations/es.json +1 -0
- homeassistant/components/ecovacs/translations/es.json +27 -0
- homeassistant/components/ecovacs/translations/sr-Latn.json +18 -0
- homeassistant/components/esphome/__init__.py +5 -3
- homeassistant/components/esphome/translations/he.json +2 -2
- homeassistant/components/fing/translations/bg.json +20 -0
- homeassistant/components/fing/translations/es.json +31 -0
- homeassistant/components/firefly_iii/translations/bg.json +3 -0
- homeassistant/components/foscam/manifest.json +1 -1
- homeassistant/components/frontend/__init__.py +1 -1
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/google_sheets/translations/bg.json +10 -0
- homeassistant/components/google_sheets/translations/es.json +9 -0
- homeassistant/components/google_sheets/translations/sr-Latn.json +14 -0
- homeassistant/components/habitica/translations/es.json +26 -0
- homeassistant/components/hassio/issues.py +0 -2
- homeassistant/components/hassio/translations/es.json +13 -0
- homeassistant/components/holiday/manifest.json +1 -1
- homeassistant/components/homeassistant_connect_zbt2/config_flow.py +1 -1
- homeassistant/components/homewizard/translations/es.json +4 -2
- homeassistant/components/inels/translations/bg.json +1 -0
- homeassistant/components/inels/translations/es.json +30 -0
- homeassistant/components/jewish_calendar/translations/es.json +6 -0
- homeassistant/components/knx/translations/bg.json +93 -0
- homeassistant/components/knx/translations/es.json +39 -8
- homeassistant/components/knx/translations/sr-Latn.json +44 -1
- homeassistant/components/lametric/translations/es.json +1 -0
- homeassistant/components/lg_thinq/sensor.py +1 -0
- homeassistant/components/litterrobot/manifest.json +1 -1
- homeassistant/components/london_underground/translations/he.json +1 -0
- homeassistant/components/matrix/translations/bg.json +2 -1
- homeassistant/components/matter/translations/bg.json +7 -0
- homeassistant/components/matter/translations/es.json +26 -3
- homeassistant/components/mcp/translations/es.json +4 -0
- homeassistant/components/mqtt/translations/es.json +4 -4
- homeassistant/components/mqtt/translations/he.json +2 -2
- homeassistant/components/nederlandse_spoorwegen/translations/bg.json +2 -1
- homeassistant/components/nextdns/translations/bg.json +2 -1
- homeassistant/components/nina/translations/bg.json +0 -6
- homeassistant/components/nina/translations/es.json +40 -1
- homeassistant/components/nina/translations/sr-Latn.json +28 -0
- homeassistant/components/nintendo_parental_controls/translations/bg.json +19 -0
- homeassistant/components/nuki/translations/es.json +4 -0
- homeassistant/components/octoprint/translations/es.json +16 -0
- homeassistant/components/oralb/translations/es.json +1 -0
- homeassistant/components/overkiz/translations/lt.json +2 -1
- homeassistant/components/plugwise/climate.py +86 -26
- homeassistant/components/plugwise/manifest.json +1 -1
- homeassistant/components/plugwise/strings.json +3 -0
- homeassistant/components/plugwise/translations/de.json +3 -0
- homeassistant/components/plugwise/translations/en.json +3 -0
- homeassistant/components/plugwise/translations/sk.json +3 -0
- homeassistant/components/portainer/translations/bg.json +8 -1
- homeassistant/components/portainer/translations/sr-Latn.json +3 -1
- homeassistant/components/probe_plus/translations/es.json +5 -0
- homeassistant/components/ps4/translations/es.json +9 -1
- homeassistant/components/reolink/manifest.json +1 -1
- homeassistant/components/reolink/translations/cs.json +1 -0
- homeassistant/components/reolink/translations/en-GB.json +1 -0
- homeassistant/components/reolink/translations/es.json +1 -0
- homeassistant/components/reolink/translations/et.json +1 -0
- homeassistant/components/reolink/translations/lt.json +1 -0
- homeassistant/components/reolink/translations/pl.json +8 -7
- homeassistant/components/reolink/translations/sk.json +1 -0
- homeassistant/components/ruuvitag_ble/manifest.json +1 -1
- homeassistant/components/shelly/translations/bg.json +2 -1
- homeassistant/components/shelly/translations/es.json +10 -3
- homeassistant/components/slide_local/translations/es.json +1 -1
- homeassistant/components/smarttub/manifest.json +1 -1
- homeassistant/components/somfy_mylink/translations/es.json +3 -3
- homeassistant/components/soundtouch/__init__.py +10 -1
- homeassistant/components/sql/translations/es.json +27 -0
- homeassistant/components/sql/translations/sr-Latn.json +9 -0
- homeassistant/components/squeezebox/translations/es.json +63 -0
- homeassistant/components/sunricher_dali_center/translations/bg.json +19 -0
- homeassistant/components/switch_as_x/translations/es.json +4 -4
- homeassistant/components/system_bridge/translations/es.json +1 -0
- homeassistant/components/telegram_bot/translations/bg.json +11 -0
- homeassistant/components/telegram_bot/translations/es.json +42 -7
- homeassistant/components/template/translations/es.json +11 -3
- homeassistant/components/tesla_fleet/manifest.json +1 -1
- homeassistant/components/teslemetry/manifest.json +1 -1
- homeassistant/components/tessie/manifest.json +1 -1
- homeassistant/components/tessie/translations/es.json +3 -0
- homeassistant/components/transmission/translations/bg.json +10 -0
- homeassistant/components/usb/utils.py +22 -23
- homeassistant/components/vesync/humidifier.py +3 -1
- homeassistant/components/vesync/strings.json +11 -0
- homeassistant/components/vesync/translations/bg.json +11 -0
- homeassistant/components/vesync/translations/cs.json +11 -0
- homeassistant/components/vesync/translations/de.json +11 -0
- homeassistant/components/vesync/translations/en.json +11 -0
- homeassistant/components/vesync/translations/es.json +11 -0
- homeassistant/components/vesync/translations/et.json +11 -0
- homeassistant/components/vesync/translations/he.json +11 -0
- homeassistant/components/vesync/translations/lt.json +11 -0
- homeassistant/components/vesync/translations/sk.json +11 -0
- homeassistant/components/vesync/translations/zh-Hans.json +11 -0
- homeassistant/components/vesync/translations/zh-Hant.json +11 -0
- homeassistant/components/volvo/translations/bg.json +5 -0
- homeassistant/components/volvo/translations/cs.json +5 -0
- homeassistant/components/volvo/translations/en-GB.json +5 -0
- homeassistant/components/volvo/translations/es.json +11 -0
- homeassistant/components/volvo/translations/lt.json +5 -0
- homeassistant/components/volvo/translations/sk.json +5 -0
- homeassistant/components/whirlpool/translations/bg.json +22 -0
- homeassistant/components/whirlpool/translations/es.json +81 -0
- homeassistant/components/workday/manifest.json +1 -1
- homeassistant/components/xbox/translations/bg.json +36 -0
- homeassistant/components/xbox/translations/es.json +21 -0
- homeassistant/components/xbox/translations/sr-Latn.json +1 -0
- homeassistant/components/yardian/translations/bg.json +7 -0
- homeassistant/components/yardian/translations/es.json +16 -0
- homeassistant/components/zha/__init__.py +16 -1
- homeassistant/components/zha/config_flow.py +156 -46
- homeassistant/components/zha/manifest.json +1 -1
- homeassistant/components/zha/strings.json +68 -15
- homeassistant/components/zha/translations/bg.json +0 -4
- homeassistant/components/zha/translations/ca.json +0 -3
- homeassistant/components/zha/translations/cs.json +30 -16
- homeassistant/components/zha/translations/da.json +0 -3
- homeassistant/components/zha/translations/de.json +68 -15
- homeassistant/components/zha/translations/el.json +0 -3
- homeassistant/components/zha/translations/en-GB.json +0 -18
- homeassistant/components/zha/translations/en.json +68 -15
- homeassistant/components/zha/translations/es.json +81 -19
- homeassistant/components/zha/translations/et.json +30 -16
- homeassistant/components/zha/translations/fi.json +0 -3
- homeassistant/components/zha/translations/fr.json +0 -18
- homeassistant/components/zha/translations/ga.json +0 -3
- homeassistant/components/zha/translations/gsw.json +0 -3
- homeassistant/components/zha/translations/hu.json +0 -3
- homeassistant/components/zha/translations/id.json +0 -3
- homeassistant/components/zha/translations/it.json +0 -3
- homeassistant/components/zha/translations/ja.json +0 -3
- homeassistant/components/zha/translations/ko.json +0 -9
- homeassistant/components/zha/translations/lt.json +0 -18
- homeassistant/components/zha/translations/nb.json +0 -3
- homeassistant/components/zha/translations/nl.json +0 -3
- homeassistant/components/zha/translations/pl.json +0 -3
- homeassistant/components/zha/translations/pt-BR.json +0 -3
- homeassistant/components/zha/translations/pt.json +0 -18
- homeassistant/components/zha/translations/ro.json +0 -3
- homeassistant/components/zha/translations/ru.json +0 -18
- homeassistant/components/zha/translations/sk.json +68 -15
- homeassistant/components/zha/translations/sl.json +0 -9
- homeassistant/components/zha/translations/sr-Latn.json +0 -14
- homeassistant/components/zha/translations/sv.json +0 -4
- homeassistant/components/zha/translations/tr.json +0 -3
- homeassistant/components/zha/translations/uk.json +0 -3
- homeassistant/components/zha/translations/zh-Hans.json +30 -16
- homeassistant/components/zha/translations/zh-Hant.json +30 -16
- homeassistant/components/zwave_js/translations/es.json +3 -0
- homeassistant/const.py +1 -1
- homeassistant/generated/integrations.json +0 -5
- homeassistant/package_constraints.txt +1 -1
- homeassistant/util/language.py +17 -7
- {homeassistant-2025.11.0b2.dist-info → homeassistant-2025.11.0b5.dist-info}/METADATA +1 -1
- {homeassistant-2025.11.0b2.dist-info → homeassistant-2025.11.0b5.dist-info}/RECORD +207 -204
- homeassistant/components/enmax/__init__.py +0 -1
- homeassistant/components/enmax/manifest.json +0 -6
- {homeassistant-2025.11.0b2.dist-info → homeassistant-2025.11.0b5.dist-info}/WHEEL +0 -0
- {homeassistant-2025.11.0b2.dist-info → homeassistant-2025.11.0b5.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.11.0b2.dist-info → homeassistant-2025.11.0b5.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.11.0b2.dist-info → homeassistant-2025.11.0b5.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.11.0b2.dist-info → homeassistant-2025.11.0b5.dist-info}/top_level.txt +0 -0
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"set_ca_cert": "\u05d1\u05d7\u05d9\u05e8\u05ea **\u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9** \u05dc\u05d0\u05d9\u05de\u05d5\u05ea CA \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9 \u05d0\u05d5 **\u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea** \u05d5\u05dc\u05d7\u05d9\u05e6\u05d4 \u05e2\u05dc **\u05d4\u05d1\u05d0** \u05db\u05d3\u05d9 \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05d0\u05d9\u05e9\u05d5\u05e8 CA \u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea \u05e9\u05d9\u05d0\u05e4\u05e9\u05e8 \u05d0\u05d9\u05de\u05d5\u05ea \u05ea\u05e2\u05d5\u05d3\u05ea \u05de\u05ea\u05d5\u05d5\u05db\u05d9 MQTT \u05e9\u05dc\u05da.",
|
|
61
61
|
"set_client_cert": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d5\u05dc\u05d7\u05d9\u05e6\u05d4 \u05e2\u05dc **\u05d4\u05d1\u05d0** \u05db\u05d3\u05d9 \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05d0\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e7\u05d5\u05d7 \u05d5\u05de\u05e4\u05ea\u05d7 \u05e4\u05e8\u05d8\u05d9 \u05dc\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d5\u05dc \u05de\u05ea\u05d5\u05d5\u05da MQTT \u05e9\u05dc\u05da.",
|
|
62
62
|
"tls_insecure": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05dc\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d0\u05d9\u05de\u05d5\u05ea \u05ea\u05e2\u05d5\u05d3\u05ea \u05d4\u05e1\u05d5\u05db\u05df \u05e9\u05dc MQTT \u05e9\u05dc\u05da.",
|
|
63
|
-
"transport": "\u05d4\u05ea\
|
|
63
|
+
"transport": "\u05d4\u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 \u05e9\u05ea\u05e9\u05de\u05e9 \u05dc\u05d7\u05d9\u05d1\u05d5\u05e8 \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da.",
|
|
64
64
|
"username": "\u05e9\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9 \u05dc\u05db\u05e0\u05d9\u05e1\u05d4 \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da.",
|
|
65
65
|
"ws_headers": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea \u05d4-WebSocket \u05e2\u05d5\u05d1\u05e8\u05d5\u05ea \u05d3\u05e8\u05da \u05d4\u05d7\u05d9\u05d1\u05d5\u05e8 \u05d4\u05de\u05d1\u05d5\u05e1\u05e1 \u05e2\u05dc WebSocket \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da.",
|
|
66
66
|
"ws_path": "\u05e0\u05ea\u05d9\u05d1 WebSocket \u05e9\u05d9\u05e9\u05de\u05e9 \u05dc\u05d7\u05d9\u05d1\u05d5\u05e8 \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da."
|
|
@@ -1037,7 +1037,7 @@
|
|
|
1037
1037
|
"set_ca_cert": "\u05d1\u05d7\u05d9\u05e8\u05ea **\u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9** \u05dc\u05d0\u05d9\u05de\u05d5\u05ea CA \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9 \u05d0\u05d5 **\u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea** \u05d5\u05dc\u05d7\u05d9\u05e6\u05d4 \u05e2\u05dc **\u05d4\u05d1\u05d0** \u05db\u05d3\u05d9 \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05d0\u05d9\u05e9\u05d5\u05e8 CA \u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea \u05e9\u05d9\u05d0\u05e4\u05e9\u05e8 \u05d0\u05d9\u05de\u05d5\u05ea \u05ea\u05e2\u05d5\u05d3\u05ea \u05de\u05ea\u05d5\u05d5\u05db\u05d9 MQTT \u05e9\u05dc\u05da.",
|
|
1038
1038
|
"set_client_cert": "\u05d4\u05e4\u05e2\u05dc\u05d4 \u05d5\u05dc\u05d7\u05d9\u05e6\u05d4 \u05e2\u05dc **\u05d4\u05d1\u05d0** \u05db\u05d3\u05d9 \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05d0\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e7\u05d5\u05d7 \u05d5\u05de\u05e4\u05ea\u05d7 \u05e4\u05e8\u05d8\u05d9 \u05dc\u05d0\u05d9\u05de\u05d5\u05ea \u05de\u05d5\u05dc \u05de\u05ea\u05d5\u05d5\u05da MQTT \u05e9\u05dc\u05da.",
|
|
1039
1039
|
"tls_insecure": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05dc\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d0\u05d9\u05de\u05d5\u05ea \u05ea\u05e2\u05d5\u05d3\u05ea \u05d4\u05e1\u05d5\u05db\u05df \u05e9\u05dc MQTT \u05e9\u05dc\u05da.",
|
|
1040
|
-
"transport": "\u05d4\u05ea\
|
|
1040
|
+
"transport": "\u05d4\u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 \u05e9\u05ea\u05e9\u05de\u05e9 \u05dc\u05d7\u05d9\u05d1\u05d5\u05e8 \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da.",
|
|
1041
1041
|
"username": "\u05e9\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9 \u05dc\u05db\u05e0\u05d9\u05e1\u05d4 \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da.",
|
|
1042
1042
|
"ws_headers": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea \u05d4-WebSocket \u05e2\u05d5\u05d1\u05e8\u05d5\u05ea \u05d3\u05e8\u05da \u05d4\u05d7\u05d9\u05d1\u05d5\u05e8 \u05d4\u05de\u05d1\u05d5\u05e1\u05e1 \u05e2\u05dc WebSocket \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da.",
|
|
1043
1043
|
"ws_path": "\u05e0\u05ea\u05d9\u05d1 WebSocket \u05e9\u05d9\u05e9\u05de\u05e9 \u05dc\u05d7\u05d9\u05d1\u05d5\u05e8 \u05dc\u05e1\u05d5\u05db\u05df MQTT \u05e9\u05dc\u05da."
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
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"
|
|
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
|
+
"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"
|
|
5
6
|
},
|
|
6
7
|
"error": {
|
|
7
8
|
"invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d API \u043a\u043b\u044e\u0447",
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
"config": {
|
|
3
3
|
"abort": {
|
|
4
4
|
"already_configured": "\u0422\u043e\u0437\u0438 NextDNS \u043f\u0440\u043e\u0444\u0438\u043b \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d.",
|
|
5
|
-
"reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430"
|
|
5
|
+
"reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430",
|
|
6
|
+
"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"
|
|
6
7
|
},
|
|
7
8
|
"error": {
|
|
8
9
|
"cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
|
|
@@ -6,9 +6,6 @@
|
|
|
6
6
|
},
|
|
7
7
|
"step": {
|
|
8
8
|
"user": {
|
|
9
|
-
"data_description": {
|
|
10
|
-
"_v_to_z": "City/county (V-Z) to receive warnings for"
|
|
11
|
-
},
|
|
12
9
|
"sections": {
|
|
13
10
|
"filters": {
|
|
14
11
|
"description": "\u0424\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u0442\u0430 \u0432\u044a\u0437 \u043e\u0441\u043d\u043e\u0432\u0430 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0442\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438",
|
|
@@ -25,9 +22,6 @@
|
|
|
25
22
|
},
|
|
26
23
|
"step": {
|
|
27
24
|
"init": {
|
|
28
|
-
"data_description": {
|
|
29
|
-
"_v_to_z": "City/county (V-Z) to receive warnings for"
|
|
30
|
-
},
|
|
31
25
|
"sections": {
|
|
32
26
|
"filters": {
|
|
33
27
|
"description": "\u0424\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u0442\u0430 \u0432\u044a\u0437 \u043e\u0441\u043d\u043e\u0432\u0430 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0442\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438",
|
|
@@ -21,7 +21,23 @@
|
|
|
21
21
|
"_e_to_h": "Ciudad/condado (E-H) para la que recibir advertencias",
|
|
22
22
|
"_i_to_l": "Ciudad/condado (I-L) para la que recibir advertencias",
|
|
23
23
|
"_m_to_q": "Ciudad/condado (M-Q) para la que recibir advertencias",
|
|
24
|
-
"_r_to_u": "Ciudad/condado (R-U) para la que recibir advertencias"
|
|
24
|
+
"_r_to_u": "Ciudad/condado (R-U) para la que recibir advertencias",
|
|
25
|
+
"_v_to_z": "Ciudad/condado (V-Z) para la que recibir advertencias",
|
|
26
|
+
"slots": "N\u00famero m\u00e1ximo de advertencias por ciudad/condado"
|
|
27
|
+
},
|
|
28
|
+
"sections": {
|
|
29
|
+
"filters": {
|
|
30
|
+
"data": {
|
|
31
|
+
"area_filter": "Filtro de \u00e1rea afectada",
|
|
32
|
+
"headline_filter": "Lista de bloqueo de titulares"
|
|
33
|
+
},
|
|
34
|
+
"data_description": {
|
|
35
|
+
"area_filter": "Lista blanca de expresiones regulares para filtrar los avisos en funci\u00f3n de las zonas afectadas",
|
|
36
|
+
"headline_filter": "Expresi\u00f3n regular de lista negra para filtrar advertencias basadas en titulares"
|
|
37
|
+
},
|
|
38
|
+
"description": "Filtra las advertencias seg\u00fan sus atributos.",
|
|
39
|
+
"name": "Filtros"
|
|
40
|
+
}
|
|
25
41
|
},
|
|
26
42
|
"title": "Seleccionar ciudad/condado"
|
|
27
43
|
}
|
|
@@ -44,6 +60,29 @@
|
|
|
44
60
|
"_v_to_z": "Ciudad/condado (V-Z)",
|
|
45
61
|
"slots": "M\u00e1ximo de advertencias"
|
|
46
62
|
},
|
|
63
|
+
"data_description": {
|
|
64
|
+
"_a_to_d": "Ciudad/condado (A-D) para la que recibir advertencias",
|
|
65
|
+
"_e_to_h": "Ciudad/condado (E-H) para la que recibir advertencias",
|
|
66
|
+
"_i_to_l": "Ciudad/condado (I-L) para la que recibir advertencias",
|
|
67
|
+
"_m_to_q": "Ciudad/condado (M-Q) para la que recibir advertencias",
|
|
68
|
+
"_r_to_u": "Ciudad/condado (R-U) para la que recibir advertencias",
|
|
69
|
+
"_v_to_z": "Ciudad/condado (V-Z) para la que recibir advertencias",
|
|
70
|
+
"slots": "N\u00famero m\u00e1ximo de advertencias por ciudad/condado"
|
|
71
|
+
},
|
|
72
|
+
"sections": {
|
|
73
|
+
"filters": {
|
|
74
|
+
"data": {
|
|
75
|
+
"area_filter": "Filtro de \u00e1rea afectada",
|
|
76
|
+
"headline_filter": "Lista de bloqueo de titulares"
|
|
77
|
+
},
|
|
78
|
+
"data_description": {
|
|
79
|
+
"area_filter": "Lista blanca de expresiones regulares para filtrar los avisos en funci\u00f3n de las zonas afectadas",
|
|
80
|
+
"headline_filter": "Expresi\u00f3n regular de lista negra para filtrar advertencias basadas en titulares"
|
|
81
|
+
},
|
|
82
|
+
"description": "Filtra las advertencias seg\u00fan sus atributos.",
|
|
83
|
+
"name": "Filtros"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
47
86
|
"title": "Opciones"
|
|
48
87
|
}
|
|
49
88
|
}
|
|
@@ -11,6 +11,20 @@
|
|
|
11
11
|
"data_description": {
|
|
12
12
|
"slots": "Maksimalan broj upozorenja po gradu/okrugu"
|
|
13
13
|
},
|
|
14
|
+
"sections": {
|
|
15
|
+
"filters": {
|
|
16
|
+
"data": {
|
|
17
|
+
"area_filter": "Filter pogo\u0111enih podru\u010dja",
|
|
18
|
+
"headline_filter": "Blok lista naslova"
|
|
19
|
+
},
|
|
20
|
+
"data_description": {
|
|
21
|
+
"area_filter": "Regex bela lista za filtriranje upozorenja na osnovu pogo\u0111enih podru\u010dja",
|
|
22
|
+
"headline_filter": "Regex crna lista za filtriranje upozorenja na osnovu naslova"
|
|
23
|
+
},
|
|
24
|
+
"description": "Filtrirajte upozorenja na osnovu njihovih atributa.",
|
|
25
|
+
"name": "Filteri"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
14
28
|
"title": "Izaberite grad/zemlju"
|
|
15
29
|
}
|
|
16
30
|
}
|
|
@@ -26,6 +40,20 @@
|
|
|
26
40
|
"_r_to_u": "Grad/okrug (R\u2013U) za primanje upozorenja",
|
|
27
41
|
"_v_to_z": "Grad/okrug (V\u2013\u017d) za primanje upozorenja",
|
|
28
42
|
"slots": "Maksimalan broj upozorenja po gradu/okrugu"
|
|
43
|
+
},
|
|
44
|
+
"sections": {
|
|
45
|
+
"filters": {
|
|
46
|
+
"data": {
|
|
47
|
+
"area_filter": "Filter pogo\u0111enih podru\u010dja",
|
|
48
|
+
"headline_filter": "Blok lista naslova"
|
|
49
|
+
},
|
|
50
|
+
"data_description": {
|
|
51
|
+
"area_filter": "Regex bela lista za filtriranje upozorenja na osnovu pogo\u0111enih podru\u010dja",
|
|
52
|
+
"headline_filter": "Regex crna lista za filtriranje upozorenja na osnovu naslova"
|
|
53
|
+
},
|
|
54
|
+
"description": "Filtrirajte upozorenja na osnovu njihovih atributa.",
|
|
55
|
+
"name": "Filteri"
|
|
56
|
+
}
|
|
29
57
|
}
|
|
30
58
|
}
|
|
31
59
|
}
|
|
@@ -9,5 +9,24 @@
|
|
|
9
9
|
"invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f",
|
|
10
10
|
"unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430"
|
|
11
11
|
}
|
|
12
|
+
},
|
|
13
|
+
"exceptions": {
|
|
14
|
+
"device_not_found": {
|
|
15
|
+
"message": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043e."
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"services": {
|
|
19
|
+
"add_bonus_time": {
|
|
20
|
+
"fields": {
|
|
21
|
+
"bonus_time": {
|
|
22
|
+
"name": "\u0411\u043e\u043d\u0443\u0441 \u0432\u0440\u0435\u043c\u0435"
|
|
23
|
+
},
|
|
24
|
+
"device_id": {
|
|
25
|
+
"example": "1234567890abcdef",
|
|
26
|
+
"name": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"name": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0431\u043e\u043d\u0443\u0441 \u0432\u0440\u0435\u043c\u0435"
|
|
30
|
+
}
|
|
12
31
|
}
|
|
13
32
|
}
|
|
@@ -24,6 +24,9 @@
|
|
|
24
24
|
"host": "Host",
|
|
25
25
|
"port": "Puerto",
|
|
26
26
|
"token": "Token de acceso"
|
|
27
|
+
},
|
|
28
|
+
"data_description": {
|
|
29
|
+
"host": "El nombre de host o la direcci\u00f3n IP de tu Nuki Bridge. Por ejemplo: {sample_ip}."
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
}
|
|
@@ -49,6 +52,7 @@
|
|
|
49
52
|
},
|
|
50
53
|
"issues": {
|
|
51
54
|
"https_webhook": {
|
|
55
|
+
"description": "El Nuki Bridge no puede enviar eventos a una direcci\u00f3n HTTPS (SSL). Por favor, configura una direcci\u00f3n HTTP (local) en \"URL de Home Assistant\" en la [configuraci\u00f3n de red]({network_link}). La direcci\u00f3n (local) actual es: `{base_url}`. Una direcci\u00f3n v\u00e1lida podr\u00eda ser, por ejemplo, `{sample_url}`, donde `{sample_ip}` es la IP del dispositivo Home Assistant.",
|
|
52
56
|
"title": "La URL del webhook de Nuki utiliza HTTPS (SSL)"
|
|
53
57
|
}
|
|
54
58
|
},
|
|
@@ -36,7 +36,23 @@
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
|
+
"entity": {
|
|
40
|
+
"number": {
|
|
41
|
+
"bed_temperature": {
|
|
42
|
+
"name": "Temperatura de la cama"
|
|
43
|
+
},
|
|
44
|
+
"extruder_n_temperature": {
|
|
45
|
+
"name": "Temperatura del extrusor {n}"
|
|
46
|
+
},
|
|
47
|
+
"extruder_temperature": {
|
|
48
|
+
"name": "Temperatura del extrusor"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
39
52
|
"exceptions": {
|
|
53
|
+
"error_setting_temperature": {
|
|
54
|
+
"message": "Error al configurar la temperatura deseada de {tool}"
|
|
55
|
+
},
|
|
40
56
|
"missing_client": {
|
|
41
57
|
"message": "No hay cliente para el ID del dispositivo: {device_id}"
|
|
42
58
|
}
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"host": "\u201eOverkiz\u201c centro pagrindinio kompiuterio pavadinimas arba IP adresas.",
|
|
41
41
|
"token": "\u017denklas, kur\u012f sugeneravo programa, naudojama j\u016bs\u0173 \u012frenginiui valdyti.",
|
|
42
42
|
"verify_ssl": "Patikrinkite SSL sertifikat\u0105. Pasirinkite tai tik tuo atveju, jei jungiat\u0117s naudodami pagrindinio kompiuterio pavadinim\u0105."
|
|
43
|
-
}
|
|
43
|
+
},
|
|
44
|
+
"description": "Aktyvuodami [TaHoma \u012frenginio k\u016br\u0117jo re\u017eim\u0105] ( {somfy_developer_mode_docs} ), galite \u012fgalioti tre\u010di\u0173j\u0173 \u0161ali\u0173 programin\u0119 \u012frang\u0105 (pvz., Home Assistant) prisijungti prie jo per j\u016bs\u0173 vietin\u012f tinkl\u0105. \n \n 1. Savo \u012frenginyje atidarykite program\u0117l\u0119 TaHoma By Somfy. \n 2. Programoje eikite \u012f meniu Pagalba & i\u0161pl\u0117stin\u0117s funkcijos\u201c -> I\u0161pl\u0117stin\u0117s funkcijos. \n 3. \u012ejunkite k\u016br\u0117jo re\u017eim\u0105 7 kartus bakstel\u0117dami savo \u0161liuzo versijos numer\u012f (pvz., 2025.1.4-11). \n 4. K\u016br\u0117jo re\u017eimo meniu sugeneruokite prieigos rakt\u0105, kad autentifikuotum\u0117te API i\u0161kvietimus. \n \n 5. \u012eveskite sugeneruot\u0105 prieigos rakt\u0105 \u017eemiau ir atnaujinkite pagrindin\u012f kompiuter\u012f, \u012ftraukdami savo \u0161liuzo PIN kod\u0105 arba \u0161liuzo IP adres\u0105."
|
|
44
45
|
},
|
|
45
46
|
"local_or_cloud": {
|
|
46
47
|
"data": {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from dataclasses import dataclass
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
7
8
|
from homeassistant.components.climate import (
|
|
@@ -13,18 +14,44 @@ from homeassistant.components.climate import (
|
|
|
13
14
|
HVACAction,
|
|
14
15
|
HVACMode,
|
|
15
16
|
)
|
|
16
|
-
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
|
|
17
|
+
from homeassistant.const import ATTR_TEMPERATURE, STATE_OFF, STATE_ON, UnitOfTemperature
|
|
17
18
|
from homeassistant.core import HomeAssistant, callback
|
|
19
|
+
from homeassistant.exceptions import HomeAssistantError
|
|
18
20
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|
21
|
+
from homeassistant.helpers.restore_state import ExtraStoredData, RestoreEntity
|
|
19
22
|
|
|
20
23
|
from .const import DOMAIN, MASTER_THERMOSTATS
|
|
21
24
|
from .coordinator import PlugwiseConfigEntry, PlugwiseDataUpdateCoordinator
|
|
22
25
|
from .entity import PlugwiseEntity
|
|
23
26
|
from .util import plugwise_command
|
|
24
27
|
|
|
28
|
+
ERROR_NO_SCHEDULE = "set_schedule_first"
|
|
25
29
|
PARALLEL_UPDATES = 0
|
|
26
30
|
|
|
27
31
|
|
|
32
|
+
@dataclass
|
|
33
|
+
class PlugwiseClimateExtraStoredData(ExtraStoredData):
|
|
34
|
+
"""Object to hold extra stored data."""
|
|
35
|
+
|
|
36
|
+
last_active_schedule: str | None
|
|
37
|
+
previous_action_mode: str | None
|
|
38
|
+
|
|
39
|
+
def as_dict(self) -> dict[str, Any]:
|
|
40
|
+
"""Return a dict representation of the text data."""
|
|
41
|
+
return {
|
|
42
|
+
"last_active_schedule": self.last_active_schedule,
|
|
43
|
+
"previous_action_mode": self.previous_action_mode,
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def from_dict(cls, restored: dict[str, Any]) -> PlugwiseClimateExtraStoredData:
|
|
48
|
+
"""Initialize a stored data object from a dict."""
|
|
49
|
+
return cls(
|
|
50
|
+
last_active_schedule=restored.get("last_active_schedule"),
|
|
51
|
+
previous_action_mode=restored.get("previous_action_mode"),
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
28
55
|
async def async_setup_entry(
|
|
29
56
|
hass: HomeAssistant,
|
|
30
57
|
entry: PlugwiseConfigEntry,
|
|
@@ -56,14 +83,26 @@ async def async_setup_entry(
|
|
|
56
83
|
entry.async_on_unload(coordinator.async_add_listener(_add_entities))
|
|
57
84
|
|
|
58
85
|
|
|
59
|
-
class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
|
86
|
+
class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity, RestoreEntity):
|
|
60
87
|
"""Representation of a Plugwise thermostat."""
|
|
61
88
|
|
|
62
89
|
_attr_name = None
|
|
63
90
|
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
|
64
91
|
_attr_translation_key = DOMAIN
|
|
65
92
|
|
|
66
|
-
|
|
93
|
+
_last_active_schedule: str | None = None
|
|
94
|
+
_previous_action_mode: str | None = HVACAction.HEATING.value
|
|
95
|
+
|
|
96
|
+
async def async_added_to_hass(self) -> None:
|
|
97
|
+
"""Run when entity about to be added."""
|
|
98
|
+
await super().async_added_to_hass()
|
|
99
|
+
|
|
100
|
+
if extra_data := await self.async_get_last_extra_data():
|
|
101
|
+
plugwise_extra_data = PlugwiseClimateExtraStoredData.from_dict(
|
|
102
|
+
extra_data.as_dict()
|
|
103
|
+
)
|
|
104
|
+
self._last_active_schedule = plugwise_extra_data.last_active_schedule
|
|
105
|
+
self._previous_action_mode = plugwise_extra_data.previous_action_mode
|
|
67
106
|
|
|
68
107
|
def __init__(
|
|
69
108
|
self,
|
|
@@ -76,7 +115,6 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
|
|
76
115
|
|
|
77
116
|
gateway_id: str = coordinator.api.gateway_id
|
|
78
117
|
self._gateway_data = coordinator.data[gateway_id]
|
|
79
|
-
|
|
80
118
|
self._location = device_id
|
|
81
119
|
if (location := self.device.get("location")) is not None:
|
|
82
120
|
self._location = location
|
|
@@ -105,25 +143,19 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
|
|
105
143
|
self.device["thermostat"]["resolution"], 0.1
|
|
106
144
|
)
|
|
107
145
|
|
|
108
|
-
def _previous_action_mode(self, coordinator: PlugwiseDataUpdateCoordinator) -> None:
|
|
109
|
-
"""Return the previous action-mode when the regulation-mode is not heating or cooling.
|
|
110
|
-
|
|
111
|
-
Helper for set_hvac_mode().
|
|
112
|
-
"""
|
|
113
|
-
# When no cooling available, _previous_mode is always heating
|
|
114
|
-
if (
|
|
115
|
-
"regulation_modes" in self._gateway_data
|
|
116
|
-
and "cooling" in self._gateway_data["regulation_modes"]
|
|
117
|
-
):
|
|
118
|
-
mode = self._gateway_data["select_regulation_mode"]
|
|
119
|
-
if mode in ("cooling", "heating"):
|
|
120
|
-
self._previous_mode = mode
|
|
121
|
-
|
|
122
146
|
@property
|
|
123
147
|
def current_temperature(self) -> float:
|
|
124
148
|
"""Return the current temperature."""
|
|
125
149
|
return self.device["sensors"]["temperature"]
|
|
126
150
|
|
|
151
|
+
@property
|
|
152
|
+
def extra_restore_state_data(self) -> PlugwiseClimateExtraStoredData:
|
|
153
|
+
"""Return text specific state data to be restored."""
|
|
154
|
+
return PlugwiseClimateExtraStoredData(
|
|
155
|
+
last_active_schedule=self._last_active_schedule,
|
|
156
|
+
previous_action_mode=self._previous_action_mode,
|
|
157
|
+
)
|
|
158
|
+
|
|
127
159
|
@property
|
|
128
160
|
def target_temperature(self) -> float:
|
|
129
161
|
"""Return the temperature we try to reach.
|
|
@@ -170,9 +202,10 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
|
|
170
202
|
|
|
171
203
|
if self.coordinator.api.cooling_present:
|
|
172
204
|
if "regulation_modes" in self._gateway_data:
|
|
173
|
-
|
|
205
|
+
selected = self._gateway_data.get("select_regulation_mode")
|
|
206
|
+
if selected == HVACAction.COOLING.value:
|
|
174
207
|
hvac_modes.append(HVACMode.COOL)
|
|
175
|
-
if
|
|
208
|
+
if selected == HVACAction.HEATING.value:
|
|
176
209
|
hvac_modes.append(HVACMode.HEAT)
|
|
177
210
|
else:
|
|
178
211
|
hvac_modes.append(HVACMode.HEAT_COOL)
|
|
@@ -184,8 +217,16 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
|
|
184
217
|
@property
|
|
185
218
|
def hvac_action(self) -> HVACAction:
|
|
186
219
|
"""Return the current running hvac operation if supported."""
|
|
187
|
-
# Keep track of the previous
|
|
188
|
-
|
|
220
|
+
# Keep track of the previous hvac_action mode.
|
|
221
|
+
# When no cooling available, _previous_action_mode is always heating
|
|
222
|
+
if (
|
|
223
|
+
"regulation_modes" in self._gateway_data
|
|
224
|
+
and HVACAction.COOLING.value in self._gateway_data["regulation_modes"]
|
|
225
|
+
):
|
|
226
|
+
mode = self._gateway_data["select_regulation_mode"]
|
|
227
|
+
if mode in (HVACAction.COOLING.value, HVACAction.HEATING.value):
|
|
228
|
+
self._previous_action_mode = mode
|
|
229
|
+
|
|
189
230
|
if (action := self.device.get("control_state")) is not None:
|
|
190
231
|
return HVACAction(action)
|
|
191
232
|
|
|
@@ -219,14 +260,33 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
|
|
219
260
|
return
|
|
220
261
|
|
|
221
262
|
if hvac_mode == HVACMode.OFF:
|
|
222
|
-
await self.coordinator.api.set_regulation_mode(hvac_mode)
|
|
263
|
+
await self.coordinator.api.set_regulation_mode(hvac_mode.value)
|
|
223
264
|
else:
|
|
265
|
+
current = self.device.get("select_schedule")
|
|
266
|
+
desired = current
|
|
267
|
+
|
|
268
|
+
# Capture the last valid schedule
|
|
269
|
+
if desired and desired != "off":
|
|
270
|
+
self._last_active_schedule = desired
|
|
271
|
+
elif desired == "off":
|
|
272
|
+
desired = self._last_active_schedule
|
|
273
|
+
|
|
274
|
+
# Enabling HVACMode.AUTO requires a previously set schedule for saving and restoring
|
|
275
|
+
if hvac_mode == HVACMode.AUTO and not desired:
|
|
276
|
+
raise HomeAssistantError(
|
|
277
|
+
translation_domain=DOMAIN,
|
|
278
|
+
translation_key=ERROR_NO_SCHEDULE,
|
|
279
|
+
)
|
|
280
|
+
|
|
224
281
|
await self.coordinator.api.set_schedule_state(
|
|
225
282
|
self._location,
|
|
226
|
-
|
|
283
|
+
STATE_ON if hvac_mode == HVACMode.AUTO else STATE_OFF,
|
|
284
|
+
desired,
|
|
227
285
|
)
|
|
228
|
-
if self.hvac_mode == HVACMode.OFF:
|
|
229
|
-
await self.coordinator.api.set_regulation_mode(
|
|
286
|
+
if self.hvac_mode == HVACMode.OFF and self._previous_action_mode:
|
|
287
|
+
await self.coordinator.api.set_regulation_mode(
|
|
288
|
+
self._previous_action_mode
|
|
289
|
+
)
|
|
230
290
|
|
|
231
291
|
@plugwise_command
|
|
232
292
|
async def async_set_preset_mode(self, preset_mode: str) -> None:
|
|
@@ -314,6 +314,9 @@
|
|
|
314
314
|
"invalid_xml_data": {
|
|
315
315
|
"message": "[%key:component::plugwise::config::error::response_error%]"
|
|
316
316
|
},
|
|
317
|
+
"set_schedule_first": {
|
|
318
|
+
"message": "Failed setting HVACMode, set a schedule first."
|
|
319
|
+
},
|
|
317
320
|
"unsupported_firmware": {
|
|
318
321
|
"message": "[%key:component::plugwise::config::error::unsupported%]"
|
|
319
322
|
}
|
|
@@ -314,6 +314,9 @@
|
|
|
314
314
|
"invalid_xml_data": {
|
|
315
315
|
"message": "Ung\u00fcltige XML-Daten oder Fehleranzeige empfangen"
|
|
316
316
|
},
|
|
317
|
+
"set_schedule_first": {
|
|
318
|
+
"message": "Fehler beim Einstellen des HLK-Modus, lege zuerst einen Zeitplan fest."
|
|
319
|
+
},
|
|
317
320
|
"unsupported_firmware": {
|
|
318
321
|
"message": "Ger\u00e4t mit nicht unterst\u00fctzter Firmware"
|
|
319
322
|
}
|
|
@@ -314,6 +314,9 @@
|
|
|
314
314
|
"invalid_xml_data": {
|
|
315
315
|
"message": "Invalid XML data, or error indication received"
|
|
316
316
|
},
|
|
317
|
+
"set_schedule_first": {
|
|
318
|
+
"message": "Failed setting HVACMode, set a schedule first."
|
|
319
|
+
},
|
|
317
320
|
"unsupported_firmware": {
|
|
318
321
|
"message": "Device with unsupported firmware"
|
|
319
322
|
}
|
|
@@ -314,6 +314,9 @@
|
|
|
314
314
|
"invalid_xml_data": {
|
|
315
315
|
"message": "Neplatn\u00e9 \u00fadaje XML alebo prijat\u00e9 chybov\u00e9 hl\u00e1senie"
|
|
316
316
|
},
|
|
317
|
+
"set_schedule_first": {
|
|
318
|
+
"message": "Nastavenie re\u017eimu HVAC zlyhalo, najprv nastavte pl\u00e1n."
|
|
319
|
+
},
|
|
317
320
|
"unsupported_firmware": {
|
|
318
321
|
"message": "Zariadenie s nepodporovan\u00fdm firmv\u00e9rom"
|
|
319
322
|
}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
"config": {
|
|
3
3
|
"abort": {
|
|
4
4
|
"already_configured": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u0442\u043e \u0432\u0435\u0447\u0435 \u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u043e",
|
|
5
|
-
"reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430"
|
|
5
|
+
"reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430",
|
|
6
|
+
"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"
|
|
6
7
|
},
|
|
7
8
|
"error": {
|
|
8
9
|
"cannot_connect": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435",
|
|
@@ -10,6 +11,12 @@
|
|
|
10
11
|
"unknown": "\u041d\u0435\u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430"
|
|
11
12
|
},
|
|
12
13
|
"step": {
|
|
14
|
+
"reconfigure": {
|
|
15
|
+
"data": {
|
|
16
|
+
"url": "URL",
|
|
17
|
+
"verify_ssl": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 SSL \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
13
20
|
"user": {
|
|
14
21
|
"data": {
|
|
15
22
|
"url": "URL",
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
"api_token": "API pristupni token za autentifikaciju sa Portainer\u2011om",
|
|
15
15
|
"url": "URL, uklju\u010duju\u0107i port, tvoje Portainer instance",
|
|
16
16
|
"verify_ssl": "Da li da se verifikuju SSL sertifikati. Onemogu\u0107i samo ako ima\u0161 samopotpisani sertifikat."
|
|
17
|
-
}
|
|
17
|
+
},
|
|
18
|
+
"description": "Upotrebite slede\u0107i obrazac da ponovo konfiguri\u0161ete svoju Portainer instancu.",
|
|
19
|
+
"title": "Ponovo konfiguri\u0161i Portainer integraciju"
|
|
18
20
|
},
|
|
19
21
|
"user": {
|
|
20
22
|
"data": {
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
"abort": {
|
|
4
4
|
"already_configured": "El dispositivo ya est\u00e1 configurado",
|
|
5
5
|
"credential_error": "Error al obtener las credenciales.",
|
|
6
|
-
"no_devices_found": "No se encontraron dispositivos en la red"
|
|
6
|
+
"no_devices_found": "No se encontraron dispositivos en la red",
|
|
7
|
+
"port_987_bind_error": "No se pudo enlazar con el puerto 987. Consulta la [documentaci\u00f3n]({ps4_docs_url}) para obtener informaci\u00f3n adicional.",
|
|
8
|
+
"port_997_bind_error": "No se pudo enlazar con el puerto 997. Consulta la [documentaci\u00f3n]({ps4_docs_url}) para obtener informaci\u00f3n adicional."
|
|
7
9
|
},
|
|
8
10
|
"error": {
|
|
9
11
|
"cannot_connect": "No se pudo conectar",
|
|
@@ -13,6 +15,12 @@
|
|
|
13
15
|
},
|
|
14
16
|
"step": {
|
|
15
17
|
"creds": {
|
|
18
|
+
"data": {
|
|
19
|
+
"token": "Token de PSN"
|
|
20
|
+
},
|
|
21
|
+
"data_description": {
|
|
22
|
+
"token": "Para obtener tu token de PSN, por favor, sigue estas [instrucciones]({ps4_docs_url})."
|
|
23
|
+
},
|
|
16
24
|
"description": "Credenciales necesarias. Pulsa **Enviar** y luego en la aplicaci\u00f3n PS4 Second Screen, actualiza los dispositivos y selecciona el dispositivo **Home-Assistant** para continuar."
|
|
17
25
|
},
|
|
18
26
|
"link": {
|