homeassistant 2025.8.0b1__py3-none-any.whl → 2025.8.0b3__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/adguard/translations/ga.json +11 -0
- homeassistant/components/airgradient/translations/ga.json +27 -0
- homeassistant/components/airos/config_flow.py +9 -9
- homeassistant/components/airos/coordinator.py +11 -7
- homeassistant/components/airos/diagnostics.py +33 -0
- homeassistant/components/airos/manifest.json +1 -1
- homeassistant/components/airos/quality_scale.yaml +1 -1
- homeassistant/components/airos/sensor.py +0 -7
- homeassistant/components/airos/strings.json +0 -7
- homeassistant/components/airos/translations/bg.json +0 -7
- homeassistant/components/airos/translations/cs.json +0 -7
- homeassistant/components/airos/translations/de.json +0 -7
- homeassistant/components/airos/translations/en-GB.json +80 -0
- homeassistant/components/airos/translations/en.json +0 -7
- homeassistant/components/airos/translations/es.json +0 -7
- homeassistant/components/airos/translations/et.json +0 -7
- homeassistant/components/airos/translations/ga.json +0 -7
- homeassistant/components/airos/translations/he.json +29 -0
- homeassistant/components/airos/translations/nl.json +10 -0
- homeassistant/components/airos/translations/sk.json +51 -0
- homeassistant/components/airos/translations/sv.json +29 -0
- homeassistant/components/airos/translations/zh-Hans.json +0 -7
- homeassistant/components/airos/translations/zh-Hant.json +0 -7
- homeassistant/components/airq/translations/ga.json +2 -1
- homeassistant/components/airthings/__init__.py +2 -5
- homeassistant/components/airthings/coordinator.py +10 -1
- homeassistant/components/airtouch4/translations/ga.json +11 -0
- homeassistant/components/airtouch5/translations/ga.json +16 -0
- homeassistant/components/airvisual_pro/translations/ga.json +11 -0
- homeassistant/components/airzone/translations/ga.json +6 -0
- homeassistant/components/airzone_cloud/translations/ga.json +4 -0
- homeassistant/components/alarmdecoder/translations/ga.json +10 -0
- homeassistant/components/alert/translations/he.json +1 -1
- homeassistant/components/alexa_devices/translations/de.json +34 -34
- homeassistant/components/alexa_devices/translations/en-GB.json +522 -1
- homeassistant/components/alexa_devices/translations/es.json +192 -1
- homeassistant/components/alexa_devices/translations/et.json +522 -1
- homeassistant/components/alexa_devices/translations/ga.json +81 -1
- homeassistant/components/alexa_devices/translations/nl.json +9 -0
- homeassistant/components/alexa_devices/translations/sk.json +134 -1
- homeassistant/components/alexa_devices/translations/sv.json +27 -1
- homeassistant/components/alexa_devices/translations/zh-Hans.json +179 -5
- homeassistant/components/ambient_network/translations/ga.json +84 -0
- homeassistant/components/ambient_station/translations/ga.json +12 -0
- homeassistant/components/analytics/analytics.py +0 -1
- homeassistant/components/analytics_insights/translations/ga.json +10 -4
- homeassistant/components/androidtv_remote/translations/ga.json +1 -0
- homeassistant/components/androidtv_remote/translations/sl.json +2 -1
- homeassistant/components/anova/translations/ga.json +5 -1
- homeassistant/components/anova/translations/he.json +1 -1
- homeassistant/components/anthropic/translations/ga.json +2 -1
- homeassistant/components/aosmith/translations/ga.json +19 -0
- homeassistant/components/apcupsd/translations/ga.json +205 -0
- homeassistant/components/apple_tv/translations/ga.json +10 -0
- homeassistant/components/aprilaire/translations/ga.json +17 -0
- homeassistant/components/aprilaire/translations/he.json +4 -4
- homeassistant/components/aranet/translations/ga.json +5 -0
- homeassistant/components/arve/translations/ga.json +20 -0
- homeassistant/components/assist_satellite/translations/he.json +1 -1
- homeassistant/components/asuswrt/router.py +12 -3
- homeassistant/components/august/manifest.json +1 -1
- homeassistant/components/aurora_abb_powerone/translations/ga.json +24 -0
- homeassistant/components/axis/translations/ga.json +4 -0
- homeassistant/components/azure_devops/translations/ga.json +3 -0
- homeassistant/components/azure_storage/translations/ga.json +3 -0
- homeassistant/components/backup/translations/he.json +1 -1
- homeassistant/components/balboa/translations/ga.json +28 -0
- homeassistant/components/binary_sensor/translations/ga.json +8 -0
- homeassistant/components/blink/translations/ga.json +24 -0
- homeassistant/components/blue_current/translations/ga.json +23 -0
- homeassistant/components/bluemaestro/translations/ga.json +9 -0
- homeassistant/components/bluetooth/manifest.json +1 -1
- homeassistant/components/bmw_connected_drive/translations/ga.json +7 -0
- homeassistant/components/bond/translations/ga.json +11 -0
- homeassistant/components/bosch_alarm/translations/ga.json +2 -1
- homeassistant/components/bosch_shc/translations/ga.json +11 -0
- homeassistant/components/bring/translations/ga.json +52 -0
- homeassistant/components/broadlink/updater.py +1 -0
- homeassistant/components/brother/translations/ga.json +3 -0
- homeassistant/components/bryant_evolution/translations/ga.json +3 -0
- homeassistant/components/bsblan/translations/ga.json +6 -0
- homeassistant/components/bthome/translations/ga.json +3 -1
- homeassistant/components/caldav/manifest.json +1 -1
- homeassistant/components/calendar/translations/ga.json +27 -0
- homeassistant/components/cambridge_audio/translations/ga.json +1 -0
- homeassistant/components/camera/translations/he.json +1 -1
- homeassistant/components/climate/translations/ga.json +12 -0
- homeassistant/components/climate/translations/he.json +1 -1
- homeassistant/components/cloud/manifest.json +1 -1
- homeassistant/components/cloud/translations/ga.json +34 -0
- homeassistant/components/co2signal/translations/ga.json +32 -0
- homeassistant/components/comelit/translations/ga.json +20 -0
- homeassistant/components/conversation/translations/ga.json +7 -0
- homeassistant/components/cookidoo/translations/ga.json +4 -0
- homeassistant/components/datadog/translations/sv.json +28 -0
- homeassistant/components/deconz/translations/ga.json +11 -0
- homeassistant/components/deluge/translations/ga.json +9 -0
- homeassistant/components/deluge/translations/he.json +1 -1
- homeassistant/components/demo/translations/ga.json +12 -0
- homeassistant/components/denonavr/manifest.json +1 -1
- homeassistant/components/devialet/translations/ga.json +16 -0
- homeassistant/components/devolo_home_network/translations/ga.json +18 -0
- homeassistant/components/dexcom/translations/ga.json +17 -0
- homeassistant/components/dhcp/manifest.json +1 -1
- homeassistant/components/directv/translations/ga.json +11 -0
- homeassistant/components/dlink/translations/ga.json +11 -0
- homeassistant/components/doorbird/translations/ga.json +5 -0
- homeassistant/components/downloader/translations/ga.json +12 -0
- homeassistant/components/drop_connect/translations/ga.json +83 -0
- homeassistant/components/dsmr/translations/ga.json +3 -0
- homeassistant/components/duotecno/translations/ga.json +18 -0
- homeassistant/components/dwd_weather_warnings/translations/ga.json +17 -0
- homeassistant/components/easyenergy/translations/ga.json +16 -0
- homeassistant/components/ecobee/translations/ga.json +11 -0
- homeassistant/components/ecoforest/translations/ga.json +24 -0
- homeassistant/components/ecovacs/manifest.json +1 -1
- homeassistant/components/ecovacs/translations/ga.json +140 -1
- homeassistant/components/ecovacs/translations/he.json +1 -1
- homeassistant/components/eheimdigital/translations/ga.json +1 -0
- homeassistant/components/electric_kiwi/translations/ga.json +19 -0
- homeassistant/components/elevenlabs/translations/sv.json +2 -1
- homeassistant/components/elmax/translations/ga.json +39 -0
- homeassistant/components/elvia/translations/ga.json +18 -0
- homeassistant/components/emoncms/translations/cs.json +0 -8
- homeassistant/components/emoncms/translations/el.json +0 -8
- homeassistant/components/emoncms/translations/en-GB.json +2 -2
- homeassistant/components/emoncms/translations/en.json +2 -2
- homeassistant/components/emoncms/translations/es.json +1 -1
- homeassistant/components/emoncms/translations/ga.json +1 -8
- homeassistant/components/emoncms/translations/it.json +0 -8
- homeassistant/components/emoncms/translations/ja.json +0 -8
- homeassistant/components/emoncms/translations/lt.json +0 -8
- homeassistant/components/emoncms/translations/nl.json +0 -8
- homeassistant/components/emoncms/translations/pt.json +0 -8
- homeassistant/components/emoncms/translations/sk.json +0 -8
- homeassistant/components/emoncms/translations/sv.json +2 -9
- homeassistant/components/emoncms/translations/zh-Hans.json +0 -8
- homeassistant/components/emoncms/translations/zh-Hant.json +2 -2
- homeassistant/components/energenie_power_sockets/translations/ga.json +23 -0
- homeassistant/components/energy/translations/sl.json +4 -0
- homeassistant/components/energyzero/translations/ga.json +42 -0
- homeassistant/components/enigma2/translations/ga.json +8 -0
- homeassistant/components/enphase_envoy/diagnostics.py +2 -0
- homeassistant/components/enphase_envoy/translations/ga.json +108 -0
- homeassistant/components/enphase_envoy/translations/he.json +1 -1
- homeassistant/components/epic_games_store/translations/ga.json +22 -1
- homeassistant/components/epson/translations/ga.json +3 -0
- homeassistant/components/eq3btsmart/translations/ga.json +12 -0
- homeassistant/components/esphome/manifest.json +1 -1
- homeassistant/components/esphome/translations/ga.json +1 -0
- homeassistant/components/evil_genius_labs/translations/ga.json +11 -0
- homeassistant/components/faa_delays/translations/ga.json +73 -0
- homeassistant/components/fan/translations/ga.json +7 -0
- homeassistant/components/fastdotcom/translations/ga.json +9 -0
- homeassistant/components/feedreader/translations/ga.json +3 -0
- homeassistant/components/file/translations/ga.json +56 -0
- homeassistant/components/filesize/translations/ga.json +5 -0
- homeassistant/components/fitbit/translations/ga.json +11 -0
- homeassistant/components/fjaraskupan/translations/da.json +7 -0
- homeassistant/components/flexit_bacnet/translations/ga.json +52 -0
- homeassistant/components/folder_watcher/translations/ga.json +41 -0
- homeassistant/components/freebox/translations/ga.json +11 -0
- homeassistant/components/fritz/translations/ga.json +20 -0
- homeassistant/components/fritzbox/translations/ga.json +8 -0
- homeassistant/components/fritzbox_callmonitor/translations/ga.json +49 -0
- homeassistant/components/fritzbox_callmonitor/translations/he.json +1 -1
- homeassistant/components/fronius/__init__.py +6 -0
- homeassistant/components/fronius/translations/ga.json +1 -0
- homeassistant/components/fronius/translations/he.json +1 -1
- homeassistant/components/fyta/translations/ga.json +55 -7
- homeassistant/components/generic/translations/ga.json +8 -0
- homeassistant/components/generic_hygrostat/translations/it.json +47 -2
- homeassistant/components/generic_thermostat/translations/it.json +39 -6
- homeassistant/components/geocaching/translations/ga.json +4 -0
- homeassistant/components/glances/translations/ga.json +33 -0
- homeassistant/components/goalzero/translations/ga.json +53 -0
- homeassistant/components/google/translations/ga.json +3 -1
- homeassistant/components/google_assistant_sdk/translations/ga.json +4 -0
- homeassistant/components/google_drive/translations/ga.json +2 -0
- homeassistant/components/google_generative_ai_conversation/translations/ga.json +8 -4
- homeassistant/components/google_generative_ai_conversation/translations/sv.json +1 -0
- homeassistant/components/google_mail/translations/ga.json +4 -0
- homeassistant/components/google_photos/translations/ga.json +2 -0
- homeassistant/components/google_sheets/translations/ga.json +4 -0
- homeassistant/components/google_tasks/translations/ga.json +5 -0
- homeassistant/components/google_travel_time/translations/ga.json +65 -0
- homeassistant/components/gpsd/translations/ga.json +19 -0
- homeassistant/components/gree/translations/ga.json +15 -0
- homeassistant/components/group/translations/en-GB.json +18 -0
- homeassistant/components/group/translations/et.json +18 -0
- homeassistant/components/group/translations/ga.json +7 -0
- homeassistant/components/group/translations/he.json +18 -0
- homeassistant/components/guardian/translations/ga.json +23 -0
- homeassistant/components/habitica/translations/ga.json +35 -0
- homeassistant/components/harmony/translations/ga.json +18 -0
- homeassistant/components/hassio/strings.json +4 -0
- homeassistant/components/hassio/translations/de.json +5 -1
- homeassistant/components/hassio/translations/el.json +4 -0
- homeassistant/components/hassio/translations/en.json +4 -0
- homeassistant/components/hassio/translations/es.json +4 -0
- homeassistant/components/hassio/translations/et.json +4 -0
- homeassistant/components/hassio/translations/ga.json +38 -0
- homeassistant/components/hassio/translations/he.json +4 -0
- homeassistant/components/hassio/translations/lt.json +4 -0
- homeassistant/components/hassio/translations/zh-Hant.json +4 -0
- homeassistant/components/heos/translations/ga.json +11 -0
- homeassistant/components/here_travel_time/translations/ga.json +5 -0
- homeassistant/components/hko/translations/ga.json +9 -0
- homeassistant/components/holiday/translations/ga.json +5 -0
- homeassistant/components/home_connect/translations/da.json +6 -0
- homeassistant/components/home_connect/translations/ga.json +2 -0
- homeassistant/components/homeassistant/translations/ga.json +32 -0
- homeassistant/components/homeassistant_sky_connect/translations/ga.json +1 -0
- homeassistant/components/homee/translations/ga.json +3 -0
- homeassistant/components/homee/translations/sv.json +6 -0
- homeassistant/components/homekit_controller/translations/ga.json +15 -0
- homeassistant/components/homekit_controller/translations/he.json +1 -1
- homeassistant/components/homewizard/translations/ga.json +40 -0
- homeassistant/components/homeworks/translations/ga.json +147 -1
- homeassistant/components/honeywell/translations/ga.json +55 -0
- homeassistant/components/huawei_lte/translations/ga.json +94 -0
- homeassistant/components/hue/translations/ga.json +8 -0
- homeassistant/components/hue/v1/light.py +2 -0
- homeassistant/components/hue/v1/sensor_base.py +1 -0
- homeassistant/components/humidifier/translations/he.json +1 -1
- homeassistant/components/hunterdouglas_powerview/translations/ga.json +17 -0
- homeassistant/components/husqvarna_automower/manifest.json +1 -1
- homeassistant/components/husqvarna_automower/sensor.py +3 -4
- homeassistant/components/husqvarna_automower/translations/en-GB.json +12 -0
- homeassistant/components/husqvarna_automower/translations/ga.json +196 -3
- homeassistant/components/husqvarna_automower/translations/he.json +5 -0
- homeassistant/components/husqvarna_automower/translations/nl.json +1 -0
- homeassistant/components/husqvarna_automower/translations/sv.json +12 -0
- homeassistant/components/huum/translations/ga.json +10 -0
- homeassistant/components/huum/translations/sv.json +7 -0
- homeassistant/components/hydrawise/translations/ga.json +26 -1
- homeassistant/components/hyperion/translations/ga.json +5 -0
- homeassistant/components/idasen_desk/translations/ga.json +18 -0
- homeassistant/components/imap/translations/ga.json +100 -0
- homeassistant/components/imgw_pib/manifest.json +1 -1
- homeassistant/components/imgw_pib/translations/ga.json +9 -0
- homeassistant/components/imgw_pib/translations/sv.json +3 -0
- homeassistant/components/immich/translations/sv.json +9 -0
- homeassistant/components/incomfort/translations/ga.json +3 -0
- homeassistant/components/input_button/translations/ga.json +7 -0
- homeassistant/components/iotawatt/translations/ga.json +11 -0
- homeassistant/components/ipp/translations/he.json +1 -1
- homeassistant/components/iron_os/translations/he.json +1 -1
- homeassistant/components/ista_ecotrend/translations/ga.json +1 -0
- homeassistant/components/ituran/translations/he.json +3 -0
- homeassistant/components/jewish_calendar/translations/ga.json +7 -1
- homeassistant/components/jvc_projector/translations/ga.json +13 -1
- homeassistant/components/keenetic_ndms2/translations/ga.json +12 -0
- homeassistant/components/kitchen_sink/translations/ga.json +12 -0
- homeassistant/components/knx/manifest.json +1 -1
- homeassistant/components/knx/translations/ga.json +12 -0
- homeassistant/components/knx/translations/zh-Hant.json +1 -1
- homeassistant/components/kostal_plenticore/translations/ga.json +3 -0
- homeassistant/components/kraken/__init__.py +1 -0
- homeassistant/components/lamarzocco/translations/ga.json +67 -0
- homeassistant/components/lametric/translations/ga.json +4 -0
- homeassistant/components/lcn/translations/ga.json +3 -0
- homeassistant/components/lg_netcast/translations/ga.json +21 -0
- homeassistant/components/lg_thinq/translations/he.json +2 -1
- homeassistant/components/lg_thinq/translations/sv.json +45 -0
- homeassistant/components/life360/translations/ga.json +8 -0
- homeassistant/components/linkplay/translations/sv.json +8 -0
- homeassistant/components/litterrobot/manifest.json +1 -1
- homeassistant/components/litterrobot/translations/sv.json +3 -0
- homeassistant/components/lock/translations/ga.json +4 -0
- homeassistant/components/lupusec/translations/ga.json +9 -0
- homeassistant/components/lutron/translations/ga.json +26 -0
- homeassistant/components/lyric/translations/ga.json +14 -0
- homeassistant/components/madvr/translations/ga.json +1 -0
- homeassistant/components/matter/number.py +3 -1
- homeassistant/components/matter/translations/ga.json +5 -0
- homeassistant/components/matter/translations/he.json +6 -0
- homeassistant/components/mazda/translations/ga.json +8 -0
- homeassistant/components/mealie/manifest.json +1 -1
- homeassistant/components/mealie/todo.py +3 -2
- homeassistant/components/mealie/translations/en-GB.json +21 -0
- homeassistant/components/mealie/translations/et.json +21 -0
- homeassistant/components/mealie/translations/ga.json +3 -1
- homeassistant/components/mealie/translations/sv.json +8 -0
- homeassistant/components/mealie/translations/zh-Hans.json +14 -1
- homeassistant/components/mealie/translations/zh-Hant.json +5 -0
- homeassistant/components/media_extractor/manifest.json +1 -1
- homeassistant/components/media_extractor/translations/ga.json +18 -0
- homeassistant/components/media_player/translations/he.json +1 -1
- homeassistant/components/melcloud/translations/ga.json +6 -0
- homeassistant/components/meteo_france/__init__.py +3 -0
- homeassistant/components/microbees/translations/ga.json +5 -0
- homeassistant/components/miele/strings.json +21 -21
- homeassistant/components/miele/translations/bg.json +0 -23
- homeassistant/components/miele/translations/cs.json +1 -24
- homeassistant/components/miele/translations/da.json +3 -0
- homeassistant/components/miele/translations/de.json +21 -21
- homeassistant/components/miele/translations/el.json +0 -25
- homeassistant/components/miele/translations/en-GB.json +46 -21
- homeassistant/components/miele/translations/en.json +20 -20
- homeassistant/components/miele/translations/es.json +43 -21
- homeassistant/components/miele/translations/et.json +55 -21
- homeassistant/components/miele/translations/ga.json +48 -22
- homeassistant/components/miele/translations/he.json +28 -20
- homeassistant/components/miele/translations/hu.json +1 -24
- homeassistant/components/miele/translations/it.json +83 -21
- homeassistant/components/miele/translations/ja.json +0 -20
- homeassistant/components/miele/translations/lt.json +10 -21
- homeassistant/components/miele/translations/nl.json +10 -24
- homeassistant/components/miele/translations/pt.json +1 -24
- homeassistant/components/miele/translations/sk.json +19 -21
- homeassistant/components/miele/translations/sv.json +32 -21
- homeassistant/components/miele/translations/zh-Hans.json +21 -21
- homeassistant/components/miele/translations/zh-Hant.json +30 -21
- homeassistant/components/mill/__init__.py +1 -0
- homeassistant/components/mill/coordinator.py +2 -0
- homeassistant/components/minecraft_server/translations/ga.json +13 -0
- homeassistant/components/modbus/translations/ga.json +28 -0
- homeassistant/components/monzo/translations/ga.json +20 -0
- homeassistant/components/motion_blinds/manifest.json +1 -1
- homeassistant/components/motionblinds_ble/translations/ga.json +41 -0
- homeassistant/components/motionmount/translations/ga.json +5 -0
- homeassistant/components/mqtt/strings.json +1 -0
- homeassistant/components/mqtt/translations/de.json +6 -5
- homeassistant/components/mqtt/translations/el.json +1 -0
- homeassistant/components/mqtt/translations/en-GB.json +232 -0
- homeassistant/components/mqtt/translations/en.json +1 -0
- homeassistant/components/mqtt/translations/es.json +39 -5
- homeassistant/components/mqtt/translations/et.json +232 -0
- homeassistant/components/mqtt/translations/fr.json +1 -0
- homeassistant/components/mqtt/translations/ga.json +87 -3
- homeassistant/components/mqtt/translations/he.json +67 -0
- homeassistant/components/mqtt/translations/lt.json +1 -0
- homeassistant/components/mqtt/translations/nl.json +17 -1
- homeassistant/components/mqtt/translations/ru.json +1 -0
- homeassistant/components/mqtt/translations/sk.json +1 -0
- homeassistant/components/mqtt/translations/sl.json +5 -0
- homeassistant/components/mqtt/translations/sv.json +40 -0
- homeassistant/components/mqtt/translations/zh-Hans.json +171 -2
- homeassistant/components/mqtt/translations/zh-Hant.json +98 -39
- homeassistant/components/music_assistant/translations/ga.json +2 -1
- homeassistant/components/myq/translations/ga.json +8 -0
- homeassistant/components/mystrom/translations/ga.json +9 -0
- homeassistant/components/myuplink/translations/ga.json +7 -1
- homeassistant/components/nam/translations/ga.json +2 -1
- homeassistant/components/neato/translations/ga.json +4 -0
- homeassistant/components/nest/translations/ga.json +2 -0
- homeassistant/components/netatmo/translations/ga.json +107 -0
- homeassistant/components/netgear/translations/ga.json +24 -0
- homeassistant/components/netgear_lte/translations/ga.json +30 -0
- homeassistant/components/nextbus/translations/ga.json +30 -0
- homeassistant/components/nfandroidtv/translations/ga.json +10 -0
- homeassistant/components/nobo_hub/translations/ga.json +12 -0
- homeassistant/components/nordpool/translations/ga.json +3 -0
- homeassistant/components/notify/translations/ga.json +16 -0
- homeassistant/components/ntfy/translations/ga.json +3 -0
- homeassistant/components/nuki/translations/ga.json +23 -0
- homeassistant/components/number/translations/ga.json +8 -0
- homeassistant/components/nut/translations/ga.json +4 -1
- homeassistant/components/octoprint/translations/ga.json +31 -0
- homeassistant/components/ohme/translations/ga.json +3 -0
- homeassistant/components/ollama/translations/ga.json +4 -2
- homeassistant/components/onboarding/translations/ga.json +7 -0
- homeassistant/components/onedrive/translations/ga.json +3 -0
- homeassistant/components/onewire/translations/ga.json +37 -0
- homeassistant/components/onkyo/translations/ga.json +1 -0
- homeassistant/components/onvif/translations/ga.json +15 -0
- homeassistant/components/open_router/manifest.json +1 -1
- homeassistant/components/open_router/translations/en-GB.json +21 -0
- homeassistant/components/open_router/translations/et.json +21 -0
- homeassistant/components/open_router/translations/he.json +10 -0
- homeassistant/components/open_router/translations/sv.json +20 -1
- homeassistant/components/open_router/translations/zh-Hans.json +4 -0
- homeassistant/components/open_router/translations/zh-Hant.json +4 -0
- homeassistant/components/openai_conversation/translations/ga.json +16 -2
- homeassistant/components/openai_conversation/translations/sv.json +7 -0
- homeassistant/components/openweathermap/translations/fr.json +2 -1
- homeassistant/components/openweathermap/translations/he.json +2 -1
- homeassistant/components/oralb/translations/ga.json +21 -0
- homeassistant/components/osoenergy/translations/en-GB.json +10 -0
- homeassistant/components/osoenergy/translations/ga.json +34 -1
- homeassistant/components/osoenergy/translations/zh-Hant.json +1 -0
- homeassistant/components/overkiz/translations/ga.json +19 -3
- homeassistant/components/overseerr/translations/ga.json +3 -0
- homeassistant/components/paperless_ngx/translations/ga.json +3 -0
- homeassistant/components/peblar/translations/ga.json +2 -1
- homeassistant/components/peco/translations/ga.json +12 -0
- homeassistant/components/permobil/translations/ga.json +14 -0
- homeassistant/components/ping/translations/ga.json +39 -0
- homeassistant/components/playstation_network/translations/en-GB.json +41 -0
- homeassistant/components/playstation_network/translations/es.json +27 -0
- homeassistant/components/playstation_network/translations/et.json +41 -0
- homeassistant/components/playstation_network/translations/ga.json +1 -0
- homeassistant/components/playstation_network/translations/he.json +8 -0
- homeassistant/components/playstation_network/translations/nl.json +8 -0
- homeassistant/components/playstation_network/translations/sv.json +9 -0
- homeassistant/components/playstation_network/translations/zh-Hans.json +17 -1
- homeassistant/components/plugwise/translations/ga.json +11 -2
- homeassistant/components/point/translations/ga.json +2 -0
- homeassistant/components/powerfox/translations/ga.json +3 -0
- homeassistant/components/powerwall/translations/ga.json +20 -0
- homeassistant/components/profiler/translations/ga.json +18 -0
- homeassistant/components/progettihwsw/translations/ga.json +11 -0
- homeassistant/components/proximity/translations/ga.json +55 -0
- homeassistant/components/prusalink/translations/ga.json +19 -0
- homeassistant/components/prusalink/translations/he.json +1 -1
- homeassistant/components/pvpc_hourly_pricing/translations/ga.json +34 -0
- homeassistant/components/pyload/translations/ga.json +3 -0
- homeassistant/components/qbittorrent/translations/ga.json +34 -0
- homeassistant/components/qbittorrent/translations/he.json +1 -1
- homeassistant/components/qnap/translations/ga.json +42 -0
- homeassistant/components/rachio/translations/ga.json +12 -0
- homeassistant/components/rainforest_raven/translations/ga.json +26 -0
- homeassistant/components/random/strings.json +1 -0
- homeassistant/components/random/translations/bg.json +0 -1
- homeassistant/components/random/translations/ca.json +0 -1
- homeassistant/components/random/translations/cs.json +0 -1
- homeassistant/components/random/translations/de.json +1 -0
- homeassistant/components/random/translations/el.json +2 -1
- homeassistant/components/random/translations/en-GB.json +2 -1
- homeassistant/components/random/translations/en.json +2 -1
- homeassistant/components/random/translations/es.json +2 -1
- homeassistant/components/random/translations/et.json +2 -1
- homeassistant/components/random/translations/fi.json +1 -0
- homeassistant/components/random/translations/fr.json +2 -1
- homeassistant/components/random/translations/ga.json +26 -0
- homeassistant/components/random/translations/he.json +2 -1
- homeassistant/components/random/translations/hu.json +0 -1
- homeassistant/components/random/translations/id.json +0 -1
- homeassistant/components/random/translations/it.json +0 -1
- homeassistant/components/random/translations/ja.json +0 -1
- homeassistant/components/random/translations/ko.json +0 -1
- homeassistant/components/random/translations/lt.json +1 -1
- homeassistant/components/random/translations/nl.json +1 -1
- homeassistant/components/random/translations/pl.json +0 -1
- homeassistant/components/random/translations/pt.json +0 -1
- homeassistant/components/random/translations/ru.json +2 -1
- homeassistant/components/random/translations/sk.json +1 -1
- homeassistant/components/random/translations/sl.json +0 -1
- homeassistant/components/random/translations/sv.json +1 -1
- homeassistant/components/random/translations/tr.json +0 -1
- homeassistant/components/random/translations/vi.json +0 -1
- homeassistant/components/random/translations/zh-Hans.json +1 -1
- homeassistant/components/random/translations/zh-Hant.json +2 -1
- homeassistant/components/recorder/translations/ga.json +14 -0
- homeassistant/components/remote_calendar/coordinator.py +1 -0
- homeassistant/components/renault/translations/ga.json +10 -0
- homeassistant/components/renson/translations/ga.json +80 -0
- homeassistant/components/reolink/translations/ga.json +71 -1
- homeassistant/components/rest_command/translations/ga.json +13 -0
- homeassistant/components/rfxtrx/translations/ga.json +70 -1
- homeassistant/components/ring/translations/ga.json +21 -1
- homeassistant/components/risco/translations/ga.json +39 -0
- homeassistant/components/roborock/translations/ga.json +36 -0
- homeassistant/components/roborock/translations/he.json +1 -1
- homeassistant/components/roku/translations/ga.json +8 -0
- homeassistant/components/romy/translations/ga.json +50 -1
- homeassistant/components/roomba/translations/ga.json +15 -0
- homeassistant/components/rova/translations/ga.json +43 -0
- homeassistant/components/russound_rio/translations/ga.json +1 -0
- homeassistant/components/ruuvitag_ble/translations/ga.json +8 -0
- homeassistant/components/rympro/translations/ga.json +3 -0
- homeassistant/components/sabnzbd/translations/ga.json +3 -0
- homeassistant/components/samsungtv/translations/ga.json +1 -0
- homeassistant/components/sanix/translations/ga.json +28 -0
- homeassistant/components/scene/translations/ga.json +16 -0
- homeassistant/components/schlage/translations/ga.json +10 -0
- homeassistant/components/scrape/translations/bg.json +0 -1
- homeassistant/components/scrape/translations/ca.json +0 -1
- homeassistant/components/scrape/translations/cs.json +0 -1
- homeassistant/components/scrape/translations/el.json +1 -1
- homeassistant/components/scrape/translations/en-GB.json +1 -1
- homeassistant/components/scrape/translations/en.json +1 -1
- homeassistant/components/scrape/translations/es.json +1 -1
- homeassistant/components/scrape/translations/fi.json +0 -1
- homeassistant/components/scrape/translations/fr.json +1 -1
- homeassistant/components/scrape/translations/ga.json +34 -1
- homeassistant/components/scrape/translations/he.json +1 -1
- homeassistant/components/scrape/translations/hu.json +0 -1
- homeassistant/components/scrape/translations/id.json +0 -1
- homeassistant/components/scrape/translations/it.json +0 -1
- homeassistant/components/scrape/translations/ja.json +0 -1
- homeassistant/components/scrape/translations/ko.json +0 -1
- homeassistant/components/scrape/translations/lt.json +0 -1
- homeassistant/components/scrape/translations/nb.json +0 -1
- homeassistant/components/scrape/translations/nl.json +0 -1
- homeassistant/components/scrape/translations/pl.json +0 -1
- homeassistant/components/scrape/translations/pt.json +0 -1
- homeassistant/components/scrape/translations/ru.json +0 -1
- homeassistant/components/scrape/translations/sk.json +0 -1
- homeassistant/components/scrape/translations/sl.json +0 -1
- homeassistant/components/scrape/translations/sv.json +0 -1
- homeassistant/components/scrape/translations/tr.json +0 -1
- homeassistant/components/scrape/translations/uk.json +0 -1
- homeassistant/components/scrape/translations/vi.json +0 -1
- homeassistant/components/scrape/translations/zh-Hans.json +0 -1
- homeassistant/components/scrape/translations/zh-Hant.json +1 -1
- homeassistant/components/screenlogic/translations/ga.json +34 -0
- homeassistant/components/sensibo/translations/ga.json +14 -0
- homeassistant/components/sensor/translations/ga.json +5 -0
- homeassistant/components/sensor/translations/sv.json +1 -0
- homeassistant/components/seventeentrack/translations/ga.json +55 -2
- homeassistant/components/sfr_box/translations/ga.json +9 -0
- homeassistant/components/sfr_box/translations/he.json +1 -1
- homeassistant/components/sharkiq/translations/ga.json +17 -0
- homeassistant/components/shell_command/translations/ga.json +10 -0
- homeassistant/components/shelly/translations/ga.json +33 -1
- homeassistant/components/simplisafe/__init__.py +1 -0
- homeassistant/components/simplisafe/translations/de.json +7 -7
- homeassistant/components/sleepiq/translations/sv.json +5 -0
- homeassistant/components/slide_local/translations/ga.json +1 -0
- homeassistant/components/sma/translations/ga.json +5 -0
- homeassistant/components/smappee/translations/ga.json +3 -0
- homeassistant/components/smartthings/translations/fi.json +12 -1
- homeassistant/components/smartthings/translations/ga.json +2 -0
- homeassistant/components/smartthings/translations/he.json +1 -1
- homeassistant/components/smarttub/controller.py +1 -0
- homeassistant/components/smhi/translations/ga.json +3 -0
- homeassistant/components/sms/__init__.py +2 -2
- homeassistant/components/sms/coordinator.py +4 -2
- homeassistant/components/smtp/translations/ga.json +7 -0
- homeassistant/components/snapcast/translations/ga.json +11 -0
- homeassistant/components/snoo/__init__.py +1 -1
- homeassistant/components/snoo/coordinator.py +8 -1
- homeassistant/components/solaredge/translations/ga.json +27 -0
- homeassistant/components/solarlog/translations/ga.json +3 -0
- homeassistant/components/soma/translations/ga.json +11 -0
- homeassistant/components/somfy_mylink/translations/ga.json +11 -0
- homeassistant/components/sonos/translations/ga.json +8 -0
- homeassistant/components/soundtouch/translations/ga.json +11 -0
- homeassistant/components/speedtestdotnet/translations/ga.json +51 -0
- homeassistant/components/spotify/translations/ga.json +5 -0
- homeassistant/components/sql/translations/bg.json +0 -1
- homeassistant/components/sql/translations/ca.json +0 -1
- homeassistant/components/sql/translations/cs.json +0 -1
- homeassistant/components/sql/translations/el.json +1 -1
- homeassistant/components/sql/translations/en-GB.json +1 -1
- homeassistant/components/sql/translations/en.json +1 -1
- homeassistant/components/sql/translations/es.json +1 -1
- homeassistant/components/sql/translations/fi.json +0 -1
- homeassistant/components/sql/translations/fr.json +1 -1
- homeassistant/components/sql/translations/ga.json +2 -1
- homeassistant/components/sql/translations/he.json +1 -1
- homeassistant/components/sql/translations/hu.json +0 -1
- homeassistant/components/sql/translations/id.json +0 -1
- homeassistant/components/sql/translations/it.json +0 -1
- homeassistant/components/sql/translations/ja.json +0 -1
- homeassistant/components/sql/translations/ko.json +0 -1
- homeassistant/components/sql/translations/lt.json +0 -1
- homeassistant/components/sql/translations/nb.json +0 -1
- homeassistant/components/sql/translations/nl.json +0 -1
- homeassistant/components/sql/translations/pl.json +0 -1
- homeassistant/components/sql/translations/pt.json +0 -1
- homeassistant/components/sql/translations/ru.json +1 -1
- homeassistant/components/sql/translations/sk.json +0 -1
- homeassistant/components/sql/translations/sl.json +0 -1
- homeassistant/components/sql/translations/sv.json +0 -1
- homeassistant/components/sql/translations/tr.json +0 -1
- homeassistant/components/sql/translations/uk.json +0 -1
- homeassistant/components/sql/translations/vi.json +0 -1
- homeassistant/components/sql/translations/zh-Hans.json +0 -1
- homeassistant/components/sql/translations/zh-Hant.json +1 -1
- homeassistant/components/squeezebox/browse_media.py +40 -14
- homeassistant/components/squeezebox/media_player.py +5 -0
- homeassistant/components/starline/translations/ga.json +3 -0
- homeassistant/components/starlink/translations/ga.json +13 -0
- homeassistant/components/steamist/translations/ga.json +17 -0
- homeassistant/components/suez_water/translations/ga.json +6 -0
- homeassistant/components/sun/translations/cs.json +3 -3
- homeassistant/components/sun/translations/ga.json +5 -0
- homeassistant/components/surepetcare/translations/ga.json +9 -0
- homeassistant/components/swiss_public_transport/translations/ga.json +32 -2
- homeassistant/components/switch_as_x/translations/ga.json +9 -0
- homeassistant/components/switcher_kis/translations/sk.json +1 -1
- homeassistant/components/system_bridge/translations/ga.json +64 -1
- homeassistant/components/systemmonitor/translations/ga.json +36 -0
- homeassistant/components/tado/translations/ga.json +18 -1
- homeassistant/components/tailwind/translations/ga.json +26 -0
- homeassistant/components/tami4/translations/ga.json +8 -0
- homeassistant/components/tankerkoenig/translations/en-GB.json +11 -0
- homeassistant/components/tankerkoenig/translations/ga.json +17 -0
- homeassistant/components/tankerkoenig/translations/sv.json +22 -0
- homeassistant/components/technove/translations/ga.json +52 -1
- homeassistant/components/tedee/translations/ga.json +29 -0
- homeassistant/components/telegram_bot/translations/ga.json +3 -0
- homeassistant/components/tellduslive/translations/ga.json +11 -0
- homeassistant/components/template/cover.py +1 -0
- homeassistant/components/template/entity.py +9 -3
- homeassistant/components/template/strings.json +11 -4
- homeassistant/components/template/translations/bg.json +0 -1
- homeassistant/components/template/translations/ca.json +0 -1
- homeassistant/components/template/translations/cs.json +1 -5
- homeassistant/components/template/translations/da.json +0 -1
- homeassistant/components/template/translations/de.json +29 -22
- homeassistant/components/template/translations/el.json +2 -1
- homeassistant/components/template/translations/en-GB.json +490 -16
- homeassistant/components/template/translations/en.json +14 -7
- homeassistant/components/template/translations/es.json +115 -18
- homeassistant/components/template/translations/et.json +495 -15
- homeassistant/components/template/translations/fi.json +0 -1
- homeassistant/components/template/translations/fr.json +215 -28
- homeassistant/components/template/translations/ga.json +203 -16
- homeassistant/components/template/translations/he.json +681 -19
- homeassistant/components/template/translations/hu.json +0 -1
- homeassistant/components/template/translations/id.json +0 -1
- homeassistant/components/template/translations/it.json +0 -1
- homeassistant/components/template/translations/ja.json +0 -1
- homeassistant/components/template/translations/ko.json +0 -1
- homeassistant/components/template/translations/lt.json +24 -1
- homeassistant/components/template/translations/nb.json +0 -1
- homeassistant/components/template/translations/nl.json +32 -2
- homeassistant/components/template/translations/pl.json +0 -1
- homeassistant/components/template/translations/pt-BR.json +0 -1
- homeassistant/components/template/translations/pt.json +0 -1
- homeassistant/components/template/translations/ru.json +679 -19
- homeassistant/components/template/translations/sk.json +1 -1
- homeassistant/components/template/translations/sl.json +478 -13
- homeassistant/components/template/translations/sv.json +488 -2
- homeassistant/components/template/translations/tr.json +0 -1
- homeassistant/components/template/translations/uk.json +0 -1
- homeassistant/components/template/translations/vi.json +0 -1
- homeassistant/components/template/translations/zh-Hans.json +124 -25
- homeassistant/components/template/translations/zh-Hant.json +214 -19
- homeassistant/components/template/vacuum.py +46 -1
- homeassistant/components/tesla_fleet/translations/ga.json +2 -0
- homeassistant/components/tesla_wall_connector/translations/ga.json +24 -1
- homeassistant/components/teslemetry/models.py +1 -1
- homeassistant/components/teslemetry/sensor.py +8 -7
- homeassistant/components/teslemetry/translations/ga.json +153 -0
- homeassistant/components/teslemetry/translations/he.json +1 -1
- homeassistant/components/tessie/translations/ga.json +107 -0
- homeassistant/components/tibber/translations/ga.json +85 -0
- homeassistant/components/time_date/translations/ga.json +64 -0
- homeassistant/components/timer/translations/ga.json +5 -0
- homeassistant/components/timer/translations/he.json +1 -1
- homeassistant/components/todo/translations/ga.json +83 -0
- homeassistant/components/tolo/translations/ga.json +21 -0
- homeassistant/components/tomorrowio/translations/ga.json +53 -0
- homeassistant/components/toon/translations/ga.json +4 -0
- homeassistant/components/totalconnect/translations/ga.json +16 -0
- homeassistant/components/tplink/translations/ga.json +30 -2
- homeassistant/components/tplink_omada/translations/ga.json +34 -0
- homeassistant/components/traccar_server/translations/ga.json +45 -1
- homeassistant/components/tractive/translations/ga.json +7 -0
- homeassistant/components/tradfri/translations/ga.json +7 -0
- homeassistant/components/trafikverket_camera/translations/ga.json +25 -0
- homeassistant/components/trafikverket_ferry/translations/pl.json +1 -1
- homeassistant/components/trafikverket_train/translations/ga.json +13 -0
- homeassistant/components/trafikverket_weatherstation/translations/ga.json +35 -0
- homeassistant/components/transmission/translations/ga.json +9 -0
- homeassistant/components/transmission/translations/he.json +1 -1
- homeassistant/components/trend/translations/ga.json +39 -0
- homeassistant/components/tuya/fan.py +3 -1
- homeassistant/components/tuya/light.py +21 -13
- homeassistant/components/tuya/translations/en-GB.json +12 -0
- homeassistant/components/tuya/translations/es.json +12 -0
- homeassistant/components/tuya/translations/et.json +12 -0
- homeassistant/components/tuya/translations/ga.json +30 -0
- homeassistant/components/tuya/translations/he.json +3 -0
- homeassistant/components/tuya/translations/sk.json +3 -0
- homeassistant/components/tuya/translations/sv.json +7 -0
- homeassistant/components/twinkly/translations/ga.json +8 -1
- homeassistant/components/twitch/translations/ga.json +12 -0
- homeassistant/components/unifi/hub/entity_loader.py +5 -3
- homeassistant/components/unifi/hub/hub.py +1 -1
- homeassistant/components/unifi/translations/ga.json +16 -0
- homeassistant/components/unifiprotect/translations/ga.json +65 -1
- homeassistant/components/unifiprotect/translations/sv.json +3 -0
- homeassistant/components/update/translations/ga.json +26 -0
- homeassistant/components/uptime_kuma/sensor.py +5 -1
- homeassistant/components/uptime_kuma/translations/en-GB.json +10 -0
- homeassistant/components/uptime_kuma/translations/es.json +10 -0
- homeassistant/components/uptime_kuma/translations/et.json +10 -0
- homeassistant/components/uptime_kuma/translations/ga.json +3 -0
- homeassistant/components/uptime_kuma/translations/he.json +5 -0
- homeassistant/components/uptime_kuma/translations/sv.json +12 -0
- homeassistant/components/uptime_kuma/translations/zh-Hans.json +3 -1
- homeassistant/components/utility_meter/translations/ga.json +22 -0
- homeassistant/components/v2c/translations/ga.json +23 -0
- homeassistant/components/vacuum/translations/ga.json +5 -0
- homeassistant/components/vacuum/translations/he.json +1 -1
- homeassistant/components/vallox/translations/ga.json +22 -0
- homeassistant/components/valve/translations/ga.json +45 -0
- homeassistant/components/venstar/translations/ga.json +20 -0
- homeassistant/components/venstar/translations/he.json +1 -1
- homeassistant/components/vicare/translations/ga.json +232 -0
- homeassistant/components/vilfo/translations/ga.json +11 -0
- homeassistant/components/vizio/translations/ga.json +11 -0
- homeassistant/components/vlc_telnet/translations/ga.json +11 -0
- homeassistant/components/vodafone_station/translations/ga.json +8 -0
- homeassistant/components/voip/manifest.json +1 -1
- homeassistant/components/volumio/translations/ga.json +11 -0
- homeassistant/components/volvo/config_flow.py +8 -0
- homeassistant/components/volvo/icons.json +9 -5
- homeassistant/components/volvo/translations/en-GB.json +178 -0
- homeassistant/components/volvo/translations/ga.json +5 -0
- homeassistant/components/volvo/translations/he.json +59 -0
- homeassistant/components/volvo/translations/nl.json +5 -0
- homeassistant/components/volvo/translations/sv.json +53 -0
- homeassistant/components/wallbox/translations/ga.json +47 -0
- homeassistant/components/waqi/translations/ga.json +15 -0
- homeassistant/components/water_heater/translations/ga.json +8 -0
- homeassistant/components/waze_travel_time/translations/ga.json +5 -0
- homeassistant/components/waze_travel_time/translations/he.json +10 -0
- homeassistant/components/weather/translations/ga.json +27 -0
- homeassistant/components/weatherflow/translations/ga.json +71 -0
- homeassistant/components/weatherflow_cloud/translations/en-GB.json +27 -0
- homeassistant/components/weatherflow_cloud/translations/et.json +27 -0
- homeassistant/components/weatherflow_cloud/translations/ga.json +9 -0
- homeassistant/components/weatherflow_cloud/translations/zh-Hans.json +27 -0
- homeassistant/components/weatherkit/translations/ga.json +14 -0
- homeassistant/components/webmin/translations/ga.json +29 -0
- homeassistant/components/webostv/translations/de.json +4 -4
- homeassistant/components/webostv/translations/ga.json +15 -0
- homeassistant/components/websocket_api/translations/ga.json +7 -0
- homeassistant/components/weheat/translations/ga.json +2 -0
- homeassistant/components/whirlpool/translations/ga.json +12 -1
- homeassistant/components/withings/translations/ga.json +67 -0
- homeassistant/components/wled/translations/ga.json +53 -0
- homeassistant/components/workday/translations/ga.json +47 -1
- homeassistant/components/wyoming/manifest.json +1 -1
- homeassistant/components/wyoming/translations/ga.json +14 -0
- homeassistant/components/xbox/translations/ga.json +4 -0
- homeassistant/components/xiaomi_ble/translations/ga.json +158 -1
- homeassistant/components/yale/manifest.json +1 -1
- homeassistant/components/yale/translations/ga.json +2 -0
- homeassistant/components/yale_smart_alarm/translations/ga.json +8 -0
- homeassistant/components/yalexs_ble/manifest.json +1 -1
- homeassistant/components/yamaha_musiccast/translations/ga.json +11 -0
- homeassistant/components/yardian/translations/ga.json +11 -0
- homeassistant/components/yeelight/translations/ga.json +11 -0
- homeassistant/components/yolink/translations/ga.json +58 -0
- homeassistant/components/youless/translations/ga.json +9 -0
- homeassistant/components/youtube/translations/ga.json +2 -0
- homeassistant/components/zeversolar/translations/ga.json +11 -0
- homeassistant/components/zha/manifest.json +1 -1
- homeassistant/components/zha/translations/de.json +1 -1
- homeassistant/components/zha/translations/en-GB.json +30 -0
- homeassistant/components/zha/translations/et.json +30 -0
- homeassistant/components/zha/translations/fi.json +9 -0
- homeassistant/components/zha/translations/ga.json +244 -0
- homeassistant/components/zha/translations/he.json +21 -1
- homeassistant/components/zha/translations/sl.json +1 -0
- homeassistant/components/zha/translations/sv.json +24 -0
- homeassistant/components/zha/translations/zh-Hans.json +18 -0
- homeassistant/components/zha/translations/zh-Hant.json +3 -0
- homeassistant/components/zha/update.py +6 -2
- homeassistant/components/zwave_js/__init__.py +58 -31
- homeassistant/components/zwave_js/api.py +11 -28
- homeassistant/components/zwave_js/config_flow.py +28 -16
- homeassistant/components/zwave_js/const.py +0 -4
- homeassistant/components/zwave_js/helpers.py +54 -1
- homeassistant/components/zwave_js/manifest.json +1 -1
- homeassistant/components/zwave_js/strings.json +1 -1
- homeassistant/components/zwave_js/translations/cs.json +0 -1
- homeassistant/components/zwave_js/translations/de.json +1 -1
- homeassistant/components/zwave_js/translations/el.json +0 -1
- homeassistant/components/zwave_js/translations/en-GB.json +0 -1
- homeassistant/components/zwave_js/translations/en.json +1 -1
- homeassistant/components/zwave_js/translations/es.json +1 -1
- homeassistant/components/zwave_js/translations/et.json +1 -1
- homeassistant/components/zwave_js/translations/ga.json +107 -1
- homeassistant/components/zwave_js/translations/hu.json +0 -1
- homeassistant/components/zwave_js/translations/lt.json +0 -1
- homeassistant/components/zwave_js/translations/nl.json +0 -1
- homeassistant/components/zwave_js/translations/pt.json +0 -1
- homeassistant/components/zwave_js/translations/ru.json +0 -1
- homeassistant/components/zwave_js/translations/sk.json +0 -1
- homeassistant/components/zwave_js/translations/sv.json +0 -1
- homeassistant/components/zwave_js/translations/zh-Hans.json +0 -1
- homeassistant/components/zwave_js/translations/zh-Hant.json +1 -1
- homeassistant/const.py +1 -1
- homeassistant/data_entry_flow.py +4 -3
- homeassistant/helpers/device_registry.py +47 -17
- homeassistant/package_constraints.txt +3 -3
- {homeassistant-2025.8.0b1.dist-info → homeassistant-2025.8.0b3.dist-info}/METADATA +2 -2
- {homeassistant-2025.8.0b1.dist-info → homeassistant-2025.8.0b3.dist-info}/RECORD +782 -661
- {homeassistant-2025.8.0b1.dist-info → homeassistant-2025.8.0b3.dist-info}/WHEEL +0 -0
- {homeassistant-2025.8.0b1.dist-info → homeassistant-2025.8.0b3.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.8.0b1.dist-info → homeassistant-2025.8.0b3.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.8.0b1.dist-info → homeassistant-2025.8.0b3.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.8.0b1.dist-info → homeassistant-2025.8.0b3.dist-info}/top_level.txt +0 -0
|
@@ -264,6 +264,9 @@
|
|
|
264
264
|
"frost_lock_reset": {
|
|
265
265
|
"name": "\u971c\u51bb\u9501\u91cd\u7f6e"
|
|
266
266
|
},
|
|
267
|
+
"reset_alarm": {
|
|
268
|
+
"name": "\u91cd\u7f6e\u8b66\u62a5"
|
|
269
|
+
},
|
|
267
270
|
"reset_frost_lock": {
|
|
268
271
|
"name": "\u9632\u971c\u51bb\u9501\u590d\u4f4d"
|
|
269
272
|
},
|
|
@@ -1398,6 +1401,9 @@
|
|
|
1398
1401
|
"todays_max_light_intensity": {
|
|
1399
1402
|
"name": "\u4eca\u65e5\u6700\u5927\u5149\u7167\u5f3a\u5ea6"
|
|
1400
1403
|
},
|
|
1404
|
+
"total_active_power": {
|
|
1405
|
+
"name": "\u603b\u529f\u7387"
|
|
1406
|
+
},
|
|
1401
1407
|
"total_power_factor": {
|
|
1402
1408
|
"name": "\u603b\u529f\u7387\u56e0\u6570"
|
|
1403
1409
|
},
|
|
@@ -1472,6 +1478,9 @@
|
|
|
1472
1478
|
"display_enabled": {
|
|
1473
1479
|
"name": "\u663e\u793a\u5df2\u542f\u7528"
|
|
1474
1480
|
},
|
|
1481
|
+
"distance_tracking": {
|
|
1482
|
+
"name": "\u8ddd\u79bb\u8ffd\u8e2a"
|
|
1483
|
+
},
|
|
1475
1484
|
"double_tap_down_enabled": {
|
|
1476
1485
|
"name": "\u5df2\u542f\u7528\u53cc\u51fb\u4e0b\u964d"
|
|
1477
1486
|
},
|
|
@@ -1502,6 +1511,12 @@
|
|
|
1502
1511
|
"firmware_progress_led": {
|
|
1503
1512
|
"name": "\u56fa\u4ef6\u8fdb\u5ea6 LED"
|
|
1504
1513
|
},
|
|
1514
|
+
"frient_com_1": {
|
|
1515
|
+
"name": "COM 1"
|
|
1516
|
+
},
|
|
1517
|
+
"frient_com_2": {
|
|
1518
|
+
"name": "COM 2"
|
|
1519
|
+
},
|
|
1505
1520
|
"frost_lock": {
|
|
1506
1521
|
"name": "\u971c\u51bb\u9501"
|
|
1507
1522
|
},
|
|
@@ -1640,6 +1655,9 @@
|
|
|
1640
1655
|
"valve_on_off_2": {
|
|
1641
1656
|
"name": "\u9600\u95e8 2"
|
|
1642
1657
|
},
|
|
1658
|
+
"water_shortage_auto_close": {
|
|
1659
|
+
"name": "\u7f3a\u6c34\u81ea\u52a8\u5173\u95ed"
|
|
1660
|
+
},
|
|
1643
1661
|
"window_detection": {
|
|
1644
1662
|
"name": "\u7a97\u53e3\u68c0\u6d4b"
|
|
1645
1663
|
},
|
|
@@ -58,7 +58,7 @@ async def async_setup_entry(
|
|
|
58
58
|
zha_data = get_zha_data(hass)
|
|
59
59
|
if zha_data.update_coordinator is None:
|
|
60
60
|
zha_data.update_coordinator = ZHAFirmwareUpdateCoordinator(
|
|
61
|
-
hass, get_zha_gateway(hass).application_controller
|
|
61
|
+
hass, config_entry, get_zha_gateway(hass).application_controller
|
|
62
62
|
)
|
|
63
63
|
entities_to_create = zha_data.platforms[Platform.UPDATE]
|
|
64
64
|
|
|
@@ -79,12 +79,16 @@ class ZHAFirmwareUpdateCoordinator(DataUpdateCoordinator[None]): # pylint: disa
|
|
|
79
79
|
"""Firmware update coordinator that broadcasts updates network-wide."""
|
|
80
80
|
|
|
81
81
|
def __init__(
|
|
82
|
-
self,
|
|
82
|
+
self,
|
|
83
|
+
hass: HomeAssistant,
|
|
84
|
+
config_entry: ConfigEntry,
|
|
85
|
+
controller_application: ControllerApplication,
|
|
83
86
|
) -> None:
|
|
84
87
|
"""Initialize the coordinator."""
|
|
85
88
|
super().__init__(
|
|
86
89
|
hass,
|
|
87
90
|
_LOGGER,
|
|
91
|
+
config_entry=config_entry,
|
|
88
92
|
name="ZHA firmware update coordinator",
|
|
89
93
|
update_method=self.async_update_data,
|
|
90
94
|
)
|
|
@@ -105,7 +105,6 @@ from .const import (
|
|
|
105
105
|
CONF_USB_PATH,
|
|
106
106
|
CONF_USE_ADDON,
|
|
107
107
|
DOMAIN,
|
|
108
|
-
DRIVER_READY_TIMEOUT,
|
|
109
108
|
EVENT_DEVICE_ADDED_TO_REGISTRY,
|
|
110
109
|
EVENT_VALUE_UPDATED,
|
|
111
110
|
LIB_LOGGER,
|
|
@@ -136,6 +135,7 @@ from .models import ZwaveJSConfigEntry, ZwaveJSData
|
|
|
136
135
|
from .services import async_setup_services
|
|
137
136
|
|
|
138
137
|
CONNECT_TIMEOUT = 10
|
|
138
|
+
DRIVER_READY_TIMEOUT = 60
|
|
139
139
|
|
|
140
140
|
CONFIG_SCHEMA = vol.Schema(
|
|
141
141
|
{
|
|
@@ -368,6 +368,16 @@ class DriverEvents:
|
|
|
368
368
|
)
|
|
369
369
|
)
|
|
370
370
|
|
|
371
|
+
# listen for driver ready event to reload the config entry
|
|
372
|
+
self.config_entry.async_on_unload(
|
|
373
|
+
driver.on(
|
|
374
|
+
"driver ready",
|
|
375
|
+
lambda _: self.hass.config_entries.async_schedule_reload(
|
|
376
|
+
self.config_entry.entry_id
|
|
377
|
+
),
|
|
378
|
+
)
|
|
379
|
+
)
|
|
380
|
+
|
|
371
381
|
# listen for new nodes being added to the mesh
|
|
372
382
|
self.config_entry.async_on_unload(
|
|
373
383
|
controller.on(
|
|
@@ -499,7 +509,7 @@ class ControllerEvents:
|
|
|
499
509
|
)
|
|
500
510
|
)
|
|
501
511
|
|
|
502
|
-
await self.
|
|
512
|
+
await self.async_check_pre_provisioned_device(node)
|
|
503
513
|
|
|
504
514
|
if node.is_controller_node:
|
|
505
515
|
# Create a controller status sensor for each device
|
|
@@ -627,8 +637,8 @@ class ControllerEvents:
|
|
|
627
637
|
f"{DOMAIN}.identify_controller.{dev_id[1]}",
|
|
628
638
|
)
|
|
629
639
|
|
|
630
|
-
async def
|
|
631
|
-
"""Check if the node was
|
|
640
|
+
async def async_check_pre_provisioned_device(self, node: ZwaveNode) -> None:
|
|
641
|
+
"""Check if the node was pre-provisioned and update the device registry."""
|
|
632
642
|
provisioning_entry = (
|
|
633
643
|
await self.driver_events.driver.controller.async_get_provisioning_entry(
|
|
634
644
|
node.node_id
|
|
@@ -638,29 +648,37 @@ class ControllerEvents:
|
|
|
638
648
|
provisioning_entry
|
|
639
649
|
and provisioning_entry.additional_properties
|
|
640
650
|
and "device_id" in provisioning_entry.additional_properties
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
651
|
+
and (
|
|
652
|
+
pre_provisioned_device := self.dev_reg.async_get(
|
|
653
|
+
provisioning_entry.additional_properties["device_id"]
|
|
654
|
+
)
|
|
644
655
|
)
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
656
|
+
and (dsk_identifier := (DOMAIN, f"provision_{provisioning_entry.dsk}"))
|
|
657
|
+
in pre_provisioned_device.identifiers
|
|
658
|
+
):
|
|
659
|
+
driver = self.driver_events.driver
|
|
660
|
+
device_id = get_device_id(driver, node)
|
|
661
|
+
device_id_ext = get_device_id_ext(driver, node)
|
|
662
|
+
new_identifiers = pre_provisioned_device.identifiers.copy()
|
|
663
|
+
new_identifiers.remove(dsk_identifier)
|
|
664
|
+
new_identifiers.add(device_id)
|
|
665
|
+
if device_id_ext:
|
|
666
|
+
new_identifiers.add(device_id_ext)
|
|
667
|
+
|
|
668
|
+
if self.dev_reg.async_get_device(identifiers=new_identifiers):
|
|
669
|
+
# If a device entry is registered with the node ID based identifiers,
|
|
670
|
+
# just remove the device entry with the DSK identifier.
|
|
671
|
+
self.dev_reg.async_update_device(
|
|
672
|
+
pre_provisioned_device.id,
|
|
673
|
+
remove_config_entry_id=self.config_entry.entry_id,
|
|
674
|
+
)
|
|
675
|
+
else:
|
|
676
|
+
# Add the node ID based identifiers to the device entry
|
|
677
|
+
# with the DSK identifier and remove the DSK identifier.
|
|
678
|
+
self.dev_reg.async_update_device(
|
|
679
|
+
pre_provisioned_device.id,
|
|
680
|
+
new_identifiers=new_identifiers,
|
|
681
|
+
)
|
|
664
682
|
|
|
665
683
|
async def async_register_node_in_dev_reg(self, node: ZwaveNode) -> dr.DeviceEntry:
|
|
666
684
|
"""Register node in dev reg."""
|
|
@@ -1074,23 +1092,32 @@ async def client_listen(
|
|
|
1074
1092
|
try:
|
|
1075
1093
|
await client.listen(driver_ready)
|
|
1076
1094
|
except BaseZwaveJSServerError as err:
|
|
1077
|
-
if entry.state is
|
|
1095
|
+
if entry.state is ConfigEntryState.SETUP_IN_PROGRESS:
|
|
1078
1096
|
raise
|
|
1079
1097
|
LOGGER.error("Client listen failed: %s", err)
|
|
1080
1098
|
except Exception as err:
|
|
1081
1099
|
# We need to guard against unknown exceptions to not crash this task.
|
|
1082
1100
|
LOGGER.exception("Unexpected exception: %s", err)
|
|
1083
|
-
if entry.state is
|
|
1101
|
+
if entry.state is ConfigEntryState.SETUP_IN_PROGRESS:
|
|
1084
1102
|
raise
|
|
1085
1103
|
|
|
1104
|
+
if hass.is_stopping or entry.state is ConfigEntryState.UNLOAD_IN_PROGRESS:
|
|
1105
|
+
return
|
|
1106
|
+
|
|
1107
|
+
if entry.state is ConfigEntryState.SETUP_IN_PROGRESS:
|
|
1108
|
+
raise HomeAssistantError("Listen task ended unexpectedly")
|
|
1109
|
+
|
|
1086
1110
|
# The entry needs to be reloaded since a new driver state
|
|
1087
1111
|
# will be acquired on reconnect.
|
|
1088
1112
|
# All model instances will be replaced when the new state is acquired.
|
|
1089
|
-
if
|
|
1090
|
-
if entry.state is not ConfigEntryState.LOADED:
|
|
1091
|
-
raise HomeAssistantError("Listen task ended unexpectedly")
|
|
1113
|
+
if entry.state.recoverable:
|
|
1092
1114
|
LOGGER.debug("Disconnected from server. Reloading integration")
|
|
1093
1115
|
hass.config_entries.async_schedule_reload(entry.entry_id)
|
|
1116
|
+
else:
|
|
1117
|
+
LOGGER.error(
|
|
1118
|
+
"Disconnected from server. Cannot recover entry %s",
|
|
1119
|
+
entry.title,
|
|
1120
|
+
)
|
|
1094
1121
|
|
|
1095
1122
|
|
|
1096
1123
|
async def async_unload_entry(hass: HomeAssistant, entry: ZwaveJSConfigEntry) -> bool:
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
import asyncio
|
|
6
5
|
from collections.abc import Callable, Coroutine
|
|
7
6
|
from contextlib import suppress
|
|
8
7
|
import dataclasses
|
|
@@ -87,7 +86,6 @@ from .const import (
|
|
|
87
86
|
CONF_DATA_COLLECTION_OPTED_IN,
|
|
88
87
|
CONF_INSTALLER_MODE,
|
|
89
88
|
DOMAIN,
|
|
90
|
-
DRIVER_READY_TIMEOUT,
|
|
91
89
|
EVENT_DEVICE_ADDED_TO_REGISTRY,
|
|
92
90
|
LOGGER,
|
|
93
91
|
USER_AGENT,
|
|
@@ -98,6 +96,7 @@ from .helpers import (
|
|
|
98
96
|
async_get_node_from_device_id,
|
|
99
97
|
async_get_provisioning_entry_from_device_id,
|
|
100
98
|
async_get_version_info,
|
|
99
|
+
async_wait_for_driver_ready_event,
|
|
101
100
|
get_device_id,
|
|
102
101
|
)
|
|
103
102
|
|
|
@@ -2854,26 +2853,18 @@ async def websocket_hard_reset_controller(
|
|
|
2854
2853
|
connection.send_result(msg[ID], device.id)
|
|
2855
2854
|
async_cleanup()
|
|
2856
2855
|
|
|
2857
|
-
@callback
|
|
2858
|
-
def set_driver_ready(event: dict) -> None:
|
|
2859
|
-
"Set the driver ready event."
|
|
2860
|
-
wait_driver_ready.set()
|
|
2861
|
-
|
|
2862
|
-
wait_driver_ready = asyncio.Event()
|
|
2863
|
-
|
|
2864
2856
|
msg[DATA_UNSUBSCRIBE] = unsubs = [
|
|
2865
2857
|
async_dispatcher_connect(
|
|
2866
2858
|
hass, EVENT_DEVICE_ADDED_TO_REGISTRY, _handle_device_added
|
|
2867
2859
|
),
|
|
2868
|
-
driver.once("driver ready", set_driver_ready),
|
|
2869
2860
|
]
|
|
2870
2861
|
|
|
2862
|
+
wait_for_driver_ready = async_wait_for_driver_ready_event(entry, driver)
|
|
2863
|
+
|
|
2871
2864
|
await driver.async_hard_reset()
|
|
2872
2865
|
|
|
2873
2866
|
with suppress(TimeoutError):
|
|
2874
|
-
|
|
2875
|
-
await wait_driver_ready.wait()
|
|
2876
|
-
|
|
2867
|
+
await wait_for_driver_ready()
|
|
2877
2868
|
# When resetting the controller, the controller home id is also changed.
|
|
2878
2869
|
# The controller state in the client is stale after resetting the controller,
|
|
2879
2870
|
# so get the new home id with a new client using the helper function.
|
|
@@ -2886,14 +2877,14 @@ async def websocket_hard_reset_controller(
|
|
|
2886
2877
|
# The stale unique id needs to be handled by a repair flow,
|
|
2887
2878
|
# after the config entry has been reloaded.
|
|
2888
2879
|
LOGGER.error(
|
|
2889
|
-
"Failed to get server version, cannot update config entry"
|
|
2880
|
+
"Failed to get server version, cannot update config entry "
|
|
2890
2881
|
"unique id with new home id, after controller reset"
|
|
2891
2882
|
)
|
|
2892
2883
|
else:
|
|
2893
2884
|
hass.config_entries.async_update_entry(
|
|
2894
2885
|
entry, unique_id=str(version_info.home_id)
|
|
2895
2886
|
)
|
|
2896
|
-
|
|
2887
|
+
hass.config_entries.async_schedule_reload(entry.entry_id)
|
|
2897
2888
|
|
|
2898
2889
|
|
|
2899
2890
|
@websocket_api.websocket_command(
|
|
@@ -3100,27 +3091,19 @@ async def websocket_restore_nvm(
|
|
|
3100
3091
|
)
|
|
3101
3092
|
)
|
|
3102
3093
|
|
|
3103
|
-
@callback
|
|
3104
|
-
def set_driver_ready(event: dict) -> None:
|
|
3105
|
-
"Set the driver ready event."
|
|
3106
|
-
wait_driver_ready.set()
|
|
3107
|
-
|
|
3108
|
-
wait_driver_ready = asyncio.Event()
|
|
3109
|
-
|
|
3110
3094
|
# Set up subscription for progress events
|
|
3111
3095
|
connection.subscriptions[msg["id"]] = async_cleanup
|
|
3112
3096
|
msg[DATA_UNSUBSCRIBE] = unsubs = [
|
|
3113
3097
|
controller.on("nvm convert progress", forward_progress),
|
|
3114
3098
|
controller.on("nvm restore progress", forward_progress),
|
|
3115
|
-
driver.once("driver ready", set_driver_ready),
|
|
3116
3099
|
]
|
|
3117
3100
|
|
|
3101
|
+
wait_for_driver_ready = async_wait_for_driver_ready_event(entry, driver)
|
|
3102
|
+
|
|
3118
3103
|
await controller.async_restore_nvm_base64(msg["data"], {"preserveRoutes": False})
|
|
3119
3104
|
|
|
3120
3105
|
with suppress(TimeoutError):
|
|
3121
|
-
|
|
3122
|
-
await wait_driver_ready.wait()
|
|
3123
|
-
|
|
3106
|
+
await wait_for_driver_ready()
|
|
3124
3107
|
# When restoring the NVM to the controller, the controller home id is also changed.
|
|
3125
3108
|
# The controller state in the client is stale after restoring the NVM,
|
|
3126
3109
|
# so get the new home id with a new client using the helper function.
|
|
@@ -3133,14 +3116,13 @@ async def websocket_restore_nvm(
|
|
|
3133
3116
|
# The stale unique id needs to be handled by a repair flow,
|
|
3134
3117
|
# after the config entry has been reloaded.
|
|
3135
3118
|
LOGGER.error(
|
|
3136
|
-
"Failed to get server version, cannot update config entry"
|
|
3119
|
+
"Failed to get server version, cannot update config entry "
|
|
3137
3120
|
"unique id with new home id, after controller NVM restore"
|
|
3138
3121
|
)
|
|
3139
3122
|
else:
|
|
3140
3123
|
hass.config_entries.async_update_entry(
|
|
3141
3124
|
entry, unique_id=str(version_info.home_id)
|
|
3142
3125
|
)
|
|
3143
|
-
|
|
3144
3126
|
await hass.config_entries.async_reload(entry.entry_id)
|
|
3145
3127
|
|
|
3146
3128
|
connection.send_message(
|
|
@@ -3152,3 +3134,4 @@ async def websocket_restore_nvm(
|
|
|
3152
3134
|
)
|
|
3153
3135
|
)
|
|
3154
3136
|
connection.send_result(msg[ID])
|
|
3137
|
+
async_cleanup()
|
|
@@ -62,9 +62,12 @@ from .const import (
|
|
|
62
62
|
CONF_USB_PATH,
|
|
63
63
|
CONF_USE_ADDON,
|
|
64
64
|
DOMAIN,
|
|
65
|
-
DRIVER_READY_TIMEOUT,
|
|
66
65
|
)
|
|
67
|
-
from .helpers import
|
|
66
|
+
from .helpers import (
|
|
67
|
+
CannotConnect,
|
|
68
|
+
async_get_version_info,
|
|
69
|
+
async_wait_for_driver_ready_event,
|
|
70
|
+
)
|
|
68
71
|
from .models import ZwaveJSConfigEntry
|
|
69
72
|
|
|
70
73
|
_LOGGER = logging.getLogger(__name__)
|
|
@@ -90,6 +93,10 @@ MIN_MIGRATION_SDK_VERSION = AwesomeVersion("6.61")
|
|
|
90
93
|
|
|
91
94
|
NETWORK_TYPE_NEW = "new"
|
|
92
95
|
NETWORK_TYPE_EXISTING = "existing"
|
|
96
|
+
ZWAVE_JS_UI_MIGRATION_INSTRUCTIONS = (
|
|
97
|
+
"https://www.home-assistant.io/integrations/zwave_js/"
|
|
98
|
+
"#how-to-migrate-from-one-adapter-to-a-new-adapter-using-z-wave-js-ui"
|
|
99
|
+
)
|
|
93
100
|
|
|
94
101
|
|
|
95
102
|
def get_manual_schema(user_input: dict[str, Any]) -> vol.Schema:
|
|
@@ -443,7 +450,12 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
443
450
|
None,
|
|
444
451
|
)
|
|
445
452
|
if not self._reconfigure_config_entry:
|
|
446
|
-
return self.async_abort(
|
|
453
|
+
return self.async_abort(
|
|
454
|
+
reason="addon_required",
|
|
455
|
+
description_placeholders={
|
|
456
|
+
"zwave_js_ui_migration": ZWAVE_JS_UI_MIGRATION_INSTRUCTIONS,
|
|
457
|
+
},
|
|
458
|
+
)
|
|
447
459
|
|
|
448
460
|
vid = discovery_info.vid
|
|
449
461
|
pid = discovery_info.pid
|
|
@@ -887,7 +899,12 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
887
899
|
config_entry = self._reconfigure_config_entry
|
|
888
900
|
assert config_entry is not None
|
|
889
901
|
if not self._usb_discovery and not config_entry.data.get(CONF_USE_ADDON):
|
|
890
|
-
return self.async_abort(
|
|
902
|
+
return self.async_abort(
|
|
903
|
+
reason="addon_required",
|
|
904
|
+
description_placeholders={
|
|
905
|
+
"zwave_js_ui_migration": ZWAVE_JS_UI_MIGRATION_INSTRUCTIONS,
|
|
906
|
+
},
|
|
907
|
+
)
|
|
891
908
|
|
|
892
909
|
try:
|
|
893
910
|
driver = self._get_driver()
|
|
@@ -1396,19 +1413,15 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
1396
1413
|
event["bytesWritten"] / event["total"] * 0.5 + 0.5
|
|
1397
1414
|
)
|
|
1398
1415
|
|
|
1399
|
-
@callback
|
|
1400
|
-
def set_driver_ready(event: dict) -> None:
|
|
1401
|
-
"Set the driver ready event."
|
|
1402
|
-
wait_driver_ready.set()
|
|
1403
|
-
|
|
1404
1416
|
driver = self._get_driver()
|
|
1405
1417
|
controller = driver.controller
|
|
1406
|
-
wait_driver_ready = asyncio.Event()
|
|
1407
1418
|
unsubs = [
|
|
1408
1419
|
controller.on("nvm convert progress", forward_progress),
|
|
1409
1420
|
controller.on("nvm restore progress", forward_progress),
|
|
1410
|
-
driver.once("driver ready", set_driver_ready),
|
|
1411
1421
|
]
|
|
1422
|
+
|
|
1423
|
+
wait_for_driver_ready = async_wait_for_driver_ready_event(config_entry, driver)
|
|
1424
|
+
|
|
1412
1425
|
try:
|
|
1413
1426
|
await controller.async_restore_nvm(
|
|
1414
1427
|
self.backup_data, {"preserveRoutes": False}
|
|
@@ -1417,8 +1430,7 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
1417
1430
|
raise AbortFlow(f"Failed to restore network: {err}") from err
|
|
1418
1431
|
else:
|
|
1419
1432
|
with suppress(TimeoutError):
|
|
1420
|
-
|
|
1421
|
-
await wait_driver_ready.wait()
|
|
1433
|
+
await wait_for_driver_ready()
|
|
1422
1434
|
try:
|
|
1423
1435
|
version_info = await async_get_version_info(
|
|
1424
1436
|
self.hass, config_entry.data[CONF_URL]
|
|
@@ -1435,10 +1447,10 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
1435
1447
|
self.hass.config_entries.async_update_entry(
|
|
1436
1448
|
config_entry, unique_id=str(version_info.home_id)
|
|
1437
1449
|
)
|
|
1438
|
-
await self.hass.config_entries.async_reload(config_entry.entry_id)
|
|
1439
1450
|
|
|
1440
|
-
#
|
|
1441
|
-
# the
|
|
1451
|
+
# The config entry will be also be reloaded when the driver is ready,
|
|
1452
|
+
# by the listener in the package module,
|
|
1453
|
+
# and two reloads are needed to clean up the stale controller device entry.
|
|
1442
1454
|
# Since both the old and the new controller have the same node id,
|
|
1443
1455
|
# but different hardware identifiers, the integration
|
|
1444
1456
|
# will create a new device for the new controller, on the first reload,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
|
-
from collections.abc import Callable
|
|
6
|
+
from collections.abc import Callable, Coroutine
|
|
7
7
|
from dataclasses import astuple, dataclass
|
|
8
8
|
import logging
|
|
9
9
|
from typing import Any, cast
|
|
@@ -56,6 +56,7 @@ from .const import (
|
|
|
56
56
|
)
|
|
57
57
|
from .models import ZwaveJSConfigEntry
|
|
58
58
|
|
|
59
|
+
DRIVER_READY_EVENT_TIMEOUT = 60
|
|
59
60
|
SERVER_VERSION_TIMEOUT = 10
|
|
60
61
|
|
|
61
62
|
|
|
@@ -588,5 +589,57 @@ async def async_get_version_info(hass: HomeAssistant, ws_address: str) -> Versio
|
|
|
588
589
|
return version_info
|
|
589
590
|
|
|
590
591
|
|
|
592
|
+
@callback
|
|
593
|
+
def async_wait_for_driver_ready_event(
|
|
594
|
+
config_entry: ZwaveJSConfigEntry,
|
|
595
|
+
driver: Driver,
|
|
596
|
+
) -> Callable[[], Coroutine[Any, Any, None]]:
|
|
597
|
+
"""Wait for the driver ready event and the config entry reload.
|
|
598
|
+
|
|
599
|
+
When the driver ready event is received
|
|
600
|
+
the config entry will be reloaded by the integration.
|
|
601
|
+
This function helps wait for that to happen
|
|
602
|
+
before proceeding with further actions.
|
|
603
|
+
|
|
604
|
+
If the config entry is reloaded for another reason,
|
|
605
|
+
this function will not wait for it to be reloaded again.
|
|
606
|
+
|
|
607
|
+
Raises TimeoutError if the driver ready event and reload
|
|
608
|
+
is not received within the specified timeout.
|
|
609
|
+
"""
|
|
610
|
+
driver_ready_event_received = asyncio.Event()
|
|
611
|
+
config_entry_reloaded = asyncio.Event()
|
|
612
|
+
unsubscribers: list[Callable[[], None]] = []
|
|
613
|
+
|
|
614
|
+
@callback
|
|
615
|
+
def driver_ready_received(event: dict) -> None:
|
|
616
|
+
"""Receive the driver ready event."""
|
|
617
|
+
driver_ready_event_received.set()
|
|
618
|
+
|
|
619
|
+
unsubscribers.append(driver.once("driver ready", driver_ready_received))
|
|
620
|
+
|
|
621
|
+
@callback
|
|
622
|
+
def on_config_entry_state_change() -> None:
|
|
623
|
+
"""Check config entry was loaded after driver ready event."""
|
|
624
|
+
if config_entry.state is ConfigEntryState.LOADED:
|
|
625
|
+
config_entry_reloaded.set()
|
|
626
|
+
|
|
627
|
+
unsubscribers.append(
|
|
628
|
+
config_entry.async_on_state_change(on_config_entry_state_change)
|
|
629
|
+
)
|
|
630
|
+
|
|
631
|
+
async def wait_for_events() -> None:
|
|
632
|
+
try:
|
|
633
|
+
async with asyncio.timeout(DRIVER_READY_EVENT_TIMEOUT):
|
|
634
|
+
await asyncio.gather(
|
|
635
|
+
driver_ready_event_received.wait(), config_entry_reloaded.wait()
|
|
636
|
+
)
|
|
637
|
+
finally:
|
|
638
|
+
for unsubscribe in unsubscribers:
|
|
639
|
+
unsubscribe()
|
|
640
|
+
|
|
641
|
+
return wait_for_events
|
|
642
|
+
|
|
643
|
+
|
|
591
644
|
class CannotConnect(HomeAssistantError):
|
|
592
645
|
"""Indicate connection error."""
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"integration_type": "hub",
|
|
10
10
|
"iot_class": "local_push",
|
|
11
11
|
"loggers": ["zwave_js_server"],
|
|
12
|
-
"requirements": ["pyserial==3.5", "zwave-js-server-python==0.67.
|
|
12
|
+
"requirements": ["pyserial==3.5", "zwave-js-server-python==0.67.1"],
|
|
13
13
|
"usb": [
|
|
14
14
|
{
|
|
15
15
|
"vid": "0658",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "Failed to get Z-Wave add-on discovery info.",
|
|
5
5
|
"addon_info_failed": "Failed to get Z-Wave add-on info.",
|
|
6
6
|
"addon_install_failed": "Failed to install the Z-Wave add-on.",
|
|
7
|
-
"addon_required": "The Z-Wave migration flow requires the integration to be configured using the Z-Wave Supervisor add-on.
|
|
7
|
+
"addon_required": "The Z-Wave migration flow requires the integration to be configured using the Z-Wave Supervisor add-on. If you are using Z-Wave JS UI, please follow our [migration instructions]({zwave_js_ui_migration}).",
|
|
8
8
|
"addon_set_config_failed": "Failed to set Z-Wave configuration.",
|
|
9
9
|
"addon_start_failed": "Failed to start the Z-Wave add-on.",
|
|
10
10
|
"addon_stop_failed": "Failed to stop the Z-Wave add-on.",
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "Nepoda\u0159ilo se z\u00edskat informace o zji\u0161\u0165ov\u00e1n\u00ed dopl\u0148ku Z-Wave.",
|
|
5
5
|
"addon_info_failed": "Nepoda\u0159ilo se z\u00edskat informace o dopl\u0148ku Z-Wave.",
|
|
6
6
|
"addon_install_failed": "Nepoda\u0159ilo se nainstalovat dopln\u011bk Z-Wave.",
|
|
7
|
-
"addon_required": "Migra\u010dn\u00ed tok Z-Wave vy\u017eaduje nastaven\u00ed integrace pomoc\u00ed dopl\u0148ku Z-Wave Supervisor. K ru\u010dn\u00ed migraci s\u00edt\u011b m\u016f\u017eete st\u00e1le pou\u017e\u00edvat tla\u010d\u00edtka Z\u00e1lohovat a Obnovit.",
|
|
8
7
|
"addon_set_config_failed": "Nepoda\u0159ilo se nastavit Z-Wave.",
|
|
9
8
|
"addon_start_failed": "Nepoda\u0159ilo se spustit dopln\u011bk Z-Wave.",
|
|
10
9
|
"addon_stop_failed": "Nepoda\u0159ilo se zastavit dopln\u011bk Z-Wave.",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "Discovery-Informationen des Z-Wave-Add-ons konnten nicht abgerufen werden.",
|
|
5
5
|
"addon_info_failed": "Abruf von Daten des Z-Wave-Add-ons fehlgeschlagen.",
|
|
6
6
|
"addon_install_failed": "Installation des Z-Wave-Add-ons fehlgeschlagen.",
|
|
7
|
-
"addon_required": "
|
|
7
|
+
"addon_required": "Der Z-Wave-Migrationsablauf erfordert die Konfiguration der Integration mit dem Z-Wave Supervisor Add-on. Wenn du Z-Wave JS UI verwendest, folge bitte unserer [Migrationsanleitung]({zwave_js_ui_migration}).",
|
|
8
8
|
"addon_set_config_failed": "Einstellen der Z-Wave-Konfiguration fehlgeschlagen",
|
|
9
9
|
"addon_start_failed": "Starten des Z-Wave-Add-ons fehlgeschlagen.",
|
|
10
10
|
"addon_stop_failed": "Das Z-Wave-Add-on konnte nicht gestoppt werden.",
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03bb\u03ae\u03c8\u03b7\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u03b1\u03bd\u03b1\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf\u03c5 Z-Wave.",
|
|
5
5
|
"addon_info_failed": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03bb\u03ae\u03c8\u03b7\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf\u03c5 Z-Wave.",
|
|
6
6
|
"addon_install_failed": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf\u03c5 Z-Wave.",
|
|
7
|
-
"addon_required": "\u0397 \u03c1\u03bf\u03ae \u03bc\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7\u03c2 Z-Wave \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af \u03c4\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2 \u03bc\u03b5 \u03c4\u03b7 \u03c7\u03c1\u03ae\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf\u03c5 Z-Wave Supervisor. \u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03b1\u03ba\u03cc\u03bc\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03ac \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\u03c2 \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c6\u03c9\u03bd \u03b1\u03c3\u03c6\u03b1\u03bb\u03b5\u03af\u03b1\u03c2 \u03ba\u03b1\u03b9 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac\u03c2 \u03b3\u03b9\u03b1 \u03bc\u03b5\u03c4\u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b4\u03af\u03ba\u03c4\u03cd\u03bf\u03c5 \u03c3\u03b1\u03c2 \u03c7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b1.",
|
|
8
7
|
"addon_set_config_failed": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 Z-Wave.",
|
|
9
8
|
"addon_start_failed": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf\u03c5 Z-Wave.",
|
|
10
9
|
"addon_stop_failed": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf\u03c5 Z-Wave.",
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "Failed to get Z-Wave add-on discovery info.",
|
|
5
5
|
"addon_info_failed": "Failed to get Z-Wave add-on info.",
|
|
6
6
|
"addon_install_failed": "Failed to install the Z-Wave add-on.",
|
|
7
|
-
"addon_required": "The Z-Wave migration flow requires the integration to be configured using the Z-Wave Supervisor add-on. You can still use the Backup and Restore buttons to migrate your network manually.",
|
|
8
7
|
"addon_set_config_failed": "Failed to set Z-Wave configuration.",
|
|
9
8
|
"addon_start_failed": "Failed to start the Z-Wave add-on.",
|
|
10
9
|
"addon_stop_failed": "Failed to stop the Z-Wave add-on.",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "Failed to get Z-Wave add-on discovery info.",
|
|
5
5
|
"addon_info_failed": "Failed to get Z-Wave add-on info.",
|
|
6
6
|
"addon_install_failed": "Failed to install the Z-Wave add-on.",
|
|
7
|
-
"addon_required": "The Z-Wave migration flow requires the integration to be configured using the Z-Wave Supervisor add-on.
|
|
7
|
+
"addon_required": "The Z-Wave migration flow requires the integration to be configured using the Z-Wave Supervisor add-on. If you are using Z-Wave JS UI, please follow our [migration instructions]({zwave_js_ui_migration}).",
|
|
8
8
|
"addon_set_config_failed": "Failed to set Z-Wave configuration.",
|
|
9
9
|
"addon_start_failed": "Failed to start the Z-Wave add-on.",
|
|
10
10
|
"addon_stop_failed": "Failed to stop the Z-Wave add-on.",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "No se pudo obtener la informaci\u00f3n de descubrimiento del complemento Z-Wave.",
|
|
5
5
|
"addon_info_failed": "No se pudo obtener la informaci\u00f3n del complemento Z-Wave.",
|
|
6
6
|
"addon_install_failed": "No se pudo instalar el complemento Z-Wave.",
|
|
7
|
-
"addon_required": "El flujo de migraci\u00f3n de Z-Wave requiere que la integraci\u00f3n se configure mediante el complemento Z-Wave Supervisor.
|
|
7
|
+
"addon_required": "El flujo de migraci\u00f3n de Z-Wave requiere que la integraci\u00f3n se configure mediante el complemento Z-Wave Supervisor. Si utilizas la IU de Z-Wave JS, por favor, sigue nuestras [instrucciones de migraci\u00f3n]({zwave_js_ui_migration}).",
|
|
8
8
|
"addon_set_config_failed": "No se pudo establecer la configuraci\u00f3n Z-Wave.",
|
|
9
9
|
"addon_start_failed": "No se pudo iniciar el complemento Z-Wave.",
|
|
10
10
|
"addon_stop_failed": "No se pudo detener el complemento Z-Wave.",
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"addon_get_discovery_info_failed": "Z-Wave lisandmooduli tuvastusteabe hankimine nurjus.",
|
|
5
5
|
"addon_info_failed": "Z-Wave lisandmooduli teabe hankimine nurjus.",
|
|
6
6
|
"addon_install_failed": "Z-Wave lisandmooduli paigaldamine nurjus.",
|
|
7
|
-
"addon_required": "Z-Wave'i migratsioonivoog n\u00f5uab sidumise
|
|
7
|
+
"addon_required": "Z-Wave'i migratsioonivoog n\u00f5uab sidumise seadistamist Z-Wave Supervisori lisaseadme abil. Kui kasutad Z-Wave JS UI-d, j\u00e4rgi meie [migratsiooni juhiseid]({zwave_js_ui_migration}).",
|
|
8
8
|
"addon_set_config_failed": "Z-Wave konfiguratsiooni m\u00e4\u00e4ramine nurjus.",
|
|
9
9
|
"addon_start_failed": "Z-Wave lisandmooduli k\u00e4ivitamine nurjus.",
|
|
10
10
|
"addon_stop_failed": "Z-Wave'i lisandmooduli peatamine nurjus.",
|