homeassistant 2025.12.0b2__py3-none-any.whl → 2025.12.0b8__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/auth/permissions/events.py +2 -0
- homeassistant/components/acaia/translations/pl.json +23 -1
- homeassistant/components/accuweather/translations/tr.json +19 -0
- homeassistant/components/actron_air/translations/tr.json +27 -0
- homeassistant/components/ai_task/translations/tr.json +17 -0
- homeassistant/components/airly/translations/sr-Latn.json +7 -0
- homeassistant/components/airnow/translations/sr-Latn.json +3 -0
- homeassistant/components/airobot/translations/bg.json +1 -2
- homeassistant/components/airobot/translations/cs.json +1 -1
- homeassistant/components/airobot/translations/de.json +1 -1
- homeassistant/components/airobot/translations/el.json +4 -1
- homeassistant/components/airobot/translations/en-GB.json +1 -1
- homeassistant/components/airobot/translations/en.json +1 -1
- homeassistant/components/airobot/translations/es.json +44 -0
- homeassistant/components/airobot/translations/et.json +1 -1
- homeassistant/components/airobot/translations/ga.json +40 -0
- homeassistant/components/airobot/translations/it.json +1 -0
- homeassistant/components/airobot/translations/lt.json +1 -1
- homeassistant/components/airobot/translations/nl.json +1 -2
- homeassistant/components/airobot/translations/pt.json +1 -5
- homeassistant/components/airobot/translations/sk.json +1 -1
- homeassistant/components/airobot/translations/sv.json +1 -2
- homeassistant/components/airobot/translations/tr.json +1 -5
- homeassistant/components/airobot/translations/zh-Hans.json +1 -1
- homeassistant/components/airobot/translations/zh-Hant.json +1 -1
- homeassistant/components/airos/translations/tr.json +71 -0
- homeassistant/components/airq/translations/sr-Latn.json +7 -0
- homeassistant/components/airthings/translations/tr.json +2 -1
- homeassistant/components/airthings_ble/translations/sr-Latn.json +7 -0
- homeassistant/components/airthings_ble/translations/tr.json +7 -0
- homeassistant/components/airvisual/translations/sr-Latn.json +14 -0
- homeassistant/components/airzone/translations/tr.json +9 -0
- homeassistant/components/aladdin_connect/translations/tr.json +7 -1
- homeassistant/components/alarm_control_panel/strings.json +14 -21
- homeassistant/components/alarm_control_panel/translations/cs.json +8 -27
- homeassistant/components/alarm_control_panel/translations/de.json +7 -14
- homeassistant/components/alarm_control_panel/translations/en-GB.json +86 -1
- homeassistant/components/alarm_control_panel/translations/en.json +14 -21
- homeassistant/components/alarm_control_panel/translations/es.json +86 -1
- homeassistant/components/alarm_control_panel/translations/et.json +86 -1
- homeassistant/components/alarm_control_panel/translations/ga.json +72 -1
- homeassistant/components/alarm_control_panel/translations/lt.json +14 -21
- homeassistant/components/alarm_control_panel/translations/pt.json +14 -31
- homeassistant/components/alarm_control_panel/translations/sk.json +14 -21
- homeassistant/components/alarm_control_panel/translations/sr-Latn.json +5 -1
- homeassistant/components/alarm_control_panel/translations/tr.json +72 -1
- homeassistant/components/alarm_control_panel/translations/zh-Hans.json +1 -6
- homeassistant/components/alarm_control_panel/translations/zh-Hant.json +14 -21
- homeassistant/components/alert/translations/mk.json +10 -0
- homeassistant/components/alexa_devices/translations/it.json +24 -1
- homeassistant/components/alexa_devices/translations/tr.json +52 -0
- homeassistant/components/androidtv_remote/translations/mk.json +7 -0
- homeassistant/components/anglian_water/__init__.py +6 -2
- homeassistant/components/anglian_water/entity.py +5 -1
- homeassistant/components/anglian_water/sensor.py +1 -2
- homeassistant/components/anglian_water/strings.json +1 -1
- homeassistant/components/anglian_water/translations/de.json +1 -1
- homeassistant/components/anglian_water/translations/el.json +20 -0
- homeassistant/components/anglian_water/translations/en-GB.json +55 -0
- homeassistant/components/anglian_water/translations/en.json +1 -1
- homeassistant/components/anglian_water/translations/es.json +55 -0
- homeassistant/components/anglian_water/translations/et.json +19 -1
- homeassistant/components/anglian_water/translations/ga.json +54 -0
- homeassistant/components/anglian_water/translations/pt.json +1 -2
- homeassistant/components/anglian_water/translations/sk.json +1 -1
- homeassistant/components/anglian_water/translations/sv.json +14 -0
- homeassistant/components/anglian_water/translations/tr.json +54 -0
- homeassistant/components/anglian_water/translations/zh-Hans.json +32 -2
- homeassistant/components/aosmith/translations/tr.json +11 -0
- homeassistant/components/apcupsd/translations/es.json +14 -0
- homeassistant/components/apcupsd/translations/sr-Latn.json +3 -0
- homeassistant/components/apple_tv/manifest.json +1 -0
- homeassistant/components/assist_pipeline/pipeline.py +58 -57
- homeassistant/components/assist_satellite/manifest.json +1 -1
- homeassistant/components/assist_satellite/strings.json +8 -12
- homeassistant/components/assist_satellite/translations/cs.json +4 -16
- homeassistant/components/assist_satellite/translations/de.json +8 -12
- homeassistant/components/assist_satellite/translations/en-GB.json +54 -1
- homeassistant/components/assist_satellite/translations/en.json +8 -12
- homeassistant/components/assist_satellite/translations/es.json +54 -1
- homeassistant/components/assist_satellite/translations/et.json +54 -1
- homeassistant/components/assist_satellite/translations/ga.json +46 -1
- homeassistant/components/assist_satellite/translations/lt.json +8 -12
- homeassistant/components/assist_satellite/translations/pt.json +4 -16
- homeassistant/components/assist_satellite/translations/sk.json +8 -12
- homeassistant/components/assist_satellite/translations/tr.json +46 -1
- homeassistant/components/assist_satellite/translations/zh-Hans.json +5 -0
- homeassistant/components/assist_satellite/translations/zh-Hant.json +8 -12
- homeassistant/components/august/translations/tr.json +23 -1
- homeassistant/components/automation/__init__.py +1 -0
- homeassistant/components/automation/manifest.json +2 -0
- homeassistant/components/automation/strings.json +4 -4
- homeassistant/components/automation/translations/cs.json +0 -8
- homeassistant/components/automation/translations/de.json +4 -4
- homeassistant/components/automation/translations/en-GB.json +8 -0
- homeassistant/components/automation/translations/en.json +4 -4
- homeassistant/components/automation/translations/es.json +8 -0
- homeassistant/components/automation/translations/et.json +4 -4
- homeassistant/components/automation/translations/fr.json +8 -0
- homeassistant/components/automation/translations/lt.json +4 -4
- homeassistant/components/automation/translations/mk.json +10 -0
- homeassistant/components/automation/translations/pt.json +0 -8
- homeassistant/components/automation/translations/sk.json +4 -4
- homeassistant/components/automation/translations/sr-Latn.json +28 -0
- homeassistant/components/automation/translations/zh-Hant.json +4 -4
- homeassistant/components/backblaze_b2/translations/de.json +2 -2
- homeassistant/components/backblaze_b2/translations/es.json +1 -1
- homeassistant/components/backblaze_b2/translations/tr.json +92 -0
- homeassistant/components/bang_olufsen/translations/es.json +992 -0
- homeassistant/components/bang_olufsen/translations/ga.json +992 -0
- homeassistant/components/bang_olufsen/translations/nl.json +76 -3
- homeassistant/components/bang_olufsen/translations/pt.json +1 -0
- homeassistant/components/bayesian/translations/sr-Latn.json +2 -1
- homeassistant/components/bayesian/translations/tr.json +81 -10
- homeassistant/components/binary_sensor/icons.json +8 -0
- homeassistant/components/binary_sensor/strings.json +36 -1
- homeassistant/components/binary_sensor/translations/de.json +36 -1
- homeassistant/components/binary_sensor/translations/en-GB.json +36 -1
- homeassistant/components/binary_sensor/translations/en.json +36 -1
- homeassistant/components/binary_sensor/translations/es.json +36 -1
- homeassistant/components/binary_sensor/translations/et.json +32 -1
- homeassistant/components/binary_sensor/translations/lt.json +36 -1
- homeassistant/components/binary_sensor/translations/mk.json +8 -0
- homeassistant/components/binary_sensor/translations/sk.json +36 -1
- homeassistant/components/binary_sensor/translations/sr-Latn.json +1 -0
- homeassistant/components/binary_sensor/translations/zh-Hant.json +36 -1
- homeassistant/components/binary_sensor/trigger.py +67 -0
- homeassistant/components/binary_sensor/triggers.yaml +25 -0
- homeassistant/components/blink/translations/tr.json +16 -1
- homeassistant/components/blue_current/translations/tr.json +44 -0
- homeassistant/components/bosch_alarm/__init__.py +2 -2
- homeassistant/components/bosch_alarm/config_flow.py +1 -1
- homeassistant/components/bosch_alarm/diagnostics.py +2 -1
- homeassistant/components/bosch_alarm/entity.py +1 -1
- homeassistant/components/bosch_alarm/manifest.json +1 -1
- homeassistant/components/broadlink/manifest.json +1 -0
- homeassistant/components/broadlink/translations/sr-Latn.json +5 -0
- homeassistant/components/brother/translations/tr.json +53 -2
- homeassistant/components/bsblan/translations/tr.json +22 -2
- homeassistant/components/bthome/translations/tr.json +35 -0
- homeassistant/components/button/translations/sr-Latn.json +20 -0
- homeassistant/components/camera/__init__.py +1 -1
- homeassistant/components/camera/translations/mk.json +4 -2
- homeassistant/components/climate/strings.json +10 -15
- homeassistant/components/climate/translations/cs.json +5 -20
- homeassistant/components/climate/translations/de.json +5 -10
- homeassistant/components/climate/translations/el.json +54 -1
- homeassistant/components/climate/translations/en-GB.json +64 -1
- homeassistant/components/climate/translations/en.json +10 -15
- homeassistant/components/climate/translations/es.json +64 -1
- homeassistant/components/climate/translations/et.json +57 -6
- homeassistant/components/climate/translations/ga.json +54 -1
- homeassistant/components/climate/translations/lt.json +26 -9
- homeassistant/components/climate/translations/mk.json +10 -3
- homeassistant/components/climate/translations/pt.json +19 -12
- homeassistant/components/climate/translations/ru.json +54 -1
- homeassistant/components/climate/translations/sk.json +10 -15
- homeassistant/components/climate/translations/sr-Latn.json +101 -3
- homeassistant/components/climate/translations/sv.json +17 -1
- homeassistant/components/climate/translations/tr.json +54 -1
- homeassistant/components/climate/translations/zh-Hans.json +14 -0
- homeassistant/components/climate/translations/zh-Hant.json +10 -15
- homeassistant/components/cloud/__init__.py +18 -5
- homeassistant/components/cloud/ai_task.py +5 -12
- homeassistant/components/cloud/client.py +9 -5
- homeassistant/components/cloud/conversation.py +2 -11
- homeassistant/components/cloud/entity.py +4 -5
- homeassistant/components/cloud/http_api.py +21 -0
- homeassistant/components/cloud/translations/en-GB.json +7 -0
- homeassistant/components/cloud/translations/es.json +7 -0
- homeassistant/components/cloud/translations/et.json +7 -0
- homeassistant/components/cloud/translations/ga.json +7 -0
- homeassistant/components/cloud/translations/tr.json +7 -0
- homeassistant/components/coinbase/translations/tr.json +10 -1
- homeassistant/components/color_extractor/translations/mk.json +7 -0
- homeassistant/components/comelit/translations/tr.json +2 -0
- homeassistant/components/compit/translations/tr.json +35 -0
- homeassistant/components/conversation/__init__.py +8 -3
- homeassistant/components/conversation/default_agent.py +61 -56
- homeassistant/components/conversation/manifest.json +1 -1
- homeassistant/components/counter/translations/sr-Latn.json +41 -1
- homeassistant/components/cover/icons.json +0 -29
- homeassistant/components/cover/strings.json +1 -159
- homeassistant/components/cover/translations/cs.json +1 -159
- homeassistant/components/cover/translations/de.json +1 -159
- homeassistant/components/cover/translations/en.json +1 -159
- homeassistant/components/cover/translations/et.json +1 -30
- homeassistant/components/cover/translations/lt.json +1 -159
- homeassistant/components/cover/translations/pt.json +1 -158
- homeassistant/components/cover/translations/sk.json +1 -159
- homeassistant/components/cover/translations/sr-Latn.json +5 -1
- homeassistant/components/cover/translations/zh-Hans.json +1 -105
- homeassistant/components/cover/translations/zh-Hant.json +1 -159
- homeassistant/components/cync/translations/tr.json +46 -0
- homeassistant/components/datetime/translations/sr-Latn.json +17 -0
- homeassistant/components/deconz/translations/mk.json +3 -1
- homeassistant/components/deluge/translations/tr.json +8 -0
- homeassistant/components/derivative/translations/es.json +6 -0
- homeassistant/components/derivative/translations/ga.json +6 -0
- homeassistant/components/derivative/translations/sr-Latn.json +41 -4
- homeassistant/components/dlna_dmr/manifest.json +1 -0
- homeassistant/components/dlna_dms/manifest.json +1 -0
- homeassistant/components/downloader/translations/tr.json +8 -0
- homeassistant/components/droplet/translations/tr.json +40 -0
- homeassistant/components/duckdns/translations/en-GB.json +1 -0
- homeassistant/components/duckdns/translations/es.json +41 -0
- homeassistant/components/duckdns/translations/ga.json +40 -0
- homeassistant/components/ecovacs/translations/tr.json +50 -2
- homeassistant/components/ecowitt/manifest.json +1 -0
- homeassistant/components/ekeybionyx/translations/tr.json +66 -0
- homeassistant/components/elevenlabs/translations/tr.json +17 -1
- homeassistant/components/elkm1/translations/tr.json +4 -0
- homeassistant/components/energy/translations/sr-Latn.json +64 -0
- homeassistant/components/energyid/translations/el.json +53 -0
- homeassistant/components/energyid/translations/en-GB.json +71 -0
- homeassistant/components/energyid/translations/es.json +71 -0
- homeassistant/components/energyid/translations/ga.json +71 -0
- homeassistant/components/energyid/translations/it.json +71 -0
- homeassistant/components/energyid/translations/nl.json +1 -0
- homeassistant/components/energyid/translations/sv.json +37 -0
- homeassistant/components/energyid/translations/tr.json +71 -0
- homeassistant/components/energyid/translations/zh-Hans.json +17 -1
- homeassistant/components/enphase_envoy/manifest.json +1 -1
- homeassistant/components/enphase_envoy/translations/tr.json +15 -0
- homeassistant/components/esphome/const.py +1 -1
- homeassistant/components/esphome/manifest.json +1 -1
- homeassistant/components/esphome/strings.json +1 -1
- homeassistant/components/esphome/translations/bg.json +0 -1
- homeassistant/components/esphome/translations/ca.json +0 -1
- homeassistant/components/esphome/translations/cs.json +1 -1
- homeassistant/components/esphome/translations/da.json +0 -1
- homeassistant/components/esphome/translations/de.json +1 -1
- homeassistant/components/esphome/translations/el.json +0 -1
- homeassistant/components/esphome/translations/en-GB.json +1 -1
- homeassistant/components/esphome/translations/en.json +1 -1
- homeassistant/components/esphome/translations/es.json +1 -1
- homeassistant/components/esphome/translations/et.json +1 -1
- homeassistant/components/esphome/translations/fi.json +0 -1
- homeassistant/components/esphome/translations/fr.json +0 -1
- homeassistant/components/esphome/translations/ga.json +0 -1
- homeassistant/components/esphome/translations/he.json +0 -1
- homeassistant/components/esphome/translations/hu.json +0 -1
- homeassistant/components/esphome/translations/id.json +0 -1
- homeassistant/components/esphome/translations/it.json +0 -1
- homeassistant/components/esphome/translations/ja.json +0 -1
- homeassistant/components/esphome/translations/ko.json +0 -1
- homeassistant/components/esphome/translations/lt.json +1 -1
- homeassistant/components/esphome/translations/nb.json +0 -1
- homeassistant/components/esphome/translations/nl.json +0 -1
- homeassistant/components/esphome/translations/pl.json +0 -1
- homeassistant/components/esphome/translations/pt-BR.json +0 -1
- homeassistant/components/esphome/translations/pt.json +1 -1
- homeassistant/components/esphome/translations/ro.json +0 -1
- homeassistant/components/esphome/translations/ru.json +0 -1
- homeassistant/components/esphome/translations/sk.json +1 -1
- homeassistant/components/esphome/translations/sl.json +0 -1
- homeassistant/components/esphome/translations/sv.json +0 -1
- homeassistant/components/esphome/translations/tr.json +1 -1
- homeassistant/components/esphome/translations/uk.json +0 -1
- homeassistant/components/esphome/translations/vi.json +0 -1
- homeassistant/components/esphome/translations/zh-Hans.json +1 -1
- homeassistant/components/esphome/translations/zh-Hant.json +1 -1
- homeassistant/components/essent/translations/el.json +9 -0
- homeassistant/components/essent/translations/en-GB.json +70 -0
- homeassistant/components/essent/translations/es.json +70 -0
- homeassistant/components/essent/translations/ga.json +70 -0
- homeassistant/components/essent/translations/tr.json +70 -0
- homeassistant/components/essent/translations/zh-Hans.json +38 -0
- homeassistant/components/event/translations/pl.json +2 -1
- homeassistant/components/event/translations/sr-Latn.json +16 -1
- homeassistant/components/fan/strings.json +4 -6
- homeassistant/components/fan/translations/cs.json +2 -8
- homeassistant/components/fan/translations/de.json +2 -4
- homeassistant/components/fan/translations/en-GB.json +34 -1
- homeassistant/components/fan/translations/en.json +4 -6
- homeassistant/components/fan/translations/es.json +34 -1
- homeassistant/components/fan/translations/et.json +4 -6
- homeassistant/components/fan/translations/ga.json +30 -1
- homeassistant/components/fan/translations/lt.json +4 -6
- homeassistant/components/fan/translations/mk.json +11 -0
- homeassistant/components/fan/translations/pt.json +2 -8
- homeassistant/components/fan/translations/sk.json +4 -6
- homeassistant/components/fan/translations/tr.json +30 -1
- homeassistant/components/fan/translations/zh-Hant.json +4 -6
- homeassistant/components/file/translations/tr.json +26 -0
- homeassistant/components/filter/translations/sr-Latn.json +149 -11
- homeassistant/components/fing/translations/tr.json +24 -0
- homeassistant/components/firefly_iii/translations/de.json +2 -2
- homeassistant/components/firefly_iii/translations/tr.json +87 -0
- homeassistant/components/foscam/translations/tr.json +45 -1
- homeassistant/components/fritz/translations/tr.json +24 -0
- homeassistant/components/fronius/manifest.json +1 -0
- homeassistant/components/fronius/translations/sr-Latn.json +3 -0
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/frontend/storage.py +16 -6
- homeassistant/components/frontend/translations/el.json +8 -0
- homeassistant/components/frontend/translations/es.json +8 -0
- homeassistant/components/frontend/translations/ga.json +8 -0
- homeassistant/components/frontend/translations/ru.json +8 -0
- homeassistant/components/frontend/translations/sr-Latn.json +8 -0
- homeassistant/components/frontend/translations/tr.json +8 -0
- homeassistant/components/frontend/translations/zh-Hans.json +3 -0
- homeassistant/components/fully_kiosk/translations/tr.json +15 -0
- homeassistant/components/fyta/translations/sr-Latn.json +6 -0
- homeassistant/components/generic/translations/sr-Latn.json +42 -0
- homeassistant/components/generic_hygrostat/translations/sr-Latn.json +36 -4
- homeassistant/components/generic_thermostat/translations/sr-Latn.json +46 -6
- homeassistant/components/geocaching/translations/tr.json +2 -1
- homeassistant/components/gios/translations/sr-Latn.json +10 -0
- homeassistant/components/go2rtc/__init__.py +6 -2
- homeassistant/components/go2rtc/const.py +0 -1
- homeassistant/components/go2rtc/server.py +16 -6
- homeassistant/components/go2rtc/util.py +12 -0
- homeassistant/components/google/manifest.json +1 -0
- homeassistant/components/google_air_quality/manifest.json +1 -1
- homeassistant/components/google_air_quality/strings.json +1 -4
- homeassistant/components/google_air_quality/translations/cs.json +1 -4
- homeassistant/components/google_air_quality/translations/de.json +1 -4
- homeassistant/components/google_air_quality/translations/el.json +79 -0
- homeassistant/components/google_air_quality/translations/en-GB.json +234 -0
- homeassistant/components/google_air_quality/translations/en.json +1 -4
- homeassistant/components/google_air_quality/translations/es.json +234 -0
- homeassistant/components/google_air_quality/translations/et.json +50 -3
- homeassistant/components/google_air_quality/translations/ga.json +234 -0
- homeassistant/components/google_air_quality/translations/it.json +106 -0
- homeassistant/components/google_air_quality/translations/lt.json +1 -4
- homeassistant/components/google_air_quality/translations/pl.json +11 -0
- homeassistant/components/google_air_quality/translations/pt.json +1 -4
- homeassistant/components/google_air_quality/translations/ru.json +42 -0
- homeassistant/components/google_air_quality/translations/sk.json +1 -4
- homeassistant/components/google_air_quality/translations/sr-Latn.json +35 -0
- homeassistant/components/google_air_quality/translations/sv.json +131 -0
- homeassistant/components/google_air_quality/translations/tr.json +234 -0
- homeassistant/components/google_air_quality/translations/zh-Hans.json +84 -5
- homeassistant/components/google_air_quality/translations/zh-Hant.json +1 -4
- homeassistant/components/google_assistant_sdk/translations/es.json +3 -0
- homeassistant/components/google_assistant_sdk/translations/tr.json +7 -0
- homeassistant/components/google_generative_ai_conversation/translations/tr.json +6 -0
- homeassistant/components/google_sheets/translations/es.json +4 -0
- homeassistant/components/google_sheets/translations/tr.json +22 -0
- homeassistant/components/google_translate/manifest.json +1 -0
- homeassistant/components/google_weather/translations/es.json +66 -0
- homeassistant/components/google_weather/translations/ga.json +37 -0
- homeassistant/components/gpsd/translations/sr-Latn.json +3 -0
- homeassistant/components/group/notify.py +28 -5
- homeassistant/components/group/translations/sr-Latn.json +154 -12
- homeassistant/components/group/translations/tr.json +19 -1
- homeassistant/components/growatt_server/translations/tr.json +87 -0
- homeassistant/components/habitica/translations/tr.json +76 -0
- homeassistant/components/hanna/translations/es.json +44 -0
- homeassistant/components/hassio/const.py +1 -0
- homeassistant/components/hassio/strings.json +1 -1
- homeassistant/components/hassio/translations/cs.json +0 -1
- homeassistant/components/hassio/translations/de.json +1 -1
- homeassistant/components/hassio/translations/el.json +0 -1
- homeassistant/components/hassio/translations/en-GB.json +1 -1
- homeassistant/components/hassio/translations/en.json +1 -1
- homeassistant/components/hassio/translations/es.json +1 -1
- homeassistant/components/hassio/translations/et.json +0 -1
- homeassistant/components/hassio/translations/fr.json +0 -1
- homeassistant/components/hassio/translations/fy.json +0 -3
- homeassistant/components/hassio/translations/ga.json +0 -1
- homeassistant/components/hassio/translations/he.json +0 -1
- homeassistant/components/hassio/translations/id.json +0 -1
- homeassistant/components/hassio/translations/lt.json +1 -1
- homeassistant/components/hassio/translations/mk.json +0 -1
- homeassistant/components/hassio/translations/nl.json +0 -1
- homeassistant/components/hassio/translations/pt.json +0 -1
- homeassistant/components/hassio/translations/ru.json +0 -1
- homeassistant/components/hassio/translations/sk.json +1 -1
- homeassistant/components/hassio/translations/sr-Latn.json +5 -0
- homeassistant/components/hassio/translations/sv.json +0 -1
- homeassistant/components/hassio/translations/tr.json +38 -0
- homeassistant/components/hassio/translations/zh-Hans.json +0 -1
- homeassistant/components/hassio/translations/zh-Hant.json +1 -1
- homeassistant/components/history_stats/translations/sr-Latn.json +85 -3
- homeassistant/components/holiday/translations/pl.json +7 -0
- homeassistant/components/home_connect/manifest.json +1 -0
- homeassistant/components/home_connect/translations/es.json +46 -0
- homeassistant/components/home_connect/translations/ga.json +46 -0
- homeassistant/components/home_connect/translations/tr.json +32 -0
- homeassistant/components/homeassistant_connect_zbt2/config_flow.py +0 -17
- homeassistant/components/homeassistant_connect_zbt2/const.py +0 -58
- homeassistant/components/homeassistant_connect_zbt2/translations/es.json +8 -0
- homeassistant/components/homeassistant_connect_zbt2/translations/ga.json +8 -0
- homeassistant/components/homeassistant_connect_zbt2/translations/tr.json +145 -0
- homeassistant/components/homeassistant_hardware/firmware_config_flow.py +81 -73
- homeassistant/components/homeassistant_hardware/translations/es.json +4 -0
- homeassistant/components/homeassistant_hardware/translations/ga.json +4 -0
- homeassistant/components/homeassistant_hardware/translations/tr.json +44 -1
- homeassistant/components/homeassistant_hardware/update.py +13 -10
- homeassistant/components/homeassistant_hardware/util.py +59 -53
- homeassistant/components/homeassistant_sky_connect/translations/es.json +8 -0
- homeassistant/components/homeassistant_sky_connect/translations/ga.json +8 -0
- homeassistant/components/homeassistant_sky_connect/translations/tr.json +71 -0
- homeassistant/components/homeassistant_yellow/translations/es.json +4 -0
- homeassistant/components/homeassistant_yellow/translations/ga.json +4 -0
- homeassistant/components/homeassistant_yellow/translations/tr.json +35 -0
- homeassistant/components/homekit/translations/tr.json +12 -0
- homeassistant/components/homekit_controller/manifest.json +1 -0
- homeassistant/components/homewizard/manifest.json +1 -0
- homeassistant/components/hue/translations/mk.json +3 -1
- homeassistant/components/hue/translations/tr.json +1 -0
- homeassistant/components/hue_ble/strings.json +1 -1
- homeassistant/components/hue_ble/translations/el.json +11 -0
- homeassistant/components/hue_ble/translations/en-GB.json +21 -0
- homeassistant/components/hue_ble/translations/en.json +1 -1
- homeassistant/components/hue_ble/translations/es.json +21 -0
- homeassistant/components/hue_ble/translations/et.json +21 -0
- homeassistant/components/hue_ble/translations/ga.json +20 -0
- homeassistant/components/hue_ble/translations/lt.json +1 -1
- homeassistant/components/hue_ble/translations/pt.json +1 -2
- homeassistant/components/hue_ble/translations/sk.json +1 -1
- homeassistant/components/hue_ble/translations/tr.json +20 -0
- homeassistant/components/hue_ble/translations/zh-Hans.json +11 -1
- homeassistant/components/humidifier/translations/mk.json +6 -0
- homeassistant/components/hunterdouglas_powerview/translations/sr-Latn.json +9 -0
- homeassistant/components/husqvarna_automower/translations/tr.json +88 -0
- homeassistant/components/huum/translations/sr-Latn.json +5 -0
- homeassistant/components/ibeacon/manifest.json +1 -0
- homeassistant/components/icloud/translations/tr.json +3 -0
- homeassistant/components/image/translations/sr-Latn.json +2 -1
- homeassistant/components/imap/translations/tr.json +21 -0
- homeassistant/components/imeon_inverter/translations/en-GB.json +21 -0
- homeassistant/components/imeon_inverter/translations/tr.json +57 -0
- homeassistant/components/incomfort/translations/tr.json +3 -0
- homeassistant/components/inels/translations/tr.json +30 -0
- homeassistant/components/input_boolean/translations/mk.json +4 -2
- homeassistant/components/input_number/translations/sr-Latn.json +17 -0
- homeassistant/components/integration/translations/sr-Latn.json +54 -2
- homeassistant/components/iometer/manifest.json +1 -1
- homeassistant/components/iometer/translations/tr.json +3 -1
- homeassistant/components/irm_kmi/translations/tr.json +21 -0
- homeassistant/components/iron_os/translations/en-GB.json +5 -1
- homeassistant/components/iron_os/translations/es.json +5 -1
- homeassistant/components/jewish_calendar/translations/tr.json +9 -1
- homeassistant/components/kitchen_sink/translations/en-GB.json +2 -0
- homeassistant/components/kitchen_sink/translations/es.json +20 -0
- homeassistant/components/kitchen_sink/translations/et.json +5 -1
- homeassistant/components/kitchen_sink/translations/ga.json +4 -0
- homeassistant/components/kitchen_sink/translations/it.json +12 -0
- homeassistant/components/kitchen_sink/translations/ru.json +8 -0
- homeassistant/components/kitchen_sink/translations/sv.json +3 -0
- homeassistant/components/kitchen_sink/translations/tr.json +4 -0
- homeassistant/components/knx/translations/el.json +43 -0
- homeassistant/components/knx/translations/es.json +3 -0
- homeassistant/components/knx/translations/et.json +3 -0
- homeassistant/components/knx/translations/tr.json +318 -0
- homeassistant/components/knx/translations/zh-Hans.json +3 -0
- homeassistant/components/konnected/manifest.json +1 -0
- homeassistant/components/konnected/translations/tr.json +6 -0
- homeassistant/components/labs/__init__.py +2 -1
- homeassistant/components/labs/const.py +0 -2
- homeassistant/components/labs/translations/es.json +3 -0
- homeassistant/components/labs/translations/lt.json +1 -1
- homeassistant/components/labs/translations/sr-Latn.json +3 -0
- homeassistant/components/labs/websocket_api.py +2 -1
- homeassistant/components/lannouncer/translations/tr.json +8 -0
- homeassistant/components/lawn_mower/strings.json +8 -12
- homeassistant/components/lawn_mower/translations/cs.json +4 -16
- homeassistant/components/lawn_mower/translations/de.json +7 -11
- homeassistant/components/lawn_mower/translations/en-GB.json +56 -1
- homeassistant/components/lawn_mower/translations/en.json +8 -12
- homeassistant/components/lawn_mower/translations/es.json +56 -1
- homeassistant/components/lawn_mower/translations/et.json +46 -2
- homeassistant/components/lawn_mower/translations/ga.json +48 -1
- homeassistant/components/lawn_mower/translations/lt.json +8 -12
- homeassistant/components/lawn_mower/translations/pt.json +4 -16
- homeassistant/components/lawn_mower/translations/sk.json +8 -12
- homeassistant/components/lawn_mower/translations/tr.json +48 -1
- homeassistant/components/lawn_mower/translations/zh-Hant.json +8 -12
- homeassistant/components/letpot/manifest.json +1 -1
- homeassistant/components/letpot/translations/tr.json +8 -0
- homeassistant/components/lg_thinq/manifest.json +1 -1
- homeassistant/components/lg_thinq/translations/sr-Latn.json +8 -0
- homeassistant/components/lg_thinq/translations/tr.json +20 -0
- homeassistant/components/libre_hardware_monitor/coordinator.py +26 -18
- homeassistant/components/libre_hardware_monitor/translations/tr.json +23 -0
- homeassistant/components/lifx/translations/tr.json +3 -0
- homeassistant/components/light/strings.json +4 -8
- homeassistant/components/light/translations/bg.json +0 -12
- homeassistant/components/light/translations/cs.json +2 -10
- homeassistant/components/light/translations/de.json +2 -6
- homeassistant/components/light/translations/el.json +6 -0
- homeassistant/components/light/translations/en-GB.json +69 -2
- homeassistant/components/light/translations/en.json +4 -8
- homeassistant/components/light/translations/es.json +68 -2
- homeassistant/components/light/translations/et.json +34 -8
- homeassistant/components/light/translations/ga.json +65 -2
- homeassistant/components/light/translations/lt.json +4 -8
- homeassistant/components/light/translations/mk.json +10 -3
- homeassistant/components/light/translations/pt.json +2 -10
- homeassistant/components/light/translations/ru.json +67 -3
- homeassistant/components/light/translations/sk.json +4 -8
- homeassistant/components/light/translations/sr-Latn.json +217 -4
- homeassistant/components/light/translations/tr.json +65 -2
- homeassistant/components/light/translations/zh-Hans.json +2 -10
- homeassistant/components/light/translations/zh-Hant.json +4 -8
- homeassistant/components/litterrobot/translations/tr.json +6 -0
- homeassistant/components/logger/helpers.py +10 -0
- homeassistant/components/logger/websocket_api.py +12 -1
- homeassistant/components/london_underground/translations/tr.json +38 -0
- homeassistant/components/lovelace/translations/es.json +5 -0
- homeassistant/components/lovelace/translations/ga.json +5 -0
- homeassistant/components/lunatone/translations/tr.json +36 -0
- homeassistant/components/mastodon/translations/es.json +7 -0
- homeassistant/components/mastodon/translations/ga.json +7 -0
- homeassistant/components/mastodon/translations/tr.json +4 -0
- homeassistant/components/matrix/translations/tr.json +42 -0
- homeassistant/components/matter/manifest.json +1 -0
- homeassistant/components/matter/translations/es.json +13 -0
- homeassistant/components/matter/translations/ga.json +10 -0
- homeassistant/components/matter/translations/sr-Latn.json +3 -0
- homeassistant/components/matter/translations/tr.json +105 -0
- homeassistant/components/mcp/translations/tr.json +20 -1
- homeassistant/components/mealie/translations/tr.json +11 -0
- homeassistant/components/media_extractor/manifest.json +1 -1
- homeassistant/components/media_player/strings.json +2 -3
- homeassistant/components/media_player/translations/cs.json +1 -4
- homeassistant/components/media_player/translations/de.json +1 -2
- homeassistant/components/media_player/translations/en-GB.json +24 -1
- homeassistant/components/media_player/translations/en.json +2 -3
- homeassistant/components/media_player/translations/es.json +24 -1
- homeassistant/components/media_player/translations/et.json +8 -1
- homeassistant/components/media_player/translations/ga.json +22 -1
- homeassistant/components/media_player/translations/lt.json +2 -3
- homeassistant/components/media_player/translations/mk.json +4 -2
- homeassistant/components/media_player/translations/pt.json +1 -4
- homeassistant/components/media_player/translations/sk.json +2 -3
- homeassistant/components/media_player/translations/tr.json +22 -1
- homeassistant/components/media_player/translations/zh-Hant.json +2 -3
- homeassistant/components/media_source/translations/tr.json +5 -0
- homeassistant/components/met/manifest.json +1 -0
- homeassistant/components/meteo_france/const.py +1 -0
- homeassistant/components/meteo_lt/translations/tr.json +14 -0
- homeassistant/components/miele/const.py +9 -7
- homeassistant/components/miele/strings.json +1 -0
- homeassistant/components/miele/translations/cs.json +1 -0
- homeassistant/components/miele/translations/de.json +1 -0
- homeassistant/components/miele/translations/en-GB.json +1 -0
- homeassistant/components/miele/translations/en.json +1 -0
- homeassistant/components/miele/translations/es.json +16 -0
- homeassistant/components/miele/translations/et.json +1 -0
- homeassistant/components/miele/translations/ga.json +14 -0
- homeassistant/components/miele/translations/it.json +1 -0
- homeassistant/components/miele/translations/lt.json +1 -0
- homeassistant/components/miele/translations/sk.json +1 -0
- homeassistant/components/miele/translations/sr-Latn.json +10 -0
- homeassistant/components/miele/translations/tr.json +20 -1
- homeassistant/components/miele/translations/zh-Hant.json +1 -0
- homeassistant/components/min_max/translations/sr-Latn.json +44 -2
- homeassistant/components/mold_indicator/translations/sr-Latn.json +41 -3
- homeassistant/components/motion_blinds/manifest.json +1 -0
- homeassistant/components/mqtt/entity.py +1 -0
- homeassistant/components/mqtt/strings.json +4 -5
- homeassistant/components/mqtt/translations/bg.json +0 -5
- homeassistant/components/mqtt/translations/cs.json +3 -6
- homeassistant/components/mqtt/translations/de.json +7 -8
- homeassistant/components/mqtt/translations/en-GB.json +4 -5
- homeassistant/components/mqtt/translations/en.json +4 -5
- homeassistant/components/mqtt/translations/es.json +91 -8
- homeassistant/components/mqtt/translations/et.json +4 -5
- homeassistant/components/mqtt/translations/fr.json +1 -4
- homeassistant/components/mqtt/translations/ga.json +65 -9
- homeassistant/components/mqtt/translations/he.json +1 -6
- homeassistant/components/mqtt/translations/hu.json +0 -2
- homeassistant/components/mqtt/translations/it.json +2 -7
- homeassistant/components/mqtt/translations/lt.json +4 -5
- homeassistant/components/mqtt/translations/mk.json +6 -0
- homeassistant/components/mqtt/translations/nl.json +1 -6
- homeassistant/components/mqtt/translations/pt.json +3 -6
- homeassistant/components/mqtt/translations/ru.json +6 -6
- homeassistant/components/mqtt/translations/sk.json +4 -5
- homeassistant/components/mqtt/translations/sr-Latn.json +148 -22
- homeassistant/components/mqtt/translations/sv.json +1 -2
- homeassistant/components/mqtt/translations/tr.json +255 -5
- homeassistant/components/mqtt/translations/zh-Hans.json +3 -6
- homeassistant/components/mqtt/translations/zh-Hant.json +4 -5
- homeassistant/components/music_assistant/__init__.py +2 -1
- homeassistant/components/music_assistant/config_flow.py +23 -5
- homeassistant/components/music_assistant/manifest.json +1 -0
- homeassistant/components/music_assistant/translations/el.json +3 -1
- homeassistant/components/music_assistant/translations/en-GB.json +23 -1
- homeassistant/components/music_assistant/translations/es.json +25 -1
- homeassistant/components/music_assistant/translations/et.json +1 -0
- homeassistant/components/music_assistant/translations/ga.json +24 -1
- homeassistant/components/music_assistant/translations/it.json +26 -1
- homeassistant/components/music_assistant/translations/nl.json +3 -1
- homeassistant/components/music_assistant/translations/ru.json +23 -1
- homeassistant/components/music_assistant/translations/sv.json +3 -1
- homeassistant/components/music_assistant/translations/tr.json +24 -1
- homeassistant/components/music_assistant/translations/zh-Hans.json +16 -0
- homeassistant/components/nasweb/translations/tr.json +7 -0
- homeassistant/components/neato/translations/es.json +5 -0
- homeassistant/components/neato/translations/ga.json +5 -0
- homeassistant/components/neato/translations/tr.json +5 -0
- homeassistant/components/nederlandse_spoorwegen/translations/es.json +10 -0
- homeassistant/components/nederlandse_spoorwegen/translations/tr.json +25 -0
- homeassistant/components/nest/manifest.json +1 -1
- homeassistant/components/nest/translations/es.json +12 -0
- homeassistant/components/nest/translations/tr.json +12 -0
- homeassistant/components/netgear/translations/sr-Latn.json +3 -0
- homeassistant/components/nextdns/translations/tr.json +14 -1
- homeassistant/components/nightscout/translations/tr.json +4 -0
- homeassistant/components/niko_home_control/translations/el.json +18 -0
- homeassistant/components/niko_home_control/translations/es.json +3 -1
- homeassistant/components/niko_home_control/translations/tr.json +10 -1
- homeassistant/components/nina/translations/el.json +6 -0
- homeassistant/components/nina/translations/en-GB.json +8 -0
- homeassistant/components/nina/translations/es.json +8 -0
- homeassistant/components/nina/translations/ga.json +8 -0
- homeassistant/components/nina/translations/tr.json +54 -0
- homeassistant/components/nina/translations/zh-Hans.json +2 -0
- homeassistant/components/nintendo_parental_controls/translations/tr.json +68 -0
- homeassistant/components/nordpool/manifest.json +1 -1
- homeassistant/components/notify/translations/sr-Latn.json +3 -0
- homeassistant/components/ntfy/translations/tr.json +78 -0
- homeassistant/components/nuki/manifest.json +1 -0
- homeassistant/components/number/translations/sr-Latn.json +181 -0
- homeassistant/components/number/translations/tr.json +6 -0
- homeassistant/components/octoprint/translations/tr.json +10 -0
- homeassistant/components/onboarding/const.py +16 -1
- homeassistant/components/onboarding/views.py +2 -2
- homeassistant/components/onedrive/translations/es.json +3 -0
- homeassistant/components/onewire/translations/tr.json +10 -0
- homeassistant/components/openai_conversation/translations/tr.json +6 -1
- homeassistant/components/openrgb/translations/tr.json +84 -0
- homeassistant/components/opentherm_gw/services.py +17 -2
- homeassistant/components/opentherm_gw/strings.json +3 -3
- homeassistant/components/opentherm_gw/translations/cs.json +3 -3
- homeassistant/components/opentherm_gw/translations/de.json +3 -3
- homeassistant/components/opentherm_gw/translations/el.json +3 -3
- homeassistant/components/opentherm_gw/translations/en-GB.json +3 -3
- homeassistant/components/opentherm_gw/translations/en.json +3 -3
- homeassistant/components/opentherm_gw/translations/es.json +3 -3
- homeassistant/components/opentherm_gw/translations/et.json +3 -3
- homeassistant/components/opentherm_gw/translations/ga.json +0 -3
- homeassistant/components/opentherm_gw/translations/hu.json +0 -3
- homeassistant/components/opentherm_gw/translations/it.json +0 -2
- homeassistant/components/opentherm_gw/translations/ja.json +0 -3
- homeassistant/components/opentherm_gw/translations/lt.json +3 -3
- homeassistant/components/opentherm_gw/translations/nl.json +0 -2
- homeassistant/components/opentherm_gw/translations/pt.json +3 -3
- homeassistant/components/opentherm_gw/translations/ru.json +3 -3
- homeassistant/components/opentherm_gw/translations/sk.json +3 -3
- homeassistant/components/opentherm_gw/translations/sv.json +0 -3
- homeassistant/components/opentherm_gw/translations/tr.json +0 -3
- homeassistant/components/opentherm_gw/translations/zh-Hans.json +3 -3
- homeassistant/components/opentherm_gw/translations/zh-Hant.json +3 -3
- homeassistant/components/openweathermap/translations/tr.json +49 -0
- homeassistant/components/opower/translations/tr.json +33 -1
- homeassistant/components/oralb/manifest.json +1 -0
- homeassistant/components/oralb/translations/tr.json +29 -2
- homeassistant/components/ping/helpers.py +1 -1
- homeassistant/components/ping/manifest.json +1 -0
- homeassistant/components/playstation_network/translations/tr.json +56 -0
- homeassistant/components/plugwise/translations/en-GB.json +1 -1
- homeassistant/components/plugwise/translations/es.json +2 -0
- homeassistant/components/plugwise/translations/sr-Latn.json +12 -0
- homeassistant/components/plugwise/translations/tr.json +11 -1
- homeassistant/components/plum_lightpad/translations/tr.json +8 -1
- homeassistant/components/point/translations/es.json +5 -0
- homeassistant/components/pooldose/translations/en-GB.json +11 -0
- homeassistant/components/pooldose/translations/es.json +68 -0
- homeassistant/components/pooldose/translations/ga.json +11 -0
- homeassistant/components/pooldose/translations/it.json +11 -0
- homeassistant/components/pooldose/translations/tr.json +84 -1
- homeassistant/components/pooldose/translations/zh-Hans.json +6 -0
- homeassistant/components/portainer/translations/tr.json +82 -0
- homeassistant/components/probe_plus/translations/tr.json +5 -0
- homeassistant/components/prowl/translations/tr.json +21 -0
- homeassistant/components/ps4/translations/tr.json +6 -0
- homeassistant/components/qbittorrent/translations/tr.json +4 -0
- homeassistant/components/qbus/translations/tr.json +10 -0
- homeassistant/components/random/translations/es.json +1 -0
- homeassistant/components/random/translations/sr-Latn.json +119 -6
- homeassistant/components/random/translations/tr.json +2 -0
- homeassistant/components/remote/translations/mk.json +10 -0
- homeassistant/components/renault/translations/tr.json +12 -0
- homeassistant/components/reolink/manifest.json +1 -0
- homeassistant/components/reolink/translations/pl.json +10 -1
- homeassistant/components/reolink/translations/tr.json +67 -1
- homeassistant/components/rest/manifest.json +1 -0
- homeassistant/components/ridwell/translations/tr.json +22 -0
- homeassistant/components/ring/manifest.json +1 -0
- homeassistant/components/roborock/manifest.json +2 -1
- homeassistant/components/roborock/roborock_storage.py +29 -10
- homeassistant/components/roborock/translations/tr.json +9 -1
- homeassistant/components/roomba/translations/tr.json +6 -0
- homeassistant/components/satel_integra/translations/sr-Latn.json +2 -1
- homeassistant/components/satel_integra/translations/tr.json +131 -0
- homeassistant/components/saunum/translations/el.json +7 -1
- homeassistant/components/saunum/translations/en-GB.json +11 -1
- homeassistant/components/saunum/translations/es.json +38 -1
- homeassistant/components/saunum/translations/et.json +11 -1
- homeassistant/components/saunum/translations/ga.json +38 -1
- homeassistant/components/saunum/translations/mk.json +5 -0
- homeassistant/components/saunum/translations/ru.json +9 -0
- homeassistant/components/saunum/translations/sr-Latn.json +9 -0
- homeassistant/components/saunum/translations/tr.json +11 -1
- homeassistant/components/schedule/translations/sr-Latn.json +18 -1
- homeassistant/components/scrape/translations/es.json +1 -0
- homeassistant/components/scrape/translations/sr-Latn.json +63 -2
- homeassistant/components/scrape/translations/tr.json +4 -0
- homeassistant/components/script/translations/mk.json +10 -0
- homeassistant/components/sensibo/translations/sr-Latn.json +19 -0
- homeassistant/components/sensor/translations/sr-Latn.json +141 -5
- homeassistant/components/sensor/translations/tr.json +10 -0
- homeassistant/components/senz/manifest.json +1 -0
- homeassistant/components/senz/translations/es.json +17 -1
- homeassistant/components/sfr_box/translations/tr.json +4 -0
- homeassistant/components/sftp_storage/translations/tr.json +22 -0
- homeassistant/components/shelly/manifest.json +1 -1
- homeassistant/components/shelly/sensor.py +0 -2
- homeassistant/components/shelly/strings.json +8 -0
- homeassistant/components/shelly/switch.py +0 -1
- homeassistant/components/shelly/translations/bg.json +5 -0
- homeassistant/components/shelly/translations/cs.json +8 -0
- homeassistant/components/shelly/translations/de.json +8 -0
- homeassistant/components/shelly/translations/en-GB.json +8 -0
- homeassistant/components/shelly/translations/en.json +8 -0
- homeassistant/components/shelly/translations/es.json +192 -2
- homeassistant/components/shelly/translations/et.json +10 -1
- homeassistant/components/shelly/translations/fr.json +10 -0
- homeassistant/components/shelly/translations/ga.json +46 -0
- homeassistant/components/shelly/translations/it.json +13 -2
- homeassistant/components/shelly/translations/lt.json +8 -0
- homeassistant/components/shelly/translations/mk.json +3 -0
- homeassistant/components/shelly/translations/nl.json +7 -0
- homeassistant/components/shelly/translations/pl.json +8 -0
- homeassistant/components/shelly/translations/pt.json +8 -0
- homeassistant/components/shelly/translations/ru.json +5 -0
- homeassistant/components/shelly/translations/sk.json +8 -0
- homeassistant/components/shelly/translations/tr.json +171 -5
- homeassistant/components/shelly/translations/zh-Hans.json +8 -0
- homeassistant/components/shelly/translations/zh-Hant.json +8 -0
- homeassistant/components/shelly/valve.py +1 -1
- homeassistant/components/siren/translations/mk.json +4 -2
- homeassistant/components/sleep_as_android/translations/tr.json +68 -0
- homeassistant/components/smarla/translations/tr.json +15 -0
- homeassistant/components/smartthings/manifest.json +1 -0
- homeassistant/components/smartthings/translations/es.json +74 -0
- homeassistant/components/smartthings/translations/nl.json +13 -0
- homeassistant/components/smartthings/translations/tr.json +20 -0
- homeassistant/components/smhi/translations/tr.json +19 -0
- homeassistant/components/snoo/translations/tr.json +8 -0
- homeassistant/components/solaredge/translations/tr.json +64 -3
- homeassistant/components/sonos/manifest.json +1 -0
- homeassistant/components/speedtestdotnet/manifest.json +1 -0
- homeassistant/components/spotify/translations/es.json +5 -0
- homeassistant/components/sql/translations/es.json +1 -0
- homeassistant/components/sql/translations/sr-Latn.json +61 -2
- homeassistant/components/sql/translations/tr.json +83 -0
- homeassistant/components/squeezebox/translations/mk.json +5 -0
- homeassistant/components/squeezebox/translations/tr.json +63 -0
- homeassistant/components/starline/translations/sr-Latn.json +7 -0
- homeassistant/components/statistics/translations/sr-Latn.json +118 -2
- homeassistant/components/switch/translations/mk.json +5 -1
- homeassistant/components/switch/translations/sr-Latn.json +2 -1
- homeassistant/components/switch_as_x/translations/sr-Latn.json +27 -3
- homeassistant/components/switchbot/manifest.json +1 -0
- homeassistant/components/switchbot/translations/el.json +2 -1
- homeassistant/components/switchbot/translations/tr.json +34 -0
- homeassistant/components/switchbot_cloud/translations/tr.json +20 -0
- homeassistant/components/synology_dsm/translations/sr-Latn.json +3 -0
- homeassistant/components/system_bridge/translations/tr.json +3 -0
- homeassistant/components/systemmonitor/translations/tr.json +6 -0
- homeassistant/components/tautulli/translations/de.json +1 -1
- homeassistant/components/tedee/manifest.json +1 -0
- homeassistant/components/telegram/translations/de.json +1 -1
- homeassistant/components/telegram/translations/tr.json +6 -0
- homeassistant/components/telegram_bot/translations/tr.json +203 -4
- homeassistant/components/template/__init__.py +11 -0
- homeassistant/components/template/helpers.py +2 -0
- homeassistant/components/template/translations/de.json +4 -4
- homeassistant/components/template/translations/el.json +4 -0
- homeassistant/components/template/translations/es.json +5 -0
- homeassistant/components/template/translations/ga.json +4 -0
- homeassistant/components/template/translations/it.json +4 -0
- homeassistant/components/template/translations/pl.json +37 -0
- homeassistant/components/template/translations/ru.json +4 -0
- homeassistant/components/template/translations/sr-Latn.json +933 -72
- homeassistant/components/template/translations/tr.json +172 -2
- homeassistant/components/template/translations/zh-Hans.json +4 -0
- homeassistant/components/tesla_fleet/manifest.json +1 -0
- homeassistant/components/tesla_fleet/translations/es.json +5 -0
- homeassistant/components/tesla_fleet/translations/sr-Latn.json +5 -0
- homeassistant/components/tesla_wall_connector/translations/es.json +3 -0
- homeassistant/components/tesla_wall_connector/translations/ga.json +3 -0
- homeassistant/components/teslemetry/manifest.json +1 -0
- homeassistant/components/teslemetry/translations/sr-Latn.json +5 -0
- homeassistant/components/teslemetry/translations/tr.json +77 -1
- homeassistant/components/tessie/manifest.json +1 -0
- homeassistant/components/tessie/translations/sr-Latn.json +5 -0
- homeassistant/components/tessie/translations/tr.json +3 -0
- homeassistant/components/text/strings.json +2 -3
- homeassistant/components/text/translations/bg.json +1 -8
- homeassistant/components/text/translations/cs.json +1 -8
- homeassistant/components/text/translations/de.json +2 -3
- homeassistant/components/text/translations/en-GB.json +7 -1
- homeassistant/components/text/translations/en.json +2 -3
- homeassistant/components/text/translations/es.json +7 -1
- homeassistant/components/text/translations/et.json +7 -1
- homeassistant/components/text/translations/lt.json +2 -3
- homeassistant/components/text/translations/pt.json +1 -8
- homeassistant/components/text/translations/sk.json +2 -3
- homeassistant/components/text/translations/sr-Latn.json +4 -2
- homeassistant/components/text/translations/zh-Hant.json +2 -3
- homeassistant/components/tod/translations/sr-Latn.json +16 -1
- homeassistant/components/togrill/translations/tr.json +58 -0
- homeassistant/components/tolo/translations/tr.json +2 -1
- homeassistant/components/tomorrowio/translations/sr-Latn.json +24 -0
- homeassistant/components/tplink/manifest.json +1 -0
- homeassistant/components/traccar_server/translations/tr.json +12 -0
- homeassistant/components/transmission/translations/tr.json +24 -0
- homeassistant/components/trend/translations/sr-Latn.json +21 -0
- homeassistant/components/tuya/__init__.py +12 -4
- homeassistant/components/tuya/binary_sensor.py +2 -2
- homeassistant/components/tuya/humidifier.py +3 -3
- homeassistant/components/tuya/models.py +18 -20
- homeassistant/components/tuya/translations/es.json +32 -0
- homeassistant/components/tuya/translations/ga.json +6 -0
- homeassistant/components/tuya/translations/sr-Latn.json +45 -0
- homeassistant/components/tuya/translations/tr.json +72 -0
- homeassistant/components/tuya/util.py +11 -9
- homeassistant/components/twitch/translations/es.json +5 -0
- homeassistant/components/ukraine_alarm/translations/tr.json +2 -1
- homeassistant/components/unifi/light.py +62 -29
- homeassistant/components/unifi/translations/es.json +3 -0
- homeassistant/components/unifi/translations/tr.json +5 -0
- homeassistant/components/unifiprotect/camera.py +5 -1
- homeassistant/components/unifiprotect/manifest.json +1 -1
- homeassistant/components/unifiprotect/translations/bg.json +0 -7
- homeassistant/components/unifiprotect/translations/cs.json +1 -1
- homeassistant/components/unifiprotect/translations/de.json +1 -1
- homeassistant/components/unifiprotect/translations/el.json +1 -5
- homeassistant/components/unifiprotect/translations/en-GB.json +11 -1
- homeassistant/components/unifiprotect/translations/en.json +1 -1
- homeassistant/components/unifiprotect/translations/es.json +11 -1
- homeassistant/components/unifiprotect/translations/fi.json +0 -7
- homeassistant/components/unifiprotect/translations/ga.json +10 -10
- homeassistant/components/unifiprotect/translations/lt.json +1 -1
- homeassistant/components/unifiprotect/translations/nl.json +0 -3
- homeassistant/components/unifiprotect/translations/pt.json +0 -10
- homeassistant/components/unifiprotect/translations/sk.json +1 -1
- homeassistant/components/unifiprotect/translations/sr-Latn.json +11 -0
- homeassistant/components/unifiprotect/translations/sv.json +3 -0
- homeassistant/components/unifiprotect/translations/tr.json +10 -0
- homeassistant/components/unifiprotect/translations/zh-Hans.json +2 -3
- homeassistant/components/unifiprotect/translations/zh-Hant.json +1 -1
- homeassistant/components/update/translations/sr-Latn.json +51 -1
- homeassistant/components/uptime_kuma/translations/tr.json +13 -0
- homeassistant/components/utility_meter/translations/sr-Latn.json +63 -2
- homeassistant/components/vacuum/strings.json +8 -12
- homeassistant/components/vacuum/translations/cs.json +4 -16
- homeassistant/components/vacuum/translations/de.json +7 -11
- homeassistant/components/vacuum/translations/en-GB.json +56 -1
- homeassistant/components/vacuum/translations/en.json +8 -12
- homeassistant/components/vacuum/translations/es.json +56 -1
- homeassistant/components/vacuum/translations/et.json +51 -1
- homeassistant/components/vacuum/translations/ga.json +48 -1
- homeassistant/components/vacuum/translations/lt.json +8 -12
- homeassistant/components/vacuum/translations/mk.json +10 -0
- homeassistant/components/vacuum/translations/pt.json +4 -16
- homeassistant/components/vacuum/translations/ru.json +48 -1
- homeassistant/components/vacuum/translations/sk.json +8 -12
- homeassistant/components/vacuum/translations/sv.json +13 -1
- homeassistant/components/vacuum/translations/tr.json +48 -1
- homeassistant/components/vacuum/translations/zh-Hans.json +6 -2
- homeassistant/components/vacuum/translations/zh-Hant.json +8 -12
- homeassistant/components/vegehub/translations/tr.json +5 -0
- homeassistant/components/velux/translations/tr.json +12 -0
- homeassistant/components/vesync/manifest.json +1 -1
- homeassistant/components/vesync/translations/tr.json +11 -0
- homeassistant/components/vicare/translations/es.json +54 -0
- homeassistant/components/vicare/translations/sr-Latn.json +10 -0
- homeassistant/components/vicare/translations/tr.json +21 -0
- homeassistant/components/victron_ble/translations/es.json +234 -0
- homeassistant/components/victron_remote_monitoring/translations/tr.json +102 -0
- homeassistant/components/volvo/translations/es.json +6 -0
- homeassistant/components/volvo/translations/tr.json +142 -0
- homeassistant/components/volvooncall/translations/tr.json +18 -1
- homeassistant/components/waqi/translations/sr-Latn.json +32 -0
- homeassistant/components/waqi/translations/tr.json +40 -0
- homeassistant/components/water_heater/translations/mk.json +10 -0
- homeassistant/components/water_heater/translations/sr-Latn.json +2 -1
- homeassistant/components/weatherflow/translations/tr.json +8 -0
- homeassistant/components/webostv/manifest.json +1 -0
- homeassistant/components/whirlpool/translations/tr.json +81 -0
- homeassistant/components/withings/translations/es.json +5 -0
- homeassistant/components/withings/translations/sr-Latn.json +5 -0
- homeassistant/components/wled/config_flow.py +5 -1
- homeassistant/components/wled/coordinator.py +9 -0
- homeassistant/components/wled/strings.json +10 -2
- homeassistant/components/wled/translations/cs.json +6 -1
- homeassistant/components/wled/translations/de.json +10 -2
- homeassistant/components/wled/translations/el.json +20 -1
- homeassistant/components/wled/translations/en-GB.json +15 -2
- homeassistant/components/wled/translations/en.json +10 -2
- homeassistant/components/wled/translations/es.json +15 -2
- homeassistant/components/wled/translations/ga.json +6 -1
- homeassistant/components/wled/translations/it.json +6 -1
- homeassistant/components/wled/translations/lt.json +15 -2
- homeassistant/components/wled/translations/nl.json +2 -1
- homeassistant/components/wled/translations/pl.json +8 -1
- homeassistant/components/wled/translations/pt.json +6 -1
- homeassistant/components/wled/translations/ru.json +20 -1
- homeassistant/components/wled/translations/sk.json +10 -2
- homeassistant/components/wled/translations/tr.json +26 -1
- homeassistant/components/wled/translations/zh-Hans.json +6 -1
- homeassistant/components/wled/translations/zh-Hant.json +15 -2
- homeassistant/components/wled/update.py +1 -1
- homeassistant/components/workday/translations/tr.json +5 -0
- homeassistant/components/xbox/translations/es.json +16 -1
- homeassistant/components/xbox/translations/ga.json +10 -1
- homeassistant/components/xbox/translations/tr.json +111 -0
- homeassistant/components/xiaomi_ble/manifest.json +1 -0
- homeassistant/components/yardian/translations/tr.json +16 -0
- homeassistant/components/yolink/translations/tr.json +14 -0
- homeassistant/components/youtube/manifest.json +1 -1
- homeassistant/components/youtube/translations/es.json +5 -0
- homeassistant/components/zeroconf/translations/tr.json +14 -0
- homeassistant/components/zha/config_flow.py +2 -6
- homeassistant/components/zha/manifest.json +1 -0
- homeassistant/components/zha/radio_manager.py +2 -2
- homeassistant/components/zha/translations/de.json +1 -1
- homeassistant/components/zha/translations/en-GB.json +44 -0
- homeassistant/components/zha/translations/es.json +44 -0
- homeassistant/components/zha/translations/ga.json +44 -0
- homeassistant/components/zha/translations/it.json +44 -0
- homeassistant/components/zha/translations/mk.json +18 -1
- homeassistant/components/zha/translations/sr-Latn.json +3 -0
- homeassistant/components/zha/translations/tr.json +213 -2
- homeassistant/components/zha/translations/zh-Hans.json +12 -0
- homeassistant/components/zwave_js/translations/tr.json +17 -0
- homeassistant/const.py +2 -1
- homeassistant/generated/integrations.json +21 -21
- homeassistant/generated/labs.py +2 -2
- homeassistant/helpers/area_registry.py +8 -1
- homeassistant/helpers/condition.py +16 -1
- homeassistant/helpers/entity.py +3 -1
- homeassistant/helpers/floor_registry.py +12 -1
- homeassistant/helpers/trigger.py +16 -1
- homeassistant/package_constraints.txt +3 -3
- {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b8.dist-info}/METADATA +1 -1
- {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b8.dist-info}/RECORD +951 -868
- homeassistant/components/cover/trigger.py +0 -116
- homeassistant/components/cover/triggers.yaml +0 -79
- {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b8.dist-info}/WHEEL +0 -0
- {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b8.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b8.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b8.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.12.0b2.dist-info → homeassistant-2025.12.0b8.dist-info}/top_level.txt +0 -0
|
@@ -4,12 +4,13 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
import asyncio
|
|
6
6
|
from collections.abc import Awaitable, Callable
|
|
7
|
+
from contextlib import suppress
|
|
7
8
|
from datetime import datetime, timedelta
|
|
8
9
|
from enum import Enum
|
|
9
10
|
import logging
|
|
10
11
|
from typing import Any, cast
|
|
11
12
|
|
|
12
|
-
from hass_nabucasa import Cloud
|
|
13
|
+
from hass_nabucasa import Cloud, NabuCasaBaseError
|
|
13
14
|
import voluptuous as vol
|
|
14
15
|
|
|
15
16
|
from homeassistant.components import alexa, google_assistant
|
|
@@ -78,13 +79,16 @@ from .subscription import async_subscription_info
|
|
|
78
79
|
DEFAULT_MODE = MODE_PROD
|
|
79
80
|
|
|
80
81
|
PLATFORMS = [
|
|
81
|
-
Platform.AI_TASK,
|
|
82
82
|
Platform.BINARY_SENSOR,
|
|
83
|
-
Platform.CONVERSATION,
|
|
84
83
|
Platform.STT,
|
|
85
84
|
Platform.TTS,
|
|
86
85
|
]
|
|
87
86
|
|
|
87
|
+
LLM_PLATFORMS = [
|
|
88
|
+
Platform.AI_TASK,
|
|
89
|
+
Platform.CONVERSATION,
|
|
90
|
+
]
|
|
91
|
+
|
|
88
92
|
SERVICE_REMOTE_CONNECT = "remote_connect"
|
|
89
93
|
SERVICE_REMOTE_DISCONNECT = "remote_disconnect"
|
|
90
94
|
|
|
@@ -431,7 +435,14 @@ def _handle_prefs_updated(hass: HomeAssistant, cloud: Cloud[CloudClient]) -> Non
|
|
|
431
435
|
|
|
432
436
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
433
437
|
"""Set up a config entry."""
|
|
434
|
-
|
|
438
|
+
platforms = PLATFORMS.copy()
|
|
439
|
+
if (cloud := hass.data[DATA_CLOUD]).is_logged_in:
|
|
440
|
+
with suppress(NabuCasaBaseError):
|
|
441
|
+
await cloud.llm.async_ensure_token()
|
|
442
|
+
platforms += LLM_PLATFORMS
|
|
443
|
+
|
|
444
|
+
await hass.config_entries.async_forward_entry_setups(entry, platforms)
|
|
445
|
+
entry.runtime_data = {"platforms": platforms}
|
|
435
446
|
stt_tts_entities_added = hass.data[DATA_PLATFORMS_SETUP]["stt_tts_entities_added"]
|
|
436
447
|
stt_tts_entities_added.set()
|
|
437
448
|
|
|
@@ -440,7 +451,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
|
440
451
|
|
|
441
452
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
442
453
|
"""Unload a config entry."""
|
|
443
|
-
return await hass.config_entries.async_unload_platforms(
|
|
454
|
+
return await hass.config_entries.async_unload_platforms(
|
|
455
|
+
entry, entry.runtime_data["platforms"]
|
|
456
|
+
)
|
|
444
457
|
|
|
445
458
|
|
|
446
459
|
@callback
|
|
@@ -6,7 +6,6 @@ import io
|
|
|
6
6
|
from json import JSONDecodeError
|
|
7
7
|
import logging
|
|
8
8
|
|
|
9
|
-
from hass_nabucasa import NabuCasaBaseError
|
|
10
9
|
from hass_nabucasa.llm import (
|
|
11
10
|
LLMAuthenticationError,
|
|
12
11
|
LLMError,
|
|
@@ -20,7 +19,7 @@ from PIL import Image
|
|
|
20
19
|
from homeassistant.components import ai_task, conversation
|
|
21
20
|
from homeassistant.config_entries import ConfigEntry
|
|
22
21
|
from homeassistant.core import HomeAssistant
|
|
23
|
-
from homeassistant.exceptions import
|
|
22
|
+
from homeassistant.exceptions import HomeAssistantError
|
|
24
23
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|
25
24
|
from homeassistant.util.json import json_loads
|
|
26
25
|
|
|
@@ -94,17 +93,11 @@ async def async_setup_entry(
|
|
|
94
93
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
|
95
94
|
) -> None:
|
|
96
95
|
"""Set up Home Assistant Cloud AI Task entity."""
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
try:
|
|
100
|
-
await cloud.llm.async_ensure_token()
|
|
101
|
-
except (LLMError, NabuCasaBaseError):
|
|
102
|
-
return
|
|
96
|
+
cloud = hass.data[DATA_CLOUD]
|
|
97
|
+
async_add_entities([CloudAITaskEntity(cloud, config_entry)])
|
|
103
98
|
|
|
104
|
-
async_add_entities([CloudLLMTaskEntity(cloud, config_entry)])
|
|
105
99
|
|
|
106
|
-
|
|
107
|
-
class CloudLLMTaskEntity(ai_task.AITaskEntity, BaseCloudLLMEntity):
|
|
100
|
+
class CloudAITaskEntity(BaseCloudLLMEntity, ai_task.AITaskEntity):
|
|
108
101
|
"""Home Assistant Cloud AI Task entity."""
|
|
109
102
|
|
|
110
103
|
_attr_has_entity_name = True
|
|
@@ -181,7 +174,7 @@ class CloudLLMTaskEntity(ai_task.AITaskEntity, BaseCloudLLMEntity):
|
|
|
181
174
|
attachments=attachments,
|
|
182
175
|
)
|
|
183
176
|
except LLMAuthenticationError as err:
|
|
184
|
-
raise
|
|
177
|
+
raise HomeAssistantError("Cloud LLM authentication failed") from err
|
|
185
178
|
except LLMRateLimitError as err:
|
|
186
179
|
raise HomeAssistantError("Cloud LLM is rate limited") from err
|
|
187
180
|
except LLMResponseError as err:
|
|
@@ -71,6 +71,7 @@ class CloudClient(Interface):
|
|
|
71
71
|
self._google_config_init_lock = asyncio.Lock()
|
|
72
72
|
self._relayer_region: str | None = None
|
|
73
73
|
self._cloud_ice_servers_listener: Callable[[], None] | None = None
|
|
74
|
+
self._ice_servers: list[RTCIceServer] = []
|
|
74
75
|
|
|
75
76
|
@property
|
|
76
77
|
def base_path(self) -> Path:
|
|
@@ -117,6 +118,11 @@ class CloudClient(Interface):
|
|
|
117
118
|
"""Return the connected relayer region."""
|
|
118
119
|
return self._relayer_region
|
|
119
120
|
|
|
121
|
+
@property
|
|
122
|
+
def ice_servers(self) -> list[RTCIceServer]:
|
|
123
|
+
"""Return the current ICE servers."""
|
|
124
|
+
return self._ice_servers
|
|
125
|
+
|
|
120
126
|
async def get_alexa_config(self) -> alexa_config.CloudAlexaConfig:
|
|
121
127
|
"""Return Alexa config."""
|
|
122
128
|
if self._alexa_config is None:
|
|
@@ -203,11 +209,8 @@ class CloudClient(Interface):
|
|
|
203
209
|
ice_servers: list[RTCIceServer],
|
|
204
210
|
) -> Callable[[], None]:
|
|
205
211
|
"""Register cloud ice server."""
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
return ice_servers
|
|
209
|
-
|
|
210
|
-
return async_register_ice_servers(self._hass, get_ice_servers)
|
|
212
|
+
self._ice_servers = ice_servers
|
|
213
|
+
return async_register_ice_servers(self._hass, lambda: self._ice_servers)
|
|
211
214
|
|
|
212
215
|
async def async_register_cloud_ice_servers_listener(
|
|
213
216
|
prefs: CloudPreferences,
|
|
@@ -268,6 +271,7 @@ class CloudClient(Interface):
|
|
|
268
271
|
|
|
269
272
|
async def logout_cleanups(self) -> None:
|
|
270
273
|
"""Cleanup some stuff after logout."""
|
|
274
|
+
self._ice_servers = []
|
|
271
275
|
await self.prefs.async_set_username(None)
|
|
272
276
|
|
|
273
277
|
if self._alexa_config:
|
|
@@ -4,9 +4,6 @@ from __future__ import annotations
|
|
|
4
4
|
|
|
5
5
|
from typing import Literal
|
|
6
6
|
|
|
7
|
-
from hass_nabucasa import NabuCasaBaseError
|
|
8
|
-
from hass_nabucasa.llm import LLMError
|
|
9
|
-
|
|
10
7
|
from homeassistant.components import conversation
|
|
11
8
|
from homeassistant.config_entries import ConfigEntry
|
|
12
9
|
from homeassistant.const import MATCH_ALL
|
|
@@ -24,19 +21,13 @@ async def async_setup_entry(
|
|
|
24
21
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
|
25
22
|
) -> None:
|
|
26
23
|
"""Set up the Home Assistant Cloud conversation entity."""
|
|
27
|
-
|
|
28
|
-
return
|
|
29
|
-
try:
|
|
30
|
-
await cloud.llm.async_ensure_token()
|
|
31
|
-
except (LLMError, NabuCasaBaseError):
|
|
32
|
-
return
|
|
33
|
-
|
|
24
|
+
cloud = hass.data[DATA_CLOUD]
|
|
34
25
|
async_add_entities([CloudConversationEntity(cloud, config_entry)])
|
|
35
26
|
|
|
36
27
|
|
|
37
28
|
class CloudConversationEntity(
|
|
38
|
-
conversation.ConversationEntity,
|
|
39
29
|
BaseCloudLLMEntity,
|
|
30
|
+
conversation.ConversationEntity,
|
|
40
31
|
):
|
|
41
32
|
"""Home Assistant Cloud conversation agent."""
|
|
42
33
|
|
|
@@ -8,10 +8,9 @@ import logging
|
|
|
8
8
|
import re
|
|
9
9
|
from typing import Any, Literal, cast
|
|
10
10
|
|
|
11
|
-
from hass_nabucasa import Cloud
|
|
11
|
+
from hass_nabucasa import Cloud, NabuCasaBaseError
|
|
12
12
|
from hass_nabucasa.llm import (
|
|
13
13
|
LLMAuthenticationError,
|
|
14
|
-
LLMError,
|
|
15
14
|
LLMRateLimitError,
|
|
16
15
|
LLMResponseError,
|
|
17
16
|
LLMServiceError,
|
|
@@ -37,7 +36,7 @@ from voluptuous_openapi import convert
|
|
|
37
36
|
|
|
38
37
|
from homeassistant.components import conversation
|
|
39
38
|
from homeassistant.config_entries import ConfigEntry
|
|
40
|
-
from homeassistant.exceptions import
|
|
39
|
+
from homeassistant.exceptions import HomeAssistantError
|
|
41
40
|
from homeassistant.helpers import llm
|
|
42
41
|
from homeassistant.helpers.entity import Entity
|
|
43
42
|
from homeassistant.util import slugify
|
|
@@ -601,14 +600,14 @@ class BaseCloudLLMEntity(Entity):
|
|
|
601
600
|
)
|
|
602
601
|
|
|
603
602
|
except LLMAuthenticationError as err:
|
|
604
|
-
raise
|
|
603
|
+
raise HomeAssistantError("Cloud LLM authentication failed") from err
|
|
605
604
|
except LLMRateLimitError as err:
|
|
606
605
|
raise HomeAssistantError("Cloud LLM is rate limited") from err
|
|
607
606
|
except LLMResponseError as err:
|
|
608
607
|
raise HomeAssistantError(str(err)) from err
|
|
609
608
|
except LLMServiceError as err:
|
|
610
609
|
raise HomeAssistantError("Error talking to Cloud LLM") from err
|
|
611
|
-
except
|
|
610
|
+
except NabuCasaBaseError as err:
|
|
612
611
|
raise HomeAssistantError(str(err)) from err
|
|
613
612
|
|
|
614
613
|
if not chat_log.unresponded_tool_results:
|
|
@@ -99,6 +99,7 @@ def async_setup(hass: HomeAssistant) -> None:
|
|
|
99
99
|
websocket_api.async_register_command(hass, websocket_hook_delete)
|
|
100
100
|
websocket_api.async_register_command(hass, websocket_remote_connect)
|
|
101
101
|
websocket_api.async_register_command(hass, websocket_remote_disconnect)
|
|
102
|
+
websocket_api.async_register_command(hass, websocket_webrtc_ice_servers)
|
|
102
103
|
|
|
103
104
|
websocket_api.async_register_command(hass, google_assistant_get)
|
|
104
105
|
websocket_api.async_register_command(hass, google_assistant_list)
|
|
@@ -1107,6 +1108,7 @@ async def alexa_sync(
|
|
|
1107
1108
|
|
|
1108
1109
|
|
|
1109
1110
|
@websocket_api.websocket_command({"type": "cloud/tts/info"})
|
|
1111
|
+
@callback
|
|
1110
1112
|
def tts_info(
|
|
1111
1113
|
hass: HomeAssistant,
|
|
1112
1114
|
connection: websocket_api.ActiveConnection,
|
|
@@ -1134,3 +1136,22 @@ def tts_info(
|
|
|
1134
1136
|
)
|
|
1135
1137
|
|
|
1136
1138
|
connection.send_result(msg["id"], {"languages": result})
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
@websocket_api.websocket_command(
|
|
1142
|
+
{
|
|
1143
|
+
vol.Required("type"): "cloud/webrtc/ice_servers",
|
|
1144
|
+
}
|
|
1145
|
+
)
|
|
1146
|
+
@_require_cloud_login
|
|
1147
|
+
@callback
|
|
1148
|
+
def websocket_webrtc_ice_servers(
|
|
1149
|
+
hass: HomeAssistant,
|
|
1150
|
+
connection: websocket_api.ActiveConnection,
|
|
1151
|
+
msg: dict[str, Any],
|
|
1152
|
+
) -> None:
|
|
1153
|
+
"""Handle get WebRTC ICE servers websocket command."""
|
|
1154
|
+
connection.send_result(
|
|
1155
|
+
msg["id"],
|
|
1156
|
+
[server.to_dict() for server in hass.data[DATA_CLOUD].client.ice_servers],
|
|
1157
|
+
)
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"ai_task": {
|
|
4
|
+
"cloud_ai": {
|
|
5
|
+
"name": "Home Assistant Cloud AI"
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
},
|
|
2
9
|
"exceptions": {
|
|
3
10
|
"backup_size_too_large": {
|
|
4
11
|
"message": "El tama\u00f1o de la copia de seguridad de {size}GB es demasiado grande para subirla a Home Assistant Cloud."
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"ai_task": {
|
|
4
|
+
"cloud_ai": {
|
|
5
|
+
"name": "C\u00fant\u00f3ir Baile Cloud AI"
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
},
|
|
2
9
|
"exceptions": {
|
|
3
10
|
"backup_size_too_large": {
|
|
4
11
|
"message": "T\u00e1 an m\u00e9id c\u00faltaca de {size}GB r\u00f3mh\u00f3r le huasl\u00f3d\u00e1il chuig Home Assistant Cloud."
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
+
"entity": {
|
|
3
|
+
"ai_task": {
|
|
4
|
+
"cloud_ai": {
|
|
5
|
+
"name": "Home Asistan\u0131 Bulut Yapay Zeka"
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
},
|
|
2
9
|
"exceptions": {
|
|
3
10
|
"backup_size_too_large": {
|
|
4
11
|
"message": "{size} GB'l\u0131k yedekleme boyutu Home Assistant Cloud'a y\u00fcklenemeyecek kadar b\u00fcy\u00fck."
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"config": {
|
|
3
3
|
"abort": {
|
|
4
|
-
"already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f"
|
|
4
|
+
"already_configured": "Cihaz zaten yap\u0131land\u0131r\u0131lm\u0131\u015f",
|
|
5
|
+
"reauth_successful": "Kimlik bilgileri ba\u015far\u0131yla g\u00fcncellendi"
|
|
5
6
|
},
|
|
6
7
|
"error": {
|
|
7
8
|
"cannot_connect": "Ba\u011flanma hatas\u0131",
|
|
@@ -11,6 +12,14 @@
|
|
|
11
12
|
"unknown": "Beklenmeyen hata"
|
|
12
13
|
},
|
|
13
14
|
"step": {
|
|
15
|
+
"reauth_confirm": {
|
|
16
|
+
"data": {
|
|
17
|
+
"api_key": "API Anahtar\u0131",
|
|
18
|
+
"api_token": "API gizli dizisi"
|
|
19
|
+
},
|
|
20
|
+
"description": "Mevcut Coinbase API anahtar\u0131n\u0131z kullan\u0131mdan kald\u0131r\u0131lan v2 API i\u00e7in g\u00f6r\u00fcn\u00fcyor. L\u00fctfen v3 API i\u00e7in olu\u015fturulmu\u015f yeni bir API anahtar\u0131yla yeniden yap\u0131land\u0131r\u0131n. [Geli\u015ftirici Platformu]'nu ziyaret edin.{developer_url}) i\u00e7in yeni kimlik bilgileri olu\u015fturmak i\u00e7in {account_name}.",
|
|
21
|
+
"title": "Coinbase API kimlik bilgilerini g\u00fcncelleyin"
|
|
22
|
+
},
|
|
14
23
|
"user": {
|
|
15
24
|
"data": {
|
|
16
25
|
"api_key": "API Anahtar\u0131",
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
"already_configured": "Hizmet zaten yap\u0131land\u0131r\u0131lm\u0131\u015f",
|
|
5
5
|
"cannot_connect": "Ba\u011flanma hatas\u0131",
|
|
6
6
|
"invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama",
|
|
7
|
+
"invalid_pin": "Verilen PIN ge\u00e7ersiz. 4-10 haneli bir say\u0131 olmal\u0131d\u0131r.",
|
|
7
8
|
"reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu",
|
|
8
9
|
"reconfigure_successful": "Yeniden yap\u0131land\u0131rma ba\u015far\u0131l\u0131 oldu",
|
|
9
10
|
"unknown": "Beklenmeyen hata"
|
|
@@ -11,6 +12,7 @@
|
|
|
11
12
|
"error": {
|
|
12
13
|
"cannot_connect": "Ba\u011flanma hatas\u0131",
|
|
13
14
|
"invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama",
|
|
15
|
+
"invalid_pin": "Verilen PIN ge\u00e7ersiz. 4-10 haneli bir say\u0131 olmal\u0131d\u0131r.",
|
|
14
16
|
"unknown": "Beklenmeyen hata"
|
|
15
17
|
},
|
|
16
18
|
"flow_title": "{host}",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"config": {
|
|
3
|
+
"abort": {
|
|
4
|
+
"reauth_successful": "Yeniden kimlik do\u011frulama ba\u015far\u0131l\u0131 oldu"
|
|
5
|
+
},
|
|
6
|
+
"error": {
|
|
7
|
+
"cannot_connect": "Ba\u011flanma hatas\u0131",
|
|
8
|
+
"invalid_auth": "Ge\u00e7ersiz kimlik do\u011frulama",
|
|
9
|
+
"unknown": "Beklenmeyen hata"
|
|
10
|
+
},
|
|
11
|
+
"step": {
|
|
12
|
+
"reauth_confirm": {
|
|
13
|
+
"data": {
|
|
14
|
+
"password": "\u015eifre"
|
|
15
|
+
},
|
|
16
|
+
"data_description": {
|
|
17
|
+
"password": "inext.compit.pl hesab\u0131n\u0131z\u0131n \u015fifresi"
|
|
18
|
+
},
|
|
19
|
+
"description": "L\u00fctfen \u015fifrenizi g\u00fcncelleyin {email}"
|
|
20
|
+
},
|
|
21
|
+
"user": {
|
|
22
|
+
"data": {
|
|
23
|
+
"email": "E-posta",
|
|
24
|
+
"password": "\u015eifre"
|
|
25
|
+
},
|
|
26
|
+
"data_description": {
|
|
27
|
+
"email": "inext.compit.pl hesab\u0131n\u0131z\u0131n e-posta adresi",
|
|
28
|
+
"password": "inext.compit.pl hesab\u0131n\u0131z\u0131n \u015fifresi"
|
|
29
|
+
},
|
|
30
|
+
"description": "L\u00fctfen giriniz {compit_url} kimlik bilgileri.",
|
|
31
|
+
"title": "Compit iNext'e ba\u011flan\u0131n"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -236,7 +236,9 @@ async def async_prepare_agent(
|
|
|
236
236
|
|
|
237
237
|
|
|
238
238
|
async def async_handle_sentence_triggers(
|
|
239
|
-
hass: HomeAssistant,
|
|
239
|
+
hass: HomeAssistant,
|
|
240
|
+
user_input: ConversationInput,
|
|
241
|
+
chat_log: ChatLog,
|
|
240
242
|
) -> str | None:
|
|
241
243
|
"""Try to match input against sentence triggers and return response text.
|
|
242
244
|
|
|
@@ -245,12 +247,13 @@ async def async_handle_sentence_triggers(
|
|
|
245
247
|
agent = get_agent_manager(hass).default_agent
|
|
246
248
|
assert agent is not None
|
|
247
249
|
|
|
248
|
-
return await agent.async_handle_sentence_triggers(user_input)
|
|
250
|
+
return await agent.async_handle_sentence_triggers(user_input, chat_log)
|
|
249
251
|
|
|
250
252
|
|
|
251
253
|
async def async_handle_intents(
|
|
252
254
|
hass: HomeAssistant,
|
|
253
255
|
user_input: ConversationInput,
|
|
256
|
+
chat_log: ChatLog,
|
|
254
257
|
*,
|
|
255
258
|
intent_filter: Callable[[RecognizeResult], bool] | None = None,
|
|
256
259
|
) -> intent.IntentResponse | None:
|
|
@@ -261,7 +264,9 @@ async def async_handle_intents(
|
|
|
261
264
|
agent = get_agent_manager(hass).default_agent
|
|
262
265
|
assert agent is not None
|
|
263
266
|
|
|
264
|
-
return await agent.async_handle_intents(
|
|
267
|
+
return await agent.async_handle_intents(
|
|
268
|
+
user_input, chat_log, intent_filter=intent_filter
|
|
269
|
+
)
|
|
265
270
|
|
|
266
271
|
|
|
267
272
|
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|
@@ -431,26 +431,14 @@ class DefaultAgent(ConversationEntity):
|
|
|
431
431
|
) -> ConversationResult:
|
|
432
432
|
"""Handle a message."""
|
|
433
433
|
response: intent.IntentResponse | None = None
|
|
434
|
-
tool_input: llm.ToolInput | None = None
|
|
435
|
-
tool_result: dict[str, Any] = {}
|
|
436
434
|
|
|
437
435
|
# Check if a trigger matched
|
|
438
436
|
if trigger_result := await self.async_recognize_sentence_trigger(user_input):
|
|
439
437
|
# Process callbacks and get response
|
|
440
438
|
response_text = await self._handle_trigger_result(
|
|
441
|
-
trigger_result, user_input
|
|
439
|
+
trigger_result, user_input, chat_log
|
|
442
440
|
)
|
|
443
441
|
|
|
444
|
-
# Create tool result
|
|
445
|
-
tool_input = llm.ToolInput(
|
|
446
|
-
tool_name="trigger_sentence",
|
|
447
|
-
tool_args={},
|
|
448
|
-
external=True,
|
|
449
|
-
)
|
|
450
|
-
tool_result = {
|
|
451
|
-
"response": response_text,
|
|
452
|
-
}
|
|
453
|
-
|
|
454
442
|
# Convert to conversation result
|
|
455
443
|
response = intent.IntentResponse(
|
|
456
444
|
language=user_input.language or self.hass.config.language
|
|
@@ -462,40 +450,7 @@ class DefaultAgent(ConversationEntity):
|
|
|
462
450
|
intent_result = await self.async_recognize_intent(user_input)
|
|
463
451
|
|
|
464
452
|
response = await self._async_process_intent_result(
|
|
465
|
-
intent_result, user_input
|
|
466
|
-
)
|
|
467
|
-
|
|
468
|
-
if response.response_type != intent.IntentResponseType.ERROR:
|
|
469
|
-
assert intent_result is not None
|
|
470
|
-
assert intent_result.intent is not None
|
|
471
|
-
# Create external tool call for the intent
|
|
472
|
-
tool_input = llm.ToolInput(
|
|
473
|
-
tool_name=intent_result.intent.name,
|
|
474
|
-
tool_args={
|
|
475
|
-
entity.name: entity.value or entity.text
|
|
476
|
-
for entity in intent_result.entities_list
|
|
477
|
-
},
|
|
478
|
-
external=True,
|
|
479
|
-
)
|
|
480
|
-
# Create tool result from intent response
|
|
481
|
-
tool_result = llm.IntentResponseDict(response)
|
|
482
|
-
|
|
483
|
-
# Add tool call and result to chat log if we have one
|
|
484
|
-
if tool_input is not None:
|
|
485
|
-
chat_log.async_add_assistant_content_without_tools(
|
|
486
|
-
AssistantContent(
|
|
487
|
-
agent_id=user_input.agent_id,
|
|
488
|
-
content=None,
|
|
489
|
-
tool_calls=[tool_input],
|
|
490
|
-
)
|
|
491
|
-
)
|
|
492
|
-
chat_log.async_add_assistant_content_without_tools(
|
|
493
|
-
ToolResultContent(
|
|
494
|
-
agent_id=user_input.agent_id,
|
|
495
|
-
tool_call_id=tool_input.id,
|
|
496
|
-
tool_name=tool_input.tool_name,
|
|
497
|
-
tool_result=tool_result,
|
|
498
|
-
)
|
|
453
|
+
intent_result, user_input, chat_log
|
|
499
454
|
)
|
|
500
455
|
|
|
501
456
|
speech: str = response.speech.get("plain", {}).get("speech", "")
|
|
@@ -514,6 +469,7 @@ class DefaultAgent(ConversationEntity):
|
|
|
514
469
|
self,
|
|
515
470
|
result: RecognizeResult | None,
|
|
516
471
|
user_input: ConversationInput,
|
|
472
|
+
chat_log: ChatLog,
|
|
517
473
|
) -> intent.IntentResponse:
|
|
518
474
|
"""Process user input with intents."""
|
|
519
475
|
language = user_input.language or self.hass.config.language
|
|
@@ -576,12 +532,21 @@ class DefaultAgent(ConversationEntity):
|
|
|
576
532
|
ConversationTraceEventType.TOOL_CALL,
|
|
577
533
|
{
|
|
578
534
|
"intent_name": result.intent.name,
|
|
579
|
-
"slots": {
|
|
580
|
-
entity.name: entity.value or entity.text
|
|
581
|
-
for entity in result.entities_list
|
|
582
|
-
},
|
|
535
|
+
"slots": {entity.name: entity.value for entity in result.entities_list},
|
|
583
536
|
},
|
|
584
537
|
)
|
|
538
|
+
tool_input = llm.ToolInput(
|
|
539
|
+
tool_name=result.intent.name,
|
|
540
|
+
tool_args={entity.name: entity.value for entity in result.entities_list},
|
|
541
|
+
external=True,
|
|
542
|
+
)
|
|
543
|
+
chat_log.async_add_assistant_content_without_tools(
|
|
544
|
+
AssistantContent(
|
|
545
|
+
agent_id=user_input.agent_id,
|
|
546
|
+
content=None,
|
|
547
|
+
tool_calls=[tool_input],
|
|
548
|
+
)
|
|
549
|
+
)
|
|
585
550
|
|
|
586
551
|
try:
|
|
587
552
|
intent_response = await intent.async_handle(
|
|
@@ -644,6 +609,16 @@ class DefaultAgent(ConversationEntity):
|
|
|
644
609
|
)
|
|
645
610
|
intent_response.async_set_speech(speech)
|
|
646
611
|
|
|
612
|
+
tool_result = llm.IntentResponseDict(intent_response)
|
|
613
|
+
chat_log.async_add_assistant_content_without_tools(
|
|
614
|
+
ToolResultContent(
|
|
615
|
+
agent_id=user_input.agent_id,
|
|
616
|
+
tool_call_id=tool_input.id,
|
|
617
|
+
tool_name=tool_input.tool_name,
|
|
618
|
+
tool_result=tool_result,
|
|
619
|
+
)
|
|
620
|
+
)
|
|
621
|
+
|
|
647
622
|
return intent_response
|
|
648
623
|
|
|
649
624
|
def _recognize(
|
|
@@ -1570,16 +1545,31 @@ class DefaultAgent(ConversationEntity):
|
|
|
1570
1545
|
)
|
|
1571
1546
|
|
|
1572
1547
|
async def _handle_trigger_result(
|
|
1573
|
-
self,
|
|
1548
|
+
self,
|
|
1549
|
+
result: SentenceTriggerResult,
|
|
1550
|
+
user_input: ConversationInput,
|
|
1551
|
+
chat_log: ChatLog,
|
|
1574
1552
|
) -> str:
|
|
1575
1553
|
"""Run sentence trigger callbacks and return response text."""
|
|
1576
|
-
|
|
1577
1554
|
# Gather callback responses in parallel
|
|
1578
1555
|
trigger_callbacks = [
|
|
1579
1556
|
self._triggers_details[trigger_id].callback(user_input, trigger_result)
|
|
1580
1557
|
for trigger_id, trigger_result in result.matched_triggers.items()
|
|
1581
1558
|
]
|
|
1582
1559
|
|
|
1560
|
+
tool_input = llm.ToolInput(
|
|
1561
|
+
tool_name="trigger_sentence",
|
|
1562
|
+
tool_args={},
|
|
1563
|
+
external=True,
|
|
1564
|
+
)
|
|
1565
|
+
chat_log.async_add_assistant_content_without_tools(
|
|
1566
|
+
AssistantContent(
|
|
1567
|
+
agent_id=user_input.agent_id,
|
|
1568
|
+
content=None,
|
|
1569
|
+
tool_calls=[tool_input],
|
|
1570
|
+
)
|
|
1571
|
+
)
|
|
1572
|
+
|
|
1583
1573
|
# Use first non-empty result as response.
|
|
1584
1574
|
#
|
|
1585
1575
|
# There may be multiple copies of a trigger running when editing in
|
|
@@ -1608,23 +1598,38 @@ class DefaultAgent(ConversationEntity):
|
|
|
1608
1598
|
f"component.{DOMAIN}.conversation.agent.done", "Done"
|
|
1609
1599
|
)
|
|
1610
1600
|
|
|
1601
|
+
tool_result: dict[str, Any] = {"response": response_text}
|
|
1602
|
+
chat_log.async_add_assistant_content_without_tools(
|
|
1603
|
+
ToolResultContent(
|
|
1604
|
+
agent_id=user_input.agent_id,
|
|
1605
|
+
tool_call_id=tool_input.id,
|
|
1606
|
+
tool_name=tool_input.tool_name,
|
|
1607
|
+
tool_result=tool_result,
|
|
1608
|
+
)
|
|
1609
|
+
)
|
|
1610
|
+
|
|
1611
1611
|
return response_text
|
|
1612
1612
|
|
|
1613
1613
|
async def async_handle_sentence_triggers(
|
|
1614
|
-
self,
|
|
1614
|
+
self,
|
|
1615
|
+
user_input: ConversationInput,
|
|
1616
|
+
chat_log: ChatLog,
|
|
1615
1617
|
) -> str | None:
|
|
1616
1618
|
"""Try to input sentence against sentence triggers and return response text.
|
|
1617
1619
|
|
|
1618
1620
|
Returns None if no match occurred.
|
|
1619
1621
|
"""
|
|
1620
1622
|
if trigger_result := await self.async_recognize_sentence_trigger(user_input):
|
|
1621
|
-
return await self._handle_trigger_result(
|
|
1623
|
+
return await self._handle_trigger_result(
|
|
1624
|
+
trigger_result, user_input, chat_log
|
|
1625
|
+
)
|
|
1622
1626
|
|
|
1623
1627
|
return None
|
|
1624
1628
|
|
|
1625
1629
|
async def async_handle_intents(
|
|
1626
1630
|
self,
|
|
1627
1631
|
user_input: ConversationInput,
|
|
1632
|
+
chat_log: ChatLog,
|
|
1628
1633
|
*,
|
|
1629
1634
|
intent_filter: Callable[[RecognizeResult], bool] | None = None,
|
|
1630
1635
|
) -> intent.IntentResponse | None:
|
|
@@ -1640,7 +1645,7 @@ class DefaultAgent(ConversationEntity):
|
|
|
1640
1645
|
# No error message on failed match
|
|
1641
1646
|
return None
|
|
1642
1647
|
|
|
1643
|
-
response = await self._async_process_intent_result(result, user_input)
|
|
1648
|
+
response = await self._async_process_intent_result(result, user_input, chat_log)
|
|
1644
1649
|
if (
|
|
1645
1650
|
response.response_type == intent.IntentResponseType.ERROR
|
|
1646
1651
|
and response.error_code
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"documentation": "https://www.home-assistant.io/integrations/conversation",
|
|
7
7
|
"integration_type": "entity",
|
|
8
8
|
"quality_scale": "internal",
|
|
9
|
-
"requirements": ["hassil==3.
|
|
9
|
+
"requirements": ["hassil==3.5.0", "home-assistant-intents==2025.12.2"]
|
|
10
10
|
}
|