homeassistant 2025.7.0b5__py3-none-any.whl → 2025.7.0b6__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/accuweather/translations/it.json +31 -6
- homeassistant/components/accuweather/translations/nl.json +4 -2
- homeassistant/components/ai_task/translations/nl.json +11 -1
- homeassistant/components/airgradient/translations/it.json +11 -1
- homeassistant/components/airzone/translations/it.json +1 -1
- homeassistant/components/airzone_cloud/translations/it.json +7 -0
- homeassistant/components/alexa_devices/translations/id.json +14 -0
- homeassistant/components/alexa_devices/translations/it.json +53 -0
- homeassistant/components/alexa_devices/translations/nl.json +23 -0
- homeassistant/components/altruist/translations/id.json +7 -0
- homeassistant/components/altruist/translations/it.json +51 -0
- homeassistant/components/anthropic/__init__.py +30 -0
- homeassistant/components/anthropic/config_flow.py +1 -0
- homeassistant/components/anthropic/translations/nl.json +1 -0
- homeassistant/components/aprilaire/translations/it.json +14 -14
- homeassistant/components/aquacell/translations/it.json +6 -1
- homeassistant/components/aranet/translations/it.json +9 -0
- homeassistant/components/assist_satellite/translations/es.json +1 -1
- homeassistant/components/assist_satellite/translations/it.json +30 -0
- homeassistant/components/automation/translations/it.json +2 -2
- homeassistant/components/baf/translations/it.json +11 -0
- homeassistant/components/balboa/translations/it.json +5 -1
- homeassistant/components/binary_sensor/translations/es.json +3 -3
- homeassistant/components/binary_sensor/translations/it.json +13 -6
- homeassistant/components/blue_current/translations/it.json +16 -0
- homeassistant/components/bmw_connected_drive/translations/it.json +7 -0
- homeassistant/components/bmw_connected_drive/translations/nl.json +57 -1
- homeassistant/components/calendar/translations/it.json +2 -2
- homeassistant/components/cambridge_audio/translations/it.json +2 -2
- homeassistant/components/camera/translations/it.json +2 -2
- homeassistant/components/climate/translations/it.json +20 -9
- homeassistant/components/comelit/translations/it.json +13 -0
- homeassistant/components/cover/translations/it.json +3 -1
- homeassistant/components/demo/translations/it.json +6 -3
- homeassistant/components/drop_connect/sensor.py +1 -1
- homeassistant/components/drop_connect/translations/it.json +12 -0
- homeassistant/components/drop_connect/translations/nl.json +5 -0
- homeassistant/components/dsmr/translations/it.json +5 -1
- homeassistant/components/dsmr_reader/translations/it.json +5 -1
- homeassistant/components/ecoforest/translations/it.json +2 -2
- homeassistant/components/ecovacs/translations/it.json +14 -0
- homeassistant/components/ecovacs/translations/nl.json +4 -0
- homeassistant/components/enphase_envoy/translations/bg.json +0 -1
- homeassistant/components/enphase_envoy/translations/cs.json +0 -1
- homeassistant/components/enphase_envoy/translations/el.json +0 -1
- homeassistant/components/enphase_envoy/translations/et.json +0 -1
- homeassistant/components/enphase_envoy/translations/hu.json +0 -1
- homeassistant/components/enphase_envoy/translations/it.json +3 -0
- homeassistant/components/enphase_envoy/translations/ja.json +0 -1
- homeassistant/components/enphase_envoy/translations/lt.json +0 -1
- homeassistant/components/enphase_envoy/translations/pt-BR.json +0 -1
- homeassistant/components/enphase_envoy/translations/pt.json +0 -1
- homeassistant/components/enphase_envoy/translations/ru.json +0 -1
- homeassistant/components/enphase_envoy/translations/sv.json +0 -1
- homeassistant/components/enphase_envoy/translations/tr.json +0 -1
- homeassistant/components/esphome/entity.py +1 -1
- homeassistant/components/esphome/sensor.py +3 -2
- homeassistant/components/ezviz/translations/nl.json +10 -0
- homeassistant/components/fan/translations/it.json +2 -2
- homeassistant/components/flipr/translations/it.json +8 -0
- homeassistant/components/fronius/translations/it.json +4 -0
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/fyta/translations/it.json +8 -0
- homeassistant/components/google_generative_ai_conversation/__init__.py +46 -0
- homeassistant/components/google_generative_ai_conversation/config_flow.py +1 -0
- homeassistant/components/google_generative_ai_conversation/translations/nl.json +3 -0
- homeassistant/components/google_mail/translations/it.json +7 -1
- homeassistant/components/google_photos/translations/it.json +6 -0
- homeassistant/components/google_sheets/translations/it.json +6 -0
- homeassistant/components/google_tasks/translations/it.json +3 -0
- homeassistant/components/group/translations/it.json +2 -2
- homeassistant/components/hive/translations/it.json +4 -3
- homeassistant/components/home_connect/translations/it.json +125 -30
- homeassistant/components/homeassistant/translations/it.json +3 -0
- homeassistant/components/homeassistant/translations/nl.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/es.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/it.json +2 -1
- homeassistant/components/homeassistant_hardware/translations/nl.json +4 -0
- homeassistant/components/homeassistant_hardware/translations/sk.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/zh-Hans.json +1 -0
- homeassistant/components/homeassistant_hardware/translations/zh-Hant.json +1 -0
- homeassistant/components/homeassistant_sky_connect/translations/es.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/it.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/nl.json +4 -0
- homeassistant/components/homeassistant_sky_connect/translations/sk.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/zh-Hans.json +2 -0
- homeassistant/components/homeassistant_sky_connect/translations/zh-Hant.json +2 -0
- homeassistant/components/homeassistant_yellow/translations/es.json +1 -0
- homeassistant/components/homeassistant_yellow/translations/it.json +1 -0
- homeassistant/components/homeassistant_yellow/translations/nl.json +2 -0
- homeassistant/components/homeassistant_yellow/translations/sk.json +1 -0
- homeassistant/components/homeassistant_yellow/translations/zh-Hans.json +1 -0
- homeassistant/components/homeassistant_yellow/translations/zh-Hant.json +1 -0
- homeassistant/components/homee/translations/it.json +54 -1
- homeassistant/components/homekit_controller/translations/it.json +4 -2
- homeassistant/components/homewizard/translations/it.json +15 -0
- homeassistant/components/huawei_lte/translations/it.json +5 -1
- homeassistant/components/humidifier/translations/it.json +6 -3
- homeassistant/components/husqvarna_automower/const.py +12 -0
- homeassistant/components/husqvarna_automower/lawn_mower.py +15 -5
- homeassistant/components/husqvarna_automower/sensor.py +2 -16
- homeassistant/components/husqvarna_automower/translations/it.json +3 -1
- homeassistant/components/husqvarna_automower/translations/nl.json +122 -2
- homeassistant/components/husqvarna_automower_ble/translations/nl.json +12 -0
- homeassistant/components/immich/translations/id.json +6 -0
- homeassistant/components/incomfort/translations/it.json +2 -1
- homeassistant/components/input_boolean/translations/it.json +2 -2
- homeassistant/components/iotty/translations/it.json +6 -0
- homeassistant/components/ipp/translations/it.json +2 -1
- homeassistant/components/iron_os/translations/it.json +12 -6
- homeassistant/components/jvc_projector/translations/it.json +2 -1
- homeassistant/components/knx/translations/it.json +3 -1
- homeassistant/components/lamarzocco/translations/it.json +5 -0
- homeassistant/components/lametric/translations/it.json +11 -1
- homeassistant/components/lawn_mower/translations/it.json +1 -0
- homeassistant/components/lektrico/translations/it.json +5 -1
- homeassistant/components/lg_thinq/translations/bg.json +1 -5
- homeassistant/components/lg_thinq/translations/cs.json +1 -3
- homeassistant/components/lg_thinq/translations/et.json +1 -3
- homeassistant/components/lg_thinq/translations/hu.json +1 -3
- homeassistant/components/lg_thinq/translations/it.json +77 -21
- homeassistant/components/lg_thinq/translations/ja.json +1 -5
- homeassistant/components/lg_thinq/translations/ko.json +1 -5
- homeassistant/components/lg_thinq/translations/lt.json +1 -3
- homeassistant/components/lg_thinq/translations/nl.json +1 -3
- homeassistant/components/lg_thinq/translations/pt-BR.json +1 -5
- homeassistant/components/lg_thinq/translations/pt.json +1 -3
- homeassistant/components/lg_thinq/translations/ru.json +1 -3
- homeassistant/components/lg_thinq/translations/sk.json +1 -1
- homeassistant/components/lg_thinq/translations/sv.json +1 -3
- homeassistant/components/lg_thinq/translations/tr.json +1 -5
- homeassistant/components/light/translations/it.json +6 -3
- homeassistant/components/litterrobot/translations/cs.json +0 -1
- homeassistant/components/litterrobot/translations/en-GB.json +0 -1
- homeassistant/components/litterrobot/translations/et.json +0 -1
- homeassistant/components/litterrobot/translations/ga.json +0 -1
- homeassistant/components/litterrobot/translations/hu.json +0 -1
- homeassistant/components/litterrobot/translations/it.json +14 -3
- homeassistant/components/litterrobot/translations/lt.json +0 -1
- homeassistant/components/litterrobot/translations/nl.json +0 -1
- homeassistant/components/litterrobot/translations/pt-BR.json +0 -1
- homeassistant/components/litterrobot/translations/pt.json +0 -1
- homeassistant/components/litterrobot/translations/ru.json +0 -1
- homeassistant/components/litterrobot/translations/sensor.it.json +1 -1
- homeassistant/components/litterrobot/translations/sk.json +0 -1
- homeassistant/components/litterrobot/translations/sv.json +0 -1
- homeassistant/components/litterrobot/translations/tr.json +0 -1
- homeassistant/components/litterrobot/translations/zh-Hans.json +0 -1
- homeassistant/components/litterrobot/translations/zh-Hant.json +0 -1
- homeassistant/components/lutron_caseta/translations/it.json +2 -2
- homeassistant/components/lyric/translations/it.json +9 -0
- homeassistant/components/matter/translations/id.json +5 -0
- homeassistant/components/matter/translations/it.json +69 -5
- homeassistant/components/meater/translations/it.json +12 -1
- homeassistant/components/media_player/translations/it.json +6 -5
- homeassistant/components/meteo_france/weather.py +9 -3
- homeassistant/components/microbees/translations/it.json +6 -0
- homeassistant/components/miele/translations/it.json +9 -3
- homeassistant/components/monzo/translations/it.json +6 -0
- homeassistant/components/motionblinds_ble/translations/it.json +14 -1
- homeassistant/components/mqtt/config_flow.py +4 -5
- homeassistant/components/mqtt/translations/it.json +2 -1
- homeassistant/components/music_assistant/translations/it.json +7 -0
- homeassistant/components/myuplink/translations/it.json +6 -0
- homeassistant/components/nam/__init__.py +0 -9
- homeassistant/components/nam/config_flow.py +22 -43
- homeassistant/components/nam/manifest.json +1 -1
- homeassistant/components/nam/translations/it.json +57 -3
- homeassistant/components/nam/translations/nl.json +21 -1
- homeassistant/components/neato/translations/it.json +6 -0
- homeassistant/components/nest/translations/it.json +6 -0
- homeassistant/components/netatmo/translations/it.json +7 -0
- homeassistant/components/nextdns/translations/it.json +8 -0
- homeassistant/components/ntfy/translations/id.json +2 -1
- homeassistant/components/ntfy/translations/it.json +15 -1
- homeassistant/components/ntfy/translations/nl.json +2 -1
- homeassistant/components/nuki/translations/it.json +14 -0
- homeassistant/components/nut/translations/it.json +4 -3
- homeassistant/components/ohme/translations/it.json +6 -0
- homeassistant/components/ollama/__init__.py +30 -0
- homeassistant/components/ollama/config_flow.py +1 -0
- homeassistant/components/ollama/translations/nl.json +12 -1
- homeassistant/components/ondilo_ico/translations/it.json +6 -0
- homeassistant/components/onedrive/translations/it.json +15 -0
- homeassistant/components/openai_conversation/__init__.py +30 -0
- homeassistant/components/openai_conversation/config_flow.py +1 -0
- homeassistant/components/openai_conversation/translations/it.json +16 -0
- homeassistant/components/openai_conversation/translations/nl.json +2 -1
- homeassistant/components/opentherm_gw/translations/es.json +3 -0
- homeassistant/components/opentherm_gw/translations/it.json +5 -0
- homeassistant/components/opentherm_gw/translations/nl.json +5 -0
- homeassistant/components/opentherm_gw/translations/sk.json +3 -0
- homeassistant/components/opentherm_gw/translations/zh-Hans.json +3 -0
- homeassistant/components/opentherm_gw/translations/zh-Hant.json +3 -0
- homeassistant/components/openuv/translations/it.json +4 -1
- homeassistant/components/osoenergy/translations/it.json +14 -0
- homeassistant/components/overkiz/translations/ca.json +0 -5
- homeassistant/components/overkiz/translations/cs.json +0 -1
- homeassistant/components/overkiz/translations/el.json +0 -1
- homeassistant/components/overkiz/translations/et.json +0 -1
- homeassistant/components/overkiz/translations/fi.json +0 -5
- homeassistant/components/overkiz/translations/fr.json +0 -1
- homeassistant/components/overkiz/translations/hu.json +0 -1
- homeassistant/components/overkiz/translations/id.json +0 -1
- homeassistant/components/overkiz/translations/it.json +11 -2
- homeassistant/components/overkiz/translations/ja.json +0 -5
- homeassistant/components/overkiz/translations/ko.json +0 -5
- homeassistant/components/overkiz/translations/lt.json +0 -1
- homeassistant/components/overkiz/translations/lv.json +0 -5
- homeassistant/components/overkiz/translations/nb.json +0 -5
- homeassistant/components/overkiz/translations/nl.json +0 -1
- homeassistant/components/overkiz/translations/pl.json +0 -5
- homeassistant/components/overkiz/translations/pt-BR.json +0 -5
- homeassistant/components/overkiz/translations/pt.json +0 -1
- homeassistant/components/overkiz/translations/ro.json +0 -5
- homeassistant/components/overkiz/translations/ru.json +0 -1
- homeassistant/components/overkiz/translations/sv.json +0 -1
- homeassistant/components/overkiz/translations/tr.json +0 -5
- homeassistant/components/overkiz/translations/uk.json +0 -5
- homeassistant/components/overkiz/translations/zh-Hans.json +0 -1
- homeassistant/components/palazzetti/translations/it.json +4 -0
- homeassistant/components/paperless_ngx/translations/it.json +50 -0
- homeassistant/components/peblar/translations/it.json +3 -1
- homeassistant/components/playstation_network/manifest.json +15 -0
- homeassistant/components/playstation_network/translations/nl.json +29 -0
- homeassistant/components/plugwise/translations/it.json +12 -3
- homeassistant/components/point/translations/it.json +6 -0
- homeassistant/components/prusalink/translations/it.json +3 -1
- homeassistant/components/qbittorrent/translations/it.json +6 -0
- homeassistant/components/qbus/translations/nl.json +17 -0
- homeassistant/components/remote/translations/it.json +2 -2
- homeassistant/components/renault/translations/it.json +1 -0
- homeassistant/components/renson/translations/it.json +4 -4
- homeassistant/components/renson/translations/nl.json +85 -18
- homeassistant/components/reolink/translations/it.json +28 -13
- homeassistant/components/rfxtrx/translations/it.json +4 -1
- homeassistant/components/roborock/translations/it.json +11 -2
- homeassistant/components/romy/translations/it.json +13 -0
- homeassistant/components/russound_rio/translations/it.json +21 -0
- homeassistant/components/samsungtv/translations/nl.json +24 -1
- homeassistant/components/schedule/translations/it.json +2 -2
- homeassistant/components/schlage/translations/it.json +1 -0
- homeassistant/components/script/translations/it.json +2 -2
- homeassistant/components/sensibo/translations/it.json +43 -28
- homeassistant/components/sensor/translations/it.json +2 -2
- homeassistant/components/senz/translations/it.json +6 -0
- homeassistant/components/shelly/translations/it.json +5 -2
- homeassistant/components/siren/translations/it.json +2 -2
- homeassistant/components/sleepiq/translations/it.json +12 -0
- homeassistant/components/smappee/translations/it.json +6 -0
- homeassistant/components/smartthings/translations/it.json +40 -11
- homeassistant/components/snoo/translations/it.json +16 -0
- homeassistant/components/solaredge/translations/nl.json +42 -0
- homeassistant/components/spotify/translations/it.json +6 -0
- homeassistant/components/sun/translations/nl.json +6 -0
- homeassistant/components/switch/translations/it.json +6 -6
- homeassistant/components/switchbot/translations/es.json +1 -0
- homeassistant/components/switchbot/translations/it.json +10 -0
- homeassistant/components/switchbot/translations/nl.json +25 -1
- homeassistant/components/switchbot/translations/zh-Hans.json +1 -0
- homeassistant/components/tado/translations/it.json +11 -0
- homeassistant/components/telegram_bot/config_flow.py +4 -7
- homeassistant/components/telegram_bot/translations/it.json +28 -1
- homeassistant/components/telegram_bot/translations/nl.json +30 -0
- homeassistant/components/tesla_fleet/translations/ca.json +0 -3
- homeassistant/components/tesla_fleet/translations/cs.json +0 -3
- homeassistant/components/tesla_fleet/translations/el.json +0 -3
- homeassistant/components/tesla_fleet/translations/en-GB.json +0 -3
- homeassistant/components/tesla_fleet/translations/en.json +1 -1
- homeassistant/components/tesla_fleet/translations/es.json +1 -1
- homeassistant/components/tesla_fleet/translations/et.json +0 -3
- homeassistant/components/tesla_fleet/translations/fy.json +0 -3
- homeassistant/components/tesla_fleet/translations/hu.json +0 -3
- homeassistant/components/tesla_fleet/translations/it.json +78 -12
- homeassistant/components/tesla_fleet/translations/ja.json +0 -3
- homeassistant/components/tesla_fleet/translations/lt.json +0 -3
- homeassistant/components/tesla_fleet/translations/pt.json +0 -3
- homeassistant/components/tesla_fleet/translations/ru.json +0 -3
- homeassistant/components/tesla_fleet/translations/sk.json +1 -1
- homeassistant/components/tesla_fleet/translations/sv.json +0 -3
- homeassistant/components/tesla_fleet/translations/tr.json +0 -3
- homeassistant/components/tesla_fleet/translations/zh-Hans.json +0 -3
- homeassistant/components/tesla_fleet/translations/zh-Hant.json +0 -3
- homeassistant/components/tesla_wall_connector/translations/it.json +2 -1
- homeassistant/components/teslemetry/translations/it.json +149 -11
- homeassistant/components/teslemetry/translations/nl.json +6 -3
- homeassistant/components/tessie/translations/it.json +49 -11
- homeassistant/components/tilt_pi/translations/id.json +10 -0
- homeassistant/components/tilt_pi/translations/it.json +31 -0
- homeassistant/components/tolo/translations/it.json +2 -1
- homeassistant/components/tomorrowio/translations/it.json +22 -4
- homeassistant/components/toon/translations/it.json +6 -0
- homeassistant/components/tplink_omada/translations/it.json +1 -0
- homeassistant/components/traccar_server/translations/it.json +1 -0
- homeassistant/components/tuya/translations/it.json +17 -9
- homeassistant/components/tuya/translations/select.it.json +5 -5
- homeassistant/components/twinkly/translations/it.json +1 -1
- homeassistant/components/unifi/translations/nl.json +3 -1
- homeassistant/components/unifiprotect/translations/nl.json +284 -1
- homeassistant/components/vacuum/translations/it.json +3 -2
- homeassistant/components/vallox/translations/it.json +3 -1
- homeassistant/components/valve/translations/it.json +2 -1
- homeassistant/components/vegehub/translations/nl.json +3 -0
- homeassistant/components/venstar/translations/it.json +5 -0
- homeassistant/components/vesync/translations/it.json +19 -0
- homeassistant/components/vicare/translations/it.json +21 -2
- homeassistant/components/wallbox/translations/it.json +12 -0
- homeassistant/components/water_heater/translations/it.json +3 -3
- homeassistant/components/webdav/config_flow.py +7 -1
- homeassistant/components/webdav/strings.json +1 -3
- homeassistant/components/webdav/translations/cs.json +0 -3
- homeassistant/components/webdav/translations/de.json +1 -3
- homeassistant/components/webdav/translations/en-GB.json +0 -3
- homeassistant/components/webdav/translations/en.json +1 -3
- homeassistant/components/webdav/translations/es.json +1 -3
- homeassistant/components/webdav/translations/et.json +0 -3
- homeassistant/components/webdav/translations/fr.json +0 -3
- homeassistant/components/webdav/translations/ga.json +0 -3
- homeassistant/components/webdav/translations/hu.json +0 -3
- homeassistant/components/webdav/translations/it.json +1 -0
- homeassistant/components/webdav/translations/ja.json +0 -3
- homeassistant/components/webdav/translations/lt.json +0 -3
- homeassistant/components/webdav/translations/nl.json +0 -3
- homeassistant/components/webdav/translations/pt-BR.json +0 -3
- homeassistant/components/webdav/translations/pt.json +0 -3
- homeassistant/components/webdav/translations/ru.json +0 -3
- homeassistant/components/webdav/translations/sk.json +1 -3
- homeassistant/components/webdav/translations/sl.json +0 -5
- homeassistant/components/webdav/translations/sv.json +0 -3
- homeassistant/components/webdav/translations/tr.json +0 -3
- homeassistant/components/webdav/translations/zh-Hans.json +0 -3
- homeassistant/components/webdav/translations/zh-Hant.json +1 -3
- homeassistant/components/weheat/translations/it.json +6 -0
- homeassistant/components/whirlpool/translations/ca.json +0 -1
- homeassistant/components/whirlpool/translations/cs.json +0 -1
- homeassistant/components/whirlpool/translations/el.json +0 -1
- homeassistant/components/whirlpool/translations/et.json +0 -1
- homeassistant/components/whirlpool/translations/fi.json +0 -1
- homeassistant/components/whirlpool/translations/fr.json +0 -1
- homeassistant/components/whirlpool/translations/hu.json +0 -1
- homeassistant/components/whirlpool/translations/id.json +0 -1
- homeassistant/components/whirlpool/translations/it.json +1 -1
- homeassistant/components/whirlpool/translations/ja.json +0 -1
- homeassistant/components/whirlpool/translations/ko.json +0 -1
- homeassistant/components/whirlpool/translations/lt.json +0 -1
- homeassistant/components/whirlpool/translations/lv.json +0 -1
- homeassistant/components/whirlpool/translations/nb.json +0 -1
- homeassistant/components/whirlpool/translations/nl.json +0 -1
- homeassistant/components/whirlpool/translations/pl.json +0 -1
- homeassistant/components/whirlpool/translations/pt-BR.json +0 -1
- homeassistant/components/whirlpool/translations/pt.json +0 -1
- homeassistant/components/whirlpool/translations/ro.json +0 -1
- homeassistant/components/whirlpool/translations/ru.json +0 -1
- homeassistant/components/whirlpool/translations/sv.json +0 -1
- homeassistant/components/whirlpool/translations/tr.json +0 -1
- homeassistant/components/whirlpool/translations/uk.json +0 -1
- homeassistant/components/whirlpool/translations/zh-Hans.json +0 -1
- homeassistant/components/whirlpool/translations/zh-Hant.json +1 -1
- homeassistant/components/withings/translations/it.json +15 -1
- homeassistant/components/wled/translations/it.json +2 -2
- homeassistant/components/wolflink/translations/it.json +5 -0
- homeassistant/components/wyoming/translations/it.json +1 -1
- homeassistant/components/xbox/translations/it.json +6 -0
- homeassistant/components/xiaomi_miio/translations/it.json +11 -2
- homeassistant/components/yale/translations/it.json +6 -0
- homeassistant/components/yale_smart_alarm/translations/it.json +3 -1
- homeassistant/components/yamaha/translations/it.json +1 -1
- homeassistant/components/yamaha_musiccast/__init__.py +3 -2
- homeassistant/components/yamaha_musiccast/config_flow.py +5 -4
- homeassistant/components/yamaha_musiccast/translations/it.json +13 -3
- homeassistant/components/yeelight/translations/it.json +2 -1
- homeassistant/components/yolink/translations/it.json +16 -4
- homeassistant/components/zha/translations/it.json +18 -1
- homeassistant/components/zha/translations/nl.json +34 -0
- homeassistant/components/zwave_js/translations/nl.json +28 -1
- homeassistant/const.py +1 -1
- homeassistant/generated/dhcp.py +20 -0
- homeassistant/package_constraints.txt +1 -1
- {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/METADATA +1 -1
- {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/RECORD +385 -381
- {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/WHEEL +0 -0
- {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.7.0b5.dist-info → homeassistant-2025.7.0b6.dist-info}/top_level.txt +0 -0
|
@@ -82,7 +82,6 @@
|
|
|
82
82
|
"name": "\u88dc\u7802\u5668\u72c0\u614b",
|
|
83
83
|
"state": {
|
|
84
84
|
"disabled": "\u5df2\u95dc\u9589",
|
|
85
|
-
"empty": "\u8017\u76e1",
|
|
86
85
|
"enabled": "\u5df2\u555f\u7528",
|
|
87
86
|
"motor_disconnected": "\u99ac\u9054\u65b7\u7dda",
|
|
88
87
|
"motor_fault_short": "\u99ac\u9054\u77ed\u8def",
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
+
"application_credentials": {
|
|
3
|
+
"description": "Per poter accedere a Honeywell Lyric, l'integrazione richiede un ID client e un segreto. Per acquistarli, segui i seguenti passaggi.\n\n1. Vai alla [Dashboard delle app per sviluppatori Honeywell Lyric]({developer_dashboard_url}).\n1. Registrati per un account sviluppatore se non ne hai ancora uno. Questo \u00e8 un account separato dal tuo account Honeywell.\n1. Accedi con il tuo account sviluppatore Honeywell Lyric.\n1. Vai alla sezione **Le mie app**.\n1. Premere il pulsante **CREA NUOVA APP**.\n1. Assegna all'applicazione un nome a tua scelta.\n1. Imposta l'URL di richiamata su `{redirect_url}`.\n1. Salva le modifiche.\n1. Copia la **Chiave consumatore** e incollala qui come **ID cliente**, quindi copia il **Segreto consumatore** e incollalo qui come **Segreto cliente**."
|
|
4
|
+
},
|
|
2
5
|
"config": {
|
|
3
6
|
"abort": {
|
|
4
7
|
"authorize_url_timeout": "Tempo scaduto nel generare l'URL di autorizzazione.",
|
|
@@ -15,6 +18,12 @@
|
|
|
15
18
|
},
|
|
16
19
|
"step": {
|
|
17
20
|
"pick_implementation": {
|
|
21
|
+
"data": {
|
|
22
|
+
"implementation": "Credenziali dell'applicazione"
|
|
23
|
+
},
|
|
24
|
+
"data_description": {
|
|
25
|
+
"implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
|
|
26
|
+
},
|
|
18
27
|
"title": "Scegli il metodo di autenticazione"
|
|
19
28
|
},
|
|
20
29
|
"reauth_confirm": {
|
|
@@ -47,6 +47,12 @@
|
|
|
47
47
|
},
|
|
48
48
|
"entity": {
|
|
49
49
|
"binary_sensor": {
|
|
50
|
+
"dishwasher_alarm_door": {
|
|
51
|
+
"name": "Allarme porta"
|
|
52
|
+
},
|
|
53
|
+
"dishwasher_alarm_inflow": {
|
|
54
|
+
"name": "Allarme di afflusso"
|
|
55
|
+
},
|
|
50
56
|
"evse_charging_status": {
|
|
51
57
|
"name": "Stato di carica"
|
|
52
58
|
},
|
|
@@ -99,7 +105,17 @@
|
|
|
99
105
|
},
|
|
100
106
|
"fan": {
|
|
101
107
|
"fan": {
|
|
102
|
-
"name": "Ventilatore"
|
|
108
|
+
"name": "Ventilatore",
|
|
109
|
+
"state_attributes": {
|
|
110
|
+
"preset_mode": {
|
|
111
|
+
"state": {
|
|
112
|
+
"auto": "Automatico",
|
|
113
|
+
"high": "Alto/a",
|
|
114
|
+
"low": "Basso/a",
|
|
115
|
+
"medium": "Medio/a"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
103
119
|
}
|
|
104
120
|
},
|
|
105
121
|
"light": {
|
|
@@ -113,6 +129,19 @@
|
|
|
113
129
|
}
|
|
114
130
|
},
|
|
115
131
|
"select": {
|
|
132
|
+
"door_lock_sound_volume": {
|
|
133
|
+
"state": {
|
|
134
|
+
"high": "Alto/a",
|
|
135
|
+
"low": "Basso/a",
|
|
136
|
+
"medium": "Medio/a"
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"laundry_washer_number_of_rinses": {
|
|
140
|
+
"state": {
|
|
141
|
+
"normal": "Normale",
|
|
142
|
+
"off": "Spento/a"
|
|
143
|
+
}
|
|
144
|
+
},
|
|
116
145
|
"pump_operation_mode": {
|
|
117
146
|
"name": "modalit\u00e0",
|
|
118
147
|
"state": {
|
|
@@ -124,14 +153,16 @@
|
|
|
124
153
|
},
|
|
125
154
|
"sensitivity_level": {
|
|
126
155
|
"state": {
|
|
156
|
+
"high": "Alto/a",
|
|
157
|
+
"low": "Basso/a",
|
|
127
158
|
"standard": "Iniziato"
|
|
128
159
|
}
|
|
129
160
|
},
|
|
130
161
|
"startup_on_off": {
|
|
131
162
|
"name": "Comportamento dell'accensione all'avvio",
|
|
132
163
|
"state": {
|
|
133
|
-
"off": "
|
|
134
|
-
"on": "
|
|
164
|
+
"off": "Spento/a",
|
|
165
|
+
"on": "Acceso/a",
|
|
135
166
|
"previous": "Precedente",
|
|
136
167
|
"toggle": "Commuta"
|
|
137
168
|
}
|
|
@@ -152,9 +183,40 @@
|
|
|
152
183
|
"very_poor": "Molto bassa"
|
|
153
184
|
}
|
|
154
185
|
},
|
|
186
|
+
"battery_charge_state": {
|
|
187
|
+
"name": "Stato di carica della batteria",
|
|
188
|
+
"state": {
|
|
189
|
+
"charging": "In carica",
|
|
190
|
+
"full_charge": "Carica completa",
|
|
191
|
+
"not_charging": "Non in carica"
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
"battery_time_remaining": {
|
|
195
|
+
"name": "Tempo rimanente"
|
|
196
|
+
},
|
|
197
|
+
"battery_time_to_full_charge": {
|
|
198
|
+
"name": "Tempo per la carica completa"
|
|
199
|
+
},
|
|
155
200
|
"contamination_state": {
|
|
156
201
|
"state": {
|
|
157
|
-
"critical": "Critico"
|
|
202
|
+
"critical": "Critico",
|
|
203
|
+
"low": "Basso/a",
|
|
204
|
+
"normal": "Normale"
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"esa_opt_out_state": {
|
|
208
|
+
"name": "Disattivazione dell'ottimizzazione energetica",
|
|
209
|
+
"state": {
|
|
210
|
+
"grid_opt_out": "Rete",
|
|
211
|
+
"local_opt_out": "Locale",
|
|
212
|
+
"no_opt_out": "Spento/a",
|
|
213
|
+
"opt_out": "Locale e rete"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"esa_state": {
|
|
217
|
+
"state": {
|
|
218
|
+
"fault": "Guasto/a",
|
|
219
|
+
"paused": "In pausa"
|
|
158
220
|
}
|
|
159
221
|
},
|
|
160
222
|
"evse_charge_current": {
|
|
@@ -186,8 +248,10 @@
|
|
|
186
248
|
"operational_state": {
|
|
187
249
|
"state": {
|
|
188
250
|
"charging": "In carica",
|
|
251
|
+
"error": "Errore",
|
|
189
252
|
"paused": "In pausa",
|
|
190
|
-
"running": "In esecuzione"
|
|
253
|
+
"running": "In esecuzione",
|
|
254
|
+
"stopped": "Fermato/a"
|
|
191
255
|
}
|
|
192
256
|
},
|
|
193
257
|
"pump_control_mode": {
|
|
@@ -40,7 +40,18 @@
|
|
|
40
40
|
"name": "Temperatura massima"
|
|
41
41
|
},
|
|
42
42
|
"cook_state": {
|
|
43
|
-
"name": "Stato di cottura"
|
|
43
|
+
"name": "Stato di cottura",
|
|
44
|
+
"state": {
|
|
45
|
+
"configured": "Configurato",
|
|
46
|
+
"finished": "Finito",
|
|
47
|
+
"not_started": "Non avviato",
|
|
48
|
+
"overcooked": "Troppo cotto",
|
|
49
|
+
"ready_for_resting": "Pronto per riposare",
|
|
50
|
+
"resting": "A riposo",
|
|
51
|
+
"slightly_overdone": "Leggermente troppo cotto",
|
|
52
|
+
"slightly_underdone": "Leggermente al sangue",
|
|
53
|
+
"started": "Avviato"
|
|
54
|
+
}
|
|
44
55
|
},
|
|
45
56
|
"cook_target_temp": {
|
|
46
57
|
"name": "Temperatura desiderata"
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"state": {
|
|
28
28
|
"buffering": "Precaricamento",
|
|
29
29
|
"idle": "Inattivo",
|
|
30
|
-
"off": "
|
|
31
|
-
"on": "
|
|
30
|
+
"off": "Spento/a",
|
|
31
|
+
"on": "Acceso/a",
|
|
32
32
|
"paused": "In pausa",
|
|
33
33
|
"playing": "In esecuzione",
|
|
34
34
|
"standby": "In attesa"
|
|
@@ -124,15 +124,15 @@
|
|
|
124
124
|
"name": "Ripeti",
|
|
125
125
|
"state": {
|
|
126
126
|
"all": "Tutti",
|
|
127
|
-
"off": "
|
|
127
|
+
"off": "Spento/a",
|
|
128
128
|
"one": "Uno"
|
|
129
129
|
}
|
|
130
130
|
},
|
|
131
131
|
"shuffle": {
|
|
132
132
|
"name": "Mescola",
|
|
133
133
|
"state": {
|
|
134
|
-
"false": "
|
|
135
|
-
"true": "
|
|
134
|
+
"false": "Spento/a",
|
|
135
|
+
"true": "Acceso/a"
|
|
136
136
|
}
|
|
137
137
|
},
|
|
138
138
|
"sound_mode": {
|
|
@@ -174,6 +174,7 @@
|
|
|
174
174
|
"repeat": {
|
|
175
175
|
"options": {
|
|
176
176
|
"all": "Ripeti tutto",
|
|
177
|
+
"off": "Spento/a",
|
|
177
178
|
"one": "Ripeti una volta"
|
|
178
179
|
}
|
|
179
180
|
}
|
|
@@ -6,6 +6,8 @@ import time
|
|
|
6
6
|
from meteofrance_api.model.forecast import Forecast as MeteoFranceForecast
|
|
7
7
|
|
|
8
8
|
from homeassistant.components.weather import (
|
|
9
|
+
ATTR_CONDITION_CLEAR_NIGHT,
|
|
10
|
+
ATTR_CONDITION_SUNNY,
|
|
9
11
|
ATTR_FORECAST_CONDITION,
|
|
10
12
|
ATTR_FORECAST_HUMIDITY,
|
|
11
13
|
ATTR_FORECAST_NATIVE_PRECIPITATION,
|
|
@@ -49,9 +51,13 @@ from .const import (
|
|
|
49
51
|
_LOGGER = logging.getLogger(__name__)
|
|
50
52
|
|
|
51
53
|
|
|
52
|
-
def format_condition(condition: str):
|
|
54
|
+
def format_condition(condition: str, force_day: bool = False) -> str:
|
|
53
55
|
"""Return condition from dict CONDITION_MAP."""
|
|
54
|
-
|
|
56
|
+
mapped_condition = CONDITION_MAP.get(condition, condition)
|
|
57
|
+
if force_day and mapped_condition == ATTR_CONDITION_CLEAR_NIGHT:
|
|
58
|
+
# Meteo-France can return clear night condition instead of sunny for daily weather, so we map it to sunny
|
|
59
|
+
return ATTR_CONDITION_SUNNY
|
|
60
|
+
return mapped_condition
|
|
55
61
|
|
|
56
62
|
|
|
57
63
|
async def async_setup_entry(
|
|
@@ -212,7 +218,7 @@ class MeteoFranceWeather(
|
|
|
212
218
|
forecast["dt"]
|
|
213
219
|
).isoformat(),
|
|
214
220
|
ATTR_FORECAST_CONDITION: format_condition(
|
|
215
|
-
forecast["weather12H"]["desc"]
|
|
221
|
+
forecast["weather12H"]["desc"], force_day=True
|
|
216
222
|
),
|
|
217
223
|
ATTR_FORECAST_HUMIDITY: forecast["humidity"]["max"],
|
|
218
224
|
ATTR_FORECAST_NATIVE_TEMP: forecast["T"]["max"],
|
|
@@ -24,6 +24,12 @@
|
|
|
24
24
|
},
|
|
25
25
|
"step": {
|
|
26
26
|
"pick_implementation": {
|
|
27
|
+
"data": {
|
|
28
|
+
"implementation": "Credenziali dell'applicazione"
|
|
29
|
+
},
|
|
30
|
+
"data_description": {
|
|
31
|
+
"implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
|
|
32
|
+
},
|
|
27
33
|
"title": "Scegli il metodo di autenticazione"
|
|
28
34
|
}
|
|
29
35
|
}
|
|
@@ -28,6 +28,12 @@
|
|
|
28
28
|
"description": "Vuoi avviare la configurazione?"
|
|
29
29
|
},
|
|
30
30
|
"pick_implementation": {
|
|
31
|
+
"data": {
|
|
32
|
+
"implementation": "Credenziali dell'applicazione"
|
|
33
|
+
},
|
|
34
|
+
"data_description": {
|
|
35
|
+
"implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
|
|
36
|
+
},
|
|
31
37
|
"title": "Scegli il metodo di autenticazione"
|
|
32
38
|
},
|
|
33
39
|
"reauth_confirm": {
|
|
@@ -257,7 +263,7 @@
|
|
|
257
263
|
"artichokes_small": "Carciofi, di piccole dimensioni",
|
|
258
264
|
"atlantic_catfish_fillet_1_cm": "Cobite, filetto (1cm)",
|
|
259
265
|
"atlantic_catfish_fillet_2_cm": "Cobite, filetto (2cm)",
|
|
260
|
-
"auto": "
|
|
266
|
+
"auto": "Automatico",
|
|
261
267
|
"auto_roast": "Arrostire",
|
|
262
268
|
"automatic": "Automatic",
|
|
263
269
|
"automatic_plus": "Automatic Plus",
|
|
@@ -996,8 +1002,8 @@
|
|
|
996
1002
|
"idle": "Inattivo",
|
|
997
1003
|
"in_use": "In funzione",
|
|
998
1004
|
"not_connected": "Non connesso",
|
|
999
|
-
"off": "
|
|
1000
|
-
"on": "
|
|
1005
|
+
"off": "Spento/a",
|
|
1006
|
+
"on": "Acceso/a",
|
|
1001
1007
|
"pause": "Pausa",
|
|
1002
1008
|
"program_ended": "Fine",
|
|
1003
1009
|
"program_interrupted": "Programma interrotto",
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
},
|
|
17
17
|
"step": {
|
|
18
18
|
"pick_implementation": {
|
|
19
|
+
"data": {
|
|
20
|
+
"implementation": "Credenziali dell'applicazione"
|
|
21
|
+
},
|
|
22
|
+
"data_description": {
|
|
23
|
+
"implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
|
|
24
|
+
},
|
|
19
25
|
"title": "Scegli il metodo di autenticazione"
|
|
20
26
|
},
|
|
21
27
|
"reauth_confirm": {
|
|
@@ -30,7 +30,20 @@
|
|
|
30
30
|
},
|
|
31
31
|
"select": {
|
|
32
32
|
"speed": {
|
|
33
|
-
"name": "Velocit\u00e0"
|
|
33
|
+
"name": "Velocit\u00e0",
|
|
34
|
+
"state": {
|
|
35
|
+
"1": "Basso/a",
|
|
36
|
+
"2": "Medio/a",
|
|
37
|
+
"3": "Alto/a"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"sensor": {
|
|
42
|
+
"connection": {
|
|
43
|
+
"state": {
|
|
44
|
+
"connected": "Connesso",
|
|
45
|
+
"disconnected": "Disconnesso"
|
|
46
|
+
}
|
|
34
47
|
}
|
|
35
48
|
}
|
|
36
49
|
},
|
|
@@ -2771,11 +2771,10 @@ class MQTTSubentryFlowHandler(ConfigSubentryFlow):
|
|
|
2771
2771
|
reconfig=True,
|
|
2772
2772
|
)
|
|
2773
2773
|
if user_input is not None:
|
|
2774
|
-
new_device_data,
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
new_device_data["mqtt_settings"] = user_input["mqtt_settings"]
|
|
2774
|
+
new_device_data: dict[str, Any] = user_input.copy()
|
|
2775
|
+
_, errors = validate_user_input(user_input, MQTT_DEVICE_PLATFORM_FIELDS)
|
|
2776
|
+
if "advanced_settings" in new_device_data:
|
|
2777
|
+
new_device_data |= new_device_data.pop("advanced_settings")
|
|
2779
2778
|
if not errors:
|
|
2780
2779
|
self._subentry_data[CONF_DEVICE] = cast(MqttDeviceData, new_device_data)
|
|
2781
2780
|
if self.source == SOURCE_RECONFIGURE:
|
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
},
|
|
20
20
|
"step": {
|
|
21
21
|
"pick_implementation": {
|
|
22
|
+
"data": {
|
|
23
|
+
"implementation": "Credenziali dell'applicazione"
|
|
24
|
+
},
|
|
25
|
+
"data_description": {
|
|
26
|
+
"implementation": "Le credenziali che desideri utilizzare per l'autenticazione."
|
|
27
|
+
},
|
|
22
28
|
"title": "Scegli il metodo di autenticazione"
|
|
23
29
|
},
|
|
24
30
|
"reauth_confirm": {
|
|
@@ -44,15 +44,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: NAMConfigEntry) -> bool:
|
|
|
44
44
|
translation_key="device_communication_error",
|
|
45
45
|
translation_placeholders={"device": entry.title},
|
|
46
46
|
) from err
|
|
47
|
-
|
|
48
|
-
try:
|
|
49
|
-
await nam.async_check_credentials()
|
|
50
|
-
except (ApiError, ClientError) as err:
|
|
51
|
-
raise ConfigEntryNotReady(
|
|
52
|
-
translation_domain=DOMAIN,
|
|
53
|
-
translation_key="device_communication_error",
|
|
54
|
-
translation_placeholders={"device": entry.title},
|
|
55
|
-
) from err
|
|
56
47
|
except AuthFailedError as err:
|
|
57
48
|
raise ConfigEntryAuthFailed(
|
|
58
49
|
translation_domain=DOMAIN,
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from collections.abc import Mapping
|
|
6
|
-
from dataclasses import dataclass
|
|
7
6
|
import logging
|
|
8
7
|
from typing import Any
|
|
9
8
|
|
|
@@ -26,15 +25,6 @@ from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo
|
|
|
26
25
|
|
|
27
26
|
from .const import DOMAIN
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
@dataclass
|
|
31
|
-
class NamConfig:
|
|
32
|
-
"""NAM device configuration class."""
|
|
33
|
-
|
|
34
|
-
mac_address: str
|
|
35
|
-
auth_enabled: bool
|
|
36
|
-
|
|
37
|
-
|
|
38
28
|
_LOGGER = logging.getLogger(__name__)
|
|
39
29
|
|
|
40
30
|
AUTH_SCHEMA = vol.Schema(
|
|
@@ -42,29 +32,14 @@ AUTH_SCHEMA = vol.Schema(
|
|
|
42
32
|
)
|
|
43
33
|
|
|
44
34
|
|
|
45
|
-
async def
|
|
46
|
-
"""Get device MAC address and auth_enabled property."""
|
|
47
|
-
websession = async_get_clientsession(hass)
|
|
48
|
-
|
|
49
|
-
options = ConnectionOptions(host)
|
|
50
|
-
nam = await NettigoAirMonitor.create(websession, options)
|
|
51
|
-
|
|
52
|
-
mac = await nam.async_get_mac_address()
|
|
53
|
-
|
|
54
|
-
return NamConfig(mac, nam.auth_enabled)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
async def async_check_credentials(
|
|
35
|
+
async def async_get_nam(
|
|
58
36
|
hass: HomeAssistant, host: str, data: dict[str, Any]
|
|
59
|
-
) ->
|
|
60
|
-
"""
|
|
37
|
+
) -> NettigoAirMonitor:
|
|
38
|
+
"""Get NAM client."""
|
|
61
39
|
websession = async_get_clientsession(hass)
|
|
62
|
-
|
|
63
40
|
options = ConnectionOptions(host, data.get(CONF_USERNAME), data.get(CONF_PASSWORD))
|
|
64
41
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
await nam.async_check_credentials()
|
|
42
|
+
return await NettigoAirMonitor.create(websession, options)
|
|
68
43
|
|
|
69
44
|
|
|
70
45
|
class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
@@ -72,8 +47,8 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
72
47
|
|
|
73
48
|
VERSION = 1
|
|
74
49
|
|
|
75
|
-
_config: NamConfig
|
|
76
50
|
host: str
|
|
51
|
+
auth_enabled: bool = False
|
|
77
52
|
|
|
78
53
|
async def async_step_user(
|
|
79
54
|
self, user_input: dict[str, Any] | None = None
|
|
@@ -85,21 +60,20 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
85
60
|
self.host = user_input[CONF_HOST]
|
|
86
61
|
|
|
87
62
|
try:
|
|
88
|
-
|
|
63
|
+
nam = await async_get_nam(self.hass, self.host, {})
|
|
89
64
|
except (ApiError, ClientConnectorError, TimeoutError):
|
|
90
65
|
errors["base"] = "cannot_connect"
|
|
91
66
|
except CannotGetMacError:
|
|
92
67
|
return self.async_abort(reason="device_unsupported")
|
|
68
|
+
except AuthFailedError:
|
|
69
|
+
return await self.async_step_credentials()
|
|
93
70
|
except Exception:
|
|
94
71
|
_LOGGER.exception("Unexpected exception")
|
|
95
72
|
errors["base"] = "unknown"
|
|
96
73
|
else:
|
|
97
|
-
await self.async_set_unique_id(format_mac(
|
|
74
|
+
await self.async_set_unique_id(format_mac(nam.mac))
|
|
98
75
|
self._abort_if_unique_id_configured({CONF_HOST: self.host})
|
|
99
76
|
|
|
100
|
-
if config.auth_enabled is True:
|
|
101
|
-
return await self.async_step_credentials()
|
|
102
|
-
|
|
103
77
|
return self.async_create_entry(
|
|
104
78
|
title=self.host,
|
|
105
79
|
data=user_input,
|
|
@@ -119,7 +93,7 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
119
93
|
|
|
120
94
|
if user_input is not None:
|
|
121
95
|
try:
|
|
122
|
-
await
|
|
96
|
+
nam = await async_get_nam(self.hass, self.host, user_input)
|
|
123
97
|
except AuthFailedError:
|
|
124
98
|
errors["base"] = "invalid_auth"
|
|
125
99
|
except (ApiError, ClientConnectorError, TimeoutError):
|
|
@@ -128,6 +102,9 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
128
102
|
_LOGGER.exception("Unexpected exception")
|
|
129
103
|
errors["base"] = "unknown"
|
|
130
104
|
else:
|
|
105
|
+
await self.async_set_unique_id(format_mac(nam.mac))
|
|
106
|
+
self._abort_if_unique_id_configured({CONF_HOST: self.host})
|
|
107
|
+
|
|
131
108
|
return self.async_create_entry(
|
|
132
109
|
title=self.host,
|
|
133
110
|
data={**user_input, CONF_HOST: self.host},
|
|
@@ -148,14 +125,16 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
148
125
|
self._async_abort_entries_match({CONF_HOST: self.host})
|
|
149
126
|
|
|
150
127
|
try:
|
|
151
|
-
|
|
128
|
+
nam = await async_get_nam(self.hass, self.host, {})
|
|
152
129
|
except (ApiError, ClientConnectorError, TimeoutError):
|
|
153
130
|
return self.async_abort(reason="cannot_connect")
|
|
154
131
|
except CannotGetMacError:
|
|
155
132
|
return self.async_abort(reason="device_unsupported")
|
|
133
|
+
except AuthFailedError:
|
|
134
|
+
self.auth_enabled = True
|
|
135
|
+
return await self.async_step_confirm_discovery()
|
|
156
136
|
|
|
157
|
-
await self.async_set_unique_id(format_mac(
|
|
158
|
-
self._abort_if_unique_id_configured({CONF_HOST: self.host})
|
|
137
|
+
await self.async_set_unique_id(format_mac(nam.mac))
|
|
159
138
|
|
|
160
139
|
return await self.async_step_confirm_discovery()
|
|
161
140
|
|
|
@@ -171,7 +150,7 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
171
150
|
data={CONF_HOST: self.host},
|
|
172
151
|
)
|
|
173
152
|
|
|
174
|
-
if self.
|
|
153
|
+
if self.auth_enabled is True:
|
|
175
154
|
return await self.async_step_credentials()
|
|
176
155
|
|
|
177
156
|
self._set_confirm_only()
|
|
@@ -198,7 +177,7 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
198
177
|
|
|
199
178
|
if user_input is not None:
|
|
200
179
|
try:
|
|
201
|
-
await
|
|
180
|
+
await async_get_nam(self.hass, self.host, user_input)
|
|
202
181
|
except (
|
|
203
182
|
ApiError,
|
|
204
183
|
AuthFailedError,
|
|
@@ -228,11 +207,11 @@ class NAMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
|
228
207
|
|
|
229
208
|
if user_input is not None:
|
|
230
209
|
try:
|
|
231
|
-
|
|
210
|
+
nam = await async_get_nam(self.hass, user_input[CONF_HOST], {})
|
|
232
211
|
except (ApiError, ClientConnectorError, TimeoutError):
|
|
233
212
|
errors["base"] = "cannot_connect"
|
|
234
213
|
else:
|
|
235
|
-
await self.async_set_unique_id(format_mac(
|
|
214
|
+
await self.async_set_unique_id(format_mac(nam.mac))
|
|
236
215
|
self._abort_if_unique_id_mismatch(reason="another_device")
|
|
237
216
|
|
|
238
217
|
return self.async_update_reload_and_abort(
|