homeassistant 2025.8.0b2__py3-none-any.whl → 2025.8.0b4__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/airos/config_flow.py +9 -9
- homeassistant/components/airos/coordinator.py +11 -7
- homeassistant/components/airos/manifest.json +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 +0 -7
- 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/ko.json +13 -0
- homeassistant/components/airos/translations/sk.json +25 -6
- homeassistant/components/airos/translations/zh-Hans.json +0 -7
- homeassistant/components/airos/translations/zh-Hant.json +0 -7
- homeassistant/components/airthings/__init__.py +2 -5
- homeassistant/components/airthings/coordinator.py +10 -1
- homeassistant/components/airtouch5/translations/ko.json +11 -0
- homeassistant/components/airzone/translations/ko.json +9 -0
- homeassistant/components/airzone_cloud/translations/ko.json +13 -0
- homeassistant/components/alert/translations/he.json +1 -1
- homeassistant/components/alexa_devices/translations/es.json +192 -1
- homeassistant/components/alexa_devices/translations/ko.json +18 -0
- homeassistant/components/alexa_devices/translations/nl.json +7 -1
- homeassistant/components/alexa_devices/translations/sk.json +351 -1
- homeassistant/components/altruist/translations/ko.json +11 -0
- homeassistant/components/ambient_station/translations/ga.json +12 -0
- homeassistant/components/analytics_insights/translations/ga.json +7 -2
- homeassistant/components/androidtv_remote/translations/ko.json +5 -0
- homeassistant/components/androidtv_remote/translations/sl.json +2 -1
- homeassistant/components/anova/translations/he.json +1 -1
- homeassistant/components/anthropic/__init__.py +78 -11
- homeassistant/components/anthropic/config_flow.py +1 -1
- homeassistant/components/anthropic/translations/ko.json +12 -1
- homeassistant/components/apcupsd/translations/ga.json +50 -0
- homeassistant/components/aprilaire/translations/he.json +4 -4
- homeassistant/components/aprilaire/translations/ko.json +10 -0
- homeassistant/components/apsystems/translations/ko.json +9 -0
- homeassistant/components/aquacell/translations/ko.json +1 -1
- homeassistant/components/aseko_pool_live/translations/ko.json +6 -0
- homeassistant/components/assist_satellite/translations/he.json +1 -1
- homeassistant/components/assist_satellite/translations/sl.json +7 -0
- homeassistant/components/asuswrt/router.py +12 -3
- homeassistant/components/august/manifest.json +1 -1
- homeassistant/components/autarco/translations/ko.json +17 -0
- homeassistant/components/axis/manifest.json +1 -1
- homeassistant/components/backup/translations/he.json +1 -1
- homeassistant/components/bang_olufsen/translations/ga.json +15 -0
- homeassistant/components/blebox/translations/ko.json +3 -1
- homeassistant/components/blink/translations/ga.json +7 -0
- homeassistant/components/blue_current/translations/ko.json +9 -0
- homeassistant/components/bluemaestro/translations/ga.json +9 -0
- homeassistant/components/bluesound/translations/ko.json +10 -0
- homeassistant/components/bluetooth/manifest.json +1 -1
- homeassistant/components/bmw_connected_drive/translations/ga.json +1 -0
- homeassistant/components/bosch_alarm/translations/ko.json +22 -0
- homeassistant/components/bring/translations/ko.json +22 -0
- homeassistant/components/broadlink/updater.py +1 -0
- homeassistant/components/brother/translations/ko.json +5 -0
- homeassistant/components/bsblan/translations/ko.json +6 -0
- homeassistant/components/caldav/manifest.json +1 -1
- homeassistant/components/cambridge_audio/translations/ko.json +16 -0
- homeassistant/components/camera/translations/he.json +1 -1
- homeassistant/components/ccm15/translations/ko.json +12 -0
- homeassistant/components/chacon_dio/translations/ko.json +12 -0
- homeassistant/components/climate/translations/he.json +1 -1
- homeassistant/components/cloud/manifest.json +1 -1
- homeassistant/components/cloud/translations/ga.json +4 -0
- homeassistant/components/cloud/translations/he.json +4 -0
- homeassistant/components/co2signal/translations/ko.json +5 -0
- homeassistant/components/comelit/translations/ko.json +7 -0
- homeassistant/components/cookidoo/translations/ko.json +24 -0
- homeassistant/components/datadog/translations/ko.json +12 -0
- homeassistant/components/datadog/translations/sv.json +17 -1
- homeassistant/components/deluge/translations/he.json +1 -1
- homeassistant/components/devolo_home_control/translations/ko.json +5 -0
- homeassistant/components/devolo_home_network/translations/ko.json +7 -1
- homeassistant/components/doorbird/translations/ko.json +6 -0
- homeassistant/components/downloader/__init__.py +3 -0
- homeassistant/components/downloader/services.py +24 -14
- homeassistant/components/downloader/strings.json +8 -0
- homeassistant/components/downloader/translations/cs.json +8 -0
- homeassistant/components/downloader/translations/de.json +8 -0
- homeassistant/components/downloader/translations/en.json +8 -0
- homeassistant/components/downloader/translations/et.json +8 -0
- homeassistant/components/downloader/translations/ga.json +3 -0
- homeassistant/components/downloader/translations/ru.json +8 -0
- homeassistant/components/downloader/translations/sk.json +8 -0
- homeassistant/components/downloader/translations/zh-Hans.json +8 -0
- homeassistant/components/downloader/translations/zh-Hant.json +8 -0
- homeassistant/components/duke_energy/translations/ko.json +12 -0
- homeassistant/components/duotecno/translations/ko.json +1 -0
- homeassistant/components/ecovacs/manifest.json +1 -1
- homeassistant/components/ecovacs/translations/ga.json +74 -1
- homeassistant/components/ecovacs/translations/he.json +1 -1
- homeassistant/components/ecovacs/translations/ko.json +11 -0
- homeassistant/components/eheimdigital/translations/ko.json +16 -0
- homeassistant/components/electric_kiwi/translations/ga.json +3 -0
- homeassistant/components/electric_kiwi/translations/ko.json +3 -0
- homeassistant/components/elevenlabs/translations/ko.json +1 -1
- homeassistant/components/elmax/translations/ko.json +6 -0
- homeassistant/components/elvia/translations/ko.json +11 -0
- homeassistant/components/emoncms/translations/cs.json +8 -0
- homeassistant/components/emoncms/translations/es.json +8 -0
- homeassistant/components/emoncms/translations/ko.json +12 -0
- homeassistant/components/emoncms/translations/zh-Hans.json +8 -0
- homeassistant/components/energenie_power_sockets/translations/ko.json +11 -0
- homeassistant/components/energy/translations/sl.json +4 -0
- homeassistant/components/enigma2/translations/ko.json +14 -0
- homeassistant/components/enphase_envoy/translations/ga.json +9 -0
- homeassistant/components/enphase_envoy/translations/he.json +1 -1
- homeassistant/components/enphase_envoy/translations/ko.json +13 -0
- homeassistant/components/epic_games_store/translations/ko.json +12 -0
- homeassistant/components/epion/translations/ko.json +11 -0
- homeassistant/components/feedreader/translations/ko.json +16 -0
- homeassistant/components/filter/translations/ko.json +9 -0
- homeassistant/components/fitbit/translations/ko.json +3 -0
- homeassistant/components/flexit_bacnet/translations/ga.json +54 -0
- homeassistant/components/fritz/translations/ko.json +9 -0
- homeassistant/components/fritzbox/translations/ko.json +5 -0
- homeassistant/components/fritzbox_callmonitor/translations/he.json +1 -1
- homeassistant/components/fritzbox_callmonitor/translations/ko.json +11 -0
- homeassistant/components/fronius/__init__.py +6 -0
- homeassistant/components/fronius/translations/he.json +1 -1
- homeassistant/components/fronius/translations/ko.json +5 -0
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/fujitsu_fglair/translations/ko.json +17 -0
- homeassistant/components/fyta/translations/ko.json +16 -0
- homeassistant/components/generic_hygrostat/translations/ko.json +11 -0
- homeassistant/components/generic_thermostat/translations/ko.json +9 -0
- homeassistant/components/geniushub/translations/ko.json +16 -0
- homeassistant/components/geocaching/translations/ko.json +3 -0
- homeassistant/components/gios/translations/sv.json +3 -0
- homeassistant/components/glances/translations/ga.json +66 -0
- homeassistant/components/goalzero/translations/ru.json +3 -0
- homeassistant/components/google/translations/ko.json +3 -0
- homeassistant/components/google_assistant_sdk/translations/ko.json +3 -0
- homeassistant/components/google_drive/translations/ko.json +11 -0
- homeassistant/components/google_generative_ai_conversation/strings.json +3 -3
- homeassistant/components/google_generative_ai_conversation/translations/cs.json +3 -3
- homeassistant/components/google_generative_ai_conversation/translations/de.json +3 -3
- homeassistant/components/google_generative_ai_conversation/translations/el.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/en-GB.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/en.json +3 -3
- homeassistant/components/google_generative_ai_conversation/translations/es.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/et.json +3 -3
- homeassistant/components/google_generative_ai_conversation/translations/fr.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/ga.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/ja.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/ko.json +38 -0
- homeassistant/components/google_generative_ai_conversation/translations/lt.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/pt.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/sk.json +0 -5
- homeassistant/components/google_generative_ai_conversation/translations/sl.json +9 -0
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +3 -3
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +3 -3
- homeassistant/components/google_mail/translations/ko.json +3 -0
- homeassistant/components/google_photos/translations/ko.json +5 -0
- homeassistant/components/google_sheets/translations/ko.json +3 -0
- homeassistant/components/google_tasks/translations/ko.json +3 -0
- homeassistant/components/google_travel_time/translations/ko.json +5 -0
- homeassistant/components/gpsd/translations/ko.json +16 -1
- homeassistant/components/group/translations/ga.json +9 -0
- homeassistant/components/group/translations/he.json +18 -0
- homeassistant/components/group/translations/sk.json +18 -0
- homeassistant/components/habitica/translations/ko.json +32 -0
- homeassistant/components/hassio/issues.py +4 -2
- homeassistant/components/hassio/strings.json +41 -29
- homeassistant/components/hassio/translations/bg.json +0 -1
- homeassistant/components/hassio/translations/ca.json +0 -22
- homeassistant/components/hassio/translations/cs.json +37 -25
- homeassistant/components/hassio/translations/da.json +0 -2
- homeassistant/components/hassio/translations/de.json +37 -25
- homeassistant/components/hassio/translations/el.json +3 -25
- homeassistant/components/hassio/translations/en-GB.json +0 -25
- homeassistant/components/hassio/translations/en.json +37 -25
- homeassistant/components/hassio/translations/es.json +3 -25
- homeassistant/components/hassio/translations/et.json +3 -25
- homeassistant/components/hassio/translations/fi.json +0 -23
- homeassistant/components/hassio/translations/fr.json +0 -24
- homeassistant/components/hassio/translations/fy.json +0 -7
- homeassistant/components/hassio/translations/ga.json +3 -1
- homeassistant/components/hassio/translations/gsw.json +0 -2
- homeassistant/components/hassio/translations/he.json +37 -25
- homeassistant/components/hassio/translations/hr.json +0 -2
- homeassistant/components/hassio/translations/hu.json +0 -25
- homeassistant/components/hassio/translations/id.json +0 -25
- homeassistant/components/hassio/translations/it.json +0 -22
- homeassistant/components/hassio/translations/ja.json +0 -23
- homeassistant/components/hassio/translations/ko.json +3 -22
- homeassistant/components/hassio/translations/lt.json +3 -25
- homeassistant/components/hassio/translations/nb.json +0 -22
- homeassistant/components/hassio/translations/nl.json +0 -23
- homeassistant/components/hassio/translations/pl.json +0 -22
- homeassistant/components/hassio/translations/pt-BR.json +0 -22
- homeassistant/components/hassio/translations/pt.json +0 -25
- homeassistant/components/hassio/translations/ro.json +0 -22
- homeassistant/components/hassio/translations/ru.json +0 -25
- homeassistant/components/hassio/translations/sk.json +3 -25
- homeassistant/components/hassio/translations/sl.json +0 -21
- homeassistant/components/hassio/translations/sv.json +0 -25
- homeassistant/components/hassio/translations/tr.json +0 -25
- homeassistant/components/hassio/translations/uk.json +0 -22
- homeassistant/components/hassio/translations/vi.json +0 -23
- homeassistant/components/hassio/translations/zh-Hans.json +3 -25
- homeassistant/components/hassio/translations/zh-Hant.json +3 -25
- homeassistant/components/heos/translations/ko.json +21 -0
- homeassistant/components/hko/translations/ko.json +11 -0
- homeassistant/components/home_connect/translations/ko.json +3 -0
- homeassistant/components/home_connect/translations/ru.json +6 -4
- homeassistant/components/homeassistant/translations/de.json +1 -1
- homeassistant/components/homeassistant/translations/ga.json +3 -0
- homeassistant/components/homee/translations/ko.json +22 -0
- homeassistant/components/homee/translations/ru.json +5 -0
- homeassistant/components/homekit_controller/translations/he.json +1 -1
- homeassistant/components/homematicip_cloud/translations/sv.json +11 -0
- homeassistant/components/homeworks/translations/ko.json +41 -0
- homeassistant/components/html5/translations/ko.json +9 -0
- homeassistant/components/http/translations/sv.json +1 -1
- homeassistant/components/hue/translations/ga.json +5 -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/husqvarna_automower/manifest.json +1 -1
- homeassistant/components/husqvarna_automower/sensor.py +3 -4
- homeassistant/components/husqvarna_automower/translations/ga.json +16 -0
- homeassistant/components/husqvarna_automower/translations/he.json +7 -0
- homeassistant/components/husqvarna_automower/translations/ko.json +11 -0
- homeassistant/components/huum/translations/ko.json +12 -0
- homeassistant/components/hydrawise/translations/ko.json +15 -0
- homeassistant/components/ibeacon/translations/ga.json +15 -0
- homeassistant/components/imap/translations/ga.json +20 -0
- homeassistant/components/imeon_inverter/translations/ko.json +13 -0
- homeassistant/components/immich/translations/he.json +10 -0
- homeassistant/components/immich/translations/ko.json +18 -0
- homeassistant/components/immich/translations/sv.json +5 -1
- homeassistant/components/incomfort/translations/ko.json +13 -0
- homeassistant/components/intellifire/translations/ko.json +8 -0
- homeassistant/components/iometer/translations/ko.json +11 -0
- homeassistant/components/iotty/translations/ko.json +11 -0
- homeassistant/components/ipp/translations/he.json +1 -1
- homeassistant/components/iron_os/translations/he.json +1 -1
- homeassistant/components/iskra/translations/ko.json +22 -0
- homeassistant/components/ista_ecotrend/translations/ko.json +22 -0
- homeassistant/components/ituran/translations/he.json +3 -0
- homeassistant/components/ituran/translations/sv.json +3 -0
- homeassistant/components/jewish_calendar/translations/ko.json +17 -0
- homeassistant/components/justnimbus/translations/ga.json +27 -0
- homeassistant/components/kitchen_sink/translations/ko.json +11 -0
- homeassistant/components/knocki/translations/ko.json +12 -0
- homeassistant/components/knx/manifest.json +1 -1
- homeassistant/components/knx/translations/zh-Hant.json +1 -1
- homeassistant/components/kostal_plenticore/translations/ko.json +6 -0
- homeassistant/components/kraken/__init__.py +1 -0
- homeassistant/components/kulersky/translations/ko.json +7 -0
- homeassistant/components/lamarzocco/translations/ga.json +13 -0
- homeassistant/components/lamarzocco/translations/ko.json +26 -0
- homeassistant/components/lametric/translations/ko.json +3 -0
- homeassistant/components/lcn/translations/ko.json +58 -0
- homeassistant/components/lcn/translations/ru.json +1 -0
- homeassistant/components/leaone/translations/ga.json +8 -0
- homeassistant/components/leaone/translations/ko.json +11 -0
- homeassistant/components/leaone/translations/zh-Hans.json +2 -1
- homeassistant/components/lektrico/translations/ko.json +10 -0
- homeassistant/components/letpot/translations/ko.json +17 -0
- homeassistant/components/lg_netcast/translations/ga.json +14 -0
- homeassistant/components/lg_netcast/translations/ko.json +12 -0
- homeassistant/components/lg_thinq/translations/he.json +2 -1
- homeassistant/components/linkplay/translations/ko.json +11 -0
- homeassistant/components/linkplay/translations/sv.json +1 -0
- homeassistant/components/litterrobot/translations/sv.json +2 -1
- homeassistant/components/local_file/translations/ko.json +9 -0
- homeassistant/components/luftdaten/translations/ru.json +7 -0
- homeassistant/components/lupusec/translations/ko.json +13 -0
- homeassistant/components/lutron/translations/ko.json +13 -0
- homeassistant/components/lyric/translations/ko.json +3 -0
- homeassistant/components/madvr/translations/ko.json +18 -0
- homeassistant/components/mastodon/translations/ko.json +10 -0
- homeassistant/components/matter/number.py +3 -1
- homeassistant/components/matter/translations/he.json +6 -0
- homeassistant/components/matter/translations/ru.json +3 -0
- homeassistant/components/matter/translations/sv.json +3 -0
- homeassistant/components/matter/vacuum.py +0 -11
- homeassistant/components/mcp/translations/ko.json +16 -0
- homeassistant/components/mealie/manifest.json +1 -1
- homeassistant/components/mealie/todo.py +4 -2
- homeassistant/components/mealie/translations/ko.json +14 -0
- homeassistant/components/mealie/translations/sk.json +14 -1
- homeassistant/components/mealie/translations/sv.json +9 -1
- homeassistant/components/media_extractor/manifest.json +1 -1
- homeassistant/components/media_player/translations/he.json +1 -1
- homeassistant/components/melcloud/translations/ko.json +5 -0
- homeassistant/components/meteo_france/__init__.py +3 -0
- homeassistant/components/metoffice/translations/ko.json +5 -0
- homeassistant/components/microbees/translations/ga.json +2 -1
- homeassistant/components/microbees/translations/ko.json +11 -0
- homeassistant/components/miele/translations/cs.json +24 -1
- homeassistant/components/miele/translations/de.json +5 -5
- homeassistant/components/miele/translations/es.json +46 -1
- homeassistant/components/miele/translations/ga.json +1 -0
- homeassistant/components/miele/translations/he.json +36 -1
- homeassistant/components/miele/translations/ko.json +5 -0
- homeassistant/components/miele/translations/lt.json +13 -1
- homeassistant/components/miele/translations/nl.json +22 -0
- homeassistant/components/miele/translations/sk.json +34 -2
- homeassistant/components/miele/translations/zh-Hans.json +12 -1
- homeassistant/components/mill/__init__.py +1 -0
- homeassistant/components/mill/coordinator.py +2 -0
- homeassistant/components/modbus/translations/ga.json +8 -0
- homeassistant/components/mold_indicator/translations/ko.json +1 -0
- homeassistant/components/monarch_money/translations/ko.json +12 -0
- homeassistant/components/monzo/translations/ko.json +3 -0
- homeassistant/components/motionblinds_ble/translations/ga.json +25 -0
- homeassistant/components/motionmount/translations/ga.json +9 -0
- homeassistant/components/motionmount/translations/ko.json +17 -0
- homeassistant/components/mpd/translations/ko.json +13 -0
- homeassistant/components/mqtt/strings.json +4 -0
- homeassistant/components/mqtt/translations/cs.json +5 -0
- homeassistant/components/mqtt/translations/de.json +4 -0
- homeassistant/components/mqtt/translations/el.json +1 -0
- homeassistant/components/mqtt/translations/en.json +4 -0
- homeassistant/components/mqtt/translations/es.json +39 -5
- homeassistant/components/mqtt/translations/he.json +191 -0
- homeassistant/components/mqtt/translations/ko.json +28 -0
- homeassistant/components/mqtt/translations/lt.json +1 -0
- homeassistant/components/mqtt/translations/ru.json +36 -0
- homeassistant/components/mqtt/translations/sk.json +107 -2
- homeassistant/components/mqtt/translations/sl.json +5 -0
- homeassistant/components/mqtt/translations/sv.json +18 -0
- homeassistant/components/mqtt/translations/zh-Hant.json +45 -45
- homeassistant/components/mqtt/vacuum.py +31 -5
- homeassistant/components/music_assistant/translations/he.json +2 -1
- homeassistant/components/mystrom/translations/ga.json +9 -0
- homeassistant/components/myuplink/translations/ko.json +9 -0
- homeassistant/components/nam/translations/ko.json +5 -0
- homeassistant/components/nasweb/translations/ko.json +13 -0
- homeassistant/components/neato/translations/ko.json +3 -0
- homeassistant/components/nest/translations/ko.json +3 -0
- homeassistant/components/netatmo/translations/ko.json +3 -0
- homeassistant/components/netgear_lte/translations/ko.json +10 -0
- homeassistant/components/nextcloud/translations/ko.json +1 -1
- homeassistant/components/nice_go/translations/ko.json +16 -0
- homeassistant/components/niko_home_control/translations/ko.json +11 -0
- homeassistant/components/ntfy/translations/ko.json +38 -0
- homeassistant/components/nuki/translations/sv.json +1 -1
- homeassistant/components/nut/translations/ko.json +14 -0
- homeassistant/components/ohme/translations/ko.json +20 -0
- homeassistant/components/ollama/strings.json +3 -3
- homeassistant/components/ollama/translations/cs.json +3 -3
- homeassistant/components/ollama/translations/de.json +3 -3
- homeassistant/components/ollama/translations/el.json +0 -5
- homeassistant/components/ollama/translations/en-GB.json +0 -5
- homeassistant/components/ollama/translations/en.json +3 -3
- homeassistant/components/ollama/translations/es.json +0 -5
- homeassistant/components/ollama/translations/et.json +3 -3
- homeassistant/components/ollama/translations/fr.json +0 -5
- homeassistant/components/ollama/translations/ga.json +0 -5
- homeassistant/components/ollama/translations/ja.json +0 -5
- homeassistant/components/ollama/translations/ko.json +31 -0
- homeassistant/components/ollama/translations/lt.json +0 -5
- homeassistant/components/ollama/translations/mk.json +0 -5
- homeassistant/components/ollama/translations/pt.json +0 -5
- homeassistant/components/ollama/translations/ru.json +3 -3
- homeassistant/components/ollama/translations/sk.json +0 -5
- homeassistant/components/ollama/translations/zh-Hans.json +3 -3
- homeassistant/components/ollama/translations/zh-Hant.json +3 -3
- homeassistant/components/ondilo_ico/translations/ko.json +3 -0
- homeassistant/components/onedrive/translations/ko.json +11 -0
- homeassistant/components/onewire/translations/ko.json +6 -0
- homeassistant/components/onkyo/translations/ko.json +16 -0
- homeassistant/components/open_router/strings.json +2 -2
- homeassistant/components/open_router/translations/cs.json +2 -2
- homeassistant/components/open_router/translations/de.json +2 -2
- homeassistant/components/open_router/translations/en-GB.json +0 -4
- homeassistant/components/open_router/translations/en.json +2 -2
- homeassistant/components/open_router/translations/es.json +0 -4
- homeassistant/components/open_router/translations/et.json +2 -2
- homeassistant/components/open_router/translations/fr.json +0 -4
- homeassistant/components/open_router/translations/ga.json +0 -4
- homeassistant/components/open_router/translations/he.json +10 -0
- homeassistant/components/open_router/translations/ko.json +11 -0
- homeassistant/components/open_router/translations/ru.json +4 -0
- homeassistant/components/open_router/translations/zh-Hans.json +2 -2
- homeassistant/components/open_router/translations/zh-Hant.json +2 -2
- homeassistant/components/openai_conversation/__init__.py +93 -20
- homeassistant/components/openai_conversation/config_flow.py +1 -1
- homeassistant/components/openai_conversation/strings.json +3 -3
- homeassistant/components/openai_conversation/translations/cs.json +3 -3
- homeassistant/components/openai_conversation/translations/de.json +3 -3
- homeassistant/components/openai_conversation/translations/el.json +0 -5
- homeassistant/components/openai_conversation/translations/en-GB.json +0 -5
- homeassistant/components/openai_conversation/translations/en.json +3 -3
- homeassistant/components/openai_conversation/translations/es.json +0 -5
- homeassistant/components/openai_conversation/translations/et.json +3 -3
- homeassistant/components/openai_conversation/translations/fr.json +0 -5
- homeassistant/components/openai_conversation/translations/ga.json +0 -5
- homeassistant/components/openai_conversation/translations/it.json +0 -5
- homeassistant/components/openai_conversation/translations/ko.json +20 -0
- homeassistant/components/openai_conversation/translations/lt.json +0 -5
- homeassistant/components/openai_conversation/translations/mk.json +0 -5
- homeassistant/components/openai_conversation/translations/pt.json +0 -5
- homeassistant/components/openai_conversation/translations/ru.json +3 -3
- homeassistant/components/openai_conversation/translations/sk.json +0 -5
- homeassistant/components/openai_conversation/translations/zh-Hans.json +3 -3
- homeassistant/components/openai_conversation/translations/zh-Hant.json +3 -3
- homeassistant/components/openweathermap/translations/he.json +2 -1
- homeassistant/components/openweathermap/translations/ru.json +2 -1
- homeassistant/components/opower/config_flow.py +141 -75
- homeassistant/components/opower/const.py +1 -0
- homeassistant/components/opower/coordinator.py +4 -3
- homeassistant/components/opower/manifest.json +1 -1
- homeassistant/components/opower/strings.json +33 -16
- homeassistant/components/opower/translations/bg.json +0 -10
- homeassistant/components/opower/translations/ca.json +0 -8
- homeassistant/components/opower/translations/cs.json +26 -9
- homeassistant/components/opower/translations/de.json +26 -9
- homeassistant/components/opower/translations/el.json +0 -25
- homeassistant/components/opower/translations/en-GB.json +0 -23
- homeassistant/components/opower/translations/en.json +26 -9
- homeassistant/components/opower/translations/es.json +0 -23
- homeassistant/components/opower/translations/et.json +0 -23
- homeassistant/components/opower/translations/fi.json +0 -2
- homeassistant/components/opower/translations/fr.json +0 -11
- homeassistant/components/opower/translations/fy.json +0 -12
- homeassistant/components/opower/translations/ga.json +0 -16
- homeassistant/components/opower/translations/he.json +0 -12
- homeassistant/components/opower/translations/hu.json +0 -9
- homeassistant/components/opower/translations/id.json +0 -3
- homeassistant/components/opower/translations/it.json +0 -2
- homeassistant/components/opower/translations/ja.json +0 -20
- homeassistant/components/opower/translations/ko.json +20 -2
- homeassistant/components/opower/translations/lt.json +0 -23
- homeassistant/components/opower/translations/nb.json +0 -6
- homeassistant/components/opower/translations/nl.json +0 -9
- homeassistant/components/opower/translations/pl.json +0 -6
- homeassistant/components/opower/translations/pt-BR.json +0 -2
- homeassistant/components/opower/translations/pt.json +0 -23
- homeassistant/components/opower/translations/ro.json +0 -2
- homeassistant/components/opower/translations/ru.json +0 -22
- homeassistant/components/opower/translations/sk.json +0 -23
- homeassistant/components/opower/translations/sl.json +0 -6
- homeassistant/components/opower/translations/sv.json +0 -21
- homeassistant/components/opower/translations/tr.json +0 -2
- homeassistant/components/opower/translations/uk.json +0 -2
- homeassistant/components/opower/translations/zh-Hans.json +0 -23
- homeassistant/components/opower/translations/zh-Hant.json +0 -23
- homeassistant/components/oralb/translations/ga.json +21 -0
- homeassistant/components/osoenergy/translations/zh-Hans.json +1 -0
- homeassistant/components/otbr/translations/ko.json +1 -1
- homeassistant/components/otp/translations/ko.json +11 -0
- homeassistant/components/overkiz/translations/ko.json +1 -0
- homeassistant/components/overseerr/translations/ko.json +15 -0
- homeassistant/components/ovo_energy/translations/ko.json +5 -0
- homeassistant/components/p1_monitor/translations/ko.json +2 -1
- homeassistant/components/palazzetti/translations/ko.json +11 -0
- homeassistant/components/paperless_ngx/translations/ko.json +25 -0
- homeassistant/components/peblar/translations/ko.json +26 -0
- homeassistant/components/pi_hole/translations/ko.json +1 -0
- homeassistant/components/playstation_network/translations/es.json +27 -0
- homeassistant/components/playstation_network/translations/he.json +8 -0
- homeassistant/components/playstation_network/translations/sk.json +19 -0
- homeassistant/components/plugwise/translations/ko.json +5 -0
- homeassistant/components/point/translations/ko.json +7 -0
- homeassistant/components/powerfox/translations/ko.json +23 -0
- homeassistant/components/probe_plus/translations/ko.json +11 -0
- homeassistant/components/proximity/translations/ga.json +59 -1
- homeassistant/components/prusalink/translations/he.json +1 -1
- homeassistant/components/pterodactyl/translations/ko.json +17 -0
- homeassistant/components/pyload/translations/ko.json +34 -0
- homeassistant/components/qbittorrent/translations/he.json +1 -1
- homeassistant/components/qbittorrent/translations/ko.json +10 -1
- homeassistant/components/qnap/translations/ga.json +24 -0
- homeassistant/components/rabbitair/translations/ko.json +12 -0
- homeassistant/components/rainbird/translations/ko.json +5 -0
- homeassistant/components/random/translations/cs.json +2 -0
- homeassistant/components/random/translations/el.json +2 -0
- homeassistant/components/random/translations/es.json +2 -0
- homeassistant/components/random/translations/he.json +2 -0
- homeassistant/components/random/translations/lt.json +1 -0
- homeassistant/components/random/translations/sk.json +1 -0
- homeassistant/components/random/translations/zh-Hans.json +1 -0
- homeassistant/components/rehlko/translations/ko.json +17 -0
- homeassistant/components/remote_calendar/coordinator.py +1 -0
- homeassistant/components/reolink/__init__.py +1 -1
- homeassistant/components/reolink/diagnostics.py +2 -2
- homeassistant/components/reolink/manifest.json +1 -1
- homeassistant/components/reolink/sensor.py +1 -1
- homeassistant/components/reolink/translations/sv.json +28 -13
- homeassistant/components/rfxtrx/translations/ga.json +18 -0
- homeassistant/components/ring/translations/ga.json +11 -0
- homeassistant/components/ring/translations/ko.json +5 -0
- homeassistant/components/risco/translations/he.json +8 -0
- homeassistant/components/roborock/translations/he.json +1 -1
- homeassistant/components/romy/translations/ko.json +14 -0
- homeassistant/components/russound_rio/translations/ko.json +19 -0
- homeassistant/components/ruuvitag_ble/translations/ko.json +11 -0
- homeassistant/components/rympro/translations/ga.json +3 -0
- homeassistant/components/samsungtv/translations/ko.json +6 -0
- homeassistant/components/sanix/translations/ko.json +11 -0
- homeassistant/components/scrape/translations/cs.json +1 -0
- homeassistant/components/scrape/translations/el.json +1 -0
- homeassistant/components/scrape/translations/es.json +1 -0
- homeassistant/components/scrape/translations/he.json +1 -0
- homeassistant/components/scrape/translations/ru.json +1 -0
- homeassistant/components/scrape/translations/zh-Hans.json +1 -0
- homeassistant/components/screenlogic/translations/ga.json +1 -0
- homeassistant/components/sensibo/translations/ko.json +15 -0
- homeassistant/components/sensirion_ble/translations/ga.json +8 -0
- homeassistant/components/sensirion_ble/translations/ko.json +11 -0
- homeassistant/components/sensor/translations/ko.json +3 -0
- homeassistant/components/sensor/translations/sv.json +1 -0
- homeassistant/components/sensorpush_cloud/translations/ko.json +12 -0
- homeassistant/components/sensoterra/translations/ko.json +18 -0
- homeassistant/components/senz/translations/ko.json +3 -0
- homeassistant/components/seventeentrack/translations/ko.json +12 -0
- homeassistant/components/sfr_box/translations/he.json +1 -1
- homeassistant/components/sharkiq/translations/ko.json +6 -0
- homeassistant/components/shelly/translations/ko.json +8 -1
- homeassistant/components/shelly/translations/sv.json +10 -2
- homeassistant/components/simplisafe/__init__.py +1 -0
- homeassistant/components/sky_remote/translations/ko.json +11 -0
- homeassistant/components/slide_local/translations/ko.json +18 -0
- homeassistant/components/sma/translations/ko.json +12 -0
- homeassistant/components/smappee/translations/ko.json +3 -0
- homeassistant/components/smarla/translations/ko.json +11 -0
- homeassistant/components/smartthings/translations/he.json +1 -1
- homeassistant/components/smartthings/translations/ko.json +209 -4
- homeassistant/components/smarttub/controller.py +1 -0
- homeassistant/components/smarty/translations/ko.json +11 -0
- homeassistant/components/smlight/translations/ko.json +15 -0
- homeassistant/components/sms/__init__.py +2 -2
- homeassistant/components/sms/coordinator.py +4 -2
- homeassistant/components/snoo/__init__.py +1 -1
- homeassistant/components/snoo/coordinator.py +8 -1
- homeassistant/components/snoo/translations/ko.json +12 -0
- homeassistant/components/solarlog/translations/ko.json +15 -0
- homeassistant/components/sonos/manifest.json +1 -1
- homeassistant/components/spotify/translations/ko.json +3 -0
- homeassistant/components/sql/translations/cs.json +1 -0
- homeassistant/components/sql/translations/el.json +1 -0
- homeassistant/components/sql/translations/es.json +1 -0
- homeassistant/components/sql/translations/he.json +1 -0
- homeassistant/components/statistics/translations/ko.json +9 -0
- homeassistant/components/stiebel_eltron/translations/ko.json +12 -0
- homeassistant/components/streamlabswater/translations/ko.json +9 -0
- homeassistant/components/swiss_public_transport/translations/ga.json +3 -0
- homeassistant/components/switch_as_x/translations/ga.json +24 -0
- homeassistant/components/switchbot/manifest.json +1 -1
- homeassistant/components/switcher_kis/translations/ko.json +12 -0
- homeassistant/components/system_bridge/translations/ko.json +5 -0
- homeassistant/components/tailwind/translations/ko.json +1 -0
- homeassistant/components/technove/translations/ko.json +11 -0
- homeassistant/components/tedee/translations/ko.json +16 -0
- homeassistant/components/telegram_bot/translations/ko.json +19 -0
- homeassistant/components/template/cover.py +1 -0
- homeassistant/components/template/entity.py +9 -3
- homeassistant/components/template/strings.json +7 -1
- homeassistant/components/template/translations/cs.json +25 -9
- homeassistant/components/template/translations/de.json +7 -1
- homeassistant/components/template/translations/el.json +2 -0
- homeassistant/components/template/translations/en-GB.json +1 -2
- homeassistant/components/template/translations/en.json +7 -1
- homeassistant/components/template/translations/es.json +116 -19
- homeassistant/components/template/translations/et.json +7 -1
- homeassistant/components/template/translations/fr.json +1 -2
- homeassistant/components/template/translations/ga.json +7 -2
- homeassistant/components/template/translations/he.json +693 -18
- homeassistant/components/template/translations/ko.json +106 -1
- homeassistant/components/template/translations/lt.json +24 -0
- homeassistant/components/template/translations/nl.json +1 -0
- homeassistant/components/template/translations/ru.json +35 -5
- homeassistant/components/template/translations/sk.json +244 -28
- homeassistant/components/template/translations/sl.json +478 -12
- homeassistant/components/template/translations/sv.json +4 -0
- homeassistant/components/template/translations/zh-Hans.json +16 -1
- homeassistant/components/template/translations/zh-Hant.json +7 -1
- homeassistant/components/template/vacuum.py +46 -1
- homeassistant/components/tesla_fleet/translations/ko.json +9 -0
- homeassistant/components/teslemetry/models.py +1 -1
- homeassistant/components/teslemetry/sensor.py +8 -7
- homeassistant/components/teslemetry/translations/ga.json +19 -1
- homeassistant/components/teslemetry/translations/he.json +1 -1
- homeassistant/components/teslemetry/translations/ko.json +30 -0
- homeassistant/components/tessie/translations/ga.json +43 -1
- homeassistant/components/tessie/translations/ko.json +5 -0
- homeassistant/components/thethingsnetwork/translations/ko.json +3 -1
- homeassistant/components/tibber/translations/ga.json +45 -0
- homeassistant/components/tilt_pi/translations/ko.json +11 -0
- homeassistant/components/time_date/translations/ga.json +3 -0
- homeassistant/components/timer/translations/he.json +1 -1
- homeassistant/components/toon/translations/ko.json +3 -0
- homeassistant/components/totalconnect/translations/ko.json +3 -0
- homeassistant/components/touchline_sl/translations/ko.json +12 -0
- homeassistant/components/tplink/translations/ko.json +29 -0
- homeassistant/components/traccar_server/translations/ga.json +4 -1
- homeassistant/components/traccar_server/translations/ko.json +20 -0
- homeassistant/components/trafikverket_camera/translations/ko.json +11 -0
- homeassistant/components/trafikverket_train/translations/ko.json +5 -0
- homeassistant/components/trafikverket_weatherstation/translations/ko.json +5 -0
- homeassistant/components/transmission/translations/he.json +1 -1
- homeassistant/components/transmission/translations/ko.json +1 -0
- homeassistant/components/trend/translations/ko.json +9 -0
- homeassistant/components/triggercmd/translations/ko.json +11 -0
- homeassistant/components/tuya/__init__.py +15 -0
- homeassistant/components/tuya/fan.py +3 -1
- homeassistant/components/tuya/sensor.py +7 -0
- homeassistant/components/tuya/translations/es.json +12 -0
- homeassistant/components/tuya/translations/he.json +3 -0
- homeassistant/components/tuya/translations/sk.json +6 -0
- homeassistant/components/tuya/translations/sv.json +33 -0
- homeassistant/components/tuya/vacuum.py +1 -15
- homeassistant/components/unifi/hub/entity_loader.py +5 -3
- homeassistant/components/unifi/hub/hub.py +1 -1
- homeassistant/components/unifiprotect/translations/ga.json +4 -2
- homeassistant/components/unifiprotect/translations/ko.json +3 -0
- homeassistant/components/unifiprotect/translations/ru.json +5 -1
- homeassistant/components/uptime_kuma/translations/es.json +10 -0
- homeassistant/components/uptime_kuma/translations/he.json +5 -0
- homeassistant/components/uptime_kuma/translations/ko.json +30 -0
- homeassistant/components/uptime_kuma/translations/sk.json +3 -1
- homeassistant/components/uptime_kuma/translations/sv.json +1 -0
- homeassistant/components/utility_meter/translations/ga.json +22 -0
- homeassistant/components/vacuum/__init__.py +12 -2
- homeassistant/components/vacuum/translations/he.json +1 -1
- homeassistant/components/vallox/translations/ru.json +5 -0
- homeassistant/components/velbus/translations/ko.json +14 -0
- homeassistant/components/velux/translations/ko.json +15 -0
- homeassistant/components/venstar/translations/he.json +1 -1
- homeassistant/components/vesync/translations/ko.json +6 -0
- homeassistant/components/vodafone_station/translations/ko.json +7 -0
- homeassistant/components/volvo/icons.json +9 -5
- homeassistant/components/volvo/translations/he.json +59 -0
- homeassistant/components/volvo/translations/ko.json +11 -0
- homeassistant/components/volvo/translations/sv.json +21 -0
- homeassistant/components/waze_travel_time/translations/he.json +10 -0
- homeassistant/components/waze_travel_time/translations/ru.json +10 -0
- homeassistant/components/weatherflow_cloud/translations/sk.json +27 -0
- homeassistant/components/weatherflow_cloud/translations/sv.json +9 -0
- homeassistant/components/webdav/translations/ko.json +12 -0
- homeassistant/components/webmin/translations/ko.json +14 -0
- homeassistant/components/weheat/translations/ko.json +11 -0
- homeassistant/components/whirlpool/translations/ko.json +5 -0
- homeassistant/components/whois/translations/ru.json +1 -0
- homeassistant/components/withings/translations/ko.json +3 -0
- homeassistant/components/wmspro/translations/ko.json +11 -0
- homeassistant/components/worldclock/translations/ko.json +11 -0
- homeassistant/components/wyoming/manifest.json +1 -1
- homeassistant/components/xbox/translations/ko.json +3 -0
- homeassistant/components/xiaomi_ble/translations/ga.json +28 -2
- homeassistant/components/xiaomi_ble/translations/ko.json +6 -0
- homeassistant/components/yale/manifest.json +1 -1
- homeassistant/components/yale/translations/ko.json +11 -0
- homeassistant/components/yale_smart_alarm/translations/ko.json +6 -0
- homeassistant/components/yolink/translations/ko.json +3 -0
- homeassistant/components/zha/manifest.json +1 -1
- homeassistant/components/zha/translations/ga.json +3 -0
- homeassistant/components/zha/translations/he.json +21 -1
- homeassistant/components/zha/translations/ru.json +6 -0
- homeassistant/components/zha/translations/sk.json +12 -0
- homeassistant/components/zha/translations/sl.json +1 -0
- homeassistant/components/zimi/translations/ko.json +18 -0
- homeassistant/components/zwave_js/__init__.py +33 -25
- homeassistant/components/zwave_js/config_flow.py +16 -2
- homeassistant/components/zwave_js/manifest.json +1 -1
- homeassistant/components/zwave_js/strings.json +1 -1
- homeassistant/components/zwave_js/translations/cs.json +1 -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 +0 -1
- homeassistant/components/zwave_js/translations/hu.json +0 -1
- homeassistant/components/zwave_js/translations/ko.json +20 -0
- 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 +1 -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 +1 -1
- homeassistant/components/zwave_js/translations/zh-Hant.json +1 -1
- homeassistant/const.py +1 -1
- homeassistant/helpers/device_registry.py +5 -2
- homeassistant/package_constraints.txt +3 -3
- {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b4.dist-info}/METADATA +2 -2
- {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b4.dist-info}/RECORD +696 -602
- {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b4.dist-info}/WHEEL +0 -0
- {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b4.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b4.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b4.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.8.0b2.dist-info → homeassistant-2025.8.0b4.dist-info}/top_level.txt +0 -0
|
@@ -9,6 +9,8 @@ from typing import Any
|
|
|
9
9
|
from opower import (
|
|
10
10
|
CannotConnect,
|
|
11
11
|
InvalidAuth,
|
|
12
|
+
MfaChallenge,
|
|
13
|
+
MfaHandlerBase,
|
|
12
14
|
Opower,
|
|
13
15
|
create_cookie_jar,
|
|
14
16
|
get_supported_utility_names,
|
|
@@ -16,49 +18,34 @@ from opower import (
|
|
|
16
18
|
)
|
|
17
19
|
import voluptuous as vol
|
|
18
20
|
|
|
19
|
-
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
|
|
21
|
+
from homeassistant.config_entries import SOURCE_REAUTH, ConfigFlow, ConfigFlowResult
|
|
20
22
|
from homeassistant.const import CONF_NAME, CONF_PASSWORD, CONF_USERNAME
|
|
21
23
|
from homeassistant.core import HomeAssistant, callback
|
|
22
24
|
from homeassistant.helpers.aiohttp_client import async_create_clientsession
|
|
23
25
|
from homeassistant.helpers.typing import VolDictType
|
|
24
26
|
|
|
25
|
-
from .const import CONF_TOTP_SECRET, CONF_UTILITY, DOMAIN
|
|
27
|
+
from .const import CONF_LOGIN_DATA, CONF_TOTP_SECRET, CONF_UTILITY, DOMAIN
|
|
26
28
|
|
|
27
29
|
_LOGGER = logging.getLogger(__name__)
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
vol.Required(CONF_UTILITY): vol.In(get_supported_utility_names()),
|
|
33
|
-
vol.Required(CONF_USERNAME): str,
|
|
34
|
-
vol.Required(CONF_PASSWORD): str,
|
|
35
|
-
}
|
|
36
|
-
)
|
|
31
|
+
CONF_MFA_CODE = "mfa_code"
|
|
32
|
+
CONF_MFA_METHOD = "mfa_method"
|
|
37
33
|
|
|
38
34
|
|
|
39
35
|
async def _validate_login(
|
|
40
|
-
hass: HomeAssistant,
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
hass: HomeAssistant,
|
|
37
|
+
data: Mapping[str, Any],
|
|
38
|
+
) -> None:
|
|
39
|
+
"""Validate login data and raise exceptions on failure."""
|
|
43
40
|
api = Opower(
|
|
44
41
|
async_create_clientsession(hass, cookie_jar=create_cookie_jar()),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
data[CONF_UTILITY],
|
|
43
|
+
data[CONF_USERNAME],
|
|
44
|
+
data[CONF_PASSWORD],
|
|
45
|
+
data.get(CONF_TOTP_SECRET),
|
|
46
|
+
data.get(CONF_LOGIN_DATA),
|
|
49
47
|
)
|
|
50
|
-
|
|
51
|
-
try:
|
|
52
|
-
await api.async_login()
|
|
53
|
-
except InvalidAuth:
|
|
54
|
-
_LOGGER.exception(
|
|
55
|
-
"Invalid auth when connecting to %s", login_data[CONF_UTILITY]
|
|
56
|
-
)
|
|
57
|
-
errors["base"] = "invalid_auth"
|
|
58
|
-
except CannotConnect:
|
|
59
|
-
_LOGGER.exception("Could not connect to %s", login_data[CONF_UTILITY])
|
|
60
|
-
errors["base"] = "cannot_connect"
|
|
61
|
-
return errors
|
|
48
|
+
await api.async_login()
|
|
62
49
|
|
|
63
50
|
|
|
64
51
|
class OpowerConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
@@ -68,81 +55,147 @@ class OpowerConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
68
55
|
|
|
69
56
|
def __init__(self) -> None:
|
|
70
57
|
"""Initialize a new OpowerConfigFlow."""
|
|
71
|
-
self.
|
|
58
|
+
self._data: dict[str, Any] = {}
|
|
59
|
+
self.mfa_handler: MfaHandlerBase | None = None
|
|
72
60
|
|
|
73
61
|
async def async_step_user(
|
|
74
62
|
self, user_input: dict[str, Any] | None = None
|
|
75
63
|
) -> ConfigFlowResult:
|
|
76
|
-
"""Handle the initial step."""
|
|
64
|
+
"""Handle the initial step (select utility)."""
|
|
65
|
+
if user_input is not None:
|
|
66
|
+
self._data[CONF_UTILITY] = user_input[CONF_UTILITY]
|
|
67
|
+
return await self.async_step_credentials()
|
|
68
|
+
|
|
69
|
+
return self.async_show_form(
|
|
70
|
+
step_id="user",
|
|
71
|
+
data_schema=vol.Schema(
|
|
72
|
+
{vol.Required(CONF_UTILITY): vol.In(get_supported_utility_names())}
|
|
73
|
+
),
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
async def async_step_credentials(
|
|
77
|
+
self, user_input: dict[str, Any] | None = None
|
|
78
|
+
) -> ConfigFlowResult:
|
|
79
|
+
"""Handle credentials step."""
|
|
77
80
|
errors: dict[str, str] = {}
|
|
81
|
+
utility = select_utility(self._data[CONF_UTILITY])
|
|
82
|
+
|
|
78
83
|
if user_input is not None:
|
|
84
|
+
self._data.update(user_input)
|
|
85
|
+
|
|
79
86
|
self._async_abort_entries_match(
|
|
80
87
|
{
|
|
81
|
-
CONF_UTILITY:
|
|
82
|
-
CONF_USERNAME:
|
|
88
|
+
CONF_UTILITY: self._data[CONF_UTILITY],
|
|
89
|
+
CONF_USERNAME: self._data[CONF_USERNAME],
|
|
83
90
|
}
|
|
84
91
|
)
|
|
85
|
-
if select_utility(user_input[CONF_UTILITY]).accepts_mfa():
|
|
86
|
-
self.utility_info = user_input
|
|
87
|
-
return await self.async_step_mfa()
|
|
88
92
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
try:
|
|
94
|
+
await _validate_login(self.hass, self._data)
|
|
95
|
+
except MfaChallenge as exc:
|
|
96
|
+
self.mfa_handler = exc.handler
|
|
97
|
+
return await self.async_step_mfa_options()
|
|
98
|
+
except InvalidAuth:
|
|
99
|
+
errors["base"] = "invalid_auth"
|
|
100
|
+
except CannotConnect:
|
|
101
|
+
errors["base"] = "cannot_connect"
|
|
102
|
+
else:
|
|
103
|
+
return self._async_create_opower_entry(self._data)
|
|
104
|
+
|
|
105
|
+
schema_dict: VolDictType = {
|
|
106
|
+
vol.Required(CONF_USERNAME): str,
|
|
107
|
+
vol.Required(CONF_PASSWORD): str,
|
|
108
|
+
}
|
|
109
|
+
if utility.accepts_totp_secret():
|
|
110
|
+
schema_dict[vol.Optional(CONF_TOTP_SECRET)] = str
|
|
111
|
+
|
|
95
112
|
return self.async_show_form(
|
|
96
|
-
step_id="
|
|
113
|
+
step_id="credentials",
|
|
97
114
|
data_schema=self.add_suggested_values_to_schema(
|
|
98
|
-
|
|
115
|
+
vol.Schema(schema_dict), user_input
|
|
99
116
|
),
|
|
100
117
|
errors=errors,
|
|
101
118
|
)
|
|
102
119
|
|
|
103
|
-
async def
|
|
120
|
+
async def async_step_mfa_options(
|
|
104
121
|
self, user_input: dict[str, Any] | None = None
|
|
105
122
|
) -> ConfigFlowResult:
|
|
106
|
-
"""Handle MFA step."""
|
|
107
|
-
assert self.utility_info is not None
|
|
123
|
+
"""Handle MFA options step."""
|
|
108
124
|
errors: dict[str, str] = {}
|
|
125
|
+
assert self.mfa_handler is not None
|
|
126
|
+
|
|
109
127
|
if user_input is not None:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
128
|
+
method = user_input[CONF_MFA_METHOD]
|
|
129
|
+
try:
|
|
130
|
+
await self.mfa_handler.async_select_mfa_option(method)
|
|
131
|
+
except CannotConnect:
|
|
132
|
+
errors["base"] = "cannot_connect"
|
|
133
|
+
else:
|
|
134
|
+
return await self.async_step_mfa_code()
|
|
135
|
+
|
|
136
|
+
mfa_options = await self.mfa_handler.async_get_mfa_options()
|
|
137
|
+
if not mfa_options:
|
|
138
|
+
return await self.async_step_mfa_code()
|
|
139
|
+
return self.async_show_form(
|
|
140
|
+
step_id="mfa_options",
|
|
141
|
+
data_schema=self.add_suggested_values_to_schema(
|
|
142
|
+
vol.Schema({vol.Required(CONF_MFA_METHOD): vol.In(mfa_options)}),
|
|
143
|
+
user_input,
|
|
144
|
+
),
|
|
145
|
+
errors=errors,
|
|
146
|
+
)
|
|
124
147
|
|
|
125
|
-
|
|
148
|
+
async def async_step_mfa_code(
|
|
149
|
+
self, user_input: dict[str, Any] | None = None
|
|
150
|
+
) -> ConfigFlowResult:
|
|
151
|
+
"""Handle MFA code submission step."""
|
|
152
|
+
assert self.mfa_handler is not None
|
|
153
|
+
errors: dict[str, str] = {}
|
|
154
|
+
if user_input is not None:
|
|
155
|
+
code = user_input[CONF_MFA_CODE]
|
|
156
|
+
try:
|
|
157
|
+
login_data = await self.mfa_handler.async_submit_mfa_code(code)
|
|
158
|
+
except InvalidAuth:
|
|
159
|
+
errors["base"] = "invalid_mfa_code"
|
|
160
|
+
except CannotConnect:
|
|
161
|
+
errors["base"] = "cannot_connect"
|
|
162
|
+
else:
|
|
163
|
+
self._data[CONF_LOGIN_DATA] = login_data
|
|
164
|
+
if self.source == SOURCE_REAUTH:
|
|
165
|
+
return self.async_update_reload_and_abort(
|
|
166
|
+
self._get_reauth_entry(), data=self._data
|
|
167
|
+
)
|
|
168
|
+
return self._async_create_opower_entry(self._data)
|
|
126
169
|
|
|
127
170
|
return self.async_show_form(
|
|
128
|
-
step_id="
|
|
129
|
-
data_schema=
|
|
171
|
+
step_id="mfa_code",
|
|
172
|
+
data_schema=self.add_suggested_values_to_schema(
|
|
173
|
+
vol.Schema({vol.Required(CONF_MFA_CODE): str}), user_input
|
|
174
|
+
),
|
|
130
175
|
errors=errors,
|
|
131
176
|
)
|
|
132
177
|
|
|
133
178
|
@callback
|
|
134
|
-
def _async_create_opower_entry(
|
|
179
|
+
def _async_create_opower_entry(
|
|
180
|
+
self, data: dict[str, Any], **kwargs: Any
|
|
181
|
+
) -> ConfigFlowResult:
|
|
135
182
|
"""Create the config entry."""
|
|
136
183
|
return self.async_create_entry(
|
|
137
184
|
title=f"{data[CONF_UTILITY]} ({data[CONF_USERNAME]})",
|
|
138
185
|
data=data,
|
|
186
|
+
**kwargs,
|
|
139
187
|
)
|
|
140
188
|
|
|
141
189
|
async def async_step_reauth(
|
|
142
190
|
self, entry_data: Mapping[str, Any]
|
|
143
191
|
) -> ConfigFlowResult:
|
|
144
192
|
"""Handle configuration by re-auth."""
|
|
145
|
-
|
|
193
|
+
reauth_entry = self._get_reauth_entry()
|
|
194
|
+
self._data = dict(reauth_entry.data)
|
|
195
|
+
return self.async_show_form(
|
|
196
|
+
step_id="reauth_confirm",
|
|
197
|
+
description_placeholders={CONF_NAME: reauth_entry.title},
|
|
198
|
+
)
|
|
146
199
|
|
|
147
200
|
async def async_step_reauth_confirm(
|
|
148
201
|
self, user_input: dict[str, Any] | None = None
|
|
@@ -150,21 +203,34 @@ class OpowerConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
150
203
|
"""Dialog that informs the user that reauth is required."""
|
|
151
204
|
errors: dict[str, str] = {}
|
|
152
205
|
reauth_entry = self._get_reauth_entry()
|
|
206
|
+
|
|
153
207
|
if user_input is not None:
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
208
|
+
self._data.update(user_input)
|
|
209
|
+
try:
|
|
210
|
+
await _validate_login(self.hass, self._data)
|
|
211
|
+
except MfaChallenge as exc:
|
|
212
|
+
self.mfa_handler = exc.handler
|
|
213
|
+
return await self.async_step_mfa_options()
|
|
214
|
+
except InvalidAuth:
|
|
215
|
+
errors["base"] = "invalid_auth"
|
|
216
|
+
except CannotConnect:
|
|
217
|
+
errors["base"] = "cannot_connect"
|
|
218
|
+
else:
|
|
219
|
+
return self.async_update_reload_and_abort(reauth_entry, data=self._data)
|
|
158
220
|
|
|
159
|
-
|
|
160
|
-
|
|
221
|
+
utility = select_utility(self._data[CONF_UTILITY])
|
|
222
|
+
schema_dict: VolDictType = {
|
|
223
|
+
vol.Required(CONF_USERNAME): str,
|
|
161
224
|
vol.Required(CONF_PASSWORD): str,
|
|
162
225
|
}
|
|
163
|
-
if
|
|
164
|
-
|
|
226
|
+
if utility.accepts_totp_secret():
|
|
227
|
+
schema_dict[vol.Optional(CONF_TOTP_SECRET)] = str
|
|
228
|
+
|
|
165
229
|
return self.async_show_form(
|
|
166
230
|
step_id="reauth_confirm",
|
|
167
|
-
data_schema=
|
|
231
|
+
data_schema=self.add_suggested_values_to_schema(
|
|
232
|
+
vol.Schema(schema_dict), self._data
|
|
233
|
+
),
|
|
168
234
|
errors=errors,
|
|
169
235
|
description_placeholders={CONF_NAME: reauth_entry.title},
|
|
170
236
|
)
|
|
@@ -14,7 +14,7 @@ from opower import (
|
|
|
14
14
|
ReadResolution,
|
|
15
15
|
create_cookie_jar,
|
|
16
16
|
)
|
|
17
|
-
from opower.exceptions import ApiException, CannotConnect, InvalidAuth
|
|
17
|
+
from opower.exceptions import ApiException, CannotConnect, InvalidAuth, MfaChallenge
|
|
18
18
|
|
|
19
19
|
from homeassistant.components.recorder import get_instance
|
|
20
20
|
from homeassistant.components.recorder.models import (
|
|
@@ -36,7 +36,7 @@ from homeassistant.helpers.aiohttp_client import async_create_clientsession
|
|
|
36
36
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
|
37
37
|
from homeassistant.util import dt as dt_util
|
|
38
38
|
|
|
39
|
-
from .const import CONF_TOTP_SECRET, CONF_UTILITY, DOMAIN
|
|
39
|
+
from .const import CONF_LOGIN_DATA, CONF_TOTP_SECRET, CONF_UTILITY, DOMAIN
|
|
40
40
|
|
|
41
41
|
_LOGGER = logging.getLogger(__name__)
|
|
42
42
|
|
|
@@ -69,6 +69,7 @@ class OpowerCoordinator(DataUpdateCoordinator[dict[str, Forecast]]):
|
|
|
69
69
|
config_entry.data[CONF_USERNAME],
|
|
70
70
|
config_entry.data[CONF_PASSWORD],
|
|
71
71
|
config_entry.data.get(CONF_TOTP_SECRET),
|
|
72
|
+
config_entry.data.get(CONF_LOGIN_DATA),
|
|
72
73
|
)
|
|
73
74
|
|
|
74
75
|
@callback
|
|
@@ -90,7 +91,7 @@ class OpowerCoordinator(DataUpdateCoordinator[dict[str, Forecast]]):
|
|
|
90
91
|
# Given the infrequent updating (every 12h)
|
|
91
92
|
# assume previous session has expired and re-login.
|
|
92
93
|
await self.api.async_login()
|
|
93
|
-
except InvalidAuth as err:
|
|
94
|
+
except (InvalidAuth, MfaChallenge) as err:
|
|
94
95
|
_LOGGER.error("Error during login: %s", err)
|
|
95
96
|
raise ConfigEntryAuthFailed from err
|
|
96
97
|
except CannotConnect as err:
|
|
@@ -3,27 +3,43 @@
|
|
|
3
3
|
"step": {
|
|
4
4
|
"user": {
|
|
5
5
|
"data": {
|
|
6
|
-
"utility": "Utility name"
|
|
7
|
-
"username": "[%key:common::config_flow::data::username%]",
|
|
8
|
-
"password": "[%key:common::config_flow::data::password%]"
|
|
6
|
+
"utility": "Utility name"
|
|
9
7
|
},
|
|
10
8
|
"data_description": {
|
|
11
|
-
"utility": "The name of your utility provider"
|
|
12
|
-
"username": "The username for your utility account",
|
|
13
|
-
"password": "The password for your utility account"
|
|
9
|
+
"utility": "The name of your utility provider"
|
|
14
10
|
}
|
|
15
11
|
},
|
|
16
|
-
"
|
|
17
|
-
"
|
|
12
|
+
"credentials": {
|
|
13
|
+
"title": "Enter Credentials",
|
|
18
14
|
"data": {
|
|
19
15
|
"username": "[%key:common::config_flow::data::username%]",
|
|
20
16
|
"password": "[%key:common::config_flow::data::password%]",
|
|
21
17
|
"totp_secret": "TOTP secret"
|
|
22
18
|
},
|
|
23
19
|
"data_description": {
|
|
24
|
-
"username": "
|
|
25
|
-
"password": "
|
|
26
|
-
"totp_secret": "
|
|
20
|
+
"username": "The username for your utility account",
|
|
21
|
+
"password": "The password for your utility account",
|
|
22
|
+
"totp_secret": "This is not a 6-digit code. It is a string of around 16 characters containing the shared secret that enables your authenticator app to generate the correct time-based code at the appropriate time. See the documentation."
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"mfa_options": {
|
|
26
|
+
"title": "Multi-factor authentication",
|
|
27
|
+
"description": "Your account requires multi-factor authentication (MFA). Select a method to receive your security code.",
|
|
28
|
+
"data": {
|
|
29
|
+
"mfa_method": "MFA method"
|
|
30
|
+
},
|
|
31
|
+
"data_description": {
|
|
32
|
+
"mfa_method": "How to receive your security code"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"mfa_code": {
|
|
36
|
+
"title": "Enter security code",
|
|
37
|
+
"description": "A security code has been sent via your selected method. Please enter it below to complete login.",
|
|
38
|
+
"data": {
|
|
39
|
+
"mfa_code": "Security code"
|
|
40
|
+
},
|
|
41
|
+
"data_description": {
|
|
42
|
+
"mfa_code": "Typically a 6-digit code"
|
|
27
43
|
}
|
|
28
44
|
},
|
|
29
45
|
"reauth_confirm": {
|
|
@@ -31,18 +47,19 @@
|
|
|
31
47
|
"data": {
|
|
32
48
|
"username": "[%key:common::config_flow::data::username%]",
|
|
33
49
|
"password": "[%key:common::config_flow::data::password%]",
|
|
34
|
-
"totp_secret": "[%key:component::opower::config::step::
|
|
50
|
+
"totp_secret": "[%key:component::opower::config::step::credentials::data::totp_secret%]"
|
|
35
51
|
},
|
|
36
52
|
"data_description": {
|
|
37
|
-
"username": "[%key:component::opower::config::step::
|
|
38
|
-
"password": "[%key:component::opower::config::step::
|
|
39
|
-
"totp_secret": "
|
|
53
|
+
"username": "[%key:component::opower::config::step::credentials::data_description::username%]",
|
|
54
|
+
"password": "[%key:component::opower::config::step::credentials::data_description::password%]",
|
|
55
|
+
"totp_secret": "[%key:component::opower::config::step::credentials::data_description::totp_secret%]"
|
|
40
56
|
}
|
|
41
57
|
}
|
|
42
58
|
},
|
|
43
59
|
"error": {
|
|
44
60
|
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
|
|
45
|
-
"invalid_auth": "[%key:common::config_flow::error::invalid_auth%]"
|
|
61
|
+
"invalid_auth": "[%key:common::config_flow::error::invalid_auth%]",
|
|
62
|
+
"invalid_mfa_code": "The security code is incorrect. Please try again."
|
|
46
63
|
},
|
|
47
64
|
"abort": {
|
|
48
65
|
"already_configured": "[%key:common::config_flow::abort::already_configured_service%]",
|
|
@@ -9,12 +9,6 @@
|
|
|
9
9
|
"invalid_auth": "\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f"
|
|
10
10
|
},
|
|
11
11
|
"step": {
|
|
12
|
-
"mfa": {
|
|
13
|
-
"data": {
|
|
14
|
-
"password": "\u041f\u0430\u0440\u043e\u043b\u0430",
|
|
15
|
-
"username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435"
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
12
|
"reauth_confirm": {
|
|
19
13
|
"data": {
|
|
20
14
|
"password": "\u041f\u0430\u0440\u043e\u043b\u0430",
|
|
@@ -23,10 +17,6 @@
|
|
|
23
17
|
"title": "\u0410\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 {name} \u0435 \u0438\u0437\u0442\u0435\u043a\u043b\u0430"
|
|
24
18
|
},
|
|
25
19
|
"user": {
|
|
26
|
-
"data": {
|
|
27
|
-
"password": "\u041f\u0430\u0440\u043e\u043b\u0430",
|
|
28
|
-
"username": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435"
|
|
29
|
-
},
|
|
30
20
|
"data_description": {
|
|
31
21
|
"utility": "The name of your utility provider"
|
|
32
22
|
}
|
|
@@ -9,12 +9,6 @@
|
|
|
9
9
|
"invalid_auth": "Autenticaci\u00f3 inv\u00e0lida"
|
|
10
10
|
},
|
|
11
11
|
"step": {
|
|
12
|
-
"mfa": {
|
|
13
|
-
"data": {
|
|
14
|
-
"password": "Contrasenya",
|
|
15
|
-
"username": "Nom d'usuari"
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
12
|
"reauth_confirm": {
|
|
19
13
|
"data": {
|
|
20
14
|
"password": "Contrasenya",
|
|
@@ -24,8 +18,6 @@
|
|
|
24
18
|
},
|
|
25
19
|
"user": {
|
|
26
20
|
"data": {
|
|
27
|
-
"password": "Contrasenya",
|
|
28
|
-
"username": "Nom d'usuari",
|
|
29
21
|
"utility": "Nom de la xarxa"
|
|
30
22
|
}
|
|
31
23
|
}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
},
|
|
7
7
|
"error": {
|
|
8
8
|
"cannot_connect": "Nepoda\u0159ilo se p\u0159ipojit",
|
|
9
|
-
"invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed"
|
|
9
|
+
"invalid_auth": "Neplatn\u00e9 ov\u011b\u0159en\u00ed",
|
|
10
|
+
"invalid_mfa_code": "Bezpe\u010dnostn\u00ed k\u00f3d je nespr\u00e1vn\u00fd. Zkuste to znovu."
|
|
10
11
|
},
|
|
11
12
|
"step": {
|
|
12
|
-
"
|
|
13
|
+
"credentials": {
|
|
13
14
|
"data": {
|
|
14
15
|
"password": "Heslo",
|
|
15
16
|
"totp_secret": "Tajn\u00fd kl\u00ed\u010d TOTP",
|
|
@@ -17,10 +18,30 @@
|
|
|
17
18
|
},
|
|
18
19
|
"data_description": {
|
|
19
20
|
"password": "Heslo k va\u0161emu \u00fa\u010dtu pro energie",
|
|
20
|
-
"totp_secret": "
|
|
21
|
+
"totp_secret": "Toto nen\u00ed 6m\u00edstn\u00fd k\u00f3d. Je to \u0159et\u011bzec o d\u00e9lce p\u0159ibli\u017en\u011b 16 znak\u016f obsahuj\u00edc\u00ed sd\u00edlen\u00fd tajn\u00fd kl\u00ed\u010d, kter\u00fd umo\u017e\u0148uje va\u0161\u00ed ov\u011b\u0159ovac\u00ed aplikaci vygenerovat spr\u00e1vn\u00fd k\u00f3d zalo\u017een\u00fd na \u010dase ve spr\u00e1vn\u00fd \u010das. Viz dokumentace.",
|
|
21
22
|
"username": "U\u017eivatelsk\u00e9 jm\u00e9no k va\u0161emu \u00fa\u010dtu pro energie"
|
|
22
23
|
},
|
|
23
|
-
"
|
|
24
|
+
"title": "Zadejte p\u0159ihla\u0161ovac\u00ed \u00fadaje"
|
|
25
|
+
},
|
|
26
|
+
"mfa_code": {
|
|
27
|
+
"data": {
|
|
28
|
+
"mfa_code": "Bezpe\u010dnostn\u00ed k\u00f3d"
|
|
29
|
+
},
|
|
30
|
+
"data_description": {
|
|
31
|
+
"mfa_code": "Obvykle \u0161estim\u00edstn\u00fd k\u00f3d"
|
|
32
|
+
},
|
|
33
|
+
"description": "Bezpe\u010dnostn\u00ed k\u00f3d byl odesl\u00e1n zvolenou metodou. Zadejte jej n\u00ed\u017ee pro dokon\u010den\u00ed p\u0159ihl\u00e1\u0161en\u00ed.",
|
|
34
|
+
"title": "Zadat bezpe\u010dnostn\u00ed k\u00f3d"
|
|
35
|
+
},
|
|
36
|
+
"mfa_options": {
|
|
37
|
+
"data": {
|
|
38
|
+
"mfa_method": "Metoda MFA"
|
|
39
|
+
},
|
|
40
|
+
"data_description": {
|
|
41
|
+
"mfa_method": "Jak z\u00edskat bezpe\u010dnostn\u00ed k\u00f3d"
|
|
42
|
+
},
|
|
43
|
+
"description": "V\u00e1\u0161 \u00fa\u010det vy\u017eaduje v\u00edcefaktorov\u00e9 ov\u011b\u0159ov\u00e1n\u00ed (MFA). Vyberte metodu, jak chcete, abyste obdr\u017eeli bezpe\u010dnostn\u00ed k\u00f3d.",
|
|
44
|
+
"title": "V\u00edcefaktorov\u00e9 ov\u011b\u0159ov\u00e1n\u00ed"
|
|
24
45
|
},
|
|
25
46
|
"reauth_confirm": {
|
|
26
47
|
"data": {
|
|
@@ -30,20 +51,16 @@
|
|
|
30
51
|
},
|
|
31
52
|
"data_description": {
|
|
32
53
|
"password": "Heslo k va\u0161emu \u00fa\u010dtu pro energie",
|
|
33
|
-
"totp_secret": "
|
|
54
|
+
"totp_secret": "Toto nen\u00ed 6m\u00edstn\u00fd k\u00f3d. Je to \u0159et\u011bzec o d\u00e9lce p\u0159ibli\u017en\u011b 16 znak\u016f obsahuj\u00edc\u00ed sd\u00edlen\u00fd tajn\u00fd kl\u00ed\u010d, kter\u00fd umo\u017e\u0148uje va\u0161\u00ed ov\u011b\u0159ovac\u00ed aplikaci vygenerovat spr\u00e1vn\u00fd k\u00f3d zalo\u017een\u00fd na \u010dase ve spr\u00e1vn\u00fd \u010das. Viz dokumentace.",
|
|
34
55
|
"username": "U\u017eivatelsk\u00e9 jm\u00e9no k va\u0161emu \u00fa\u010dtu pro energie"
|
|
35
56
|
},
|
|
36
57
|
"title": "Platnost ov\u011b\u0159en\u00ed pro {name} vypr\u0161ela"
|
|
37
58
|
},
|
|
38
59
|
"user": {
|
|
39
60
|
"data": {
|
|
40
|
-
"password": "Heslo",
|
|
41
|
-
"username": "U\u017eivatelsk\u00e9 jm\u00e9no",
|
|
42
61
|
"utility": "N\u00e1zev utility"
|
|
43
62
|
},
|
|
44
63
|
"data_description": {
|
|
45
|
-
"password": "Heslo k va\u0161emu \u00fa\u010dtu pro energie",
|
|
46
|
-
"username": "U\u017eivatelsk\u00e9 jm\u00e9no k va\u0161emu \u00fa\u010dtu pro energie",
|
|
47
64
|
"utility": "N\u00e1zev va\u0161eho poskytovatele energi\u00ed"
|
|
48
65
|
}
|
|
49
66
|
}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
},
|
|
7
7
|
"error": {
|
|
8
8
|
"cannot_connect": "Verbindung fehlgeschlagen",
|
|
9
|
-
"invalid_auth": "Ung\u00fcltige Authentifizierung"
|
|
9
|
+
"invalid_auth": "Ung\u00fcltige Authentifizierung",
|
|
10
|
+
"invalid_mfa_code": "Der Sicherheitscode ist falsch. Bitte versuche es erneut."
|
|
10
11
|
},
|
|
11
12
|
"step": {
|
|
12
|
-
"
|
|
13
|
+
"credentials": {
|
|
13
14
|
"data": {
|
|
14
15
|
"password": "Passwort",
|
|
15
16
|
"totp_secret": "TOTP-Geheimnis",
|
|
@@ -17,10 +18,30 @@
|
|
|
17
18
|
},
|
|
18
19
|
"data_description": {
|
|
19
20
|
"password": "Das Passwort f\u00fcr dein Versorgerkonto",
|
|
20
|
-
"totp_secret": "
|
|
21
|
+
"totp_secret": "Dies ist kein 6-stelliger Code. Es handelt sich um eine Folge von etwa 16 Zeichen, die das gemeinsame Geheimnis enth\u00e4lt, das es deiner Authentifizierungs-App erm\u00f6glicht, zum richtigen Zeitpunkt den richtigen zeitbasierten Code zu generieren. Weitere Informationen finden sich in der Dokumentation.",
|
|
21
22
|
"username": "Der Benutzername f\u00fcr dein Versorgerkonto"
|
|
22
23
|
},
|
|
23
|
-
"
|
|
24
|
+
"title": "Anmeldedaten eingeben"
|
|
25
|
+
},
|
|
26
|
+
"mfa_code": {
|
|
27
|
+
"data": {
|
|
28
|
+
"mfa_code": "Sicherheitscode"
|
|
29
|
+
},
|
|
30
|
+
"data_description": {
|
|
31
|
+
"mfa_code": "In der Regel ein 6-stelliger Code"
|
|
32
|
+
},
|
|
33
|
+
"description": "Ein Sicherheitscode wurde \u00fcber die von dir gew\u00e4hlte Methode gesendet. Bitte gib ihn unten ein, um die Anmeldung abzuschlie\u00dfen.",
|
|
34
|
+
"title": "Sicherheitscode eingeben"
|
|
35
|
+
},
|
|
36
|
+
"mfa_options": {
|
|
37
|
+
"data": {
|
|
38
|
+
"mfa_method": "MFA-Methode"
|
|
39
|
+
},
|
|
40
|
+
"data_description": {
|
|
41
|
+
"mfa_method": "Wie du deinen Sicherheitscode erh\u00e4ltst"
|
|
42
|
+
},
|
|
43
|
+
"description": "F\u00fcr dein Konto ist eine Multi-Faktor-Authentifizierung (MFA) erforderlich. W\u00e4hle eine Methode zum Erhalt deines Sicherheitscodes.",
|
|
44
|
+
"title": "Multi-Faktor-Authentifizierung"
|
|
24
45
|
},
|
|
25
46
|
"reauth_confirm": {
|
|
26
47
|
"data": {
|
|
@@ -30,20 +51,16 @@
|
|
|
30
51
|
},
|
|
31
52
|
"data_description": {
|
|
32
53
|
"password": "Das Passwort f\u00fcr dein Versorgerkonto",
|
|
33
|
-
"totp_secret": "
|
|
54
|
+
"totp_secret": "Dies ist kein 6-stelliger Code. Es handelt sich um eine Folge von etwa 16 Zeichen, die das gemeinsame Geheimnis enth\u00e4lt, das es deiner Authentifizierungs-App erm\u00f6glicht, zum richtigen Zeitpunkt den richtigen zeitbasierten Code zu generieren. Weitere Informationen finden sich in der Dokumentation.",
|
|
34
55
|
"username": "Der Benutzername f\u00fcr dein Versorgerkonto"
|
|
35
56
|
},
|
|
36
57
|
"title": "Authentifizierung f\u00fcr {name} abgelaufen"
|
|
37
58
|
},
|
|
38
59
|
"user": {
|
|
39
60
|
"data": {
|
|
40
|
-
"password": "Passwort",
|
|
41
|
-
"username": "Benutzername",
|
|
42
61
|
"utility": "Name des Versorgers"
|
|
43
62
|
},
|
|
44
63
|
"data_description": {
|
|
45
|
-
"password": "Das Passwort f\u00fcr dein Versorgerkonto",
|
|
46
|
-
"username": "Der Benutzername f\u00fcr dein Versorgerkonto",
|
|
47
64
|
"utility": "Der Name deines Versorgungsunternehmens"
|
|
48
65
|
}
|
|
49
66
|
}
|