homeassistant 2025.7.4__py3-none-any.whl → 2025.8.0b1__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/bootstrap.py +31 -38
- homeassistant/brands/frient.json +5 -0
- homeassistant/brands/third_reality.json +1 -1
- homeassistant/brands/ubiquiti.json +1 -1
- homeassistant/components/accuweather/translations/ga.json +6 -0
- homeassistant/components/aemet/translations/de.json +1 -1
- homeassistant/components/ai_task/__init__.py +34 -2
- homeassistant/components/ai_task/const.py +6 -0
- homeassistant/components/ai_task/entity.py +7 -4
- homeassistant/components/ai_task/manifest.json +2 -1
- homeassistant/components/ai_task/services.yaml +17 -3
- homeassistant/components/ai_task/strings.json +8 -0
- homeassistant/components/ai_task/task.py +100 -6
- homeassistant/components/ai_task/translations/bg.json +11 -1
- homeassistant/components/ai_task/translations/cs.json +8 -0
- homeassistant/components/ai_task/translations/de.json +8 -0
- homeassistant/components/ai_task/translations/el.json +8 -0
- homeassistant/components/ai_task/translations/en-GB.json +8 -0
- homeassistant/components/ai_task/translations/en.json +8 -0
- homeassistant/components/ai_task/translations/es.json +8 -0
- homeassistant/components/ai_task/translations/et.json +8 -0
- homeassistant/components/ai_task/translations/fr.json +7 -0
- homeassistant/components/ai_task/translations/ga.json +8 -0
- homeassistant/components/ai_task/translations/ja.json +8 -0
- homeassistant/components/ai_task/translations/lt.json +8 -0
- homeassistant/components/ai_task/translations/nl.json +3 -0
- homeassistant/components/ai_task/translations/pt.json +8 -0
- homeassistant/components/ai_task/translations/ru.json +7 -0
- homeassistant/components/ai_task/translations/sk.json +8 -0
- homeassistant/components/ai_task/translations/zh-Hans.json +8 -0
- homeassistant/components/ai_task/translations/zh-Hant.json +8 -0
- homeassistant/components/airgradient/manifest.json +1 -0
- homeassistant/components/airgradient/quality_scale.yaml +14 -18
- homeassistant/components/airgradient/translations/ga.json +15 -0
- homeassistant/components/airgradient/translations/it.json +3 -3
- homeassistant/components/airly/translations/de.json +1 -1
- homeassistant/components/airnow/__init__.py +0 -8
- homeassistant/components/airnow/config_flow.py +2 -2
- homeassistant/components/airnow/translations/de.json +1 -1
- homeassistant/components/airos/__init__.py +42 -0
- homeassistant/components/airos/config_flow.py +82 -0
- homeassistant/components/airos/const.py +9 -0
- homeassistant/components/airos/coordinator.py +66 -0
- homeassistant/components/airos/entity.py +36 -0
- homeassistant/components/airos/manifest.json +10 -0
- homeassistant/components/airos/quality_scale.yaml +72 -0
- homeassistant/components/airos/sensor.py +152 -0
- homeassistant/components/airos/strings.json +87 -0
- homeassistant/components/airos/translations/bg.json +75 -0
- homeassistant/components/airos/translations/cs.json +87 -0
- homeassistant/components/airos/translations/de.json +87 -0
- homeassistant/components/airos/translations/el.json +29 -0
- homeassistant/components/airos/translations/en.json +87 -0
- homeassistant/components/airos/translations/es.json +87 -0
- homeassistant/components/airos/translations/et.json +87 -0
- homeassistant/components/airos/translations/ga.json +70 -0
- homeassistant/components/airos/translations/sk.json +29 -0
- homeassistant/components/airos/translations/zh-Hans.json +87 -0
- homeassistant/components/airos/translations/zh-Hant.json +87 -0
- homeassistant/components/airq/const.py +0 -1
- homeassistant/components/airq/icons.json +0 -3
- homeassistant/components/airq/sensor.py +3 -5
- homeassistant/components/airq/strings.json +0 -3
- homeassistant/components/airq/translations/bg.json +0 -3
- homeassistant/components/airq/translations/ca.json +0 -3
- homeassistant/components/airq/translations/cs.json +0 -3
- homeassistant/components/airq/translations/de.json +0 -3
- homeassistant/components/airq/translations/el.json +0 -3
- homeassistant/components/airq/translations/en-GB.json +0 -3
- homeassistant/components/airq/translations/en.json +0 -3
- homeassistant/components/airq/translations/es.json +0 -3
- homeassistant/components/airq/translations/et.json +0 -3
- homeassistant/components/airq/translations/fi.json +0 -3
- homeassistant/components/airq/translations/fr.json +0 -3
- homeassistant/components/airq/translations/ga.json +16 -0
- homeassistant/components/airq/translations/hu.json +0 -3
- homeassistant/components/airq/translations/id.json +0 -3
- homeassistant/components/airq/translations/it.json +0 -3
- homeassistant/components/airq/translations/ja.json +0 -3
- homeassistant/components/airq/translations/ko.json +0 -3
- homeassistant/components/airq/translations/lt.json +0 -3
- homeassistant/components/airq/translations/nl.json +0 -3
- homeassistant/components/airq/translations/pl.json +0 -3
- homeassistant/components/airq/translations/pt-BR.json +0 -3
- homeassistant/components/airq/translations/pt.json +0 -3
- homeassistant/components/airq/translations/ro.json +0 -3
- homeassistant/components/airq/translations/ru.json +0 -3
- homeassistant/components/airq/translations/sk.json +0 -3
- homeassistant/components/airq/translations/sv.json +0 -3
- homeassistant/components/airq/translations/tr.json +0 -3
- homeassistant/components/airq/translations/uk.json +0 -3
- homeassistant/components/airq/translations/zh-Hans.json +0 -3
- homeassistant/components/airq/translations/zh-Hant.json +0 -3
- homeassistant/components/airthings/config_flow.py +2 -3
- homeassistant/components/airthings/sensor.py +2 -2
- homeassistant/components/airzone/translations/it.json +1 -1
- homeassistant/components/airzone_cloud/manifest.json +1 -1
- homeassistant/components/airzone_cloud/translations/it.json +1 -1
- homeassistant/components/alexa_devices/__init__.py +15 -6
- homeassistant/components/alexa_devices/config_flow.py +75 -9
- homeassistant/components/alexa_devices/coordinator.py +22 -5
- homeassistant/components/alexa_devices/icons.json +8 -0
- homeassistant/components/alexa_devices/manifest.json +2 -2
- homeassistant/components/alexa_devices/quality_scale.yaml +14 -16
- homeassistant/components/alexa_devices/services.py +121 -0
- homeassistant/components/alexa_devices/services.yaml +504 -0
- homeassistant/components/alexa_devices/strings.json +536 -3
- homeassistant/components/alexa_devices/translations/bg.json +35 -0
- homeassistant/components/alexa_devices/translations/ca.json +6 -0
- homeassistant/components/alexa_devices/translations/cs.json +536 -3
- homeassistant/components/alexa_devices/translations/de.json +536 -3
- homeassistant/components/alexa_devices/translations/el.json +15 -3
- homeassistant/components/alexa_devices/translations/en-GB.json +14 -2
- homeassistant/components/alexa_devices/translations/en.json +536 -3
- homeassistant/components/alexa_devices/translations/es.json +41 -2
- homeassistant/components/alexa_devices/translations/et.json +14 -2
- homeassistant/components/alexa_devices/translations/ga.json +436 -2
- homeassistant/components/alexa_devices/translations/he.json +6 -0
- homeassistant/components/alexa_devices/translations/hu.json +0 -8
- homeassistant/components/alexa_devices/translations/it.json +0 -8
- homeassistant/components/alexa_devices/translations/ja.json +14 -2
- homeassistant/components/alexa_devices/translations/lt.json +14 -2
- homeassistant/components/alexa_devices/translations/mk.json +5 -1
- homeassistant/components/alexa_devices/translations/nl.json +6 -8
- homeassistant/components/alexa_devices/translations/pt.json +14 -2
- homeassistant/components/alexa_devices/translations/ru.json +20 -0
- homeassistant/components/alexa_devices/translations/sk.json +14 -2
- homeassistant/components/alexa_devices/translations/sv.json +11 -8
- homeassistant/components/alexa_devices/translations/zh-Hans.json +41 -3
- homeassistant/components/alexa_devices/translations/zh-Hant.json +536 -3
- homeassistant/components/alexa_devices/utils.py +2 -2
- homeassistant/components/amberelectric/__init__.py +12 -1
- homeassistant/components/amberelectric/const.py +11 -1
- homeassistant/components/amberelectric/coordinator.py +2 -23
- homeassistant/components/amberelectric/helpers.py +25 -0
- homeassistant/components/amberelectric/icons.json +5 -0
- homeassistant/components/amberelectric/sensor.py +2 -6
- homeassistant/components/amberelectric/services.py +121 -0
- homeassistant/components/amberelectric/services.yaml +16 -0
- homeassistant/components/amberelectric/strings.json +46 -10
- homeassistant/components/amberelectric/translations/cs.json +36 -0
- homeassistant/components/amberelectric/translations/de.json +37 -1
- homeassistant/components/amberelectric/translations/el.json +36 -0
- homeassistant/components/amberelectric/translations/en-GB.json +36 -0
- homeassistant/components/amberelectric/translations/en.json +36 -0
- homeassistant/components/amberelectric/translations/es.json +36 -0
- homeassistant/components/amberelectric/translations/et.json +36 -0
- homeassistant/components/amberelectric/translations/ga.json +36 -0
- homeassistant/components/amberelectric/translations/lt.json +36 -0
- homeassistant/components/amberelectric/translations/mk.json +19 -1
- homeassistant/components/amberelectric/translations/nb.json +14 -0
- homeassistant/components/amberelectric/translations/sk.json +36 -0
- homeassistant/components/amberelectric/translations/zh-Hans.json +36 -0
- homeassistant/components/amberelectric/translations/zh-Hant.json +36 -0
- homeassistant/components/amcrest/manifest.json +1 -1
- homeassistant/components/analytics/__init__.py +3 -0
- homeassistant/components/analytics/analytics.py +87 -2
- homeassistant/components/analytics/http.py +27 -0
- homeassistant/components/analytics/manifest.json +1 -1
- homeassistant/components/analytics_insights/__init__.py +0 -8
- homeassistant/components/analytics_insights/config_flow.py +6 -2
- homeassistant/components/androidtv/media_player.py +1 -1
- homeassistant/components/androidtv_remote/__init__.py +6 -21
- homeassistant/components/androidtv_remote/config_flow.py +35 -18
- homeassistant/components/androidtv_remote/diagnostics.py +1 -1
- homeassistant/components/androidtv_remote/entity.py +4 -2
- homeassistant/components/androidtv_remote/helpers.py +4 -2
- homeassistant/components/androidtv_remote/manifest.json +1 -1
- homeassistant/components/androidtv_remote/media_player.py +10 -10
- homeassistant/components/androidtv_remote/remote.py +3 -2
- homeassistant/components/androidtv_remote/strings.json +26 -3
- homeassistant/components/androidtv_remote/translations/bg.json +7 -1
- homeassistant/components/androidtv_remote/translations/ca.json +7 -1
- homeassistant/components/androidtv_remote/translations/cs.json +25 -2
- homeassistant/components/androidtv_remote/translations/de.json +25 -2
- homeassistant/components/androidtv_remote/translations/el.json +25 -2
- homeassistant/components/androidtv_remote/translations/en-GB.json +25 -2
- homeassistant/components/androidtv_remote/translations/en.json +25 -2
- homeassistant/components/androidtv_remote/translations/es.json +25 -2
- homeassistant/components/androidtv_remote/translations/et.json +25 -2
- homeassistant/components/androidtv_remote/translations/ga.json +32 -1
- homeassistant/components/androidtv_remote/translations/he.json +25 -2
- homeassistant/components/androidtv_remote/translations/ja.json +19 -1
- homeassistant/components/androidtv_remote/translations/lt.json +25 -2
- homeassistant/components/androidtv_remote/translations/nl.json +7 -1
- homeassistant/components/androidtv_remote/translations/pt.json +25 -2
- homeassistant/components/androidtv_remote/translations/sk.json +25 -2
- homeassistant/components/androidtv_remote/translations/sv.json +7 -1
- homeassistant/components/androidtv_remote/translations/zh-Hans.json +25 -2
- homeassistant/components/androidtv_remote/translations/zh-Hant.json +25 -2
- homeassistant/components/anova/translations/ga.json +23 -0
- homeassistant/components/anthemav/strings.json +1 -1
- homeassistant/components/anthropic/__init__.py +9 -0
- homeassistant/components/anthropic/const.py +2 -2
- homeassistant/components/anthropic/conversation.py +9 -405
- homeassistant/components/anthropic/entity.py +395 -0
- homeassistant/components/anthropic/strings.json +1 -1
- homeassistant/components/anthropic/translations/ga.json +1 -0
- homeassistant/components/apcupsd/translations/es.json +3 -3
- homeassistant/components/apple_tv/manifest.json +1 -1
- homeassistant/components/apple_tv/media_player.py +2 -2
- homeassistant/components/aprilaire/translations/ga.json +18 -0
- homeassistant/components/aprilaire/translations/it.json +9 -9
- homeassistant/components/apsystems/translations/ga.json +29 -0
- homeassistant/components/aquacell/translations/nl.json +3 -0
- homeassistant/components/arcam_fmj/manifest.json +1 -1
- homeassistant/components/assist_pipeline/__init__.py +0 -4
- homeassistant/components/assist_pipeline/const.py +0 -1
- homeassistant/components/assist_pipeline/pipeline.py +1 -46
- homeassistant/components/assist_satellite/__init__.py +4 -4
- homeassistant/components/assist_satellite/services.yaml +4 -3
- homeassistant/components/august/manifest.json +1 -1
- homeassistant/components/august/translations/ga.json +9 -0
- homeassistant/components/automation/translations/it.json +1 -1
- homeassistant/components/awair/const.py +1 -0
- homeassistant/components/awair/sensor.py +10 -0
- homeassistant/components/awair/strings.json +3 -0
- homeassistant/components/awair/translations/cs.json +3 -0
- homeassistant/components/awair/translations/de.json +3 -0
- homeassistant/components/awair/translations/el.json +3 -0
- homeassistant/components/awair/translations/en-GB.json +3 -0
- homeassistant/components/awair/translations/en.json +3 -0
- homeassistant/components/awair/translations/es.json +3 -0
- homeassistant/components/awair/translations/et.json +3 -0
- homeassistant/components/awair/translations/ga.json +9 -1
- homeassistant/components/awair/translations/ja.json +3 -0
- homeassistant/components/awair/translations/lt.json +3 -0
- homeassistant/components/awair/translations/mk.json +3 -0
- homeassistant/components/awair/translations/nl.json +3 -0
- homeassistant/components/awair/translations/pt.json +3 -0
- homeassistant/components/awair/translations/ru.json +3 -0
- homeassistant/components/awair/translations/sk.json +3 -0
- homeassistant/components/awair/translations/zh-Hans.json +3 -0
- homeassistant/components/awair/translations/zh-Hant.json +3 -0
- homeassistant/components/axis/__init__.py +3 -1
- homeassistant/components/azure_data_explorer/translations/ga.json +8 -1
- homeassistant/components/azure_devops/translations/ga.json +27 -0
- homeassistant/components/backup/__init__.py +18 -34
- homeassistant/components/backup/coordinator.py +2 -6
- homeassistant/components/backup/manager.py +31 -8
- homeassistant/components/backup/onboarding.py +8 -3
- homeassistant/components/backup/services.py +36 -0
- homeassistant/components/backup/websocket.py +25 -1
- homeassistant/components/bang_olufsen/strings.json +4 -4
- homeassistant/components/bang_olufsen/translations/cs.json +4 -0
- homeassistant/components/bang_olufsen/translations/fr.json +16 -0
- homeassistant/components/bauknecht/__init__.py +1 -0
- homeassistant/components/bauknecht/manifest.json +6 -0
- homeassistant/components/binary_sensor/translations/it.json +2 -2
- homeassistant/components/blink/translations/ga.json +11 -0
- homeassistant/components/blue_current/__init__.py +33 -14
- homeassistant/components/blue_current/const.py +11 -0
- homeassistant/components/blue_current/icons.json +11 -0
- homeassistant/components/blue_current/manifest.json +1 -1
- homeassistant/components/blue_current/strings.json +11 -0
- homeassistant/components/blue_current/switch.py +169 -0
- homeassistant/components/blue_current/translations/cs.json +11 -0
- homeassistant/components/blue_current/translations/de.json +11 -0
- homeassistant/components/blue_current/translations/el.json +8 -0
- homeassistant/components/blue_current/translations/en-GB.json +11 -0
- homeassistant/components/blue_current/translations/en.json +11 -0
- homeassistant/components/blue_current/translations/es.json +11 -0
- homeassistant/components/blue_current/translations/et.json +11 -0
- homeassistant/components/blue_current/translations/fi.json +11 -0
- homeassistant/components/blue_current/translations/ga.json +11 -0
- homeassistant/components/blue_current/translations/sk.json +11 -0
- homeassistant/components/blue_current/translations/zh-Hans.json +11 -0
- homeassistant/components/blue_current/translations/zh-Hant.json +11 -0
- homeassistant/components/bluesound/manifest.json +1 -1
- homeassistant/components/bluetooth/manifest.json +5 -5
- homeassistant/components/bmw_connected_drive/translations/es.json +1 -1
- homeassistant/components/bmw_connected_drive/translations/ga.json +25 -1
- homeassistant/components/bosch_alarm/__init__.py +2 -2
- homeassistant/components/bosch_alarm/services.py +3 -2
- homeassistant/components/bring/__init__.py +13 -0
- homeassistant/components/bring/const.py +4 -1
- homeassistant/components/bring/icons.json +3 -0
- homeassistant/components/bring/services.py +110 -0
- homeassistant/components/bring/services.yaml +25 -0
- homeassistant/components/bring/strings.json +27 -0
- homeassistant/components/bring/translations/bg.json +11 -0
- homeassistant/components/bring/translations/ca.json +12 -0
- homeassistant/components/bring/translations/cs.json +26 -0
- homeassistant/components/bring/translations/de.json +26 -0
- homeassistant/components/bring/translations/el.json +26 -0
- homeassistant/components/bring/translations/en-GB.json +26 -0
- homeassistant/components/bring/translations/en.json +26 -0
- homeassistant/components/bring/translations/es.json +26 -0
- homeassistant/components/bring/translations/et.json +26 -0
- homeassistant/components/bring/translations/ga.json +28 -0
- homeassistant/components/bring/translations/it.json +3 -0
- homeassistant/components/bring/translations/lt.json +26 -0
- homeassistant/components/bring/translations/mk.json +14 -0
- homeassistant/components/bring/translations/pt.json +26 -0
- homeassistant/components/bring/translations/sk.json +26 -0
- homeassistant/components/bring/translations/zh-Hans.json +26 -0
- homeassistant/components/bring/translations/zh-Hant.json +26 -0
- homeassistant/components/broadlink/const.py +1 -0
- homeassistant/components/broadlink/sensor.py +19 -0
- homeassistant/components/broadlink/updater.py +11 -0
- homeassistant/components/brother/manifest.json +1 -1
- homeassistant/components/bsblan/config_flow.py +130 -14
- homeassistant/components/bsblan/manifest.json +7 -1
- homeassistant/components/bsblan/sensor.py +2 -0
- homeassistant/components/bsblan/strings.json +19 -1
- homeassistant/components/bsblan/translations/bg.json +6 -0
- homeassistant/components/bsblan/translations/ca.json +7 -0
- homeassistant/components/bsblan/translations/cs.json +19 -1
- homeassistant/components/bsblan/translations/de.json +19 -1
- homeassistant/components/bsblan/translations/el.json +19 -1
- homeassistant/components/bsblan/translations/en-GB.json +19 -1
- homeassistant/components/bsblan/translations/en.json +19 -1
- homeassistant/components/bsblan/translations/es.json +19 -1
- homeassistant/components/bsblan/translations/et.json +19 -1
- homeassistant/components/bsblan/translations/ga.json +21 -0
- homeassistant/components/bsblan/translations/he.json +6 -0
- homeassistant/components/bsblan/translations/lt.json +19 -1
- homeassistant/components/bsblan/translations/nl.json +7 -0
- homeassistant/components/bsblan/translations/pt.json +19 -1
- homeassistant/components/bsblan/translations/sk.json +19 -1
- homeassistant/components/bsblan/translations/sv.json +19 -1
- homeassistant/components/bsblan/translations/zh-Hans.json +19 -1
- homeassistant/components/bsblan/translations/zh-Hant.json +19 -1
- homeassistant/components/bthome/coordinator.py +1 -1
- homeassistant/components/bthome/device_trigger.py +1 -1
- homeassistant/components/calendar/translations/it.json +1 -1
- homeassistant/components/cambridge_audio/media_player.py +1 -1
- homeassistant/components/cambridge_audio/translations/it.json +2 -2
- homeassistant/components/climate/translations/it.json +6 -6
- homeassistant/components/cloud/backup.py +6 -15
- homeassistant/components/cloud/client.py +2 -1
- homeassistant/components/cloud/http_api.py +1 -1
- homeassistant/components/cloud/manifest.json +1 -1
- homeassistant/components/cloud/repairs.py +3 -3
- homeassistant/components/cloud/strings.json +4 -0
- homeassistant/components/cloud/subscription.py +5 -12
- homeassistant/components/cloud/translations/cs.json +4 -0
- homeassistant/components/cloud/translations/de.json +4 -0
- homeassistant/components/cloud/translations/el.json +4 -0
- homeassistant/components/cloud/translations/en-GB.json +4 -0
- homeassistant/components/cloud/translations/en.json +4 -0
- homeassistant/components/cloud/translations/es.json +4 -0
- homeassistant/components/cloud/translations/et.json +4 -0
- homeassistant/components/cloud/translations/fr.json +4 -0
- homeassistant/components/cloud/translations/ga.json +4 -0
- homeassistant/components/cloud/translations/nl.json +3 -0
- homeassistant/components/cloud/translations/ru.json +4 -0
- homeassistant/components/cloud/translations/sk.json +4 -0
- homeassistant/components/cloud/translations/zh-Hans.json +4 -0
- homeassistant/components/cloud/translations/zh-Hant.json +4 -0
- homeassistant/components/cloud/tts.py +31 -4
- homeassistant/components/command_line/sensor.py +1 -12
- homeassistant/components/compensation/__init__.py +17 -7
- homeassistant/components/compensation/manifest.json +1 -1
- homeassistant/components/compensation/sensor.py +55 -27
- homeassistant/components/control4/__init__.py +9 -15
- homeassistant/components/control4/config_flow.py +6 -2
- homeassistant/components/conversation/__init__.py +4 -11
- homeassistant/components/conversation/agent_manager.py +2 -7
- homeassistant/components/conversation/chat_log.py +18 -0
- homeassistant/components/conversation/const.py +0 -1
- homeassistant/components/conversation/manifest.json +1 -1
- homeassistant/components/conversation/util.py +47 -0
- homeassistant/components/coolmaster/__init__.py +13 -1
- homeassistant/components/cover/translations/da.json +2 -1
- homeassistant/components/daikin/translations/ga.json +9 -0
- homeassistant/components/datadog/__init__.py +64 -34
- homeassistant/components/datadog/config_flow.py +203 -0
- homeassistant/components/datadog/const.py +10 -0
- homeassistant/components/datadog/manifest.json +2 -1
- homeassistant/components/datadog/strings.json +56 -0
- homeassistant/components/datadog/translations/bg.json +28 -0
- homeassistant/components/datadog/translations/cs.json +56 -0
- homeassistant/components/datadog/translations/de.json +56 -0
- homeassistant/components/datadog/translations/el.json +56 -0
- homeassistant/components/datadog/translations/en-GB.json +56 -0
- homeassistant/components/datadog/translations/en.json +56 -0
- homeassistant/components/datadog/translations/es.json +56 -0
- homeassistant/components/datadog/translations/et.json +56 -0
- homeassistant/components/datadog/translations/ga.json +40 -0
- homeassistant/components/datadog/translations/he.json +28 -0
- homeassistant/components/datadog/translations/mk.json +14 -0
- homeassistant/components/datadog/translations/nl.json +28 -0
- homeassistant/components/datadog/translations/ru.json +56 -0
- homeassistant/components/datadog/translations/sk.json +56 -0
- homeassistant/components/datadog/translations/zh-Hans.json +56 -0
- homeassistant/components/datadog/translations/zh-Hant.json +56 -0
- homeassistant/components/demo/translations/it.json +2 -2
- homeassistant/components/demo/vacuum.py +6 -19
- homeassistant/components/denonavr/__init__.py +0 -9
- homeassistant/components/denonavr/config_flow.py +6 -2
- homeassistant/components/derivative/__init__.py +58 -6
- homeassistant/components/derivative/config_flow.py +4 -0
- homeassistant/components/derivative/sensor.py +83 -45
- homeassistant/components/derivative/strings.json +5 -0
- homeassistant/components/derivative/translations/ca.json +5 -0
- homeassistant/components/derivative/translations/cs.json +5 -0
- homeassistant/components/derivative/translations/de.json +5 -0
- homeassistant/components/derivative/translations/el.json +5 -0
- homeassistant/components/derivative/translations/en-GB.json +5 -0
- homeassistant/components/derivative/translations/en.json +5 -0
- homeassistant/components/derivative/translations/es.json +5 -0
- homeassistant/components/derivative/translations/et.json +5 -0
- homeassistant/components/derivative/translations/fr.json +5 -0
- homeassistant/components/derivative/translations/ga.json +7 -0
- homeassistant/components/derivative/translations/ja.json +5 -0
- homeassistant/components/derivative/translations/lt.json +5 -0
- homeassistant/components/derivative/translations/nl.json +5 -0
- homeassistant/components/derivative/translations/pt.json +5 -0
- homeassistant/components/derivative/translations/sk.json +5 -0
- homeassistant/components/derivative/translations/sv.json +5 -0
- homeassistant/components/derivative/translations/zh-Hans.json +5 -0
- homeassistant/components/derivative/translations/zh-Hant.json +5 -0
- homeassistant/components/devolo_home_control/config_flow.py +49 -60
- homeassistant/components/devolo_home_control/entity.py +28 -3
- homeassistant/components/devolo_home_control/strings.json +1 -1
- homeassistant/components/devolo_home_network/coordinator.py +4 -3
- homeassistant/components/devolo_home_network/device_tracker.py +13 -22
- homeassistant/components/devolo_home_network/entity.py +1 -1
- homeassistant/components/devolo_home_network/manifest.json +1 -0
- homeassistant/components/devolo_home_network/quality_scale.yaml +84 -0
- homeassistant/components/devolo_home_network/sensor.py +6 -2
- homeassistant/components/devolo_home_network/strings.json +4 -4
- homeassistant/components/diagnostics/__init__.py +14 -2
- homeassistant/components/discovergy/__init__.py +7 -2
- homeassistant/components/discovergy/coordinator.py +9 -2
- homeassistant/components/discovergy/manifest.json +1 -1
- homeassistant/components/discovergy/quality_scale.yaml +16 -9
- homeassistant/components/discovergy/strings.json +11 -0
- homeassistant/components/discovergy/translations/cs.json +11 -0
- homeassistant/components/discovergy/translations/de.json +11 -0
- homeassistant/components/discovergy/translations/el.json +11 -0
- homeassistant/components/discovergy/translations/en-GB.json +11 -0
- homeassistant/components/discovergy/translations/en.json +11 -0
- homeassistant/components/discovergy/translations/es.json +11 -0
- homeassistant/components/discovergy/translations/et.json +11 -0
- homeassistant/components/discovergy/translations/ga.json +11 -0
- homeassistant/components/discovergy/translations/lt.json +11 -0
- homeassistant/components/discovergy/translations/nb.json +11 -0
- homeassistant/components/discovergy/translations/sk.json +11 -0
- homeassistant/components/discovergy/translations/sv.json +8 -0
- homeassistant/components/discovergy/translations/zh-Hans.json +11 -0
- homeassistant/components/discovergy/translations/zh-Hant.json +11 -0
- homeassistant/components/dnsip/__init__.py +0 -6
- homeassistant/components/dnsip/config_flow.py +5 -2
- homeassistant/components/dnsip/strings.json +2 -1
- homeassistant/components/dnsip/translations/cs.json +2 -1
- homeassistant/components/dnsip/translations/de.json +2 -1
- homeassistant/components/dnsip/translations/el.json +2 -1
- homeassistant/components/dnsip/translations/en-GB.json +2 -1
- homeassistant/components/dnsip/translations/en.json +2 -1
- homeassistant/components/dnsip/translations/es.json +2 -1
- homeassistant/components/dnsip/translations/et.json +2 -1
- homeassistant/components/dnsip/translations/ga.json +3 -0
- homeassistant/components/dnsip/translations/he.json +2 -1
- homeassistant/components/dnsip/translations/ja.json +2 -1
- homeassistant/components/dnsip/translations/lt.json +2 -1
- homeassistant/components/dnsip/translations/pt.json +2 -1
- homeassistant/components/dnsip/translations/sk.json +2 -1
- homeassistant/components/dnsip/translations/sv.json +2 -1
- homeassistant/components/dnsip/translations/zh-Hans.json +2 -1
- homeassistant/components/dnsip/translations/zh-Hant.json +2 -1
- homeassistant/components/dominos/strings.json +2 -2
- homeassistant/components/doods/manifest.json +1 -1
- homeassistant/components/downloader/services.py +3 -5
- homeassistant/components/dsmr/strings.json +1 -1
- homeassistant/components/dsmr/translations/fr.json +2 -1
- homeassistant/components/dsmr_reader/strings.json +1 -1
- homeassistant/components/dsmr_reader/translations/ga.json +8 -0
- homeassistant/components/dwd_weather_warnings/strings.json +2 -2
- homeassistant/components/dynalite/__init__.py +2 -2
- homeassistant/components/dynalite/services.py +1 -1
- homeassistant/components/ecoforest/translations/it.json +1 -1
- homeassistant/components/ecovacs/binary_sensor.py +49 -2
- homeassistant/components/ecovacs/sensor.py +48 -2
- homeassistant/components/ecovacs/translations/nl.json +7 -0
- homeassistant/components/ecovacs/vacuum.py +2 -30
- homeassistant/components/ecowitt/sensor.py +3 -0
- homeassistant/components/eheimdigital/config_flow.py +55 -1
- homeassistant/components/eheimdigital/manifest.json +2 -2
- homeassistant/components/eheimdigital/quality_scale.yaml +10 -8
- homeassistant/components/eheimdigital/strings.json +11 -1
- homeassistant/components/eheimdigital/translations/bg.json +7 -1
- homeassistant/components/eheimdigital/translations/ca.json +7 -1
- homeassistant/components/eheimdigital/translations/cs.json +11 -1
- homeassistant/components/eheimdigital/translations/de.json +11 -1
- homeassistant/components/eheimdigital/translations/el.json +11 -1
- homeassistant/components/eheimdigital/translations/en-GB.json +11 -1
- homeassistant/components/eheimdigital/translations/en.json +11 -1
- homeassistant/components/eheimdigital/translations/es.json +11 -1
- homeassistant/components/eheimdigital/translations/et.json +11 -1
- homeassistant/components/eheimdigital/translations/ga.json +8 -0
- homeassistant/components/eheimdigital/translations/he.json +7 -1
- homeassistant/components/eheimdigital/translations/ja.json +11 -1
- homeassistant/components/eheimdigital/translations/lt.json +11 -1
- homeassistant/components/eheimdigital/translations/nl.json +7 -1
- homeassistant/components/eheimdigital/translations/pt.json +11 -1
- homeassistant/components/eheimdigital/translations/ru.json +8 -0
- homeassistant/components/eheimdigital/translations/sk.json +11 -1
- homeassistant/components/eheimdigital/translations/sv.json +11 -1
- homeassistant/components/eheimdigital/translations/zh-Hans.json +11 -1
- homeassistant/components/eheimdigital/translations/zh-Hant.json +11 -1
- homeassistant/components/elevenlabs/__init__.py +2 -1
- homeassistant/components/elevenlabs/config_flow.py +9 -11
- homeassistant/components/elevenlabs/const.py +0 -2
- homeassistant/components/elevenlabs/manifest.json +1 -1
- homeassistant/components/elevenlabs/strings.json +2 -3
- homeassistant/components/elevenlabs/translations/bg.json +2 -1
- homeassistant/components/elevenlabs/translations/ca.json +2 -2
- homeassistant/components/elevenlabs/translations/cs.json +2 -3
- homeassistant/components/elevenlabs/translations/de.json +2 -3
- homeassistant/components/elevenlabs/translations/el.json +2 -3
- homeassistant/components/elevenlabs/translations/en-GB.json +2 -3
- homeassistant/components/elevenlabs/translations/en.json +2 -3
- homeassistant/components/elevenlabs/translations/es.json +2 -3
- homeassistant/components/elevenlabs/translations/et.json +2 -3
- homeassistant/components/elevenlabs/translations/fr.json +2 -3
- homeassistant/components/elevenlabs/translations/ga.json +0 -2
- homeassistant/components/elevenlabs/translations/he.json +2 -1
- homeassistant/components/elevenlabs/translations/hu.json +0 -2
- homeassistant/components/elevenlabs/translations/ja.json +0 -2
- homeassistant/components/elevenlabs/translations/lt.json +2 -3
- homeassistant/components/elevenlabs/translations/nl.json +2 -2
- homeassistant/components/elevenlabs/translations/pt.json +0 -2
- homeassistant/components/elevenlabs/translations/ru.json +0 -2
- homeassistant/components/elevenlabs/translations/sk.json +2 -3
- homeassistant/components/elevenlabs/translations/sv.json +0 -2
- homeassistant/components/elevenlabs/translations/tr.json +0 -2
- homeassistant/components/elevenlabs/translations/zh-Hans.json +2 -3
- homeassistant/components/elevenlabs/translations/zh-Hant.json +2 -3
- homeassistant/components/elevenlabs/tts.py +4 -11
- homeassistant/components/emoncms/__init__.py +0 -6
- homeassistant/components/emoncms/config_flow.py +72 -3
- homeassistant/components/emoncms/const.py +3 -0
- homeassistant/components/emoncms/strings.json +13 -2
- homeassistant/components/emoncms/translations/bg.json +2 -1
- homeassistant/components/emoncms/translations/ca.json +2 -1
- homeassistant/components/emoncms/translations/cs.json +12 -1
- homeassistant/components/emoncms/translations/de.json +12 -1
- homeassistant/components/emoncms/translations/el.json +12 -1
- homeassistant/components/emoncms/translations/en-GB.json +12 -1
- homeassistant/components/emoncms/translations/en.json +12 -1
- homeassistant/components/emoncms/translations/es.json +12 -1
- homeassistant/components/emoncms/translations/et.json +12 -1
- homeassistant/components/emoncms/translations/ga.json +13 -1
- homeassistant/components/emoncms/translations/he.json +3 -0
- homeassistant/components/emoncms/translations/it.json +9 -0
- homeassistant/components/emoncms/translations/ja.json +12 -1
- homeassistant/components/emoncms/translations/lt.json +12 -1
- homeassistant/components/emoncms/translations/nl.json +12 -0
- homeassistant/components/emoncms/translations/pt.json +12 -1
- homeassistant/components/emoncms/translations/sk.json +12 -1
- homeassistant/components/emoncms/translations/sv.json +9 -0
- homeassistant/components/emoncms/translations/zh-Hans.json +12 -1
- homeassistant/components/emoncms/translations/zh-Hant.json +12 -1
- homeassistant/components/energy/sensor.py +2 -7
- homeassistant/components/energy/validate.py +5 -14
- homeassistant/components/enphase_envoy/__init__.py +0 -9
- homeassistant/components/enphase_envoy/binary_sensor.py +2 -0
- homeassistant/components/enphase_envoy/config_flow.py +2 -2
- homeassistant/components/enphase_envoy/coordinator.py +8 -0
- homeassistant/components/enphase_envoy/manifest.json +1 -1
- homeassistant/components/enphase_envoy/number.py +1 -0
- homeassistant/components/enphase_envoy/select.py +1 -0
- homeassistant/components/enphase_envoy/sensor.py +3 -0
- homeassistant/components/enphase_envoy/strings.json +1 -1
- homeassistant/components/enphase_envoy/switch.py +2 -0
- homeassistant/components/environment_canada/translations/fr.json +98 -0
- homeassistant/components/eq3btsmart/manifest.json +1 -1
- homeassistant/components/esphome/alarm_control_panel.py +28 -7
- homeassistant/components/esphome/button.py +1 -1
- homeassistant/components/esphome/climate.py +14 -6
- homeassistant/components/esphome/config_flow.py +33 -4
- homeassistant/components/esphome/cover.py +25 -7
- homeassistant/components/esphome/date.py +7 -1
- homeassistant/components/esphome/datetime.py +3 -1
- homeassistant/components/esphome/encryption_key_storage.py +94 -0
- homeassistant/components/esphome/entity.py +74 -8
- homeassistant/components/esphome/entry_data.py +44 -27
- homeassistant/components/esphome/fan.py +17 -5
- homeassistant/components/esphome/light.py +2 -2
- homeassistant/components/esphome/lock.py +9 -3
- homeassistant/components/esphome/manager.py +96 -4
- homeassistant/components/esphome/manifest.json +3 -3
- homeassistant/components/esphome/media_player.py +23 -5
- homeassistant/components/esphome/number.py +3 -1
- homeassistant/components/esphome/select.py +3 -1
- homeassistant/components/esphome/switch.py +6 -2
- homeassistant/components/esphome/text.py +3 -1
- homeassistant/components/esphome/time.py +7 -1
- homeassistant/components/esphome/translations/ga.json +3 -0
- homeassistant/components/esphome/update.py +10 -2
- homeassistant/components/esphome/valve.py +14 -4
- homeassistant/components/ezviz/__init__.py +0 -7
- homeassistant/components/ezviz/config_flow.py +6 -2
- homeassistant/components/faa_delays/translations/es.json +1 -1
- homeassistant/components/fan/translations/it.json +1 -1
- homeassistant/components/feedreader/__init__.py +0 -9
- homeassistant/components/feedreader/config_flow.py +4 -5
- homeassistant/components/file/__init__.py +0 -6
- homeassistant/components/file/config_flow.py +2 -2
- homeassistant/components/file/translations/ga.json +10 -0
- homeassistant/components/flipr/sensor.py +1 -1
- homeassistant/components/folder_watcher/translations/ga.json +31 -0
- homeassistant/components/forecast_solar/__init__.py +0 -9
- homeassistant/components/forecast_solar/config_flow.py +2 -2
- homeassistant/components/fritz/__init__.py +0 -8
- homeassistant/components/fritz/config_flow.py +6 -2
- homeassistant/components/fritz/strings.json +1 -1
- homeassistant/components/fritzbox_callmonitor/__init__.py +0 -8
- homeassistant/components/fritzbox_callmonitor/config_flow.py +2 -2
- homeassistant/components/frontend/__init__.py +7 -0
- homeassistant/components/frontend/manifest.json +1 -1
- homeassistant/components/garages_amsterdam/manifest.json +1 -1
- homeassistant/components/gardena_bluetooth/__init__.py +2 -0
- homeassistant/components/gardena_bluetooth/number.py +6 -0
- homeassistant/components/gardena_bluetooth/translations/da.json +9 -0
- homeassistant/components/gardena_bluetooth/valve.py +6 -1
- homeassistant/components/generic/config_flow.py +5 -15
- homeassistant/components/generic/manifest.json +1 -1
- homeassistant/components/generic_hygrostat/__init__.py +44 -6
- homeassistant/components/generic_hygrostat/config_flow.py +2 -0
- homeassistant/components/generic_hygrostat/humidifier.py +19 -18
- homeassistant/components/generic_hygrostat/translations/ga.json +23 -4
- homeassistant/components/generic_thermostat/__init__.py +44 -6
- homeassistant/components/generic_thermostat/climate.py +20 -19
- homeassistant/components/generic_thermostat/config_flow.py +2 -0
- homeassistant/components/geo_location/trigger.py +6 -3
- homeassistant/components/gios/const.py +2 -0
- homeassistant/components/gios/icons.json +3 -0
- homeassistant/components/gios/sensor.py +18 -0
- homeassistant/components/gios/strings.json +3 -0
- homeassistant/components/gios/translations/cs.json +3 -0
- homeassistant/components/gios/translations/de.json +3 -0
- homeassistant/components/gios/translations/el.json +3 -0
- homeassistant/components/gios/translations/en-GB.json +3 -0
- homeassistant/components/gios/translations/en.json +3 -0
- homeassistant/components/gios/translations/es.json +3 -0
- homeassistant/components/gios/translations/et.json +3 -0
- homeassistant/components/gios/translations/ga.json +7 -0
- homeassistant/components/gios/translations/lt.json +3 -0
- homeassistant/components/gios/translations/pl.json +3 -0
- homeassistant/components/gios/translations/pt.json +3 -0
- homeassistant/components/gios/translations/ru.json +3 -0
- homeassistant/components/gios/translations/sk.json +3 -0
- homeassistant/components/gios/translations/zh-Hans.json +3 -0
- homeassistant/components/gios/translations/zh-Hant.json +3 -0
- homeassistant/components/github/__init__.py +0 -6
- homeassistant/components/github/config_flow.py +2 -2
- homeassistant/components/go2rtc/__init__.py +0 -1
- homeassistant/components/goalzero/strings.json +1 -1
- homeassistant/components/goalzero/translations/ca.json +0 -3
- homeassistant/components/goalzero/translations/el.json +0 -3
- homeassistant/components/goalzero/translations/en-GB.json +1 -1
- homeassistant/components/goalzero/translations/en.json +1 -1
- homeassistant/components/goalzero/translations/es.json +1 -1
- homeassistant/components/goalzero/translations/fi.json +0 -3
- homeassistant/components/goalzero/translations/hu.json +0 -3
- homeassistant/components/goalzero/translations/id.json +0 -3
- homeassistant/components/goalzero/translations/it.json +0 -3
- homeassistant/components/goalzero/translations/ja.json +0 -3
- homeassistant/components/goalzero/translations/ko.json +0 -3
- homeassistant/components/goalzero/translations/lt.json +0 -3
- homeassistant/components/goalzero/translations/nb.json +0 -3
- homeassistant/components/goalzero/translations/nl.json +0 -3
- homeassistant/components/goalzero/translations/pl.json +0 -3
- homeassistant/components/goalzero/translations/pt-BR.json +0 -3
- homeassistant/components/goalzero/translations/pt.json +0 -3
- homeassistant/components/goalzero/translations/ro.json +0 -3
- homeassistant/components/goalzero/translations/ru.json +0 -3
- homeassistant/components/goalzero/translations/sk.json +1 -1
- homeassistant/components/goalzero/translations/sl.json +0 -3
- homeassistant/components/goalzero/translations/sv.json +0 -3
- homeassistant/components/goalzero/translations/tr.json +0 -3
- homeassistant/components/goalzero/translations/uk.json +0 -3
- homeassistant/components/goodwe/__init__.py +14 -2
- homeassistant/components/goodwe/config_flow.py +23 -13
- homeassistant/components/goodwe/manifest.json +1 -1
- homeassistant/components/goodwe/select.py +18 -11
- homeassistant/components/google/calendar.py +4 -4
- homeassistant/components/google/manifest.json +1 -1
- homeassistant/components/google_assistant_sdk/application_credentials.py +12 -6
- homeassistant/components/google_assistant_sdk/helpers.py +2 -2
- homeassistant/components/google_assistant_sdk/manifest.json +1 -1
- homeassistant/components/google_assistant_sdk/strings.json +1 -1
- homeassistant/components/google_cloud/const.py +10 -0
- homeassistant/components/google_cloud/stt.py +13 -3
- homeassistant/components/google_generative_ai_conversation/__init__.py +126 -64
- homeassistant/components/google_generative_ai_conversation/ai_task.py +81 -0
- homeassistant/components/google_generative_ai_conversation/config_flow.py +50 -4
- homeassistant/components/google_generative_ai_conversation/const.py +19 -3
- homeassistant/components/google_generative_ai_conversation/conversation.py +4 -21
- homeassistant/components/google_generative_ai_conversation/entity.py +102 -3
- homeassistant/components/google_generative_ai_conversation/strings.json +61 -1
- homeassistant/components/google_generative_ai_conversation/stt.py +259 -0
- homeassistant/components/google_generative_ai_conversation/translations/bg.json +38 -0
- homeassistant/components/google_generative_ai_conversation/translations/ca.json +29 -0
- homeassistant/components/google_generative_ai_conversation/translations/cs.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/de.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/el.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/en-GB.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/en.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/es.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/et.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/fr.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/ga.json +65 -0
- homeassistant/components/google_generative_ai_conversation/translations/he.json +32 -0
- homeassistant/components/google_generative_ai_conversation/translations/ja.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/lt.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/mk.json +21 -0
- homeassistant/components/google_generative_ai_conversation/translations/nl.json +29 -0
- homeassistant/components/google_generative_ai_conversation/translations/pt.json +28 -0
- homeassistant/components/google_generative_ai_conversation/translations/ru.json +49 -0
- homeassistant/components/google_generative_ai_conversation/translations/sk.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/sv.json +51 -0
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hans.json +60 -0
- homeassistant/components/google_generative_ai_conversation/translations/zh-Hant.json +60 -0
- homeassistant/components/google_generative_ai_conversation/tts.py +3 -0
- homeassistant/components/google_photos/translations/fr.json +2 -1
- homeassistant/components/google_travel_time/strings.json +1 -1
- homeassistant/components/group/config_flow.py +6 -6
- homeassistant/components/group/strings.json +18 -5
- homeassistant/components/group/translations/ca.json +4 -9
- homeassistant/components/group/translations/cs.json +18 -5
- homeassistant/components/group/translations/da.json +4 -9
- homeassistant/components/group/translations/de.json +18 -5
- homeassistant/components/group/translations/el.json +4 -9
- homeassistant/components/group/translations/en-GB.json +4 -9
- homeassistant/components/group/translations/en.json +18 -5
- homeassistant/components/group/translations/es.json +4 -9
- homeassistant/components/group/translations/et.json +4 -9
- homeassistant/components/group/translations/fi.json +4 -9
- homeassistant/components/group/translations/fr.json +18 -5
- homeassistant/components/group/translations/fy.json +0 -14
- homeassistant/components/group/translations/ga.json +34 -0
- homeassistant/components/group/translations/he.json +4 -9
- homeassistant/components/group/translations/hu.json +4 -9
- homeassistant/components/group/translations/id.json +4 -9
- homeassistant/components/group/translations/it.json +5 -10
- homeassistant/components/group/translations/ja.json +4 -9
- homeassistant/components/group/translations/ko.json +4 -9
- homeassistant/components/group/translations/lt.json +4 -9
- homeassistant/components/group/translations/lv.json +1 -2
- homeassistant/components/group/translations/nb.json +4 -9
- homeassistant/components/group/translations/nl.json +3 -7
- homeassistant/components/group/translations/pl.json +4 -9
- homeassistant/components/group/translations/pt-BR.json +4 -9
- homeassistant/components/group/translations/pt.json +4 -9
- homeassistant/components/group/translations/ro.json +4 -9
- homeassistant/components/group/translations/ru.json +4 -9
- homeassistant/components/group/translations/sk.json +4 -9
- homeassistant/components/group/translations/sl.json +4 -9
- homeassistant/components/group/translations/sv.json +4 -9
- homeassistant/components/group/translations/tr.json +4 -9
- homeassistant/components/group/translations/uk.json +4 -9
- homeassistant/components/group/translations/vi.json +4 -9
- homeassistant/components/group/translations/zh-Hans.json +18 -5
- homeassistant/components/group/translations/zh-Hant.json +18 -5
- homeassistant/components/growatt_server/__init__.py +91 -8
- homeassistant/components/growatt_server/coordinator.py +210 -0
- homeassistant/components/growatt_server/models.py +17 -0
- homeassistant/components/growatt_server/sensor/__init__.py +56 -285
- homeassistant/components/guardian/__init__.py +2 -2
- homeassistant/components/guardian/services.py +3 -2
- homeassistant/components/habitica/button.py +22 -81
- homeassistant/components/habitica/config_flow.py +0 -2
- homeassistant/components/habitica/coordinator.py +8 -11
- homeassistant/components/habitica/entity.py +2 -2
- homeassistant/components/habitica/icons.json +0 -9
- homeassistant/components/habitica/sensor.py +9 -161
- homeassistant/components/habitica/strings.json +0 -13
- homeassistant/components/habitica/switch.py +7 -9
- homeassistant/components/habitica/translations/bg.json +1 -11
- homeassistant/components/habitica/translations/ca.json +0 -3
- homeassistant/components/habitica/translations/cs.json +0 -13
- homeassistant/components/habitica/translations/de.json +0 -13
- homeassistant/components/habitica/translations/el.json +0 -13
- homeassistant/components/habitica/translations/en-GB.json +0 -13
- homeassistant/components/habitica/translations/en.json +0 -13
- homeassistant/components/habitica/translations/es.json +0 -13
- homeassistant/components/habitica/translations/et.json +0 -13
- homeassistant/components/habitica/translations/ga.json +0 -12
- homeassistant/components/habitica/translations/he.json +1 -11
- homeassistant/components/habitica/translations/hu.json +0 -13
- homeassistant/components/habitica/translations/it.json +0 -12
- homeassistant/components/habitica/translations/ja.json +0 -13
- homeassistant/components/habitica/translations/lt.json +0 -13
- homeassistant/components/habitica/translations/nl.json +0 -10
- homeassistant/components/habitica/translations/pt-BR.json +0 -3
- homeassistant/components/habitica/translations/pt.json +0 -13
- homeassistant/components/habitica/translations/ru.json +0 -13
- homeassistant/components/habitica/translations/sk.json +0 -13
- homeassistant/components/habitica/translations/sv.json +0 -13
- homeassistant/components/habitica/translations/tr.json +0 -13
- homeassistant/components/habitica/translations/zh-Hans.json +0 -13
- homeassistant/components/habitica/translations/zh-Hant.json +0 -13
- homeassistant/components/habitica/util.py +14 -14
- homeassistant/components/harmony/translations/es.json +1 -1
- homeassistant/components/harmony/translations/sv.json +1 -1
- homeassistant/components/hassio/backup.py +2 -2
- homeassistant/components/hassio/ingress.py +8 -8
- homeassistant/components/hassio/strings.json +1 -1
- homeassistant/components/hassio/translations/fr.json +3 -0
- homeassistant/components/hassio/translations/ga.json +17 -0
- homeassistant/components/heos/__init__.py +2 -2
- homeassistant/components/heos/config_flow.py +51 -41
- homeassistant/components/heos/manifest.json +2 -1
- homeassistant/components/heos/services.py +3 -2
- homeassistant/components/here_travel_time/__init__.py +30 -1
- homeassistant/components/here_travel_time/config_flow.py +16 -1
- homeassistant/components/here_travel_time/const.py +1 -0
- homeassistant/components/here_travel_time/coordinator.py +11 -1
- homeassistant/components/here_travel_time/model.py +2 -1
- homeassistant/components/here_travel_time/strings.json +5 -3
- homeassistant/components/here_travel_time/translations/ca.json +0 -5
- homeassistant/components/here_travel_time/translations/cs.json +4 -2
- homeassistant/components/here_travel_time/translations/de.json +4 -2
- homeassistant/components/here_travel_time/translations/el.json +4 -2
- homeassistant/components/here_travel_time/translations/en-GB.json +4 -2
- homeassistant/components/here_travel_time/translations/en.json +4 -2
- homeassistant/components/here_travel_time/translations/es.json +4 -2
- homeassistant/components/here_travel_time/translations/et.json +4 -2
- homeassistant/components/here_travel_time/translations/fi.json +0 -5
- homeassistant/components/here_travel_time/translations/fr.json +1 -2
- homeassistant/components/here_travel_time/translations/ga.json +11 -0
- homeassistant/components/here_travel_time/translations/hu.json +1 -2
- homeassistant/components/here_travel_time/translations/id.json +0 -5
- homeassistant/components/here_travel_time/translations/it.json +0 -5
- homeassistant/components/here_travel_time/translations/ja.json +1 -2
- homeassistant/components/here_travel_time/translations/ko.json +0 -5
- homeassistant/components/here_travel_time/translations/lt.json +1 -2
- homeassistant/components/here_travel_time/translations/mk.json +3 -0
- homeassistant/components/here_travel_time/translations/nb.json +0 -5
- homeassistant/components/here_travel_time/translations/nl.json +0 -5
- homeassistant/components/here_travel_time/translations/pl.json +0 -5
- homeassistant/components/here_travel_time/translations/pt-BR.json +0 -5
- homeassistant/components/here_travel_time/translations/pt.json +1 -2
- homeassistant/components/here_travel_time/translations/ro.json +0 -5
- homeassistant/components/here_travel_time/translations/ru.json +1 -2
- homeassistant/components/here_travel_time/translations/sk.json +4 -2
- homeassistant/components/here_travel_time/translations/sv.json +1 -2
- homeassistant/components/here_travel_time/translations/tr.json +1 -2
- homeassistant/components/here_travel_time/translations/uk.json +0 -5
- homeassistant/components/here_travel_time/translations/zh-Hans.json +4 -2
- homeassistant/components/here_travel_time/translations/zh-Hant.json +4 -2
- homeassistant/components/history_stats/__init__.py +43 -1
- homeassistant/components/history_stats/config_flow.py +135 -2
- homeassistant/components/history_stats/coordinator.py +7 -0
- homeassistant/components/history_stats/data.py +5 -1
- homeassistant/components/history_stats/helpers.py +9 -4
- homeassistant/components/history_stats/sensor.py +54 -8
- homeassistant/components/hive/translations/it.json +2 -2
- homeassistant/components/holiday/__init__.py +0 -6
- homeassistant/components/holiday/config_flow.py +2 -2
- homeassistant/components/holiday/manifest.json +1 -1
- homeassistant/components/home_connect/__init__.py +2 -2
- homeassistant/components/home_connect/coordinator.py +22 -24
- homeassistant/components/home_connect/services.py +3 -2
- homeassistant/components/home_connect/strings.json +10 -21
- homeassistant/components/home_connect/translations/cs.json +2 -11
- homeassistant/components/home_connect/translations/de.json +0 -11
- homeassistant/components/home_connect/translations/el.json +0 -11
- homeassistant/components/home_connect/translations/en-GB.json +0 -11
- homeassistant/components/home_connect/translations/en.json +0 -11
- homeassistant/components/home_connect/translations/es.json +0 -11
- homeassistant/components/home_connect/translations/et.json +0 -11
- homeassistant/components/home_connect/translations/ga.json +0 -10
- homeassistant/components/home_connect/translations/hu.json +0 -10
- homeassistant/components/home_connect/translations/it.json +44 -56
- homeassistant/components/home_connect/translations/lt.json +0 -11
- homeassistant/components/home_connect/translations/pt.json +0 -11
- homeassistant/components/home_connect/translations/ru.json +0 -11
- homeassistant/components/home_connect/translations/sk.json +0 -11
- homeassistant/components/home_connect/translations/sv.json +0 -10
- homeassistant/components/home_connect/translations/zh-Hans.json +0 -11
- homeassistant/components/home_connect/translations/zh-Hant.json +0 -11
- homeassistant/components/homeassistant/__init__.py +7 -2
- homeassistant/components/homeassistant/strings.json +3 -3
- homeassistant/components/homeassistant/translations/fr.json +3 -0
- homeassistant/components/homeassistant/translations/nl.json +3 -0
- homeassistant/components/homeassistant/triggers/time.py +20 -1
- homeassistant/components/homeassistant_hardware/coordinator.py +9 -1
- homeassistant/components/homeassistant_sky_connect/update.py +1 -0
- homeassistant/components/homeassistant_yellow/update.py +1 -0
- homeassistant/components/homee/__init__.py +4 -6
- homeassistant/components/homee/config_flow.py +60 -0
- homeassistant/components/homee/manifest.json +1 -1
- homeassistant/components/homee/quality_scale.yaml +11 -8
- homeassistant/components/homee/strings.json +14 -2
- homeassistant/components/homee/translations/bg.json +12 -0
- homeassistant/components/homee/translations/ca.json +8 -0
- homeassistant/components/homee/translations/cs.json +12 -0
- homeassistant/components/homee/translations/da.json +12 -0
- homeassistant/components/homee/translations/de.json +12 -0
- homeassistant/components/homee/translations/el.json +12 -0
- homeassistant/components/homee/translations/en-GB.json +12 -0
- homeassistant/components/homee/translations/en.json +12 -0
- homeassistant/components/homee/translations/es.json +13 -1
- homeassistant/components/homee/translations/et.json +12 -0
- homeassistant/components/homee/translations/ga.json +6 -0
- homeassistant/components/homee/translations/he.json +8 -0
- homeassistant/components/homee/translations/it.json +1 -1
- homeassistant/components/homee/translations/ja.json +12 -0
- homeassistant/components/homee/translations/lt.json +12 -0
- homeassistant/components/homee/translations/nl.json +12 -0
- homeassistant/components/homee/translations/pt.json +12 -0
- homeassistant/components/homee/translations/ru.json +13 -1
- homeassistant/components/homee/translations/sk.json +12 -0
- homeassistant/components/homee/translations/sv.json +6 -0
- homeassistant/components/homee/translations/zh-Hans.json +12 -0
- homeassistant/components/homee/translations/zh-Hant.json +12 -0
- homeassistant/components/homekit/__init__.py +7 -4
- homeassistant/components/homematicip_cloud/const.py +1 -0
- homeassistant/components/homematicip_cloud/cover.py +2 -1
- homeassistant/components/homematicip_cloud/icons.json +11 -0
- homeassistant/components/homematicip_cloud/light.py +76 -1
- homeassistant/components/homematicip_cloud/manifest.json +1 -1
- homeassistant/components/homematicip_cloud/sensor.py +304 -102
- homeassistant/components/homematicip_cloud/strings.json +11 -0
- homeassistant/components/homematicip_cloud/switch.py +6 -0
- homeassistant/components/homematicip_cloud/translations/cs.json +11 -0
- homeassistant/components/homematicip_cloud/translations/de.json +11 -0
- homeassistant/components/homematicip_cloud/translations/el.json +11 -0
- homeassistant/components/homematicip_cloud/translations/en-GB.json +11 -0
- homeassistant/components/homematicip_cloud/translations/en.json +11 -0
- homeassistant/components/homematicip_cloud/translations/es.json +11 -0
- homeassistant/components/homematicip_cloud/translations/et.json +11 -0
- homeassistant/components/homematicip_cloud/translations/ga.json +11 -0
- homeassistant/components/homematicip_cloud/translations/it.json +11 -0
- homeassistant/components/homematicip_cloud/translations/ja.json +11 -0
- homeassistant/components/homematicip_cloud/translations/lt.json +11 -0
- homeassistant/components/homematicip_cloud/translations/mk.json +9 -0
- homeassistant/components/homematicip_cloud/translations/nl.json +9 -0
- homeassistant/components/homematicip_cloud/translations/pt.json +11 -0
- homeassistant/components/homematicip_cloud/translations/sk.json +11 -0
- homeassistant/components/homematicip_cloud/translations/zh-Hans.json +11 -0
- homeassistant/components/homematicip_cloud/translations/zh-Hant.json +11 -0
- homeassistant/components/homematicip_cloud/valve.py +59 -0
- homeassistant/components/homeworks/translations/es.json +2 -2
- homeassistant/components/honeywell/__init__.py +0 -9
- homeassistant/components/honeywell/config_flow.py +2 -2
- homeassistant/components/html5/strings.json +1 -1
- homeassistant/components/html5/translations/fr.json +1 -0
- homeassistant/components/http/__init__.py +1 -25
- homeassistant/components/huawei_lte/__init__.py +5 -17
- homeassistant/components/huawei_lte/config_flow.py +14 -9
- homeassistant/components/huawei_lte/const.py +1 -1
- homeassistant/components/huawei_lte/diagnostics.py +86 -0
- homeassistant/components/huawei_lte/notify.py +0 -3
- homeassistant/components/huawei_lte/translations/ga.json +18 -0
- homeassistant/components/humidifier/translations/it.json +2 -2
- homeassistant/components/hunterdouglas_powerview/__init__.py +15 -2
- homeassistant/components/husqvarna_automower/button.py +2 -7
- homeassistant/components/husqvarna_automower/calendar.py +22 -3
- homeassistant/components/husqvarna_automower/coordinator.py +150 -126
- homeassistant/components/husqvarna_automower/entity.py +9 -18
- homeassistant/components/husqvarna_automower/icons.json +23 -3
- homeassistant/components/husqvarna_automower/lawn_mower.py +2 -2
- homeassistant/components/husqvarna_automower/manifest.json +1 -1
- homeassistant/components/husqvarna_automower/sensor.py +55 -2
- homeassistant/components/husqvarna_automower/strings.json +27 -7
- homeassistant/components/husqvarna_automower/translations/bg.json +10 -0
- homeassistant/components/husqvarna_automower/translations/cs.json +20 -0
- homeassistant/components/husqvarna_automower/translations/de.json +20 -0
- homeassistant/components/husqvarna_automower/translations/el.json +8 -0
- homeassistant/components/husqvarna_automower/translations/en-GB.json +8 -0
- homeassistant/components/husqvarna_automower/translations/en.json +20 -0
- homeassistant/components/husqvarna_automower/translations/es.json +20 -0
- homeassistant/components/husqvarna_automower/translations/et.json +20 -0
- homeassistant/components/husqvarna_automower/translations/ga.json +34 -0
- homeassistant/components/husqvarna_automower/translations/it.json +1 -1
- homeassistant/components/husqvarna_automower/translations/lt.json +8 -0
- homeassistant/components/husqvarna_automower/translations/mk.json +7 -0
- homeassistant/components/husqvarna_automower/translations/sk.json +20 -0
- homeassistant/components/husqvarna_automower/translations/sv.json +8 -0
- homeassistant/components/husqvarna_automower/translations/zh-Hans.json +20 -0
- homeassistant/components/husqvarna_automower/translations/zh-Hant.json +20 -0
- homeassistant/components/husqvarna_automower_ble/__init__.py +1 -0
- homeassistant/components/husqvarna_automower_ble/coordinator.py +3 -3
- homeassistant/components/husqvarna_automower_ble/entity.py +16 -0
- homeassistant/components/husqvarna_automower_ble/sensor.py +51 -0
- homeassistant/components/huum/__init__.py +14 -32
- homeassistant/components/huum/binary_sensor.py +41 -0
- homeassistant/components/huum/climate.py +32 -50
- homeassistant/components/huum/config_flow.py +2 -2
- homeassistant/components/huum/const.py +5 -1
- homeassistant/components/huum/coordinator.py +60 -0
- homeassistant/components/huum/entity.py +24 -0
- homeassistant/components/huum/light.py +62 -0
- homeassistant/components/huum/manifest.json +2 -2
- homeassistant/components/huum/strings.json +7 -0
- homeassistant/components/huum/translations/bg.json +7 -0
- homeassistant/components/huum/translations/cs.json +7 -0
- homeassistant/components/huum/translations/de.json +7 -0
- homeassistant/components/huum/translations/el.json +7 -0
- homeassistant/components/huum/translations/en-GB.json +7 -0
- homeassistant/components/huum/translations/en.json +7 -0
- homeassistant/components/huum/translations/es.json +7 -0
- homeassistant/components/huum/translations/et.json +7 -0
- homeassistant/components/huum/translations/fi.json +7 -0
- homeassistant/components/huum/translations/he.json +7 -0
- homeassistant/components/huum/translations/nl.json +7 -0
- homeassistant/components/huum/translations/ru.json +7 -0
- homeassistant/components/huum/translations/sk.json +7 -0
- homeassistant/components/huum/translations/zh-Hans.json +7 -0
- homeassistant/components/huum/translations/zh-Hant.json +7 -0
- homeassistant/components/hydrawise/binary_sensor.py +36 -21
- homeassistant/components/hydrawise/const.py +1 -0
- homeassistant/components/hydrawise/coordinator.py +90 -2
- homeassistant/components/hydrawise/entity.py +4 -2
- homeassistant/components/hydrawise/manifest.json +1 -1
- homeassistant/components/hydrawise/sensor.py +53 -30
- homeassistant/components/hydrawise/switch.py +16 -7
- homeassistant/components/hydrawise/valve.py +16 -6
- homeassistant/components/hyperion/__init__.py +0 -6
- homeassistant/components/hyperion/config_flow.py +2 -2
- homeassistant/components/image_upload/manifest.json +1 -1
- homeassistant/components/imeon_inverter/coordinator.py +2 -5
- homeassistant/components/imeon_inverter/icons.json +0 -27
- homeassistant/components/imeon_inverter/manifest.json +1 -1
- homeassistant/components/imeon_inverter/sensor.py +0 -69
- homeassistant/components/imeon_inverter/strings.json +0 -27
- homeassistant/components/imeon_inverter/translations/cs.json +0 -27
- homeassistant/components/imeon_inverter/translations/de.json +0 -27
- homeassistant/components/imeon_inverter/translations/el.json +0 -27
- homeassistant/components/imeon_inverter/translations/en-GB.json +0 -27
- homeassistant/components/imeon_inverter/translations/en.json +0 -27
- homeassistant/components/imeon_inverter/translations/es.json +0 -27
- homeassistant/components/imeon_inverter/translations/et.json +0 -27
- homeassistant/components/imeon_inverter/translations/ga.json +0 -27
- homeassistant/components/imeon_inverter/translations/hu.json +0 -27
- homeassistant/components/imeon_inverter/translations/it.json +0 -9
- homeassistant/components/imeon_inverter/translations/lt.json +0 -27
- homeassistant/components/imeon_inverter/translations/pt.json +0 -27
- homeassistant/components/imeon_inverter/translations/ru.json +0 -27
- homeassistant/components/imeon_inverter/translations/sk.json +0 -27
- homeassistant/components/imeon_inverter/translations/sv.json +0 -27
- homeassistant/components/imeon_inverter/translations/zh-Hans.json +0 -27
- homeassistant/components/imeon_inverter/translations/zh-Hant.json +0 -27
- homeassistant/components/imgw_pib/icons.json +6 -0
- homeassistant/components/imgw_pib/manifest.json +1 -1
- homeassistant/components/imgw_pib/sensor.py +42 -1
- homeassistant/components/imgw_pib/strings.json +40 -0
- homeassistant/components/imgw_pib/translations/bg.json +22 -0
- homeassistant/components/imgw_pib/translations/cs.json +40 -0
- homeassistant/components/imgw_pib/translations/de.json +40 -0
- homeassistant/components/imgw_pib/translations/el.json +40 -0
- homeassistant/components/imgw_pib/translations/en-GB.json +40 -0
- homeassistant/components/imgw_pib/translations/en.json +40 -0
- homeassistant/components/imgw_pib/translations/es.json +40 -0
- homeassistant/components/imgw_pib/translations/et.json +40 -0
- homeassistant/components/imgw_pib/translations/ga.json +44 -0
- homeassistant/components/imgw_pib/translations/he.json +17 -0
- homeassistant/components/imgw_pib/translations/lt.json +38 -0
- homeassistant/components/imgw_pib/translations/mk.json +40 -1
- homeassistant/components/imgw_pib/translations/nl.json +11 -0
- homeassistant/components/imgw_pib/translations/pl.json +40 -0
- homeassistant/components/imgw_pib/translations/pt.json +3 -0
- homeassistant/components/imgw_pib/translations/ru.json +15 -0
- homeassistant/components/imgw_pib/translations/sk.json +40 -0
- homeassistant/components/imgw_pib/translations/sv.json +35 -0
- homeassistant/components/imgw_pib/translations/zh-Hans.json +40 -0
- homeassistant/components/imgw_pib/translations/zh-Hant.json +40 -0
- homeassistant/components/immich/__init__.py +12 -0
- homeassistant/components/immich/icons.json +5 -0
- homeassistant/components/immich/manifest.json +1 -1
- homeassistant/components/immich/media_source.py +119 -29
- homeassistant/components/immich/services.py +98 -0
- homeassistant/components/immich/services.yaml +18 -0
- homeassistant/components/immich/strings.json +37 -0
- homeassistant/components/immich/translations/cs.json +37 -0
- homeassistant/components/immich/translations/de.json +37 -0
- homeassistant/components/immich/translations/en-GB.json +37 -0
- homeassistant/components/immich/translations/en.json +37 -0
- homeassistant/components/immich/translations/es.json +37 -0
- homeassistant/components/immich/translations/et.json +37 -0
- homeassistant/components/immich/translations/fr.json +37 -0
- homeassistant/components/immich/translations/ga.json +37 -0
- homeassistant/components/immich/translations/nl.json +10 -0
- homeassistant/components/immich/translations/sk.json +37 -0
- homeassistant/components/immich/translations/zh-Hans.json +37 -0
- homeassistant/components/immich/translations/zh-Hant.json +37 -0
- homeassistant/components/incomfort/translations/ga.json +8 -1
- homeassistant/components/incomfort/translations/it.json +1 -1
- homeassistant/components/input_boolean/translations/it.json +1 -1
- homeassistant/components/input_text/__init__.py +13 -4
- homeassistant/components/insteon/strings.json +5 -5
- homeassistant/components/integration/__init__.py +44 -6
- homeassistant/components/integration/config_flow.py +2 -0
- homeassistant/components/integration/sensor.py +33 -23
- homeassistant/components/iqvia/manifest.json +1 -1
- homeassistant/components/iron_os/__init__.py +13 -16
- homeassistant/components/iron_os/const.py +4 -0
- homeassistant/components/iron_os/coordinator.py +3 -1
- homeassistant/components/iron_os/icons.json +6 -0
- homeassistant/components/iron_os/number.py +156 -69
- homeassistant/components/iron_os/strings.json +3 -0
- homeassistant/components/iron_os/switch.py +19 -2
- homeassistant/components/iron_os/translations/cs.json +3 -0
- homeassistant/components/iron_os/translations/de.json +3 -0
- homeassistant/components/iron_os/translations/el.json +3 -0
- homeassistant/components/iron_os/translations/en-GB.json +3 -0
- homeassistant/components/iron_os/translations/en.json +3 -0
- homeassistant/components/iron_os/translations/es.json +4 -1
- homeassistant/components/iron_os/translations/et.json +3 -0
- homeassistant/components/iron_os/translations/ga.json +3 -0
- homeassistant/components/iron_os/translations/it.json +4 -4
- homeassistant/components/iron_os/translations/ja.json +3 -0
- homeassistant/components/iron_os/translations/lt.json +3 -0
- homeassistant/components/iron_os/translations/pt.json +3 -0
- homeassistant/components/iron_os/translations/ru.json +3 -0
- homeassistant/components/iron_os/translations/sk.json +3 -0
- homeassistant/components/iron_os/translations/zh-Hans.json +3 -0
- homeassistant/components/iron_os/translations/zh-Hant.json +3 -0
- homeassistant/components/iskra/strings.json +8 -8
- homeassistant/components/islamic_prayer_times/coordinator.py +3 -3
- homeassistant/components/israel_rail/manifest.json +1 -1
- homeassistant/components/ista_ecotrend/translations/ga.json +30 -0
- homeassistant/components/isy994/__init__.py +0 -6
- homeassistant/components/isy994/config_flow.py +3 -3
- homeassistant/components/ituran/__init__.py +1 -0
- homeassistant/components/ituran/binary_sensor.py +75 -0
- homeassistant/components/ituran/device_tracker.py +4 -2
- homeassistant/components/ituran/icons.json +3 -0
- homeassistant/components/ituran/manifest.json +1 -1
- homeassistant/components/ituran/sensor.py +24 -4
- homeassistant/components/ituran/strings.json +3 -0
- homeassistant/components/ituran/translations/cs.json +3 -0
- homeassistant/components/ituran/translations/de.json +3 -0
- homeassistant/components/ituran/translations/en-GB.json +3 -0
- homeassistant/components/ituran/translations/en.json +3 -0
- homeassistant/components/ituran/translations/es.json +3 -0
- homeassistant/components/ituran/translations/et.json +3 -0
- homeassistant/components/ituran/translations/ga.json +3 -0
- homeassistant/components/ituran/translations/sk.json +3 -0
- homeassistant/components/ituran/translations/zh-Hans.json +3 -0
- homeassistant/components/ituran/translations/zh-Hant.json +3 -0
- homeassistant/components/jellyfin/browse_media.py +47 -0
- homeassistant/components/jellyfin/media_player.py +24 -3
- homeassistant/components/jellyfin/translations/ga.json +9 -0
- homeassistant/components/jewish_calendar/__init__.py +0 -7
- homeassistant/components/jewish_calendar/binary_sensor.py +17 -55
- homeassistant/components/jewish_calendar/config_flow.py +6 -2
- homeassistant/components/jewish_calendar/entity.py +62 -3
- homeassistant/components/jewish_calendar/sensor.py +55 -72
- homeassistant/components/jewish_calendar/services.py +0 -1
- homeassistant/components/jewish_calendar/translations/nl.json +7 -2
- homeassistant/components/keba/strings.json +1 -1
- homeassistant/components/keenetic_ndms2/__init__.py +0 -7
- homeassistant/components/keenetic_ndms2/config_flow.py +27 -7
- homeassistant/components/keenetic_ndms2/strings.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/bg.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/ca.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/cs.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/de.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/el.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/en-GB.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/en.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/es.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/et.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/he.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/ja.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/lt.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/nl.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/pt.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/ru.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/sk.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/sv.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/zh-Hans.json +2 -1
- homeassistant/components/keenetic_ndms2/translations/zh-Hant.json +2 -1
- homeassistant/components/keymitt_ble/manifest.json +3 -3
- homeassistant/components/kitchen_sink/__init__.py +0 -7
- homeassistant/components/kitchen_sink/config_flow.py +3 -3
- homeassistant/components/knocki/translations/ga.json +15 -0
- homeassistant/components/knx/__init__.py +11 -298
- homeassistant/components/knx/binary_sensor.py +13 -12
- homeassistant/components/knx/button.py +2 -2
- homeassistant/components/knx/climate.py +2 -2
- homeassistant/components/knx/config_flow.py +83 -63
- homeassistant/components/knx/const.py +1 -1
- homeassistant/components/knx/cover.py +18 -34
- homeassistant/components/knx/date.py +2 -2
- homeassistant/components/knx/datetime.py +2 -2
- homeassistant/components/knx/device.py +1 -1
- homeassistant/components/knx/device_trigger.py +1 -1
- homeassistant/components/knx/diagnostics.py +1 -1
- homeassistant/components/knx/entity.py +2 -2
- homeassistant/components/knx/expose.py +1 -1
- homeassistant/components/knx/fan.py +2 -2
- homeassistant/components/knx/knx_module.py +301 -0
- homeassistant/components/knx/light.py +91 -77
- homeassistant/components/knx/manifest.json +1 -1
- homeassistant/components/knx/notify.py +2 -2
- homeassistant/components/knx/number.py +2 -2
- homeassistant/components/knx/quality_scale.yaml +1 -1
- homeassistant/components/knx/scene.py +2 -2
- homeassistant/components/knx/select.py +2 -2
- homeassistant/components/knx/sensor.py +2 -2
- homeassistant/components/knx/services.py +2 -2
- homeassistant/components/knx/storage/__init__.py +1 -1
- homeassistant/components/knx/storage/config_store.py +17 -2
- homeassistant/components/knx/storage/const.py +14 -7
- homeassistant/components/knx/storage/entity_store_schema.py +106 -89
- homeassistant/components/knx/storage/entity_store_validation.py +1 -1
- homeassistant/components/knx/storage/knx_selector.py +26 -0
- homeassistant/components/knx/storage/migration.py +42 -0
- homeassistant/components/knx/storage/util.py +51 -0
- homeassistant/components/knx/strings.json +12 -150
- homeassistant/components/knx/switch.py +10 -17
- homeassistant/components/knx/text.py +2 -2
- homeassistant/components/knx/time.py +2 -2
- homeassistant/components/knx/translations/bg.json +0 -48
- homeassistant/components/knx/translations/ca.json +3 -132
- homeassistant/components/knx/translations/cs.json +10 -148
- homeassistant/components/knx/translations/da.json +0 -13
- homeassistant/components/knx/translations/de.json +10 -148
- homeassistant/components/knx/translations/el.json +10 -148
- homeassistant/components/knx/translations/en-GB.json +10 -148
- homeassistant/components/knx/translations/en.json +10 -148
- homeassistant/components/knx/translations/es.json +10 -148
- homeassistant/components/knx/translations/et.json +10 -148
- homeassistant/components/knx/translations/fi.json +0 -119
- homeassistant/components/knx/translations/fr.json +0 -76
- homeassistant/components/knx/translations/ga.json +17 -48
- homeassistant/components/knx/translations/gl.json +0 -33
- homeassistant/components/knx/translations/he.json +3 -15
- homeassistant/components/knx/translations/hu.json +0 -148
- homeassistant/components/knx/translations/id.json +0 -100
- homeassistant/components/knx/translations/it.json +0 -119
- homeassistant/components/knx/translations/ja.json +0 -148
- homeassistant/components/knx/translations/ko.json +0 -119
- homeassistant/components/knx/translations/lt.json +10 -148
- homeassistant/components/knx/translations/lv.json +0 -26
- homeassistant/components/knx/translations/nb.json +0 -100
- homeassistant/components/knx/translations/nl.json +3 -125
- homeassistant/components/knx/translations/pl.json +0 -97
- homeassistant/components/knx/translations/pt-BR.json +0 -117
- homeassistant/components/knx/translations/pt.json +10 -148
- homeassistant/components/knx/translations/ro.json +0 -88
- homeassistant/components/knx/translations/ru.json +0 -148
- homeassistant/components/knx/translations/sk.json +10 -148
- homeassistant/components/knx/translations/sl.json +0 -13
- homeassistant/components/knx/translations/sv.json +3 -148
- homeassistant/components/knx/translations/tr.json +0 -148
- homeassistant/components/knx/translations/uk.json +0 -89
- homeassistant/components/knx/translations/vi.json +0 -5
- homeassistant/components/knx/translations/zh-Hans.json +10 -148
- homeassistant/components/knx/translations/zh-Hant.json +10 -148
- homeassistant/components/knx/trigger.py +1 -1
- homeassistant/components/knx/weather.py +2 -2
- homeassistant/components/knx/websocket.py +3 -3
- homeassistant/components/kodi/translations/ga.json +13 -0
- homeassistant/components/kostal_plenticore/switch.py +20 -1
- homeassistant/components/lamarzocco/__init__.py +0 -7
- homeassistant/components/lamarzocco/config_flow.py +2 -2
- homeassistant/components/lamarzocco/sensor.py +15 -1
- homeassistant/components/lamarzocco/translations/ga.json +6 -0
- homeassistant/components/lametric/strings.json +1 -1
- homeassistant/components/lastfm/__init__.py +0 -6
- homeassistant/components/lastfm/config_flow.py +6 -2
- homeassistant/components/laundrify/strings.json +1 -1
- homeassistant/components/laundrify/translations/ga.json +9 -0
- homeassistant/components/lcn/__init__.py +5 -1
- homeassistant/components/lcn/binary_sensor.py +4 -132
- homeassistant/components/lcn/helpers.py +9 -2
- homeassistant/components/lcn/light.py +28 -22
- homeassistant/components/lcn/manifest.json +1 -1
- homeassistant/components/lcn/quality_scale.yaml +1 -1
- homeassistant/components/lcn/services.py +6 -4
- homeassistant/components/lcn/strings.json +19 -7
- homeassistant/components/lcn/translations/cs.json +18 -2
- homeassistant/components/lcn/translations/de.json +14 -2
- homeassistant/components/lcn/translations/el.json +14 -2
- homeassistant/components/lcn/translations/en-GB.json +14 -2
- homeassistant/components/lcn/translations/en.json +14 -2
- homeassistant/components/lcn/translations/es.json +16 -4
- homeassistant/components/lcn/translations/et.json +14 -2
- homeassistant/components/lcn/translations/ga.json +14 -2
- homeassistant/components/lcn/translations/hu.json +0 -5
- homeassistant/components/lcn/translations/ja.json +14 -2
- homeassistant/components/lcn/translations/lt.json +14 -2
- homeassistant/components/lcn/translations/nl.json +0 -5
- homeassistant/components/lcn/translations/pt-BR.json +0 -5
- homeassistant/components/lcn/translations/pt.json +14 -2
- homeassistant/components/lcn/translations/ru.json +8 -2
- homeassistant/components/lcn/translations/sk.json +14 -2
- homeassistant/components/lcn/translations/sv.json +0 -5
- homeassistant/components/lcn/translations/tr.json +0 -5
- homeassistant/components/lcn/translations/zh-Hans.json +14 -2
- homeassistant/components/lcn/translations/zh-Hant.json +14 -2
- homeassistant/components/leaone/strings.json +1 -1
- homeassistant/components/leaone/translations/de.json +1 -1
- homeassistant/components/leaone/translations/el.json +1 -2
- homeassistant/components/leaone/translations/en-GB.json +1 -1
- homeassistant/components/leaone/translations/en.json +1 -1
- homeassistant/components/leaone/translations/es.json +1 -1
- homeassistant/components/leaone/translations/fi.json +1 -2
- homeassistant/components/leaone/translations/fr.json +1 -2
- homeassistant/components/leaone/translations/hu.json +1 -2
- homeassistant/components/leaone/translations/ja.json +1 -2
- homeassistant/components/leaone/translations/lt.json +1 -2
- homeassistant/components/leaone/translations/nl.json +1 -2
- homeassistant/components/leaone/translations/pt.json +1 -2
- homeassistant/components/leaone/translations/ru.json +1 -2
- homeassistant/components/leaone/translations/sk.json +1 -2
- homeassistant/components/leaone/translations/sv.json +1 -2
- homeassistant/components/leaone/translations/tr.json +1 -2
- homeassistant/components/leaone/translations/zh-Hans.json +1 -2
- homeassistant/components/letpot/__init__.py +7 -2
- homeassistant/components/letpot/binary_sensor.py +3 -1
- homeassistant/components/letpot/coordinator.py +7 -6
- homeassistant/components/letpot/entity.py +3 -2
- homeassistant/components/letpot/manifest.json +2 -1
- homeassistant/components/letpot/sensor.py +6 -2
- homeassistant/components/letpot/switch.py +22 -8
- homeassistant/components/letpot/time.py +10 -6
- homeassistant/components/lg_thinq/climate.py +49 -62
- homeassistant/components/lg_thinq/icons.json +15 -0
- homeassistant/components/lg_thinq/sensor.py +40 -0
- homeassistant/components/lg_thinq/strings.json +56 -5
- homeassistant/components/lg_thinq/translations/bg.json +3 -0
- homeassistant/components/lg_thinq/translations/cs.json +51 -0
- homeassistant/components/lg_thinq/translations/de.json +51 -0
- homeassistant/components/lg_thinq/translations/el.json +28 -0
- homeassistant/components/lg_thinq/translations/en-GB.json +51 -0
- homeassistant/components/lg_thinq/translations/en.json +51 -0
- homeassistant/components/lg_thinq/translations/es.json +53 -2
- homeassistant/components/lg_thinq/translations/et.json +51 -0
- homeassistant/components/lg_thinq/translations/ga.json +50 -0
- homeassistant/components/lg_thinq/translations/he.json +6 -0
- homeassistant/components/lg_thinq/translations/it.json +14 -14
- homeassistant/components/lg_thinq/translations/mk.json +11 -0
- homeassistant/components/lg_thinq/translations/nl.json +21 -0
- homeassistant/components/lg_thinq/translations/sk.json +51 -0
- homeassistant/components/lg_thinq/translations/zh-Hans.json +51 -0
- homeassistant/components/lg_thinq/translations/zh-Hant.json +51 -0
- homeassistant/components/lifx/const.py +1 -0
- homeassistant/components/lifx/coordinator.py +49 -1
- homeassistant/components/lifx/manager.py +7 -3
- homeassistant/components/lifx/manifest.json +1 -1
- homeassistant/components/light/icons.json +3 -0
- homeassistant/components/light/translations/ga.json +37 -0
- homeassistant/components/light/translations/it.json +1 -1
- homeassistant/components/linkplay/const.py +1 -1
- homeassistant/components/linkplay/icons.json +5 -0
- homeassistant/components/linkplay/media_player.py +14 -9
- homeassistant/components/linkplay/select.py +112 -0
- homeassistant/components/linkplay/strings.json +11 -0
- homeassistant/components/linkplay/translations/bg.json +13 -0
- homeassistant/components/linkplay/translations/ca.json +12 -0
- homeassistant/components/linkplay/translations/cs.json +11 -0
- homeassistant/components/linkplay/translations/de.json +11 -0
- homeassistant/components/linkplay/translations/el.json +11 -0
- homeassistant/components/linkplay/translations/en-GB.json +11 -0
- homeassistant/components/linkplay/translations/en.json +11 -0
- homeassistant/components/linkplay/translations/es.json +11 -0
- homeassistant/components/linkplay/translations/et.json +11 -0
- homeassistant/components/linkplay/translations/ga.json +11 -0
- homeassistant/components/linkplay/translations/lt.json +11 -0
- homeassistant/components/linkplay/translations/mk.json +14 -1
- homeassistant/components/linkplay/translations/nl.json +11 -0
- homeassistant/components/linkplay/translations/pt.json +11 -0
- homeassistant/components/linkplay/translations/ru.json +11 -0
- homeassistant/components/linkplay/translations/sk.json +11 -0
- homeassistant/components/linkplay/translations/zh-Hans.json +11 -0
- homeassistant/components/linkplay/translations/zh-Hant.json +11 -0
- homeassistant/components/litterrobot/coordinator.py +3 -0
- homeassistant/components/litterrobot/icons.json +3 -0
- homeassistant/components/litterrobot/manifest.json +1 -1
- homeassistant/components/litterrobot/sensor.py +15 -1
- homeassistant/components/litterrobot/strings.json +5 -1
- homeassistant/components/litterrobot/translations/bg.json +4 -0
- homeassistant/components/litterrobot/translations/ca.json +4 -0
- homeassistant/components/litterrobot/translations/cs.json +4 -0
- homeassistant/components/litterrobot/translations/de.json +4 -0
- homeassistant/components/litterrobot/translations/el.json +4 -0
- homeassistant/components/litterrobot/translations/en-GB.json +4 -0
- homeassistant/components/litterrobot/translations/en.json +4 -0
- homeassistant/components/litterrobot/translations/es.json +4 -0
- homeassistant/components/litterrobot/translations/et.json +4 -0
- homeassistant/components/litterrobot/translations/ga.json +4 -0
- homeassistant/components/litterrobot/translations/it.json +5 -1
- homeassistant/components/litterrobot/translations/lt.json +4 -0
- homeassistant/components/litterrobot/translations/mk.json +4 -0
- homeassistant/components/litterrobot/translations/nl.json +3 -0
- homeassistant/components/litterrobot/translations/pt.json +4 -0
- homeassistant/components/litterrobot/translations/ru.json +4 -0
- homeassistant/components/litterrobot/translations/sensor.it.json +1 -1
- homeassistant/components/litterrobot/translations/sk.json +4 -0
- homeassistant/components/litterrobot/translations/zh-Hans.json +4 -0
- homeassistant/components/litterrobot/translations/zh-Hant.json +4 -0
- homeassistant/components/local_calendar/calendar.py +1 -1
- homeassistant/components/local_calendar/manifest.json +1 -1
- homeassistant/components/local_todo/manifest.json +1 -1
- homeassistant/components/lock/translations/da.json +2 -0
- homeassistant/components/lookin/__init__.py +1 -1
- homeassistant/components/lookin/media_player.py +2 -4
- homeassistant/components/luftdaten/strings.json +1 -1
- homeassistant/components/lutron_caseta/translations/it.json +1 -1
- homeassistant/components/matrix/__init__.py +2 -2
- homeassistant/components/matrix/manifest.json +1 -1
- homeassistant/components/matrix/services.py +3 -2
- homeassistant/components/matter/binary_sensor.py +21 -21
- homeassistant/components/matter/cover.py +6 -0
- homeassistant/components/matter/entity.py +2 -2
- homeassistant/components/matter/icons.json +8 -0
- homeassistant/components/matter/manifest.json +1 -1
- homeassistant/components/matter/number.py +202 -12
- homeassistant/components/matter/select.py +42 -20
- homeassistant/components/matter/sensor.py +52 -25
- homeassistant/components/matter/strings.json +28 -4
- homeassistant/components/matter/switch.py +6 -6
- homeassistant/components/matter/translations/bg.json +3 -0
- homeassistant/components/matter/translations/ca.json +11 -0
- homeassistant/components/matter/translations/cs.json +26 -2
- homeassistant/components/matter/translations/de.json +26 -2
- homeassistant/components/matter/translations/el.json +20 -2
- homeassistant/components/matter/translations/en-GB.json +26 -2
- homeassistant/components/matter/translations/en.json +26 -2
- homeassistant/components/matter/translations/es.json +27 -3
- homeassistant/components/matter/translations/et.json +26 -2
- homeassistant/components/matter/translations/fr.json +27 -3
- homeassistant/components/matter/translations/ga.json +41 -3
- homeassistant/components/matter/translations/he.json +20 -2
- homeassistant/components/matter/translations/hu.json +3 -3
- homeassistant/components/matter/translations/it.json +16 -5
- homeassistant/components/matter/translations/ja.json +15 -0
- homeassistant/components/matter/translations/lt.json +20 -2
- homeassistant/components/matter/translations/mk.json +3 -0
- homeassistant/components/matter/translations/nl.json +3 -0
- homeassistant/components/matter/translations/pt.json +20 -2
- homeassistant/components/matter/translations/ru.json +17 -2
- homeassistant/components/matter/translations/sk.json +26 -2
- homeassistant/components/matter/translations/sv.json +6 -3
- homeassistant/components/matter/translations/zh-Hans.json +26 -2
- homeassistant/components/matter/translations/zh-Hant.json +26 -2
- homeassistant/components/matter/vacuum.py +30 -17
- homeassistant/components/mcp_server/config_flow.py +14 -5
- homeassistant/components/mcp_server/server.py +1 -1
- homeassistant/components/mcp_server/strings.json +3 -0
- homeassistant/components/mcp_server/translations/cs.json +3 -0
- homeassistant/components/mcp_server/translations/de.json +3 -0
- homeassistant/components/mcp_server/translations/el.json +3 -0
- homeassistant/components/mcp_server/translations/en-GB.json +3 -0
- homeassistant/components/mcp_server/translations/en.json +3 -0
- homeassistant/components/mcp_server/translations/es.json +3 -0
- homeassistant/components/mcp_server/translations/et.json +3 -0
- homeassistant/components/mcp_server/translations/fr.json +3 -0
- homeassistant/components/mcp_server/translations/ga.json +6 -0
- homeassistant/components/mcp_server/translations/lt.json +3 -0
- homeassistant/components/mcp_server/translations/pt.json +3 -0
- homeassistant/components/mcp_server/translations/ru.json +3 -0
- homeassistant/components/mcp_server/translations/sk.json +3 -0
- homeassistant/components/mcp_server/translations/zh-Hans.json +3 -0
- homeassistant/components/mcp_server/translations/zh-Hant.json +3 -0
- homeassistant/components/mealie/const.py +2 -0
- homeassistant/components/mealie/icons.json +3 -0
- homeassistant/components/mealie/manifest.json +2 -1
- homeassistant/components/mealie/services.py +39 -0
- homeassistant/components/mealie/services.yaml +21 -0
- homeassistant/components/mealie/strings.json +21 -0
- homeassistant/components/mealie/translations/cs.json +21 -0
- homeassistant/components/mealie/translations/de.json +21 -0
- homeassistant/components/mealie/translations/el.json +8 -0
- homeassistant/components/mealie/translations/en.json +21 -0
- homeassistant/components/mealie/translations/es.json +21 -0
- homeassistant/components/mealie/translations/fr.json +19 -0
- homeassistant/components/mealie/translations/ga.json +24 -0
- homeassistant/components/mealie/translations/sk.json +8 -0
- homeassistant/components/mealie/translations/zh-Hans.json +8 -0
- homeassistant/components/mealie/translations/zh-Hant.json +16 -0
- homeassistant/components/medcom_ble/__init__.py +3 -33
- homeassistant/components/medcom_ble/coordinator.py +50 -0
- homeassistant/components/medcom_ble/sensor.py +5 -13
- homeassistant/components/media_player/__init__.py +2 -1
- homeassistant/components/media_player/const.py +8 -1
- homeassistant/components/media_player/translations/it.json +4 -4
- homeassistant/components/media_source/__init__.py +5 -4
- homeassistant/components/media_source/const.py +8 -0
- homeassistant/components/media_source/local_source.py +5 -5
- homeassistant/components/media_source/models.py +21 -5
- homeassistant/components/mediaroom/media_player.py +3 -3
- homeassistant/components/melcloud/__init__.py +6 -10
- homeassistant/components/melcloud/climate.py +3 -5
- homeassistant/components/melcloud/diagnostics.py +3 -2
- homeassistant/components/melcloud/sensor.py +3 -5
- homeassistant/components/melcloud/water_heater.py +3 -4
- homeassistant/components/melnor/__init__.py +6 -17
- homeassistant/components/melnor/coordinator.py +4 -2
- homeassistant/components/melnor/number.py +3 -5
- homeassistant/components/melnor/sensor.py +3 -5
- homeassistant/components/melnor/switch.py +3 -5
- homeassistant/components/melnor/time.py +3 -5
- homeassistant/components/met/__init__.py +0 -6
- homeassistant/components/met/config_flow.py +2 -2
- homeassistant/components/met_eireann/__init__.py +4 -65
- homeassistant/components/met_eireann/coordinator.py +76 -0
- homeassistant/components/met_eireann/weather.py +1 -4
- homeassistant/components/meteo_france/__init__.py +1 -4
- homeassistant/components/meteo_france/const.py +0 -1
- homeassistant/components/meteoclimatic/__init__.py +3 -31
- homeassistant/components/meteoclimatic/coordinator.py +43 -0
- homeassistant/components/meteoclimatic/sensor.py +9 -7
- homeassistant/components/meteoclimatic/weather.py +7 -7
- homeassistant/components/miele/__init__.py +13 -2
- homeassistant/components/miele/const.py +11 -1
- homeassistant/components/miele/coordinator.py +2 -0
- homeassistant/components/miele/entity.py +6 -1
- homeassistant/components/miele/icons.json +11 -0
- homeassistant/components/miele/sensor.py +140 -76
- homeassistant/components/miele/services.py +238 -0
- homeassistant/components/miele/services.yaml +55 -0
- homeassistant/components/miele/strings.json +66 -3
- homeassistant/components/miele/translations/bg.json +16 -0
- homeassistant/components/miele/translations/cs.json +63 -0
- homeassistant/components/miele/translations/de.json +63 -0
- homeassistant/components/miele/translations/el.json +45 -0
- homeassistant/components/miele/translations/en-GB.json +38 -0
- homeassistant/components/miele/translations/en.json +63 -0
- homeassistant/components/miele/translations/es.json +38 -0
- homeassistant/components/miele/translations/et.json +29 -0
- homeassistant/components/miele/translations/ga.json +31 -0
- homeassistant/components/miele/translations/it.json +1 -1
- homeassistant/components/miele/translations/mk.json +14 -0
- homeassistant/components/miele/translations/nl.json +9 -0
- homeassistant/components/miele/translations/sk.json +48 -0
- homeassistant/components/miele/translations/zh-Hans.json +52 -0
- homeassistant/components/miele/translations/zh-Hant.json +54 -0
- homeassistant/components/miele/vacuum.py +0 -6
- homeassistant/components/mikrotik/coordinator.py +2 -2
- homeassistant/components/mjpeg/strings.json +1 -1
- homeassistant/components/modbus/modbus.py +2 -2
- homeassistant/components/modbus/strings.json +2 -2
- homeassistant/components/modbus/translations/fr.json +2 -0
- homeassistant/components/modem_callerid/sensor.py +15 -3
- homeassistant/components/mold_indicator/__init__.py +116 -1
- homeassistant/components/mold_indicator/config_flow.py +3 -0
- homeassistant/components/mold_indicator/sensor.py +2 -2
- homeassistant/components/monoprice/__init__.py +2 -11
- homeassistant/components/monoprice/const.py +0 -1
- homeassistant/components/monzo/manifest.json +1 -1
- homeassistant/components/monzo/translations/ga.json +6 -0
- homeassistant/components/motion_blinds/__init__.py +0 -7
- homeassistant/components/motion_blinds/config_flow.py +2 -2
- homeassistant/components/motioneye/__init__.py +0 -6
- homeassistant/components/motioneye/config_flow.py +2 -2
- homeassistant/components/mpd/translations/ga.json +11 -0
- homeassistant/components/mqtt/climate.py +40 -46
- homeassistant/components/mqtt/config_flow.py +915 -15
- homeassistant/components/mqtt/const.py +33 -4
- homeassistant/components/mqtt/entity.py +73 -3
- homeassistant/components/mqtt/models.py +9 -0
- homeassistant/components/mqtt/repairs.py +74 -0
- homeassistant/components/mqtt/strings.json +289 -5
- homeassistant/components/mqtt/translations/bg.json +22 -0
- homeassistant/components/mqtt/translations/cs.json +328 -43
- homeassistant/components/mqtt/translations/da.json +5 -0
- homeassistant/components/mqtt/translations/de.json +286 -2
- homeassistant/components/mqtt/translations/el.json +76 -0
- homeassistant/components/mqtt/translations/en-GB.json +53 -0
- homeassistant/components/mqtt/translations/en.json +284 -0
- homeassistant/components/mqtt/translations/es.json +253 -2
- homeassistant/components/mqtt/translations/et.json +53 -0
- homeassistant/components/mqtt/translations/fr.json +45 -0
- homeassistant/components/mqtt/translations/ga.json +271 -0
- homeassistant/components/mqtt/translations/he.json +53 -0
- homeassistant/components/mqtt/translations/it.json +1 -1
- homeassistant/components/mqtt/translations/mk.json +18 -0
- homeassistant/components/mqtt/translations/nl.json +279 -1
- homeassistant/components/mqtt/translations/ru.json +53 -0
- homeassistant/components/mqtt/translations/sk.json +91 -0
- homeassistant/components/mqtt/translations/zh-Hans.json +98 -0
- homeassistant/components/mqtt/translations/zh-Hant.json +226 -0
- homeassistant/components/music_assistant/strings.json +1 -1
- homeassistant/components/music_assistant/translations/fr.json +2 -1
- homeassistant/components/mysensors/manifest.json +1 -1
- homeassistant/components/mystrom/__init__.py +6 -11
- homeassistant/components/mystrom/light.py +4 -4
- homeassistant/components/mystrom/manifest.json +1 -1
- homeassistant/components/mystrom/models.py +4 -0
- homeassistant/components/mystrom/sensor.py +3 -3
- homeassistant/components/mystrom/switch.py +3 -3
- homeassistant/components/myuplink/translations/ga.json +8 -0
- homeassistant/components/nam/translations/ga.json +6 -0
- homeassistant/components/nasweb/__init__.py +1 -1
- homeassistant/components/nasweb/const.py +1 -0
- homeassistant/components/nasweb/coordinator.py +15 -5
- homeassistant/components/nasweb/icons.json +15 -0
- homeassistant/components/nasweb/sensor.py +189 -0
- homeassistant/components/nasweb/strings.json +17 -5
- homeassistant/components/nasweb/translations/bg.json +9 -0
- homeassistant/components/nasweb/translations/ca.json +10 -0
- homeassistant/components/nasweb/translations/cs.json +12 -0
- homeassistant/components/nasweb/translations/de.json +12 -0
- homeassistant/components/nasweb/translations/el.json +12 -0
- homeassistant/components/nasweb/translations/en-GB.json +12 -0
- homeassistant/components/nasweb/translations/en.json +12 -0
- homeassistant/components/nasweb/translations/es.json +12 -0
- homeassistant/components/nasweb/translations/et.json +12 -0
- homeassistant/components/nasweb/translations/ga.json +13 -0
- homeassistant/components/nasweb/translations/he.json +10 -0
- homeassistant/components/nasweb/translations/lt.json +12 -0
- homeassistant/components/nasweb/translations/nb.json +11 -1
- homeassistant/components/nasweb/translations/nl.json +10 -0
- homeassistant/components/nasweb/translations/nn.json +11 -1
- homeassistant/components/nasweb/translations/ru.json +8 -0
- homeassistant/components/nasweb/translations/sk.json +12 -0
- homeassistant/components/nasweb/translations/sv.json +11 -0
- homeassistant/components/nasweb/translations/zh-Hans.json +12 -0
- homeassistant/components/nasweb/translations/zh-Hant.json +12 -0
- homeassistant/components/nest/strings.json +1 -1
- homeassistant/components/netatmo/climate.py +15 -6
- homeassistant/components/netatmo/const.py +1 -0
- homeassistant/components/netgear/__init__.py +0 -7
- homeassistant/components/netgear/config_flow.py +2 -2
- homeassistant/components/nextdns/__init__.py +10 -16
- homeassistant/components/nextdns/coordinator.py +22 -3
- homeassistant/components/nibe_heatpump/button.py +1 -0
- homeassistant/components/nibe_heatpump/coordinator.py +35 -2
- homeassistant/components/nibe_heatpump/number.py +2 -1
- homeassistant/components/nibe_heatpump/strings.json +8 -0
- homeassistant/components/nibe_heatpump/translations/cs.json +8 -0
- homeassistant/components/nibe_heatpump/translations/de.json +8 -0
- homeassistant/components/nibe_heatpump/translations/el.json +8 -0
- homeassistant/components/nibe_heatpump/translations/en-GB.json +8 -0
- homeassistant/components/nibe_heatpump/translations/en.json +8 -0
- homeassistant/components/nibe_heatpump/translations/es.json +8 -0
- homeassistant/components/nibe_heatpump/translations/et.json +8 -0
- homeassistant/components/nibe_heatpump/translations/ga.json +10 -1
- homeassistant/components/nibe_heatpump/translations/it.json +8 -0
- homeassistant/components/nibe_heatpump/translations/ja.json +8 -0
- homeassistant/components/nibe_heatpump/translations/lt.json +8 -0
- homeassistant/components/nibe_heatpump/translations/pt.json +8 -0
- homeassistant/components/nibe_heatpump/translations/sk.json +8 -0
- homeassistant/components/nibe_heatpump/translations/zh-Hans.json +8 -0
- homeassistant/components/nibe_heatpump/translations/zh-Hant.json +8 -0
- homeassistant/components/nina/__init__.py +0 -7
- homeassistant/components/nina/config_flow.py +3 -3
- homeassistant/components/nissan_leaf/translations/de.json +4 -4
- homeassistant/components/nmap_tracker/__init__.py +0 -6
- homeassistant/components/nmap_tracker/config_flow.py +2 -2
- homeassistant/components/nobo_hub/__init__.py +0 -9
- homeassistant/components/nobo_hub/config_flow.py +3 -3
- homeassistant/components/nordpool/const.py +1 -0
- homeassistant/components/nordpool/icons.json +3 -0
- homeassistant/components/nordpool/services.py +71 -8
- homeassistant/components/nordpool/services.yaml +56 -0
- homeassistant/components/nordpool/strings.json +27 -1
- homeassistant/components/nordpool/translations/bg.json +16 -0
- homeassistant/components/nordpool/translations/cs.json +26 -0
- homeassistant/components/nordpool/translations/de.json +26 -0
- homeassistant/components/nordpool/translations/el.json +26 -0
- homeassistant/components/nordpool/translations/en-GB.json +26 -0
- homeassistant/components/nordpool/translations/en.json +26 -0
- homeassistant/components/nordpool/translations/es.json +26 -0
- homeassistant/components/nordpool/translations/et.json +26 -0
- homeassistant/components/nordpool/translations/ga.json +26 -0
- homeassistant/components/nordpool/translations/he.json +7 -0
- homeassistant/components/nordpool/translations/ja.json +26 -0
- homeassistant/components/nordpool/translations/lt.json +26 -0
- homeassistant/components/nordpool/translations/mk.json +12 -1
- homeassistant/components/nordpool/translations/nl.json +9 -0
- homeassistant/components/nordpool/translations/pt.json +26 -0
- homeassistant/components/nordpool/translations/ru.json +21 -0
- homeassistant/components/nordpool/translations/sk.json +26 -0
- homeassistant/components/nordpool/translations/sv.json +26 -0
- homeassistant/components/nordpool/translations/zh-Hans.json +26 -0
- homeassistant/components/nordpool/translations/zh-Hant.json +26 -0
- homeassistant/components/notify/translations/ga.json +11 -0
- homeassistant/components/number/__init__.py +4 -1
- homeassistant/components/number/const.py +10 -0
- homeassistant/components/number/icons.json +3 -0
- homeassistant/components/number/strings.json +3 -0
- homeassistant/components/number/translations/cs.json +3 -0
- homeassistant/components/number/translations/de.json +3 -0
- homeassistant/components/number/translations/el.json +3 -0
- homeassistant/components/number/translations/en-GB.json +3 -0
- homeassistant/components/number/translations/en.json +3 -0
- homeassistant/components/number/translations/es.json +3 -0
- homeassistant/components/number/translations/et.json +3 -0
- homeassistant/components/number/translations/fr.json +3 -0
- homeassistant/components/number/translations/ga.json +3 -0
- homeassistant/components/number/translations/he.json +3 -0
- homeassistant/components/number/translations/lt.json +3 -0
- homeassistant/components/number/translations/nl.json +6 -0
- homeassistant/components/number/translations/pt.json +3 -0
- homeassistant/components/number/translations/ru.json +3 -0
- homeassistant/components/number/translations/sk.json +3 -0
- homeassistant/components/number/translations/sv.json +3 -0
- homeassistant/components/number/translations/zh-Hans.json +3 -0
- homeassistant/components/number/translations/zh-Hant.json +3 -0
- homeassistant/components/nut/__init__.py +0 -6
- homeassistant/components/nut/translations/es.json +6 -6
- homeassistant/components/nut/translations/it.json +1 -1
- homeassistant/components/nzbget/strings.json +2 -2
- homeassistant/components/octoprint/manifest.json +1 -1
- homeassistant/components/octoprint/sensor.py +61 -1
- homeassistant/components/ollama/__init__.py +36 -1
- homeassistant/components/ollama/ai_task.py +80 -0
- homeassistant/components/ollama/config_flow.py +52 -28
- homeassistant/components/ollama/const.py +8 -1
- homeassistant/components/ollama/conversation.py +3 -28
- homeassistant/components/ollama/entity.py +26 -1
- homeassistant/components/ollama/strings.json +44 -1
- homeassistant/components/ollama/translations/bg.json +14 -0
- homeassistant/components/ollama/translations/ca.json +13 -0
- homeassistant/components/ollama/translations/cs.json +43 -0
- homeassistant/components/ollama/translations/de.json +43 -0
- homeassistant/components/ollama/translations/el.json +43 -0
- homeassistant/components/ollama/translations/en-GB.json +43 -0
- homeassistant/components/ollama/translations/en.json +43 -0
- homeassistant/components/ollama/translations/es.json +43 -0
- homeassistant/components/ollama/translations/et.json +43 -0
- homeassistant/components/ollama/translations/fr.json +43 -0
- homeassistant/components/ollama/translations/ga.json +41 -0
- homeassistant/components/ollama/translations/he.json +15 -0
- homeassistant/components/ollama/translations/ja.json +37 -0
- homeassistant/components/ollama/translations/lt.json +38 -0
- homeassistant/components/ollama/translations/mk.json +14 -0
- homeassistant/components/ollama/translations/nl.json +23 -0
- homeassistant/components/ollama/translations/pt.json +37 -0
- homeassistant/components/ollama/translations/ru.json +36 -0
- homeassistant/components/ollama/translations/sk.json +43 -0
- homeassistant/components/ollama/translations/sv.json +25 -0
- homeassistant/components/ollama/translations/zh-Hans.json +43 -0
- homeassistant/components/ollama/translations/zh-Hant.json +43 -0
- homeassistant/components/onboarding/views.py +1 -1
- homeassistant/components/onewire/__init__.py +0 -10
- homeassistant/components/onewire/config_flow.py +6 -2
- homeassistant/components/onkyo/__init__.py +15 -17
- homeassistant/components/onkyo/config_flow.py +33 -20
- homeassistant/components/onkyo/const.py +28 -206
- homeassistant/components/onkyo/manifest.json +4 -2
- homeassistant/components/onkyo/media_player.py +201 -302
- homeassistant/components/onkyo/quality_scale.yaml +6 -12
- homeassistant/components/onkyo/receiver.py +107 -107
- homeassistant/components/onkyo/services.py +4 -14
- homeassistant/components/onkyo/util.py +8 -0
- homeassistant/components/onvif/__init__.py +57 -48
- homeassistant/components/onvif/manifest.json +1 -1
- homeassistant/components/onvif/translations/es.json +1 -1
- homeassistant/components/open_router/__init__.py +58 -0
- homeassistant/components/open_router/ai_task.py +75 -0
- homeassistant/components/open_router/config_flow.py +200 -0
- homeassistant/components/open_router/const.py +17 -0
- homeassistant/components/open_router/conversation.py +69 -0
- homeassistant/components/open_router/entity.py +249 -0
- homeassistant/components/open_router/manifest.json +13 -0
- homeassistant/components/open_router/quality_scale.yaml +88 -0
- homeassistant/components/open_router/strings.json +64 -0
- homeassistant/components/open_router/translations/bg.json +47 -0
- homeassistant/components/open_router/translations/ca.json +29 -0
- homeassistant/components/open_router/translations/cs.json +64 -0
- homeassistant/components/open_router/translations/de.json +64 -0
- homeassistant/components/open_router/translations/el.json +60 -0
- homeassistant/components/open_router/translations/en-GB.json +43 -0
- homeassistant/components/open_router/translations/en.json +64 -0
- homeassistant/components/open_router/translations/es.json +64 -0
- homeassistant/components/open_router/translations/et.json +43 -0
- homeassistant/components/open_router/translations/fr.json +64 -0
- homeassistant/components/open_router/translations/ga.json +45 -0
- homeassistant/components/open_router/translations/he.json +30 -0
- homeassistant/components/open_router/translations/lt.json +37 -0
- homeassistant/components/open_router/translations/mk.json +42 -0
- homeassistant/components/open_router/translations/nl.json +47 -0
- homeassistant/components/open_router/translations/ru.json +43 -0
- homeassistant/components/open_router/translations/sk.json +60 -0
- homeassistant/components/open_router/translations/sv.json +37 -0
- homeassistant/components/open_router/translations/zh-Hans.json +60 -0
- homeassistant/components/open_router/translations/zh-Hant.json +60 -0
- homeassistant/components/openai_conversation/__init__.py +51 -62
- homeassistant/components/openai_conversation/ai_task.py +80 -0
- homeassistant/components/openai_conversation/config_flow.py +60 -49
- homeassistant/components/openai_conversation/const.py +22 -8
- homeassistant/components/openai_conversation/conversation.py +10 -322
- homeassistant/components/openai_conversation/entity.py +468 -0
- homeassistant/components/openai_conversation/manifest.json +2 -2
- homeassistant/components/openai_conversation/strings.json +49 -1
- homeassistant/components/openai_conversation/translations/bg.json +19 -0
- homeassistant/components/openai_conversation/translations/ca.json +17 -0
- homeassistant/components/openai_conversation/translations/cs.json +48 -0
- homeassistant/components/openai_conversation/translations/de.json +48 -0
- homeassistant/components/openai_conversation/translations/el.json +48 -0
- homeassistant/components/openai_conversation/translations/en-GB.json +48 -0
- homeassistant/components/openai_conversation/translations/en.json +48 -0
- homeassistant/components/openai_conversation/translations/es.json +48 -0
- homeassistant/components/openai_conversation/translations/et.json +48 -0
- homeassistant/components/openai_conversation/translations/fr.json +48 -0
- homeassistant/components/openai_conversation/translations/ga.json +51 -0
- homeassistant/components/openai_conversation/translations/he.json +18 -0
- homeassistant/components/openai_conversation/translations/it.json +46 -0
- homeassistant/components/openai_conversation/translations/lt.json +48 -0
- homeassistant/components/openai_conversation/translations/mk.json +48 -0
- homeassistant/components/openai_conversation/translations/nl.json +18 -0
- homeassistant/components/openai_conversation/translations/pt.json +46 -0
- homeassistant/components/openai_conversation/translations/ru.json +45 -0
- homeassistant/components/openai_conversation/translations/sk.json +48 -0
- homeassistant/components/openai_conversation/translations/sv.json +29 -0
- homeassistant/components/openai_conversation/translations/zh-Hans.json +48 -0
- homeassistant/components/openai_conversation/translations/zh-Hant.json +48 -0
- homeassistant/components/opentherm_gw/translations/ga.json +16 -0
- homeassistant/components/openweathermap/config_flow.py +4 -0
- homeassistant/components/openweathermap/strings.json +1 -1
- homeassistant/components/openweathermap/translations/bg.json +1 -2
- homeassistant/components/openweathermap/translations/ca.json +1 -2
- homeassistant/components/openweathermap/translations/cs.json +1 -1
- homeassistant/components/openweathermap/translations/de.json +1 -1
- homeassistant/components/openweathermap/translations/el.json +1 -2
- homeassistant/components/openweathermap/translations/en-GB.json +1 -1
- homeassistant/components/openweathermap/translations/en.json +1 -1
- homeassistant/components/openweathermap/translations/es.json +1 -1
- homeassistant/components/openweathermap/translations/et.json +1 -1
- homeassistant/components/openweathermap/translations/fi.json +1 -2
- homeassistant/components/openweathermap/translations/fr.json +1 -2
- homeassistant/components/openweathermap/translations/ga.json +16 -0
- homeassistant/components/openweathermap/translations/gsw.json +1 -2
- homeassistant/components/openweathermap/translations/he.json +1 -2
- homeassistant/components/openweathermap/translations/hu.json +1 -2
- homeassistant/components/openweathermap/translations/id.json +1 -2
- homeassistant/components/openweathermap/translations/it.json +1 -2
- homeassistant/components/openweathermap/translations/ja.json +1 -2
- homeassistant/components/openweathermap/translations/ko.json +1 -2
- homeassistant/components/openweathermap/translations/lt.json +1 -2
- homeassistant/components/openweathermap/translations/nb.json +1 -2
- homeassistant/components/openweathermap/translations/nl.json +1 -2
- homeassistant/components/openweathermap/translations/pl.json +1 -2
- homeassistant/components/openweathermap/translations/pt-BR.json +1 -2
- homeassistant/components/openweathermap/translations/pt.json +1 -2
- homeassistant/components/openweathermap/translations/ro.json +1 -2
- homeassistant/components/openweathermap/translations/ru.json +1 -2
- homeassistant/components/openweathermap/translations/sk.json +1 -1
- homeassistant/components/openweathermap/translations/sv.json +1 -2
- homeassistant/components/openweathermap/translations/tr.json +1 -2
- homeassistant/components/openweathermap/translations/uk.json +1 -2
- homeassistant/components/openweathermap/translations/vi.json +1 -2
- homeassistant/components/openweathermap/translations/zh-Hans.json +1 -1
- homeassistant/components/openweathermap/translations/zh-Hant.json +1 -1
- homeassistant/components/opower/config_flow.py +9 -2
- homeassistant/components/opower/sensor.py +22 -21
- homeassistant/components/opower/strings.json +69 -0
- homeassistant/components/opower/translations/bg.json +61 -0
- homeassistant/components/opower/translations/ca.json +6 -0
- homeassistant/components/opower/translations/cs.json +70 -1
- homeassistant/components/opower/translations/de.json +70 -1
- homeassistant/components/opower/translations/el.json +70 -1
- homeassistant/components/opower/translations/en-GB.json +70 -1
- homeassistant/components/opower/translations/en.json +70 -1
- homeassistant/components/opower/translations/es.json +70 -1
- homeassistant/components/opower/translations/et.json +70 -1
- homeassistant/components/opower/translations/ga.json +77 -0
- homeassistant/components/opower/translations/he.json +6 -0
- homeassistant/components/opower/translations/ja.json +73 -0
- homeassistant/components/opower/translations/lt.json +70 -1
- homeassistant/components/opower/translations/nl.json +6 -0
- homeassistant/components/opower/translations/pt.json +70 -1
- homeassistant/components/opower/translations/ru.json +14 -1
- homeassistant/components/opower/translations/sk.json +70 -1
- homeassistant/components/opower/translations/sv.json +16 -1
- homeassistant/components/opower/translations/zh-Hans.json +70 -1
- homeassistant/components/opower/translations/zh-Hant.json +70 -1
- homeassistant/components/osoenergy/icons.json +3 -0
- homeassistant/components/osoenergy/manifest.json +1 -1
- homeassistant/components/osoenergy/services.yaml +14 -0
- homeassistant/components/osoenergy/strings.json +10 -0
- homeassistant/components/osoenergy/translations/bg.json +7 -0
- homeassistant/components/osoenergy/translations/cs.json +10 -0
- homeassistant/components/osoenergy/translations/de.json +11 -1
- homeassistant/components/osoenergy/translations/en.json +10 -0
- homeassistant/components/osoenergy/translations/es.json +9 -0
- homeassistant/components/osoenergy/translations/et.json +10 -0
- homeassistant/components/osoenergy/translations/ga.json +21 -0
- homeassistant/components/osoenergy/translations/it.json +2 -2
- homeassistant/components/osoenergy/translations/sk.json +9 -0
- homeassistant/components/osoenergy/translations/zh-Hans.json +9 -0
- homeassistant/components/osoenergy/translations/zh-Hant.json +9 -0
- homeassistant/components/osoenergy/water_heater.py +34 -1
- homeassistant/components/overkiz/strings.json +1 -1
- homeassistant/components/palazzetti/translations/it.json +1 -1
- homeassistant/components/palazzetti/translations/nl.json +1 -0
- homeassistant/components/paperless_ngx/__init__.py +1 -1
- homeassistant/components/pegel_online/__init__.py +6 -2
- homeassistant/components/pegel_online/manifest.json +1 -0
- homeassistant/components/pegel_online/quality_scale.yaml +87 -0
- homeassistant/components/pegel_online/sensor.py +3 -0
- homeassistant/components/pegel_online/strings.json +8 -2
- homeassistant/components/pegel_online/translations/cs.json +7 -1
- homeassistant/components/pegel_online/translations/de.json +7 -1
- homeassistant/components/pegel_online/translations/el.json +7 -1
- homeassistant/components/pegel_online/translations/en-GB.json +7 -1
- homeassistant/components/pegel_online/translations/en.json +7 -1
- homeassistant/components/pegel_online/translations/es.json +7 -1
- homeassistant/components/pegel_online/translations/et.json +7 -1
- homeassistant/components/pegel_online/translations/fr.json +1 -2
- homeassistant/components/pegel_online/translations/ga.json +15 -0
- homeassistant/components/pegel_online/translations/hu.json +7 -1
- homeassistant/components/pegel_online/translations/it.json +7 -0
- homeassistant/components/pegel_online/translations/ja.json +7 -0
- homeassistant/components/pegel_online/translations/lt.json +7 -1
- homeassistant/components/pegel_online/translations/mk.json +1 -2
- homeassistant/components/pegel_online/translations/nl.json +7 -0
- homeassistant/components/pegel_online/translations/pt.json +7 -1
- homeassistant/components/pegel_online/translations/ru.json +7 -1
- homeassistant/components/pegel_online/translations/sk.json +7 -1
- homeassistant/components/pegel_online/translations/sv.json +7 -1
- homeassistant/components/pegel_online/translations/zh-Hans.json +7 -1
- homeassistant/components/pegel_online/translations/zh-Hant.json +7 -1
- homeassistant/components/philips_js/config_flow.py +83 -35
- homeassistant/components/philips_js/manifest.json +2 -1
- homeassistant/components/philips_js/strings.json +5 -0
- homeassistant/components/philips_js/translations/bg.json +1 -0
- homeassistant/components/philips_js/translations/ca.json +1 -0
- homeassistant/components/philips_js/translations/cs.json +5 -0
- homeassistant/components/philips_js/translations/de.json +5 -0
- homeassistant/components/philips_js/translations/el.json +5 -0
- homeassistant/components/philips_js/translations/en-GB.json +5 -0
- homeassistant/components/philips_js/translations/en.json +5 -0
- homeassistant/components/philips_js/translations/es.json +5 -0
- homeassistant/components/philips_js/translations/et.json +5 -0
- homeassistant/components/philips_js/translations/ga.json +7 -0
- homeassistant/components/philips_js/translations/he.json +1 -0
- homeassistant/components/philips_js/translations/ja.json +5 -0
- homeassistant/components/philips_js/translations/lt.json +5 -0
- homeassistant/components/philips_js/translations/nl.json +1 -0
- homeassistant/components/philips_js/translations/pt.json +5 -0
- homeassistant/components/philips_js/translations/ru.json +5 -0
- homeassistant/components/philips_js/translations/sk.json +5 -0
- homeassistant/components/philips_js/translations/sv.json +5 -0
- homeassistant/components/philips_js/translations/zh-Hans.json +5 -0
- homeassistant/components/philips_js/translations/zh-Hant.json +5 -0
- homeassistant/components/pi_hole/__init__.py +123 -16
- homeassistant/components/pi_hole/binary_sensor.py +1 -1
- homeassistant/components/pi_hole/config_flow.py +48 -37
- homeassistant/components/pi_hole/const.py +7 -0
- homeassistant/components/pi_hole/entity.py +4 -1
- homeassistant/components/pi_hole/icons.json +9 -0
- homeassistant/components/pi_hole/manifest.json +1 -1
- homeassistant/components/pi_hole/sensor.py +96 -10
- homeassistant/components/pi_hole/strings.json +21 -6
- homeassistant/components/pi_hole/switch.py +1 -1
- homeassistant/components/pi_hole/translations/bg.json +7 -5
- homeassistant/components/pi_hole/translations/ca.json +6 -5
- homeassistant/components/pi_hole/translations/cs.json +18 -5
- homeassistant/components/pi_hole/translations/da.json +0 -5
- homeassistant/components/pi_hole/translations/de.json +18 -5
- homeassistant/components/pi_hole/translations/el.json +18 -5
- homeassistant/components/pi_hole/translations/en-GB.json +18 -5
- homeassistant/components/pi_hole/translations/en.json +18 -5
- homeassistant/components/pi_hole/translations/es.json +18 -5
- homeassistant/components/pi_hole/translations/et.json +18 -5
- homeassistant/components/pi_hole/translations/fi.json +0 -5
- homeassistant/components/pi_hole/translations/fr.json +0 -5
- homeassistant/components/pi_hole/translations/ga.json +15 -0
- homeassistant/components/pi_hole/translations/he.json +18 -5
- homeassistant/components/pi_hole/translations/hu.json +0 -5
- homeassistant/components/pi_hole/translations/id.json +0 -5
- homeassistant/components/pi_hole/translations/it.json +0 -5
- homeassistant/components/pi_hole/translations/ja.json +18 -5
- homeassistant/components/pi_hole/translations/ko.json +0 -5
- homeassistant/components/pi_hole/translations/lt.json +18 -5
- homeassistant/components/pi_hole/translations/mk.json +9 -0
- homeassistant/components/pi_hole/translations/nb.json +0 -5
- homeassistant/components/pi_hole/translations/nl.json +6 -5
- homeassistant/components/pi_hole/translations/pl.json +0 -5
- homeassistant/components/pi_hole/translations/pt-BR.json +0 -5
- homeassistant/components/pi_hole/translations/pt.json +18 -5
- homeassistant/components/pi_hole/translations/ro.json +0 -5
- homeassistant/components/pi_hole/translations/ru.json +18 -5
- homeassistant/components/pi_hole/translations/sk.json +18 -5
- homeassistant/components/pi_hole/translations/sl.json +0 -5
- homeassistant/components/pi_hole/translations/sv.json +9 -5
- homeassistant/components/pi_hole/translations/tr.json +0 -5
- homeassistant/components/pi_hole/translations/uk.json +0 -5
- homeassistant/components/pi_hole/translations/vi.json +0 -5
- homeassistant/components/pi_hole/translations/zh-Hans.json +18 -5
- homeassistant/components/pi_hole/translations/zh-Hant.json +18 -5
- homeassistant/components/pi_hole/update.py +15 -15
- homeassistant/components/ping/__init__.py +0 -6
- homeassistant/components/ping/config_flow.py +3 -3
- homeassistant/components/playstation_network/__init__.py +44 -4
- homeassistant/components/playstation_network/binary_sensor.py +76 -0
- homeassistant/components/playstation_network/config_flow.py +106 -7
- homeassistant/components/playstation_network/const.py +4 -2
- homeassistant/components/playstation_network/coordinator.py +168 -13
- homeassistant/components/playstation_network/diagnostics.py +15 -7
- homeassistant/components/playstation_network/entity.py +54 -0
- homeassistant/components/playstation_network/helpers.py +92 -37
- homeassistant/components/playstation_network/icons.json +36 -0
- homeassistant/components/playstation_network/image.py +154 -0
- homeassistant/components/playstation_network/media_player.py +35 -11
- homeassistant/components/playstation_network/notify.py +126 -0
- homeassistant/components/playstation_network/quality_scale.yaml +1 -1
- homeassistant/components/playstation_network/sensor.py +94 -40
- homeassistant/components/playstation_network/strings.json +93 -2
- homeassistant/components/playstation_network/translations/bg.json +30 -1
- homeassistant/components/playstation_network/translations/ca.json +2 -1
- homeassistant/components/playstation_network/translations/cs.json +91 -0
- homeassistant/components/playstation_network/translations/de.json +91 -0
- homeassistant/components/playstation_network/translations/el.json +44 -0
- homeassistant/components/playstation_network/translations/en-GB.json +50 -0
- homeassistant/components/playstation_network/translations/en.json +91 -0
- homeassistant/components/playstation_network/translations/es.json +64 -0
- homeassistant/components/playstation_network/translations/et.json +50 -0
- homeassistant/components/playstation_network/translations/fr.json +13 -0
- homeassistant/components/playstation_network/translations/ga.json +86 -0
- homeassistant/components/playstation_network/translations/he.json +9 -1
- homeassistant/components/playstation_network/translations/hu.json +11 -0
- homeassistant/components/playstation_network/translations/id.json +2 -1
- homeassistant/components/playstation_network/translations/it.json +14 -0
- homeassistant/components/playstation_network/translations/ja.json +24 -0
- homeassistant/components/playstation_network/translations/lt.json +28 -0
- homeassistant/components/playstation_network/translations/mk.json +11 -0
- homeassistant/components/playstation_network/translations/nl.json +16 -1
- homeassistant/components/playstation_network/translations/pt.json +28 -0
- homeassistant/components/playstation_network/translations/ru.json +33 -0
- homeassistant/components/playstation_network/translations/sk.json +58 -0
- homeassistant/components/playstation_network/translations/sl.json +28 -0
- homeassistant/components/playstation_network/translations/sv.json +29 -1
- homeassistant/components/playstation_network/translations/zh-Hans.json +75 -0
- homeassistant/components/playstation_network/translations/zh-Hant.json +91 -0
- homeassistant/components/plex/translations/nl.json +9 -0
- homeassistant/components/plugwise/__init__.py +4 -4
- homeassistant/components/plugwise/climate.py +3 -3
- homeassistant/components/plugwise/config_flow.py +3 -3
- homeassistant/components/plugwise/entity.py +1 -1
- homeassistant/components/plugwise/manifest.json +1 -1
- homeassistant/components/plugwise/select.py +2 -2
- homeassistant/components/plugwise/translations/ga.json +5 -0
- homeassistant/components/plugwise/translations/it.json +3 -3
- homeassistant/components/proximity/__init__.py +0 -8
- homeassistant/components/proximity/config_flow.py +3 -3
- homeassistant/components/proximity/strings.json +12 -12
- homeassistant/components/proxy/manifest.json +1 -1
- homeassistant/components/ps4/media_player.py +2 -2
- homeassistant/components/purpleair/__init__.py +0 -7
- homeassistant/components/purpleair/config_flow.py +2 -2
- homeassistant/components/purpleair/sensor.py +1 -1
- homeassistant/components/pyload/config_flow.py +58 -0
- homeassistant/components/pyload/strings.json +12 -0
- homeassistant/components/pyload/translations/bg.json +6 -0
- homeassistant/components/pyload/translations/ca.json +6 -0
- homeassistant/components/pyload/translations/cs.json +12 -0
- homeassistant/components/pyload/translations/de.json +12 -0
- homeassistant/components/pyload/translations/el.json +12 -0
- homeassistant/components/pyload/translations/en-GB.json +12 -0
- homeassistant/components/pyload/translations/en.json +12 -0
- homeassistant/components/pyload/translations/es.json +12 -0
- homeassistant/components/pyload/translations/et.json +12 -0
- homeassistant/components/pyload/translations/fr.json +12 -0
- homeassistant/components/pyload/translations/ga.json +11 -0
- homeassistant/components/pyload/translations/he.json +6 -0
- homeassistant/components/pyload/translations/lt.json +12 -0
- homeassistant/components/pyload/translations/nl.json +10 -0
- homeassistant/components/pyload/translations/pt.json +12 -0
- homeassistant/components/pyload/translations/ru.json +12 -0
- homeassistant/components/pyload/translations/sk.json +12 -0
- homeassistant/components/pyload/translations/sv.json +10 -0
- homeassistant/components/pyload/translations/zh-Hans.json +12 -0
- homeassistant/components/pyload/translations/zh-Hant.json +12 -0
- homeassistant/components/qbus/entity.py +2 -5
- homeassistant/components/qbus/manifest.json +1 -1
- homeassistant/components/qnap/strings.json +1 -1
- homeassistant/components/qrcode/manifest.json +1 -1
- homeassistant/components/rachio/translations/es.json +1 -1
- homeassistant/components/rainbird/strings.json +2 -2
- homeassistant/components/rainbird/translations/es.json +3 -3
- homeassistant/components/rainbird/translations/fr.json +3 -0
- homeassistant/components/rainmachine/strings.json +11 -11
- homeassistant/components/rainmachine/translations/es.json +1 -1
- homeassistant/components/random/translations/da.json +7 -0
- homeassistant/components/random/translations/nl.json +1 -0
- homeassistant/components/recorder/pool.py +7 -0
- homeassistant/components/remote/translations/es.json +1 -1
- homeassistant/components/remote/translations/it.json +1 -1
- homeassistant/components/remote_calendar/calendar.py +1 -1
- homeassistant/components/remote_calendar/manifest.json +1 -1
- homeassistant/components/renault/__init__.py +2 -2
- homeassistant/components/renault/services.py +3 -2
- homeassistant/components/renson/translations/it.json +4 -4
- homeassistant/components/reolink/__init__.py +0 -11
- homeassistant/components/reolink/config_flow.py +2 -2
- homeassistant/components/reolink/diagnostics.py +3 -1
- homeassistant/components/reolink/entity.py +1 -1
- homeassistant/components/reolink/icons.json +21 -1
- homeassistant/components/reolink/manifest.json +1 -1
- homeassistant/components/reolink/number.py +33 -1
- homeassistant/components/reolink/select.py +25 -0
- homeassistant/components/reolink/sensor.py +22 -3
- homeassistant/components/reolink/strings.json +15 -0
- homeassistant/components/reolink/switch.py +9 -0
- homeassistant/components/reolink/translations/cs.json +15 -0
- homeassistant/components/reolink/translations/de.json +15 -0
- homeassistant/components/reolink/translations/el.json +3 -0
- homeassistant/components/reolink/translations/en-GB.json +15 -0
- homeassistant/components/reolink/translations/en.json +15 -0
- homeassistant/components/reolink/translations/es.json +25 -10
- homeassistant/components/reolink/translations/et.json +15 -0
- homeassistant/components/reolink/translations/ga.json +34 -1
- homeassistant/components/reolink/translations/it.json +10 -10
- homeassistant/components/reolink/translations/mk.json +5 -0
- homeassistant/components/reolink/translations/sk.json +15 -0
- homeassistant/components/reolink/translations/zh-Hans.json +15 -0
- homeassistant/components/reolink/translations/zh-Hant.json +15 -0
- homeassistant/components/rest/sensor.py +1 -15
- homeassistant/components/rest_command/__init__.py +5 -1
- homeassistant/components/rflink/light.py +2 -2
- homeassistant/components/rfxtrx/translations/es.json +8 -8
- homeassistant/components/rfxtrx/translations/it.json +1 -1
- homeassistant/components/ring/manifest.json +1 -0
- homeassistant/components/ring/quality_scale.yaml +71 -0
- homeassistant/components/risco/alarm_control_panel.py +7 -3
- homeassistant/components/risco/strings.json +6 -6
- homeassistant/components/risco/translations/cs.json +8 -0
- homeassistant/components/risco/translations/fr.json +6 -0
- homeassistant/components/roborock/__init__.py +0 -8
- homeassistant/components/roborock/config_flow.py +4 -9
- homeassistant/components/roborock/translations/ga.json +11 -1
- homeassistant/components/roborock/translations/it.json +2 -2
- homeassistant/components/roborock/translations/nl.json +1 -0
- homeassistant/components/roku/__init__.py +0 -7
- homeassistant/components/roku/config_flow.py +2 -2
- homeassistant/components/roku/media_player.py +4 -4
- homeassistant/components/roomba/translations/es.json +1 -1
- homeassistant/components/roon/event.py +4 -3
- homeassistant/components/roon/media_player.py +4 -3
- homeassistant/components/russound_rio/const.py +4 -0
- homeassistant/components/russound_rio/manifest.json +1 -1
- homeassistant/components/russound_rio/media_player.py +51 -2
- homeassistant/components/russound_rio/strings.json +9 -0
- homeassistant/components/russound_rio/translations/cs.json +9 -0
- homeassistant/components/russound_rio/translations/de.json +9 -0
- homeassistant/components/russound_rio/translations/el.json +9 -0
- homeassistant/components/russound_rio/translations/en-GB.json +9 -0
- homeassistant/components/russound_rio/translations/en.json +9 -0
- homeassistant/components/russound_rio/translations/es.json +9 -0
- homeassistant/components/russound_rio/translations/et.json +9 -0
- homeassistant/components/russound_rio/translations/ga.json +9 -0
- homeassistant/components/russound_rio/translations/ja.json +9 -0
- homeassistant/components/russound_rio/translations/lt.json +9 -0
- homeassistant/components/russound_rio/translations/mk.json +13 -1
- homeassistant/components/russound_rio/translations/pt.json +9 -0
- homeassistant/components/russound_rio/translations/sk.json +9 -0
- homeassistant/components/russound_rio/translations/zh-Hans.json +9 -0
- homeassistant/components/russound_rio/translations/zh-Hant.json +9 -0
- homeassistant/components/samsungtv/strings.json +1 -1
- homeassistant/components/schedule/translations/it.json +1 -1
- homeassistant/components/schlage/manifest.json +1 -1
- homeassistant/components/scrape/manifest.json +1 -1
- homeassistant/components/scrape/sensor.py +2 -13
- homeassistant/components/screenlogic/manifest.json +1 -1
- homeassistant/components/screenlogic/translations/es.json +3 -3
- homeassistant/components/script/translations/it.json +1 -1
- homeassistant/components/sensibo/translations/it.json +18 -18
- homeassistant/components/sensor/__init__.py +3 -1
- homeassistant/components/sensor/const.py +14 -0
- homeassistant/components/sensor/device_condition.py +3 -0
- homeassistant/components/sensor/device_trigger.py +3 -0
- homeassistant/components/sensor/icons.json +3 -0
- homeassistant/components/sensor/strings.json +5 -0
- homeassistant/components/sensor/translations/cs.json +5 -0
- homeassistant/components/sensor/translations/de.json +5 -0
- homeassistant/components/sensor/translations/el.json +5 -0
- homeassistant/components/sensor/translations/en-GB.json +5 -0
- homeassistant/components/sensor/translations/en.json +5 -0
- homeassistant/components/sensor/translations/es.json +5 -0
- homeassistant/components/sensor/translations/et.json +5 -0
- homeassistant/components/sensor/translations/fr.json +5 -0
- homeassistant/components/sensor/translations/ga.json +5 -0
- homeassistant/components/sensor/translations/he.json +5 -0
- homeassistant/components/sensor/translations/it.json +1 -1
- homeassistant/components/sensor/translations/lt.json +5 -0
- homeassistant/components/sensor/translations/nl.json +6 -0
- homeassistant/components/sensor/translations/pt.json +5 -0
- homeassistant/components/sensor/translations/ru.json +5 -0
- homeassistant/components/sensor/translations/sk.json +5 -0
- homeassistant/components/sensor/translations/sv.json +4 -0
- homeassistant/components/sensor/translations/zh-Hans.json +5 -0
- homeassistant/components/sensor/translations/zh-Hant.json +5 -0
- homeassistant/components/seven_segments/manifest.json +1 -1
- homeassistant/components/sfr_box/manifest.json +1 -1
- homeassistant/components/sfr_box/strings.json +1 -1
- homeassistant/components/shelly/__init__.py +1 -1
- homeassistant/components/shelly/button.py +4 -21
- homeassistant/components/shelly/climate.py +2 -8
- homeassistant/components/shelly/config_flow.py +2 -2
- homeassistant/components/shelly/coordinator.py +15 -5
- homeassistant/components/shelly/entity.py +41 -32
- homeassistant/components/shelly/event.py +2 -8
- homeassistant/components/shelly/manifest.json +1 -1
- homeassistant/components/shelly/sensor.py +3 -7
- homeassistant/components/shelly/strings.json +1 -1
- homeassistant/components/shelly/translations/cs.json +1 -1
- homeassistant/components/shelly/translations/da.json +3 -1
- homeassistant/components/shelly/translations/de.json +1 -1
- homeassistant/components/shelly/translations/el.json +2 -1
- homeassistant/components/shelly/translations/en-GB.json +1 -1
- homeassistant/components/shelly/translations/en.json +1 -1
- homeassistant/components/shelly/translations/es.json +1 -1
- homeassistant/components/shelly/translations/et.json +1 -1
- homeassistant/components/shelly/translations/fr.json +1 -1
- homeassistant/components/shelly/translations/ga.json +2 -1
- homeassistant/components/shelly/translations/hu.json +1 -2
- homeassistant/components/shelly/translations/lt.json +1 -2
- homeassistant/components/shelly/translations/mk.json +5 -0
- homeassistant/components/shelly/translations/pl.json +1 -1
- homeassistant/components/shelly/translations/pt.json +1 -2
- homeassistant/components/shelly/translations/ru.json +1 -1
- homeassistant/components/shelly/translations/sk.json +1 -1
- homeassistant/components/shelly/translations/sv.json +1 -2
- homeassistant/components/shelly/translations/zh-Hans.json +1 -1
- homeassistant/components/shelly/translations/zh-Hant.json +1 -1
- homeassistant/components/shelly/utils.py +16 -1
- homeassistant/components/sighthound/manifest.json +1 -1
- homeassistant/components/simplisafe/translations/es.json +4 -4
- homeassistant/components/siren/translations/it.json +1 -1
- homeassistant/components/sleepiq/const.py +4 -0
- homeassistant/components/sleepiq/manifest.json +1 -1
- homeassistant/components/sleepiq/number.py +53 -1
- homeassistant/components/sleepiq/select.py +61 -1
- homeassistant/components/sleepiq/strings.json +11 -0
- homeassistant/components/sleepiq/translations/bg.json +9 -0
- homeassistant/components/sleepiq/translations/cs.json +11 -0
- homeassistant/components/sleepiq/translations/de.json +11 -0
- homeassistant/components/sleepiq/translations/el.json +11 -0
- homeassistant/components/sleepiq/translations/en-GB.json +11 -0
- homeassistant/components/sleepiq/translations/en.json +11 -0
- homeassistant/components/sleepiq/translations/es.json +11 -0
- homeassistant/components/sleepiq/translations/et.json +11 -0
- homeassistant/components/sleepiq/translations/ga.json +10 -0
- homeassistant/components/sleepiq/translations/he.json +5 -0
- homeassistant/components/sleepiq/translations/it.json +1 -1
- homeassistant/components/sleepiq/translations/mk.json +16 -1
- homeassistant/components/sleepiq/translations/nl.json +5 -0
- homeassistant/components/sleepiq/translations/ru.json +11 -0
- homeassistant/components/sleepiq/translations/sk.json +11 -0
- homeassistant/components/sleepiq/translations/zh-Hans.json +11 -0
- homeassistant/components/sleepiq/translations/zh-Hant.json +11 -0
- homeassistant/components/slide_local/__init__.py +0 -7
- homeassistant/components/slide_local/config_flow.py +6 -2
- homeassistant/components/smarla/manifest.json +1 -1
- homeassistant/components/smartthings/__init__.py +1 -0
- homeassistant/components/smartthings/translations/es.json +2 -2
- homeassistant/components/smartthings/translations/it.json +7 -7
- homeassistant/components/smartthings/vacuum.py +95 -0
- homeassistant/components/smarttub/binary_sensor.py +29 -3
- homeassistant/components/smarttub/const.py +1 -0
- homeassistant/components/smarttub/controller.py +2 -0
- homeassistant/components/smarttub/entity.py +30 -4
- homeassistant/components/smarttub/manifest.json +1 -1
- homeassistant/components/smarttub/sensor.py +10 -10
- homeassistant/components/smhi/__init__.py +1 -1
- homeassistant/components/smhi/coordinator.py +10 -0
- homeassistant/components/smhi/entity.py +7 -1
- homeassistant/components/smhi/icons.json +27 -0
- homeassistant/components/smhi/sensor.py +139 -0
- homeassistant/components/smhi/strings.json +34 -0
- homeassistant/components/smhi/translations/bg.json +33 -0
- homeassistant/components/smhi/translations/cs.json +34 -0
- homeassistant/components/smhi/translations/de.json +34 -0
- homeassistant/components/smhi/translations/el.json +34 -0
- homeassistant/components/smhi/translations/en-GB.json +34 -0
- homeassistant/components/smhi/translations/en.json +34 -0
- homeassistant/components/smhi/translations/es.json +34 -0
- homeassistant/components/smhi/translations/et.json +34 -0
- homeassistant/components/smhi/translations/ga.json +34 -0
- homeassistant/components/smhi/translations/lt.json +34 -0
- homeassistant/components/smhi/translations/mk.json +34 -1
- homeassistant/components/smhi/translations/nl.json +11 -0
- homeassistant/components/smhi/translations/sk.json +34 -0
- homeassistant/components/smhi/translations/sv.json +34 -0
- homeassistant/components/smhi/translations/zh-Hans.json +34 -0
- homeassistant/components/smhi/translations/zh-Hant.json +34 -0
- homeassistant/components/smhi/weather.py +19 -5
- homeassistant/components/snapcast/media_player.py +75 -1
- homeassistant/components/snmp/device_tracker.py +37 -23
- homeassistant/components/snmp/manifest.json +1 -1
- homeassistant/components/snmp/sensor.py +7 -7
- homeassistant/components/snmp/switch.py +15 -8
- homeassistant/components/snmp/util.py +10 -10
- homeassistant/components/somfy_mylink/__init__.py +1 -16
- homeassistant/components/somfy_mylink/config_flow.py +2 -2
- homeassistant/components/sonarr/__init__.py +0 -6
- homeassistant/components/sonarr/config_flow.py +2 -2
- homeassistant/components/sonos/favorites.py +1 -1
- homeassistant/components/sonos/sensor.py +65 -3
- homeassistant/components/sonos/strings.json +8 -0
- homeassistant/components/sonos/translations/bg.json +9 -0
- homeassistant/components/sonos/translations/cs.json +8 -0
- homeassistant/components/sonos/translations/de.json +8 -0
- homeassistant/components/sonos/translations/el.json +8 -0
- homeassistant/components/sonos/translations/en-GB.json +8 -0
- homeassistant/components/sonos/translations/en.json +8 -0
- homeassistant/components/sonos/translations/es.json +8 -0
- homeassistant/components/sonos/translations/et.json +8 -0
- homeassistant/components/sonos/translations/fr.json +8 -0
- homeassistant/components/sonos/translations/ga.json +12 -0
- homeassistant/components/sonos/translations/he.json +11 -0
- homeassistant/components/sonos/translations/hu.json +8 -0
- homeassistant/components/sonos/translations/it.json +8 -0
- homeassistant/components/sonos/translations/ja.json +8 -0
- homeassistant/components/sonos/translations/lt.json +8 -0
- homeassistant/components/sonos/translations/mk.json +12 -0
- homeassistant/components/sonos/translations/nl.json +6 -0
- homeassistant/components/sonos/translations/pt.json +8 -0
- homeassistant/components/sonos/translations/ru.json +8 -0
- homeassistant/components/sonos/translations/sk.json +8 -0
- homeassistant/components/sonos/translations/sv.json +8 -0
- homeassistant/components/sonos/translations/zh-Hans.json +8 -0
- homeassistant/components/sonos/translations/zh-Hant.json +8 -0
- homeassistant/components/speedtestdotnet/__init__.py +0 -8
- homeassistant/components/speedtestdotnet/config_flow.py +6 -2
- homeassistant/components/sql/__init__.py +0 -7
- homeassistant/components/sql/config_flow.py +2 -2
- homeassistant/components/sql/sensor.py +2 -1
- homeassistant/components/sql/translations/nl.json +1 -0
- homeassistant/components/squeezebox/__init__.py +11 -15
- homeassistant/components/squeezebox/binary_sensor.py +1 -1
- homeassistant/components/squeezebox/const.py +2 -3
- homeassistant/components/squeezebox/coordinator.py +4 -4
- homeassistant/components/squeezebox/entity.py +0 -4
- homeassistant/components/squeezebox/media_player.py +60 -16
- homeassistant/components/squeezebox/sensor.py +1 -1
- homeassistant/components/squeezebox/translations/nl.json +5 -0
- homeassistant/components/starline/translations/en-GB.json +1 -1
- homeassistant/components/starlink/sensor.py +1 -1
- homeassistant/components/statistics/__init__.py +44 -1
- homeassistant/components/statistics/config_flow.py +11 -9
- homeassistant/components/statistics/sensor.py +21 -14
- homeassistant/components/statistics/translations/ga.json +37 -6
- homeassistant/components/stookwijzer/__init__.py +15 -1
- homeassistant/components/stookwijzer/const.py +3 -0
- homeassistant/components/stookwijzer/icons.json +7 -0
- homeassistant/components/stookwijzer/services.py +76 -0
- homeassistant/components/stookwijzer/services.yaml +7 -0
- homeassistant/components/stookwijzer/strings.json +18 -0
- homeassistant/components/stookwijzer/translations/cs.json +18 -0
- homeassistant/components/stookwijzer/translations/de.json +18 -0
- homeassistant/components/stookwijzer/translations/el.json +18 -0
- homeassistant/components/stookwijzer/translations/en-GB.json +18 -0
- homeassistant/components/stookwijzer/translations/en.json +18 -0
- homeassistant/components/stookwijzer/translations/es.json +18 -0
- homeassistant/components/stookwijzer/translations/et.json +18 -0
- homeassistant/components/stookwijzer/translations/ga.json +18 -0
- homeassistant/components/stookwijzer/translations/lt.json +18 -0
- homeassistant/components/stookwijzer/translations/pt.json +18 -0
- homeassistant/components/stookwijzer/translations/sk.json +18 -0
- homeassistant/components/stookwijzer/translations/sv.json +3 -0
- homeassistant/components/stookwijzer/translations/zh-Hans.json +18 -0
- homeassistant/components/stookwijzer/translations/zh-Hant.json +18 -0
- homeassistant/components/stream/manifest.json +1 -1
- homeassistant/components/swiss_public_transport/translations/ga.json +5 -1
- homeassistant/components/switch/translations/it.json +3 -3
- homeassistant/components/switch_as_x/__init__.py +23 -19
- homeassistant/components/switch_as_x/config_flow.py +1 -1
- homeassistant/components/switch_as_x/entity.py +1 -6
- homeassistant/components/switchbot/strings.json +3 -3
- homeassistant/components/switchbot/translations/nl.json +1 -1
- homeassistant/components/switchbot_cloud/__init__.py +29 -2
- homeassistant/components/switchbot_cloud/const.py +2 -0
- homeassistant/components/switchbot_cloud/fan.py +120 -0
- homeassistant/components/switchbot_cloud/light.py +153 -0
- homeassistant/components/switchbot_cloud/manifest.json +1 -1
- homeassistant/components/switchbot_cloud/sensor.py +1 -0
- homeassistant/components/switchbot_cloud/vacuum.py +136 -4
- homeassistant/components/synology_dsm/__init__.py +0 -8
- homeassistant/components/synology_dsm/config_flow.py +2 -2
- homeassistant/components/system_bridge/translations/ga.json +11 -0
- homeassistant/components/system_health/__init__.py +1 -1
- homeassistant/components/tailscale/translations/ga.json +9 -0
- homeassistant/components/tami4/translations/ga.json +8 -0
- homeassistant/components/tankerkoenig/__init__.py +0 -9
- homeassistant/components/tankerkoenig/binary_sensor.py +3 -0
- homeassistant/components/tankerkoenig/config_flow.py +4 -4
- homeassistant/components/tankerkoenig/coordinator.py +15 -3
- homeassistant/components/tankerkoenig/manifest.json +1 -0
- homeassistant/components/tankerkoenig/quality_scale.yaml +81 -0
- homeassistant/components/tankerkoenig/sensor.py +12 -2
- homeassistant/components/tankerkoenig/strings.json +34 -1
- homeassistant/components/tankerkoenig/translations/ca.json +1 -2
- homeassistant/components/tankerkoenig/translations/cs.json +35 -2
- homeassistant/components/tankerkoenig/translations/de.json +35 -2
- homeassistant/components/tankerkoenig/translations/el.json +1 -2
- homeassistant/components/tankerkoenig/translations/en-GB.json +24 -2
- homeassistant/components/tankerkoenig/translations/en.json +35 -2
- homeassistant/components/tankerkoenig/translations/es.json +35 -2
- homeassistant/components/tankerkoenig/translations/et.json +35 -2
- homeassistant/components/tankerkoenig/translations/fi.json +1 -2
- homeassistant/components/tankerkoenig/translations/fr.json +1 -2
- homeassistant/components/tankerkoenig/translations/ga.json +52 -0
- homeassistant/components/tankerkoenig/translations/hu.json +1 -2
- homeassistant/components/tankerkoenig/translations/id.json +1 -2
- homeassistant/components/tankerkoenig/translations/it.json +1 -2
- homeassistant/components/tankerkoenig/translations/ja.json +1 -2
- homeassistant/components/tankerkoenig/translations/ko.json +1 -2
- homeassistant/components/tankerkoenig/translations/lt.json +1 -2
- homeassistant/components/tankerkoenig/translations/nb.json +1 -2
- homeassistant/components/tankerkoenig/translations/nl.json +1 -2
- homeassistant/components/tankerkoenig/translations/pl.json +1 -2
- homeassistant/components/tankerkoenig/translations/pt-BR.json +1 -2
- homeassistant/components/tankerkoenig/translations/pt.json +1 -2
- homeassistant/components/tankerkoenig/translations/ro.json +1 -2
- homeassistant/components/tankerkoenig/translations/ru.json +1 -2
- homeassistant/components/tankerkoenig/translations/sk.json +35 -2
- homeassistant/components/tankerkoenig/translations/sv.json +1 -2
- homeassistant/components/tankerkoenig/translations/tr.json +1 -2
- homeassistant/components/tankerkoenig/translations/uk.json +1 -2
- homeassistant/components/tankerkoenig/translations/zh-Hans.json +35 -2
- homeassistant/components/tankerkoenig/translations/zh-Hant.json +35 -2
- homeassistant/components/telegram_bot/config_flow.py +6 -2
- homeassistant/components/telegram_bot/services.yaml +48 -42
- homeassistant/components/telegram_bot/strings.json +11 -7
- homeassistant/components/telegram_bot/translations/ca.json +0 -5
- homeassistant/components/telegram_bot/translations/cs.json +9 -5
- homeassistant/components/telegram_bot/translations/de.json +9 -5
- homeassistant/components/telegram_bot/translations/el.json +7 -4
- homeassistant/components/telegram_bot/translations/en-GB.json +9 -5
- homeassistant/components/telegram_bot/translations/en.json +9 -5
- homeassistant/components/telegram_bot/translations/es.json +9 -5
- homeassistant/components/telegram_bot/translations/et.json +9 -5
- homeassistant/components/telegram_bot/translations/fi.json +0 -6
- homeassistant/components/telegram_bot/translations/fr.json +2 -1
- homeassistant/components/telegram_bot/translations/ga.json +9 -1
- homeassistant/components/telegram_bot/translations/he.json +0 -4
- homeassistant/components/telegram_bot/translations/hu.json +0 -4
- homeassistant/components/telegram_bot/translations/id.json +0 -6
- homeassistant/components/telegram_bot/translations/it.json +7 -4
- homeassistant/components/telegram_bot/translations/ja.json +7 -4
- homeassistant/components/telegram_bot/translations/lt.json +7 -4
- homeassistant/components/telegram_bot/translations/nl.json +0 -4
- homeassistant/components/telegram_bot/translations/pt.json +7 -4
- homeassistant/components/telegram_bot/translations/ru.json +0 -4
- homeassistant/components/telegram_bot/translations/sk.json +9 -5
- homeassistant/components/telegram_bot/translations/sv.json +0 -4
- homeassistant/components/telegram_bot/translations/tr.json +0 -4
- homeassistant/components/telegram_bot/translations/zh-Hans.json +9 -5
- homeassistant/components/telegram_bot/translations/zh-Hant.json +9 -5
- homeassistant/components/tellduslive/strings.json +2 -2
- homeassistant/components/template/alarm_control_panel.py +65 -153
- homeassistant/components/template/binary_sensor.py +50 -123
- homeassistant/components/template/button.py +39 -51
- homeassistant/components/template/config.py +25 -21
- homeassistant/components/template/config_flow.py +220 -16
- homeassistant/components/template/const.py +14 -1
- homeassistant/components/template/cover.py +89 -104
- homeassistant/components/template/entity.py +35 -5
- homeassistant/components/template/fan.py +85 -106
- homeassistant/components/template/helpers.py +217 -5
- homeassistant/components/template/image.py +29 -55
- homeassistant/components/template/light.py +73 -79
- homeassistant/components/template/lock.py +88 -77
- homeassistant/components/template/number.py +148 -158
- homeassistant/components/template/select.py +121 -112
- homeassistant/components/template/sensor.py +51 -106
- homeassistant/components/template/strings.json +664 -51
- homeassistant/components/template/switch.py +98 -181
- homeassistant/components/template/template_entity.py +27 -66
- homeassistant/components/template/translations/bg.json +57 -14
- homeassistant/components/template/translations/ca.json +11 -82
- homeassistant/components/template/translations/cs.json +634 -27
- homeassistant/components/template/translations/da.json +3 -14
- homeassistant/components/template/translations/de.json +665 -53
- homeassistant/components/template/translations/el.json +82 -87
- homeassistant/components/template/translations/en-GB.json +165 -26
- homeassistant/components/template/translations/en.json +653 -41
- homeassistant/components/template/translations/es.json +509 -35
- homeassistant/components/template/translations/et.json +173 -34
- homeassistant/components/template/translations/fi.json +4 -19
- homeassistant/components/template/translations/fr.json +440 -15
- homeassistant/components/template/translations/ga.json +347 -50
- homeassistant/components/template/translations/he.json +11 -87
- homeassistant/components/template/translations/hu.json +11 -87
- homeassistant/components/template/translations/id.json +11 -87
- homeassistant/components/template/translations/it.json +9 -25
- homeassistant/components/template/translations/ja.json +11 -87
- homeassistant/components/template/translations/ko.json +5 -30
- homeassistant/components/template/translations/lb.json +1 -8
- homeassistant/components/template/translations/lt.json +11 -87
- homeassistant/components/template/translations/lv.json +2 -15
- homeassistant/components/template/translations/nb.json +3 -14
- homeassistant/components/template/translations/nl.json +114 -38
- homeassistant/components/template/translations/pl.json +9 -70
- homeassistant/components/template/translations/pt-BR.json +0 -20
- homeassistant/components/template/translations/pt.json +11 -87
- homeassistant/components/template/translations/ro.json +1 -8
- homeassistant/components/template/translations/ru.json +11 -87
- homeassistant/components/template/translations/sk.json +366 -25
- homeassistant/components/template/translations/sl.json +11 -85
- homeassistant/components/template/translations/sv.json +11 -87
- homeassistant/components/template/translations/tr.json +11 -87
- homeassistant/components/template/translations/uk.json +11 -87
- homeassistant/components/template/translations/vi.json +11 -87
- homeassistant/components/template/translations/zh-Hans.json +521 -33
- homeassistant/components/template/translations/zh-Hant.json +442 -18
- homeassistant/components/template/trigger_entity.py +1 -1
- homeassistant/components/template/vacuum.py +99 -109
- homeassistant/components/template/weather.py +70 -65
- homeassistant/components/tensorflow/manifest.json +2 -2
- homeassistant/components/tesla_fleet/config_flow.py +3 -1
- homeassistant/components/tesla_fleet/manifest.json +1 -1
- homeassistant/components/tesla_fleet/strings.json +1 -1
- homeassistant/components/tesla_fleet/translations/it.json +8 -8
- homeassistant/components/tesla_fleet/translations/nl.json +3 -0
- homeassistant/components/tesla_wall_connector/translations/ga.json +8 -1
- homeassistant/components/teslemetry/__init__.py +1 -6
- homeassistant/components/teslemetry/binary_sensor.py +1 -1
- homeassistant/components/teslemetry/climate.py +2 -2
- homeassistant/components/teslemetry/coordinator.py +1 -0
- homeassistant/components/teslemetry/cover.py +6 -5
- homeassistant/components/teslemetry/device_tracker.py +1 -1
- homeassistant/components/teslemetry/lock.py +2 -2
- homeassistant/components/teslemetry/manifest.json +1 -1
- homeassistant/components/teslemetry/media_player.py +1 -1
- homeassistant/components/teslemetry/number.py +1 -1
- homeassistant/components/teslemetry/select.py +1 -1
- homeassistant/components/teslemetry/sensor.py +2 -2
- homeassistant/components/teslemetry/strings.json +1 -1
- homeassistant/components/teslemetry/switch.py +1 -2
- homeassistant/components/teslemetry/translations/ga.json +161 -1
- homeassistant/components/teslemetry/translations/it.json +15 -15
- homeassistant/components/teslemetry/update.py +1 -1
- homeassistant/components/tessie/manifest.json +1 -1
- homeassistant/components/tessie/translations/it.json +9 -9
- homeassistant/components/tessie/update.py +7 -0
- homeassistant/components/thethingsnetwork/translations/ga.json +19 -0
- homeassistant/components/threshold/__init__.py +44 -6
- homeassistant/components/threshold/binary_sensor.py +24 -18
- homeassistant/components/threshold/config_flow.py +10 -7
- homeassistant/components/tibber/translations/ga.json +3 -0
- homeassistant/components/tibber/translations/nl.json +3 -0
- homeassistant/components/time_date/config_flow.py +5 -16
- homeassistant/components/tomorrowio/strings.json +2 -2
- homeassistant/components/totalconnect/translations/es.json +2 -2
- homeassistant/components/touchline_sl/manifest.json +1 -1
- homeassistant/components/tplink/strings.json +2 -2
- homeassistant/components/tplink/translations/cs.json +4 -0
- homeassistant/components/traccar_server/config_flow.py +66 -1
- homeassistant/components/traccar_server/coordinator.py +9 -3
- homeassistant/components/traccar_server/helpers.py +15 -1
- homeassistant/components/traccar_server/strings.json +11 -2
- homeassistant/components/traccar_server/translations/bg.json +9 -1
- homeassistant/components/traccar_server/translations/ca.json +9 -1
- homeassistant/components/traccar_server/translations/cs.json +10 -1
- homeassistant/components/traccar_server/translations/de.json +10 -1
- homeassistant/components/traccar_server/translations/el.json +10 -1
- homeassistant/components/traccar_server/translations/en-GB.json +10 -1
- homeassistant/components/traccar_server/translations/en.json +10 -1
- homeassistant/components/traccar_server/translations/es.json +10 -1
- homeassistant/components/traccar_server/translations/et.json +10 -1
- homeassistant/components/traccar_server/translations/ga.json +7 -0
- homeassistant/components/traccar_server/translations/he.json +9 -1
- homeassistant/components/traccar_server/translations/ja.json +10 -1
- homeassistant/components/traccar_server/translations/lt.json +10 -1
- homeassistant/components/traccar_server/translations/nl.json +9 -1
- homeassistant/components/traccar_server/translations/pt.json +10 -1
- homeassistant/components/traccar_server/translations/ru.json +10 -1
- homeassistant/components/traccar_server/translations/sk.json +10 -1
- homeassistant/components/traccar_server/translations/sv.json +10 -1
- homeassistant/components/traccar_server/translations/zh-Hans.json +10 -1
- homeassistant/components/traccar_server/translations/zh-Hant.json +10 -1
- homeassistant/components/trafikverket_train/__init__.py +0 -6
- homeassistant/components/trafikverket_train/config_flow.py +2 -2
- homeassistant/components/transmission/coordinator.py +2 -2
- homeassistant/components/trend/__init__.py +44 -1
- homeassistant/components/trend/binary_sensor.py +10 -10
- homeassistant/components/trend/config_flow.py +2 -0
- homeassistant/components/trend/manifest.json +1 -1
- homeassistant/components/tts/__init__.py +13 -3
- homeassistant/components/tts/entity.py +0 -12
- homeassistant/components/tuya/alarm_control_panel.py +2 -1
- homeassistant/components/tuya/binary_sensor.py +117 -52
- homeassistant/components/tuya/button.py +8 -8
- homeassistant/components/tuya/camera.py +3 -3
- homeassistant/components/tuya/climate.py +28 -17
- homeassistant/components/tuya/const.py +8 -11
- homeassistant/components/tuya/cover.py +43 -38
- homeassistant/components/tuya/entity.py +3 -120
- homeassistant/components/tuya/fan.py +19 -6
- homeassistant/components/tuya/humidifier.py +16 -3
- homeassistant/components/tuya/icons.json +6 -0
- homeassistant/components/tuya/light.py +75 -46
- homeassistant/components/tuya/models.py +124 -0
- homeassistant/components/tuya/number.py +143 -81
- homeassistant/components/tuya/select.py +176 -162
- homeassistant/components/tuya/sensor.py +691 -636
- homeassistant/components/tuya/siren.py +8 -8
- homeassistant/components/tuya/strings.json +80 -110
- homeassistant/components/tuya/switch.py +284 -176
- homeassistant/components/tuya/translations/bg.json +33 -86
- homeassistant/components/tuya/translations/ca.json +6 -121
- homeassistant/components/tuya/translations/cs.json +89 -119
- homeassistant/components/tuya/translations/de.json +89 -119
- homeassistant/components/tuya/translations/el.json +77 -119
- homeassistant/components/tuya/translations/en-GB.json +77 -119
- homeassistant/components/tuya/translations/en.json +89 -119
- homeassistant/components/tuya/translations/es.json +79 -121
- homeassistant/components/tuya/translations/et.json +77 -119
- homeassistant/components/tuya/translations/fi.json +5 -121
- homeassistant/components/tuya/translations/fr.json +0 -121
- homeassistant/components/tuya/translations/ga.json +79 -0
- homeassistant/components/tuya/translations/gl.json +0 -68
- homeassistant/components/tuya/translations/he.json +20 -120
- homeassistant/components/tuya/translations/hu.json +0 -121
- homeassistant/components/tuya/translations/id.json +0 -119
- homeassistant/components/tuya/translations/it.json +13 -125
- homeassistant/components/tuya/translations/ja.json +0 -121
- homeassistant/components/tuya/translations/ko.json +0 -121
- homeassistant/components/tuya/translations/lt.json +51 -121
- homeassistant/components/tuya/translations/lv.json +0 -18
- homeassistant/components/tuya/translations/mk.json +43 -0
- homeassistant/components/tuya/translations/nb.json +0 -29
- homeassistant/components/tuya/translations/nl.json +29 -121
- homeassistant/components/tuya/translations/pl.json +0 -23
- homeassistant/components/tuya/translations/pt-BR.json +0 -121
- homeassistant/components/tuya/translations/pt.json +23 -121
- homeassistant/components/tuya/translations/ro.json +0 -121
- homeassistant/components/tuya/translations/ru.json +26 -121
- homeassistant/components/tuya/translations/select.it.json +3 -3
- homeassistant/components/tuya/translations/sk.json +80 -119
- homeassistant/components/tuya/translations/sl.json +0 -103
- homeassistant/components/tuya/translations/sr-Latn.json +0 -3
- homeassistant/components/tuya/translations/sv.json +26 -121
- homeassistant/components/tuya/translations/tr.json +0 -121
- homeassistant/components/tuya/translations/uk.json +0 -123
- homeassistant/components/tuya/translations/vi.json +0 -3
- homeassistant/components/tuya/translations/zh-Hans.json +89 -119
- homeassistant/components/tuya/translations/zh-Hant.json +89 -119
- homeassistant/components/tuya/util.py +28 -0
- homeassistant/components/tuya/vacuum.py +14 -14
- homeassistant/components/twinkly/translations/it.json +1 -1
- homeassistant/components/unifi/hub/hub.py +3 -1
- homeassistant/components/unifiprotect/__init__.py +57 -60
- homeassistant/components/unifiprotect/camera.py +1 -1
- homeassistant/components/unifiprotect/config_flow.py +23 -9
- homeassistant/components/unifiprotect/const.py +1 -1
- homeassistant/components/unifiprotect/data.py +2 -2
- homeassistant/components/unifiprotect/manifest.json +1 -1
- homeassistant/components/unifiprotect/repairs.py +0 -50
- homeassistant/components/unifiprotect/services.py +10 -5
- homeassistant/components/unifiprotect/strings.json +27 -27
- homeassistant/components/unifiprotect/translations/bg.json +11 -10
- homeassistant/components/unifiprotect/translations/ca.json +0 -16
- homeassistant/components/unifiprotect/translations/cs.json +23 -20
- homeassistant/components/unifiprotect/translations/de.json +20 -20
- homeassistant/components/unifiprotect/translations/el.json +20 -20
- homeassistant/components/unifiprotect/translations/en-GB.json +20 -20
- homeassistant/components/unifiprotect/translations/en.json +20 -20
- homeassistant/components/unifiprotect/translations/es.json +20 -20
- homeassistant/components/unifiprotect/translations/et.json +20 -20
- homeassistant/components/unifiprotect/translations/fi.json +17 -19
- homeassistant/components/unifiprotect/translations/fr.json +0 -7
- homeassistant/components/unifiprotect/translations/fy.json +1 -14
- homeassistant/components/unifiprotect/translations/ga.json +27 -7
- homeassistant/components/unifiprotect/translations/he.json +3 -0
- homeassistant/components/unifiprotect/translations/hu.json +0 -20
- homeassistant/components/unifiprotect/translations/id.json +0 -18
- homeassistant/components/unifiprotect/translations/it.json +0 -3
- homeassistant/components/unifiprotect/translations/ja.json +0 -20
- homeassistant/components/unifiprotect/translations/ko.json +0 -5
- homeassistant/components/unifiprotect/translations/lt.json +0 -20
- homeassistant/components/unifiprotect/translations/nb.json +0 -5
- homeassistant/components/unifiprotect/translations/nl.json +9 -19
- homeassistant/components/unifiprotect/translations/pl.json +0 -5
- homeassistant/components/unifiprotect/translations/pt-BR.json +0 -3
- homeassistant/components/unifiprotect/translations/pt.json +0 -20
- homeassistant/components/unifiprotect/translations/ro.json +0 -5
- homeassistant/components/unifiprotect/translations/ru.json +0 -20
- homeassistant/components/unifiprotect/translations/sk.json +20 -20
- homeassistant/components/unifiprotect/translations/sv.json +0 -20
- homeassistant/components/unifiprotect/translations/tr.json +0 -20
- homeassistant/components/unifiprotect/translations/uk.json +0 -5
- homeassistant/components/unifiprotect/translations/zh-Hans.json +20 -20
- homeassistant/components/unifiprotect/translations/zh-Hant.json +20 -20
- homeassistant/components/unifiprotect/utils.py +3 -0
- homeassistant/components/uptime_kuma/__init__.py +74 -0
- homeassistant/components/uptime_kuma/config_flow.py +231 -0
- homeassistant/components/uptime_kuma/const.py +26 -0
- homeassistant/components/uptime_kuma/coordinator.py +137 -0
- homeassistant/components/uptime_kuma/diagnostics.py +23 -0
- homeassistant/components/uptime_kuma/icons.json +32 -0
- homeassistant/components/uptime_kuma/manifest.json +11 -0
- homeassistant/components/uptime_kuma/quality_scale.yaml +76 -0
- homeassistant/components/uptime_kuma/sensor.py +178 -0
- homeassistant/components/uptime_kuma/strings.json +137 -0
- homeassistant/components/uptime_kuma/translations/bg.json +57 -0
- homeassistant/components/uptime_kuma/translations/ca.json +35 -0
- homeassistant/components/uptime_kuma/translations/cs.json +137 -0
- homeassistant/components/uptime_kuma/translations/de.json +137 -0
- homeassistant/components/uptime_kuma/translations/el.json +127 -0
- homeassistant/components/uptime_kuma/translations/en-GB.json +127 -0
- homeassistant/components/uptime_kuma/translations/en.json +137 -0
- homeassistant/components/uptime_kuma/translations/es.json +127 -0
- homeassistant/components/uptime_kuma/translations/et.json +127 -0
- homeassistant/components/uptime_kuma/translations/fr.json +134 -0
- homeassistant/components/uptime_kuma/translations/ga.json +111 -0
- homeassistant/components/uptime_kuma/translations/he.json +35 -0
- homeassistant/components/uptime_kuma/translations/lt.json +119 -0
- homeassistant/components/uptime_kuma/translations/mk.json +17 -0
- homeassistant/components/uptime_kuma/translations/nb.json +31 -0
- homeassistant/components/uptime_kuma/translations/nl.json +68 -0
- homeassistant/components/uptime_kuma/translations/pt.json +94 -0
- homeassistant/components/uptime_kuma/translations/ru.json +101 -0
- homeassistant/components/uptime_kuma/translations/sk.json +135 -0
- homeassistant/components/uptime_kuma/translations/sv.json +109 -0
- homeassistant/components/uptime_kuma/translations/zh-Hans.json +135 -0
- homeassistant/components/uptime_kuma/translations/zh-Hant.json +137 -0
- homeassistant/components/uptime_kuma/update.py +122 -0
- homeassistant/components/utility_meter/__init__.py +34 -8
- homeassistant/components/utility_meter/config_flow.py +2 -0
- homeassistant/components/utility_meter/select.py +6 -6
- homeassistant/components/utility_meter/sensor.py +9 -10
- homeassistant/components/utility_meter/strings.json +5 -0
- homeassistant/components/utility_meter/translations/bg.json +5 -0
- homeassistant/components/utility_meter/translations/cs.json +5 -0
- homeassistant/components/utility_meter/translations/de.json +5 -0
- homeassistant/components/utility_meter/translations/el.json +5 -0
- homeassistant/components/utility_meter/translations/en-GB.json +5 -0
- homeassistant/components/utility_meter/translations/en.json +5 -0
- homeassistant/components/utility_meter/translations/es.json +5 -0
- homeassistant/components/utility_meter/translations/et.json +5 -0
- homeassistant/components/utility_meter/translations/fr.json +5 -0
- homeassistant/components/utility_meter/translations/ga.json +7 -0
- homeassistant/components/utility_meter/translations/he.json +5 -0
- homeassistant/components/utility_meter/translations/ja.json +5 -0
- homeassistant/components/utility_meter/translations/lt.json +5 -0
- homeassistant/components/utility_meter/translations/nl.json +5 -0
- homeassistant/components/utility_meter/translations/pt.json +5 -0
- homeassistant/components/utility_meter/translations/ru.json +5 -0
- homeassistant/components/utility_meter/translations/sk.json +5 -0
- homeassistant/components/utility_meter/translations/zh-Hans.json +5 -0
- homeassistant/components/utility_meter/translations/zh-Hant.json +5 -0
- homeassistant/components/v2c/translations/ga.json +20 -0
- homeassistant/components/vacuum/__init__.py +65 -2
- homeassistant/components/vacuum/translations/it.json +1 -1
- homeassistant/components/vallox/strings.json +1 -1
- homeassistant/components/vegehub/strings.json +2 -2
- homeassistant/components/velbus/__init__.py +2 -2
- homeassistant/components/velbus/const.py +0 -1
- homeassistant/components/velbus/services.py +42 -90
- homeassistant/components/velbus/services.yaml +0 -20
- homeassistant/components/velbus/strings.json +0 -16
- homeassistant/components/velbus/translations/bg.json +0 -18
- homeassistant/components/velbus/translations/ca.json +0 -12
- homeassistant/components/velbus/translations/cs.json +0 -16
- homeassistant/components/velbus/translations/de.json +0 -16
- homeassistant/components/velbus/translations/el.json +0 -16
- homeassistant/components/velbus/translations/en-GB.json +0 -16
- homeassistant/components/velbus/translations/en.json +0 -16
- homeassistant/components/velbus/translations/es.json +0 -16
- homeassistant/components/velbus/translations/et.json +0 -16
- homeassistant/components/velbus/translations/fi.json +0 -19
- homeassistant/components/velbus/translations/gl.json +0 -18
- homeassistant/components/velbus/translations/hu.json +0 -16
- homeassistant/components/velbus/translations/it.json +0 -15
- homeassistant/components/velbus/translations/ja.json +0 -16
- homeassistant/components/velbus/translations/ko.json +0 -19
- homeassistant/components/velbus/translations/lt.json +0 -16
- homeassistant/components/velbus/translations/nb.json +0 -30
- homeassistant/components/velbus/translations/nl.json +0 -15
- homeassistant/components/velbus/translations/pt.json +0 -16
- homeassistant/components/velbus/translations/ru.json +0 -16
- homeassistant/components/velbus/translations/sk.json +0 -16
- homeassistant/components/velbus/translations/sv.json +0 -16
- homeassistant/components/velbus/translations/tr.json +0 -16
- homeassistant/components/velbus/translations/uk.json +0 -5
- homeassistant/components/velbus/translations/zh-Hans.json +0 -16
- homeassistant/components/velbus/translations/zh-Hant.json +0 -16
- homeassistant/components/velux/binary_sensor.py +63 -0
- homeassistant/components/velux/const.py +1 -1
- homeassistant/components/vera/__init__.py +0 -6
- homeassistant/components/vera/config_flow.py +2 -2
- homeassistant/components/vesync/const.py +1 -0
- homeassistant/components/vesync/translations/it.json +1 -1
- homeassistant/components/vodafone_station/__init__.py +0 -8
- homeassistant/components/vodafone_station/config_flow.py +6 -2
- homeassistant/components/volvo/__init__.py +97 -0
- homeassistant/components/volvo/api.py +38 -0
- homeassistant/components/volvo/application_credentials.py +37 -0
- homeassistant/components/volvo/config_flow.py +239 -0
- homeassistant/components/volvo/const.py +14 -0
- homeassistant/components/volvo/coordinator.py +255 -0
- homeassistant/components/volvo/entity.py +90 -0
- homeassistant/components/volvo/icons.json +81 -0
- homeassistant/components/volvo/manifest.json +13 -0
- homeassistant/components/volvo/quality_scale.yaml +82 -0
- homeassistant/components/volvo/sensor.py +399 -0
- homeassistant/components/volvo/strings.json +178 -0
- homeassistant/components/volvo/translations/bg.json +55 -0
- homeassistant/components/volvo/translations/cs.json +178 -0
- homeassistant/components/volvo/translations/de.json +178 -0
- homeassistant/components/volvo/translations/el.json +53 -0
- homeassistant/components/volvo/translations/en.json +178 -0
- homeassistant/components/volvo/translations/es.json +178 -0
- homeassistant/components/volvo/translations/et.json +178 -0
- homeassistant/components/volvo/translations/ga.json +151 -0
- homeassistant/components/volvo/translations/nl.json +54 -0
- homeassistant/components/volvo/translations/sk.json +178 -0
- homeassistant/components/volvo/translations/zh-Hans.json +178 -0
- homeassistant/components/volvo/translations/zh-Hant.json +178 -0
- homeassistant/components/wallbox/__init__.py +11 -11
- homeassistant/components/wallbox/coordinator.py +57 -8
- homeassistant/components/wallbox/lock.py +7 -5
- homeassistant/components/wallbox/number.py +8 -6
- homeassistant/components/wallbox/select.py +7 -4
- homeassistant/components/wallbox/sensor.py +7 -5
- homeassistant/components/wallbox/strings.json +19 -2
- homeassistant/components/wallbox/switch.py +7 -5
- homeassistant/components/wallbox/translations/bg.json +9 -0
- homeassistant/components/wallbox/translations/cs.json +17 -0
- homeassistant/components/wallbox/translations/de.json +17 -0
- homeassistant/components/wallbox/translations/el.json +17 -0
- homeassistant/components/wallbox/translations/en-GB.json +17 -0
- homeassistant/components/wallbox/translations/en.json +17 -0
- homeassistant/components/wallbox/translations/es.json +17 -0
- homeassistant/components/wallbox/translations/et.json +17 -0
- homeassistant/components/wallbox/translations/ga.json +23 -0
- homeassistant/components/wallbox/translations/it.json +1 -1
- homeassistant/components/wallbox/translations/ja.json +8 -0
- homeassistant/components/wallbox/translations/lt.json +17 -0
- homeassistant/components/wallbox/translations/mk.json +5 -0
- homeassistant/components/wallbox/translations/nl.json +5 -0
- homeassistant/components/wallbox/translations/pt.json +17 -0
- homeassistant/components/wallbox/translations/ru.json +3 -0
- homeassistant/components/wallbox/translations/sk.json +17 -0
- homeassistant/components/wallbox/translations/zh-Hans.json +17 -0
- homeassistant/components/wallbox/translations/zh-Hant.json +17 -0
- homeassistant/components/waqi/__init__.py +5 -10
- homeassistant/components/waqi/config_flow.py +42 -48
- homeassistant/components/waqi/coordinator.py +4 -2
- homeassistant/components/waqi/icons.json +39 -0
- homeassistant/components/waqi/sensor.py +3 -16
- homeassistant/components/water_heater/translations/ga.json +9 -0
- homeassistant/components/water_heater/translations/it.json +2 -2
- homeassistant/components/waze_travel_time/strings.json +6 -6
- homeassistant/components/waze_travel_time/translations/cs.json +10 -0
- homeassistant/components/waze_travel_time/translations/el.json +6 -0
- homeassistant/components/waze_travel_time/translations/et.json +10 -0
- homeassistant/components/waze_travel_time/translations/fr.json +14 -0
- homeassistant/components/waze_travel_time/translations/ga.json +37 -0
- homeassistant/components/weatherflow_cloud/__init__.py +83 -6
- homeassistant/components/weatherflow_cloud/config_flow.py +3 -2
- homeassistant/components/weatherflow_cloud/const.py +4 -1
- homeassistant/components/weatherflow_cloud/coordinator.py +176 -15
- homeassistant/components/weatherflow_cloud/entity.py +6 -13
- homeassistant/components/weatherflow_cloud/icons.json +98 -8
- homeassistant/components/weatherflow_cloud/manifest.json +1 -1
- homeassistant/components/weatherflow_cloud/sensor.py +296 -19
- homeassistant/components/weatherflow_cloud/strings.json +47 -18
- homeassistant/components/weatherflow_cloud/translations/ca.json +0 -3
- homeassistant/components/weatherflow_cloud/translations/cs.json +33 -3
- homeassistant/components/weatherflow_cloud/translations/de.json +33 -3
- homeassistant/components/weatherflow_cloud/translations/el.json +6 -3
- homeassistant/components/weatherflow_cloud/translations/en-GB.json +6 -3
- homeassistant/components/weatherflow_cloud/translations/en.json +33 -3
- homeassistant/components/weatherflow_cloud/translations/es.json +33 -3
- homeassistant/components/weatherflow_cloud/translations/et.json +6 -3
- homeassistant/components/weatherflow_cloud/translations/fr.json +0 -3
- homeassistant/components/weatherflow_cloud/translations/ga.json +33 -3
- homeassistant/components/weatherflow_cloud/translations/he.json +0 -3
- homeassistant/components/weatherflow_cloud/translations/hu.json +0 -3
- homeassistant/components/weatherflow_cloud/translations/it.json +10 -0
- homeassistant/components/weatherflow_cloud/translations/ja.json +0 -3
- homeassistant/components/weatherflow_cloud/translations/lt.json +6 -3
- homeassistant/components/weatherflow_cloud/translations/mk.json +3 -3
- homeassistant/components/weatherflow_cloud/translations/nl.json +6 -0
- homeassistant/components/weatherflow_cloud/translations/pt.json +6 -3
- homeassistant/components/weatherflow_cloud/translations/ru.json +0 -3
- homeassistant/components/weatherflow_cloud/translations/sk.json +6 -3
- homeassistant/components/weatherflow_cloud/translations/sv.json +3 -3
- homeassistant/components/weatherflow_cloud/translations/tr.json +0 -3
- homeassistant/components/weatherflow_cloud/translations/zh-Hans.json +6 -3
- homeassistant/components/weatherflow_cloud/translations/zh-Hant.json +33 -3
- homeassistant/components/weatherflow_cloud/weather.py +7 -9
- homeassistant/components/webmin/translations/ga.json +39 -0
- homeassistant/components/webostv/__init__.py +0 -7
- homeassistant/components/webostv/config_flow.py +7 -3
- homeassistant/components/webostv/strings.json +6 -6
- homeassistant/components/websocket_api/commands.py +53 -0
- homeassistant/components/whirlpool/binary_sensor.py +14 -7
- homeassistant/components/whirlpool/config_flow.py +5 -1
- homeassistant/components/whirlpool/diagnostics.py +7 -3
- homeassistant/components/whirlpool/manifest.json +1 -1
- homeassistant/components/whirlpool/sensor.py +169 -74
- homeassistant/components/whirlpool/strings.json +3 -5
- homeassistant/components/whirlpool/translations/cs.json +0 -2
- homeassistant/components/whirlpool/translations/de.json +0 -2
- homeassistant/components/whirlpool/translations/en-GB.json +0 -2
- homeassistant/components/whirlpool/translations/en.json +0 -2
- homeassistant/components/whirlpool/translations/es.json +8 -10
- homeassistant/components/whirlpool/translations/et.json +0 -2
- homeassistant/components/whirlpool/translations/fr.json +0 -2
- homeassistant/components/whirlpool/translations/fy.json +0 -2
- homeassistant/components/whirlpool/translations/ga.json +0 -2
- homeassistant/components/whirlpool/translations/hu.json +0 -2
- homeassistant/components/whirlpool/translations/it.json +0 -1
- homeassistant/components/whirlpool/translations/lt.json +0 -2
- homeassistant/components/whirlpool/translations/nl.json +0 -2
- homeassistant/components/whirlpool/translations/pt.json +0 -2
- homeassistant/components/whirlpool/translations/ru.json +0 -2
- homeassistant/components/whirlpool/translations/sk.json +0 -2
- homeassistant/components/whirlpool/translations/sv.json +0 -2
- homeassistant/components/whirlpool/translations/zh-Hans.json +0 -2
- homeassistant/components/whirlpool/translations/zh-Hant.json +0 -2
- homeassistant/components/whois/strings.json +1 -1
- homeassistant/components/wiffi/__init__.py +0 -7
- homeassistant/components/wiffi/config_flow.py +2 -2
- homeassistant/components/wilight/support.py +1 -2
- homeassistant/components/wiz/__init__.py +1 -0
- homeassistant/components/wiz/config_flow.py +1 -1
- homeassistant/components/wiz/fan.py +139 -0
- homeassistant/components/wiz/manifest.json +1 -1
- homeassistant/components/wled/__init__.py +0 -8
- homeassistant/components/wled/config_flow.py +2 -2
- homeassistant/components/wled/strings.json +1 -1
- homeassistant/components/wled/translations/it.json +1 -1
- homeassistant/components/wolflink/translations/it.json +1 -1
- homeassistant/components/workday/__init__.py +0 -6
- homeassistant/components/workday/config_flow.py +2 -2
- homeassistant/components/workday/manifest.json +1 -1
- homeassistant/components/ws66i/__init__.py +0 -6
- homeassistant/components/ws66i/config_flow.py +2 -2
- homeassistant/components/wyoming/translations/de.json +1 -1
- homeassistant/components/wyoming/translations/it.json +1 -1
- homeassistant/components/xiaomi_ble/coordinator.py +1 -1
- homeassistant/components/xiaomi_ble/manifest.json +1 -1
- homeassistant/components/xiaomi_ble/strings.json +9 -9
- homeassistant/components/xiaomi_miio/__init__.py +0 -11
- homeassistant/components/xiaomi_miio/config_flow.py +6 -2
- homeassistant/components/xiaomi_miio/strings.json +1 -1
- homeassistant/components/xiaomi_miio/translations/es.json +3 -3
- homeassistant/components/xiaomi_miio/translations/it.json +1 -1
- homeassistant/components/yale/manifest.json +1 -1
- homeassistant/components/yale_smart_alarm/__init__.py +0 -6
- homeassistant/components/yale_smart_alarm/config_flow.py +2 -2
- homeassistant/components/yale_smart_alarm/translations/it.json +1 -1
- homeassistant/components/yale_smart_alarm/translations/nl.json +3 -0
- homeassistant/components/yalexs_ble/__init__.py +5 -1
- homeassistant/components/yalexs_ble/icons.json +11 -0
- homeassistant/components/yalexs_ble/lock.py +32 -4
- homeassistant/components/yalexs_ble/manifest.json +1 -1
- homeassistant/components/yalexs_ble/strings.json +5 -0
- homeassistant/components/yalexs_ble/translations/cs.json +5 -0
- homeassistant/components/yalexs_ble/translations/de.json +5 -0
- homeassistant/components/yalexs_ble/translations/el.json +5 -0
- homeassistant/components/yalexs_ble/translations/en-GB.json +5 -0
- homeassistant/components/yalexs_ble/translations/en.json +5 -0
- homeassistant/components/yalexs_ble/translations/es.json +5 -0
- homeassistant/components/yalexs_ble/translations/et.json +5 -0
- homeassistant/components/yalexs_ble/translations/ga.json +9 -1
- homeassistant/components/yalexs_ble/translations/ja.json +5 -0
- homeassistant/components/yalexs_ble/translations/lt.json +5 -0
- homeassistant/components/yalexs_ble/translations/pt.json +5 -0
- homeassistant/components/yalexs_ble/translations/ru.json +5 -0
- homeassistant/components/yalexs_ble/translations/sk.json +5 -0
- homeassistant/components/yalexs_ble/translations/sv.json +5 -0
- homeassistant/components/yalexs_ble/translations/zh-Hans.json +5 -0
- homeassistant/components/yalexs_ble/translations/zh-Hant.json +5 -0
- homeassistant/components/yamaha_musiccast/translations/it.json +1 -1
- homeassistant/components/yeelight/__init__.py +0 -8
- homeassistant/components/yeelight/config_flow.py +2 -2
- homeassistant/components/yeelight/translations/es.json +1 -1
- homeassistant/components/yeelight/translations/it.json +1 -1
- homeassistant/components/yolink/__init__.py +14 -0
- homeassistant/components/yolink/binary_sensor.py +6 -2
- homeassistant/components/yolink/const.py +2 -0
- homeassistant/components/yolink/manifest.json +1 -1
- homeassistant/components/yolink/sensor.py +33 -3
- homeassistant/components/yolink/translations/it.json +1 -1
- homeassistant/components/yolink/translations/nl.json +1 -0
- homeassistant/components/youtube/manifest.json +1 -1
- homeassistant/components/zabbix/__init__.py +40 -22
- homeassistant/components/zbox_hub/__init__.py +1 -0
- homeassistant/components/zbox_hub/manifest.json +6 -0
- homeassistant/components/zha/helpers.py +21 -1
- homeassistant/components/zha/manifest.json +1 -1
- homeassistant/components/zha/strings.json +34 -4
- homeassistant/components/zha/translations/bg.json +6 -0
- homeassistant/components/zha/translations/cs.json +30 -0
- homeassistant/components/zha/translations/da.json +3 -0
- homeassistant/components/zha/translations/de.json +31 -1
- homeassistant/components/zha/translations/en.json +30 -0
- homeassistant/components/zha/translations/es.json +33 -3
- homeassistant/components/zha/translations/fr.json +9 -0
- homeassistant/components/zha/translations/ga.json +76 -0
- homeassistant/components/zha/translations/sk.json +18 -0
- homeassistant/components/zha/translations/zh-Hans.json +12 -0
- homeassistant/components/zha/translations/zh-Hant.json +27 -0
- homeassistant/components/zone/condition.py +156 -0
- homeassistant/components/zone/trigger.py +2 -1
- homeassistant/components/zoneminder/__init__.py +2 -2
- homeassistant/components/zoneminder/services.py +3 -2
- homeassistant/components/zwave_js/__init__.py +96 -73
- homeassistant/components/zwave_js/api.py +46 -36
- homeassistant/components/zwave_js/binary_sensor.py +8 -9
- homeassistant/components/zwave_js/button.py +6 -7
- homeassistant/components/zwave_js/climate.py +6 -7
- homeassistant/components/zwave_js/config_flow.py +3 -4
- homeassistant/components/zwave_js/const.py +0 -2
- homeassistant/components/zwave_js/cover.py +8 -14
- homeassistant/components/zwave_js/device_automation_helpers.py +2 -3
- homeassistant/components/zwave_js/diagnostics.py +9 -6
- homeassistant/components/zwave_js/discovery.py +36 -3
- homeassistant/components/zwave_js/event.py +5 -6
- homeassistant/components/zwave_js/fan.py +7 -8
- homeassistant/components/zwave_js/helpers.py +15 -19
- homeassistant/components/zwave_js/humidifier.py +5 -6
- homeassistant/components/zwave_js/light.py +41 -9
- homeassistant/components/zwave_js/lock.py +3 -5
- homeassistant/components/zwave_js/manifest.json +1 -1
- homeassistant/components/zwave_js/models.py +27 -0
- homeassistant/components/zwave_js/number.py +7 -8
- homeassistant/components/zwave_js/repairs.py +1 -0
- homeassistant/components/zwave_js/select.py +9 -10
- homeassistant/components/zwave_js/sensor.py +37 -20
- homeassistant/components/zwave_js/services.py +1 -1
- homeassistant/components/zwave_js/siren.py +5 -6
- homeassistant/components/zwave_js/strings.json +12 -12
- homeassistant/components/zwave_js/switch.py +8 -9
- homeassistant/components/zwave_js/translations/bg.json +2 -2
- homeassistant/components/zwave_js/translations/ca.json +0 -6
- homeassistant/components/zwave_js/translations/cs.json +8 -8
- homeassistant/components/zwave_js/translations/de.json +8 -8
- homeassistant/components/zwave_js/translations/el.json +8 -8
- homeassistant/components/zwave_js/translations/en-GB.json +8 -8
- homeassistant/components/zwave_js/translations/en.json +8 -8
- homeassistant/components/zwave_js/translations/es.json +8 -8
- homeassistant/components/zwave_js/translations/et.json +8 -8
- homeassistant/components/zwave_js/translations/fi.json +0 -9
- homeassistant/components/zwave_js/translations/fr.json +0 -3
- homeassistant/components/zwave_js/translations/ga.json +13 -0
- homeassistant/components/zwave_js/translations/he.json +0 -6
- homeassistant/components/zwave_js/translations/hu.json +0 -9
- homeassistant/components/zwave_js/translations/id.json +0 -9
- homeassistant/components/zwave_js/translations/ja.json +0 -9
- homeassistant/components/zwave_js/translations/lt.json +0 -9
- homeassistant/components/zwave_js/translations/nl.json +2 -8
- homeassistant/components/zwave_js/translations/pt.json +0 -9
- homeassistant/components/zwave_js/translations/ru.json +3 -9
- homeassistant/components/zwave_js/translations/sk.json +8 -8
- homeassistant/components/zwave_js/translations/sv.json +0 -9
- homeassistant/components/zwave_js/translations/tr.json +0 -9
- homeassistant/components/zwave_js/translations/vi.json +0 -9
- homeassistant/components/zwave_js/translations/zh-Hans.json +8 -8
- homeassistant/components/zwave_js/translations/zh-Hant.json +8 -8
- homeassistant/components/zwave_js/triggers/event.py +3 -5
- homeassistant/components/zwave_js/triggers/trigger_helpers.py +2 -4
- homeassistant/components/zwave_js/update.py +101 -36
- homeassistant/config.py +0 -3
- homeassistant/config_entries.py +28 -1
- homeassistant/const.py +4 -2
- homeassistant/core.py +51 -15
- homeassistant/generated/application_credentials.py +1 -0
- homeassistant/generated/config_flows.py +5 -0
- homeassistant/generated/integrations.json +44 -3
- homeassistant/generated/zeroconf.py +19 -0
- homeassistant/helpers/condition.py +217 -105
- homeassistant/helpers/config_validation.py +0 -29
- homeassistant/helpers/deprecation.py +8 -10
- homeassistant/helpers/device.py +13 -0
- homeassistant/helpers/device_registry.py +75 -39
- homeassistant/helpers/entity.py +61 -48
- homeassistant/helpers/entity_platform.py +177 -73
- homeassistant/helpers/entity_registry.py +42 -21
- homeassistant/helpers/event.py +62 -57
- homeassistant/helpers/frame.py +24 -9
- homeassistant/helpers/helper_integration.py +69 -10
- homeassistant/helpers/http.py +2 -2
- homeassistant/helpers/llm.py +44 -9
- homeassistant/helpers/schema_config_entry_flow.py +11 -0
- homeassistant/helpers/selector.py +173 -126
- homeassistant/helpers/service.py +53 -214
- homeassistant/helpers/service_info/dhcp.py +6 -0
- homeassistant/helpers/singleton.py +2 -1
- homeassistant/helpers/target.py +359 -0
- homeassistant/helpers/trigger.py +18 -8
- homeassistant/helpers/trigger_template_entity.py +19 -0
- homeassistant/helpers/update_coordinator.py +12 -2
- homeassistant/loader.py +13 -79
- homeassistant/package_constraints.txt +14 -18
- homeassistant/runner.py +2 -0
- homeassistant/strings.json +3 -0
- homeassistant/util/__init__.py +2 -2
- homeassistant/util/resource.py +65 -0
- homeassistant/util/unit_conversion.py +5 -2
- {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b1.dist-info}/METADATA +5 -5
- {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b1.dist-info}/RECORD +3089 -2877
- homeassistant/components/backup/basic_websocket.py +0 -38
- homeassistant/components/goalzero/translations/es-419.json +0 -9
- homeassistant/helpers/backup.py +0 -93
- {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b1.dist-info}/WHEEL +0 -0
- {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b1.dist-info}/entry_points.txt +0 -0
- {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b1.dist-info}/licenses/LICENSE.md +0 -0
- {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b1.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
- {homeassistant-2025.7.4.dist-info → homeassistant-2025.8.0b1.dist-info}/top_level.txt +0 -0
|
@@ -8,12 +8,15 @@ from tuya_sharing import CustomerDevice, Manager
|
|
|
8
8
|
from tuya_sharing.device import DeviceStatusRange
|
|
9
9
|
|
|
10
10
|
from homeassistant.components.sensor import (
|
|
11
|
+
DEVICE_CLASS_UNITS as SENSOR_DEVICE_CLASS_UNITS,
|
|
11
12
|
SensorDeviceClass,
|
|
12
13
|
SensorEntity,
|
|
13
14
|
SensorEntityDescription,
|
|
14
15
|
SensorStateClass,
|
|
15
16
|
)
|
|
16
17
|
from homeassistant.const import (
|
|
18
|
+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
19
|
+
CONCENTRATION_PARTS_PER_MILLION,
|
|
17
20
|
PERCENTAGE,
|
|
18
21
|
EntityCategory,
|
|
19
22
|
UnitOfElectricCurrent,
|
|
@@ -30,12 +33,14 @@ from . import TuyaConfigEntry
|
|
|
30
33
|
from .const import (
|
|
31
34
|
DEVICE_CLASS_UNITS,
|
|
32
35
|
DOMAIN,
|
|
36
|
+
LOGGER,
|
|
33
37
|
TUYA_DISCOVERY_NEW,
|
|
34
38
|
DPCode,
|
|
35
39
|
DPType,
|
|
36
40
|
UnitOfMeasurement,
|
|
37
41
|
)
|
|
38
|
-
from .entity import
|
|
42
|
+
from .entity import TuyaEntity
|
|
43
|
+
from .models import ElectricityTypeData, EnumTypeData, IntegerTypeData
|
|
39
44
|
|
|
40
45
|
|
|
41
46
|
@dataclass(frozen=True)
|
|
@@ -89,78 +94,32 @@ BATTERY_SENSORS: tuple[TuyaSensorEntityDescription, ...] = (
|
|
|
89
94
|
# end up being a sensor.
|
|
90
95
|
# https://developer.tuya.com/en/docs/iot/standarddescription?id=K9i5ql6waswzq
|
|
91
96
|
SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
92
|
-
#
|
|
93
|
-
#
|
|
94
|
-
"
|
|
95
|
-
TuyaSensorEntityDescription(
|
|
96
|
-
key=DPCode.GAS_SENSOR_VALUE,
|
|
97
|
-
translation_key="gas",
|
|
98
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
99
|
-
),
|
|
100
|
-
TuyaSensorEntityDescription(
|
|
101
|
-
key=DPCode.CH4_SENSOR_VALUE,
|
|
102
|
-
translation_key="gas",
|
|
103
|
-
name="Methane",
|
|
104
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
105
|
-
),
|
|
106
|
-
TuyaSensorEntityDescription(
|
|
107
|
-
key=DPCode.VOC_VALUE,
|
|
108
|
-
translation_key="voc",
|
|
109
|
-
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
|
|
110
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
111
|
-
),
|
|
112
|
-
TuyaSensorEntityDescription(
|
|
113
|
-
key=DPCode.PM25_VALUE,
|
|
114
|
-
translation_key="pm25",
|
|
115
|
-
device_class=SensorDeviceClass.PM25,
|
|
116
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
117
|
-
),
|
|
118
|
-
TuyaSensorEntityDescription(
|
|
119
|
-
key=DPCode.CO_VALUE,
|
|
120
|
-
translation_key="carbon_monoxide",
|
|
121
|
-
device_class=SensorDeviceClass.CO,
|
|
122
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
123
|
-
),
|
|
124
|
-
TuyaSensorEntityDescription(
|
|
125
|
-
key=DPCode.CO2_VALUE,
|
|
126
|
-
translation_key="carbon_dioxide",
|
|
127
|
-
device_class=SensorDeviceClass.CO2,
|
|
128
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
129
|
-
),
|
|
130
|
-
TuyaSensorEntityDescription(
|
|
131
|
-
key=DPCode.CH2O_VALUE,
|
|
132
|
-
translation_key="formaldehyde",
|
|
133
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
134
|
-
),
|
|
135
|
-
TuyaSensorEntityDescription(
|
|
136
|
-
key=DPCode.BRIGHT_STATE,
|
|
137
|
-
translation_key="luminosity",
|
|
138
|
-
),
|
|
139
|
-
TuyaSensorEntityDescription(
|
|
140
|
-
key=DPCode.BRIGHT_VALUE,
|
|
141
|
-
translation_key="illuminance",
|
|
142
|
-
device_class=SensorDeviceClass.ILLUMINANCE,
|
|
143
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
144
|
-
),
|
|
97
|
+
# Single Phase power meter
|
|
98
|
+
# Note: Undocumented
|
|
99
|
+
"aqcz": (
|
|
145
100
|
TuyaSensorEntityDescription(
|
|
146
|
-
key=DPCode.
|
|
147
|
-
translation_key="
|
|
148
|
-
device_class=SensorDeviceClass.
|
|
101
|
+
key=DPCode.CUR_CURRENT,
|
|
102
|
+
translation_key="current",
|
|
103
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
149
104
|
state_class=SensorStateClass.MEASUREMENT,
|
|
105
|
+
suggested_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
106
|
+
entity_registry_enabled_default=False,
|
|
150
107
|
),
|
|
151
108
|
TuyaSensorEntityDescription(
|
|
152
|
-
key=DPCode.
|
|
153
|
-
translation_key="
|
|
154
|
-
device_class=SensorDeviceClass.
|
|
109
|
+
key=DPCode.CUR_POWER,
|
|
110
|
+
translation_key="power",
|
|
111
|
+
device_class=SensorDeviceClass.POWER,
|
|
155
112
|
state_class=SensorStateClass.MEASUREMENT,
|
|
113
|
+
entity_registry_enabled_default=False,
|
|
156
114
|
),
|
|
157
115
|
TuyaSensorEntityDescription(
|
|
158
|
-
key=DPCode.
|
|
159
|
-
translation_key="
|
|
160
|
-
|
|
116
|
+
key=DPCode.CUR_VOLTAGE,
|
|
117
|
+
translation_key="voltage",
|
|
118
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
161
119
|
state_class=SensorStateClass.MEASUREMENT,
|
|
120
|
+
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
121
|
+
entity_registry_enabled_default=False,
|
|
162
122
|
),
|
|
163
|
-
*BATTERY_SENSORS,
|
|
164
123
|
),
|
|
165
124
|
# Smart Kettle
|
|
166
125
|
# https://developer.tuya.com/en/docs/iot/fbh?id=K9gf484m21yq7
|
|
@@ -182,6 +141,15 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
182
141
|
translation_key="status",
|
|
183
142
|
),
|
|
184
143
|
),
|
|
144
|
+
# Curtain
|
|
145
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48qy7wkre
|
|
146
|
+
"cl": (
|
|
147
|
+
TuyaSensorEntityDescription(
|
|
148
|
+
key=DPCode.TIME_TOTAL,
|
|
149
|
+
translation_key="last_operation_duration",
|
|
150
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
151
|
+
),
|
|
152
|
+
),
|
|
185
153
|
# CO2 Detector
|
|
186
154
|
# https://developer.tuya.com/en/docs/iot/categoryco2bj?id=Kaiuz3wes7yuy
|
|
187
155
|
"co2bj": (
|
|
@@ -202,6 +170,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
202
170
|
translation_key="carbon_dioxide",
|
|
203
171
|
device_class=SensorDeviceClass.CO2,
|
|
204
172
|
state_class=SensorStateClass.MEASUREMENT,
|
|
173
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
205
174
|
),
|
|
206
175
|
TuyaSensorEntityDescription(
|
|
207
176
|
key=DPCode.CH2O_VALUE,
|
|
@@ -219,80 +188,44 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
219
188
|
translation_key="pm25",
|
|
220
189
|
device_class=SensorDeviceClass.PM25,
|
|
221
190
|
state_class=SensorStateClass.MEASUREMENT,
|
|
191
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
222
192
|
),
|
|
223
193
|
*BATTERY_SENSORS,
|
|
224
194
|
),
|
|
225
|
-
#
|
|
226
|
-
#
|
|
227
|
-
|
|
228
|
-
"wkcz": (
|
|
195
|
+
# CO Detector
|
|
196
|
+
# https://developer.tuya.com/en/docs/iot/categorycobj?id=Kaiuz3u1j6q1v
|
|
197
|
+
"cobj": (
|
|
229
198
|
TuyaSensorEntityDescription(
|
|
230
|
-
key=DPCode.
|
|
231
|
-
translation_key="
|
|
232
|
-
device_class=SensorDeviceClass.
|
|
199
|
+
key=DPCode.CO_VALUE,
|
|
200
|
+
translation_key="carbon_monoxide",
|
|
201
|
+
device_class=SensorDeviceClass.CO,
|
|
233
202
|
state_class=SensorStateClass.MEASUREMENT,
|
|
203
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
234
204
|
),
|
|
205
|
+
*BATTERY_SENSORS,
|
|
206
|
+
),
|
|
207
|
+
# Dehumidifier
|
|
208
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r6jke8e
|
|
209
|
+
"cs": (
|
|
235
210
|
TuyaSensorEntityDescription(
|
|
236
|
-
key=DPCode.
|
|
211
|
+
key=DPCode.TEMP_INDOOR,
|
|
237
212
|
translation_key="temperature",
|
|
238
213
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
239
214
|
state_class=SensorStateClass.MEASUREMENT,
|
|
240
215
|
),
|
|
241
216
|
TuyaSensorEntityDescription(
|
|
242
|
-
key=DPCode.
|
|
243
|
-
translation_key="
|
|
244
|
-
device_class=SensorDeviceClass.
|
|
245
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
246
|
-
entity_registry_enabled_default=False,
|
|
247
|
-
),
|
|
248
|
-
TuyaSensorEntityDescription(
|
|
249
|
-
key=DPCode.CUR_POWER,
|
|
250
|
-
translation_key="power",
|
|
251
|
-
device_class=SensorDeviceClass.POWER,
|
|
252
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
253
|
-
entity_registry_enabled_default=False,
|
|
254
|
-
),
|
|
255
|
-
TuyaSensorEntityDescription(
|
|
256
|
-
key=DPCode.CUR_VOLTAGE,
|
|
257
|
-
translation_key="voltage",
|
|
258
|
-
device_class=SensorDeviceClass.VOLTAGE,
|
|
259
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
260
|
-
entity_registry_enabled_default=False,
|
|
261
|
-
),
|
|
262
|
-
),
|
|
263
|
-
# Single Phase power meter
|
|
264
|
-
# Note: Undocumented
|
|
265
|
-
"aqcz": (
|
|
266
|
-
TuyaSensorEntityDescription(
|
|
267
|
-
key=DPCode.CUR_CURRENT,
|
|
268
|
-
translation_key="current",
|
|
269
|
-
device_class=SensorDeviceClass.CURRENT,
|
|
270
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
271
|
-
entity_registry_enabled_default=False,
|
|
272
|
-
),
|
|
273
|
-
TuyaSensorEntityDescription(
|
|
274
|
-
key=DPCode.CUR_POWER,
|
|
275
|
-
translation_key="power",
|
|
276
|
-
device_class=SensorDeviceClass.POWER,
|
|
277
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
278
|
-
entity_registry_enabled_default=False,
|
|
279
|
-
),
|
|
280
|
-
TuyaSensorEntityDescription(
|
|
281
|
-
key=DPCode.CUR_VOLTAGE,
|
|
282
|
-
translation_key="voltage",
|
|
283
|
-
device_class=SensorDeviceClass.VOLTAGE,
|
|
217
|
+
key=DPCode.HUMIDITY_INDOOR,
|
|
218
|
+
translation_key="humidity",
|
|
219
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
284
220
|
state_class=SensorStateClass.MEASUREMENT,
|
|
285
|
-
entity_registry_enabled_default=False,
|
|
286
221
|
),
|
|
287
222
|
),
|
|
288
|
-
#
|
|
289
|
-
# https://
|
|
290
|
-
"
|
|
223
|
+
# Smart Odor Eliminator-Pro
|
|
224
|
+
# Undocumented, see https://github.com/orgs/home-assistant/discussions/79
|
|
225
|
+
"cwjwq": (
|
|
291
226
|
TuyaSensorEntityDescription(
|
|
292
|
-
key=DPCode.
|
|
293
|
-
translation_key="
|
|
294
|
-
device_class=SensorDeviceClass.CO,
|
|
295
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
227
|
+
key=DPCode.WORK_STATE_E,
|
|
228
|
+
translation_key="odor_elimination_status",
|
|
296
229
|
),
|
|
297
230
|
*BATTERY_SENSORS,
|
|
298
231
|
),
|
|
@@ -334,35 +267,22 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
334
267
|
state_class=SensorStateClass.MEASUREMENT,
|
|
335
268
|
entity_registry_enabled_default=False,
|
|
336
269
|
),
|
|
337
|
-
),
|
|
338
|
-
# Air Quality Monitor
|
|
339
|
-
# https://developer.tuya.com/en/docs/iot/hjjcy?id=Kbeoad8y1nnlv
|
|
340
|
-
"hjjcy": (
|
|
341
|
-
TuyaSensorEntityDescription(
|
|
342
|
-
key=DPCode.AIR_QUALITY_INDEX,
|
|
343
|
-
translation_key="air_quality_index",
|
|
344
|
-
),
|
|
345
270
|
TuyaSensorEntityDescription(
|
|
346
|
-
key=DPCode.
|
|
347
|
-
translation_key="temperature",
|
|
348
|
-
device_class=SensorDeviceClass.TEMPERATURE,
|
|
349
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
350
|
-
),
|
|
351
|
-
TuyaSensorEntityDescription(
|
|
352
|
-
key=DPCode.HUMIDITY_VALUE,
|
|
353
|
-
translation_key="humidity",
|
|
354
|
-
device_class=SensorDeviceClass.HUMIDITY,
|
|
355
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
271
|
+
key=DPCode.WATER_LEVEL, translation_key="water_level_state"
|
|
356
272
|
),
|
|
273
|
+
),
|
|
274
|
+
# Multi-functional Sensor
|
|
275
|
+
# https://developer.tuya.com/en/docs/iot/categorydgnbj?id=Kaiuz3yorvzg3
|
|
276
|
+
"dgnbj": (
|
|
357
277
|
TuyaSensorEntityDescription(
|
|
358
|
-
key=DPCode.
|
|
359
|
-
translation_key="
|
|
360
|
-
device_class=SensorDeviceClass.CO2,
|
|
278
|
+
key=DPCode.GAS_SENSOR_VALUE,
|
|
279
|
+
translation_key="gas",
|
|
361
280
|
state_class=SensorStateClass.MEASUREMENT,
|
|
362
281
|
),
|
|
363
282
|
TuyaSensorEntityDescription(
|
|
364
|
-
key=DPCode.
|
|
365
|
-
translation_key="
|
|
283
|
+
key=DPCode.CH4_SENSOR_VALUE,
|
|
284
|
+
translation_key="gas",
|
|
285
|
+
name="Methane",
|
|
366
286
|
state_class=SensorStateClass.MEASUREMENT,
|
|
367
287
|
),
|
|
368
288
|
TuyaSensorEntityDescription(
|
|
@@ -376,158 +296,187 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
376
296
|
translation_key="pm25",
|
|
377
297
|
device_class=SensorDeviceClass.PM25,
|
|
378
298
|
state_class=SensorStateClass.MEASUREMENT,
|
|
299
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
379
300
|
),
|
|
380
301
|
TuyaSensorEntityDescription(
|
|
381
|
-
key=DPCode.
|
|
382
|
-
translation_key="
|
|
383
|
-
device_class=SensorDeviceClass.
|
|
302
|
+
key=DPCode.CO_VALUE,
|
|
303
|
+
translation_key="carbon_monoxide",
|
|
304
|
+
device_class=SensorDeviceClass.CO,
|
|
384
305
|
state_class=SensorStateClass.MEASUREMENT,
|
|
306
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
385
307
|
),
|
|
386
|
-
*BATTERY_SENSORS,
|
|
387
|
-
),
|
|
388
|
-
# Formaldehyde Detector
|
|
389
|
-
# Note: Not documented
|
|
390
|
-
"jqbj": (
|
|
391
308
|
TuyaSensorEntityDescription(
|
|
392
309
|
key=DPCode.CO2_VALUE,
|
|
393
310
|
translation_key="carbon_dioxide",
|
|
394
311
|
device_class=SensorDeviceClass.CO2,
|
|
395
312
|
state_class=SensorStateClass.MEASUREMENT,
|
|
313
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
396
314
|
),
|
|
397
315
|
TuyaSensorEntityDescription(
|
|
398
|
-
key=DPCode.
|
|
399
|
-
translation_key="
|
|
400
|
-
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
|
|
316
|
+
key=DPCode.CH2O_VALUE,
|
|
317
|
+
translation_key="formaldehyde",
|
|
401
318
|
state_class=SensorStateClass.MEASUREMENT,
|
|
402
319
|
),
|
|
403
320
|
TuyaSensorEntityDescription(
|
|
404
|
-
key=DPCode.
|
|
405
|
-
translation_key="
|
|
406
|
-
device_class=SensorDeviceClass.PM25,
|
|
407
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
321
|
+
key=DPCode.BRIGHT_STATE,
|
|
322
|
+
translation_key="luminosity",
|
|
408
323
|
),
|
|
409
324
|
TuyaSensorEntityDescription(
|
|
410
|
-
key=DPCode.
|
|
411
|
-
translation_key="
|
|
412
|
-
device_class=SensorDeviceClass.
|
|
325
|
+
key=DPCode.BRIGHT_VALUE,
|
|
326
|
+
translation_key="illuminance",
|
|
327
|
+
device_class=SensorDeviceClass.ILLUMINANCE,
|
|
413
328
|
state_class=SensorStateClass.MEASUREMENT,
|
|
414
329
|
),
|
|
415
330
|
TuyaSensorEntityDescription(
|
|
416
|
-
key=DPCode.
|
|
331
|
+
key=DPCode.TEMP_CURRENT,
|
|
417
332
|
translation_key="temperature",
|
|
418
333
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
419
334
|
state_class=SensorStateClass.MEASUREMENT,
|
|
420
335
|
),
|
|
421
336
|
TuyaSensorEntityDescription(
|
|
422
|
-
key=DPCode.
|
|
423
|
-
translation_key="
|
|
337
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
338
|
+
translation_key="humidity",
|
|
339
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
424
340
|
state_class=SensorStateClass.MEASUREMENT,
|
|
425
341
|
),
|
|
426
|
-
*BATTERY_SENSORS,
|
|
427
|
-
),
|
|
428
|
-
# Methane Detector
|
|
429
|
-
# https://developer.tuya.com/en/docs/iot/categoryjwbj?id=Kaiuz40u98lkm
|
|
430
|
-
"jwbj": (
|
|
431
342
|
TuyaSensorEntityDescription(
|
|
432
|
-
key=DPCode.
|
|
433
|
-
translation_key="
|
|
343
|
+
key=DPCode.SMOKE_SENSOR_VALUE,
|
|
344
|
+
translation_key="smoke_amount",
|
|
345
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
434
346
|
state_class=SensorStateClass.MEASUREMENT,
|
|
435
347
|
),
|
|
436
348
|
*BATTERY_SENSORS,
|
|
437
349
|
),
|
|
438
|
-
#
|
|
439
|
-
# https://developer.tuya.com/en/docs/iot/
|
|
440
|
-
"
|
|
350
|
+
# Circuit Breaker
|
|
351
|
+
# https://developer.tuya.com/en/docs/iot/dlq?id=Kb0kidk9enyh8
|
|
352
|
+
"dlq": (
|
|
441
353
|
TuyaSensorEntityDescription(
|
|
442
|
-
key=DPCode.
|
|
443
|
-
translation_key="
|
|
444
|
-
device_class=SensorDeviceClass.
|
|
445
|
-
state_class=SensorStateClass.
|
|
446
|
-
entity_registry_enabled_default=False,
|
|
354
|
+
key=DPCode.TOTAL_FORWARD_ENERGY,
|
|
355
|
+
translation_key="total_energy",
|
|
356
|
+
device_class=SensorDeviceClass.ENERGY,
|
|
357
|
+
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
447
358
|
),
|
|
448
359
|
TuyaSensorEntityDescription(
|
|
449
|
-
key=DPCode.
|
|
450
|
-
translation_key="
|
|
451
|
-
device_class=SensorDeviceClass.
|
|
452
|
-
state_class=SensorStateClass.
|
|
453
|
-
entity_registry_enabled_default=False,
|
|
360
|
+
key=DPCode.CUR_NEUTRAL,
|
|
361
|
+
translation_key="total_production",
|
|
362
|
+
device_class=SensorDeviceClass.ENERGY,
|
|
363
|
+
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
454
364
|
),
|
|
455
365
|
TuyaSensorEntityDescription(
|
|
456
|
-
key=DPCode.
|
|
457
|
-
translation_key="
|
|
366
|
+
key=DPCode.PHASE_A,
|
|
367
|
+
translation_key="phase_a_current",
|
|
368
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
369
|
+
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
370
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
371
|
+
subkey="electriccurrent",
|
|
372
|
+
),
|
|
373
|
+
TuyaSensorEntityDescription(
|
|
374
|
+
key=DPCode.PHASE_A,
|
|
375
|
+
translation_key="phase_a_power",
|
|
376
|
+
device_class=SensorDeviceClass.POWER,
|
|
377
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
378
|
+
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
379
|
+
subkey="power",
|
|
380
|
+
),
|
|
381
|
+
TuyaSensorEntityDescription(
|
|
382
|
+
key=DPCode.PHASE_A,
|
|
383
|
+
translation_key="phase_a_voltage",
|
|
458
384
|
device_class=SensorDeviceClass.VOLTAGE,
|
|
459
385
|
state_class=SensorStateClass.MEASUREMENT,
|
|
460
|
-
|
|
386
|
+
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
387
|
+
subkey="voltage",
|
|
461
388
|
),
|
|
462
|
-
),
|
|
463
|
-
# IoT Switch
|
|
464
|
-
# Note: Undocumented
|
|
465
|
-
"tdq": (
|
|
466
389
|
TuyaSensorEntityDescription(
|
|
467
|
-
key=DPCode.
|
|
468
|
-
translation_key="
|
|
390
|
+
key=DPCode.PHASE_B,
|
|
391
|
+
translation_key="phase_b_current",
|
|
469
392
|
device_class=SensorDeviceClass.CURRENT,
|
|
393
|
+
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
470
394
|
state_class=SensorStateClass.MEASUREMENT,
|
|
471
|
-
|
|
395
|
+
subkey="electriccurrent",
|
|
472
396
|
),
|
|
473
397
|
TuyaSensorEntityDescription(
|
|
474
|
-
key=DPCode.
|
|
475
|
-
translation_key="
|
|
398
|
+
key=DPCode.PHASE_B,
|
|
399
|
+
translation_key="phase_b_power",
|
|
476
400
|
device_class=SensorDeviceClass.POWER,
|
|
477
401
|
state_class=SensorStateClass.MEASUREMENT,
|
|
478
|
-
|
|
402
|
+
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
403
|
+
subkey="power",
|
|
479
404
|
),
|
|
480
405
|
TuyaSensorEntityDescription(
|
|
481
|
-
key=DPCode.
|
|
482
|
-
translation_key="
|
|
406
|
+
key=DPCode.PHASE_B,
|
|
407
|
+
translation_key="phase_b_voltage",
|
|
483
408
|
device_class=SensorDeviceClass.VOLTAGE,
|
|
484
409
|
state_class=SensorStateClass.MEASUREMENT,
|
|
485
|
-
|
|
410
|
+
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
411
|
+
subkey="voltage",
|
|
486
412
|
),
|
|
487
413
|
TuyaSensorEntityDescription(
|
|
488
|
-
key=DPCode.
|
|
489
|
-
translation_key="
|
|
490
|
-
device_class=SensorDeviceClass.
|
|
414
|
+
key=DPCode.PHASE_C,
|
|
415
|
+
translation_key="phase_c_current",
|
|
416
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
417
|
+
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
418
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
419
|
+
subkey="electriccurrent",
|
|
420
|
+
),
|
|
421
|
+
TuyaSensorEntityDescription(
|
|
422
|
+
key=DPCode.PHASE_C,
|
|
423
|
+
translation_key="phase_c_power",
|
|
424
|
+
device_class=SensorDeviceClass.POWER,
|
|
491
425
|
state_class=SensorStateClass.MEASUREMENT,
|
|
426
|
+
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
427
|
+
subkey="power",
|
|
492
428
|
),
|
|
493
429
|
TuyaSensorEntityDescription(
|
|
494
|
-
key=DPCode.
|
|
495
|
-
translation_key="
|
|
496
|
-
device_class=SensorDeviceClass.
|
|
430
|
+
key=DPCode.PHASE_C,
|
|
431
|
+
translation_key="phase_c_voltage",
|
|
432
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
497
433
|
state_class=SensorStateClass.MEASUREMENT,
|
|
434
|
+
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
435
|
+
subkey="voltage",
|
|
498
436
|
),
|
|
499
437
|
TuyaSensorEntityDescription(
|
|
500
|
-
key=DPCode.
|
|
501
|
-
translation_key="
|
|
502
|
-
device_class=SensorDeviceClass.
|
|
438
|
+
key=DPCode.CUR_CURRENT,
|
|
439
|
+
translation_key="current",
|
|
440
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
503
441
|
state_class=SensorStateClass.MEASUREMENT,
|
|
442
|
+
suggested_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
443
|
+
entity_registry_enabled_default=False,
|
|
504
444
|
),
|
|
505
445
|
TuyaSensorEntityDescription(
|
|
506
|
-
key=DPCode.
|
|
507
|
-
translation_key="
|
|
508
|
-
device_class=SensorDeviceClass.
|
|
446
|
+
key=DPCode.CUR_POWER,
|
|
447
|
+
translation_key="power",
|
|
448
|
+
device_class=SensorDeviceClass.POWER,
|
|
509
449
|
state_class=SensorStateClass.MEASUREMENT,
|
|
450
|
+
entity_registry_enabled_default=False,
|
|
510
451
|
),
|
|
511
452
|
TuyaSensorEntityDescription(
|
|
512
|
-
key=DPCode.
|
|
513
|
-
translation_key="
|
|
514
|
-
device_class=SensorDeviceClass.
|
|
453
|
+
key=DPCode.CUR_VOLTAGE,
|
|
454
|
+
translation_key="voltage",
|
|
455
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
515
456
|
state_class=SensorStateClass.MEASUREMENT,
|
|
457
|
+
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
458
|
+
entity_registry_enabled_default=False,
|
|
516
459
|
),
|
|
517
|
-
*BATTERY_SENSORS,
|
|
518
460
|
),
|
|
519
|
-
#
|
|
520
|
-
# https://developer.tuya.com/en/docs/iot/
|
|
521
|
-
"
|
|
461
|
+
# Fan
|
|
462
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48quojr54
|
|
463
|
+
"fs": (
|
|
522
464
|
TuyaSensorEntityDescription(
|
|
523
|
-
key=DPCode.
|
|
524
|
-
translation_key="
|
|
465
|
+
key=DPCode.TEMP_CURRENT,
|
|
466
|
+
translation_key="temperature",
|
|
467
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
468
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
525
469
|
),
|
|
470
|
+
),
|
|
471
|
+
# Irrigator
|
|
472
|
+
# https://developer.tuya.com/en/docs/iot/categoryggq?id=Kaiuz1qib7z0k
|
|
473
|
+
"ggq": BATTERY_SENSORS,
|
|
474
|
+
# Air Quality Monitor
|
|
475
|
+
# https://developer.tuya.com/en/docs/iot/hjjcy?id=Kbeoad8y1nnlv
|
|
476
|
+
"hjjcy": (
|
|
526
477
|
TuyaSensorEntityDescription(
|
|
527
|
-
key=DPCode.
|
|
528
|
-
translation_key="
|
|
529
|
-
device_class=SensorDeviceClass.ILLUMINANCE,
|
|
530
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
478
|
+
key=DPCode.AIR_QUALITY_INDEX,
|
|
479
|
+
translation_key="air_quality_index",
|
|
531
480
|
),
|
|
532
481
|
TuyaSensorEntityDescription(
|
|
533
482
|
key=DPCode.TEMP_CURRENT,
|
|
@@ -546,45 +495,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
546
495
|
translation_key="carbon_dioxide",
|
|
547
496
|
device_class=SensorDeviceClass.CO2,
|
|
548
497
|
state_class=SensorStateClass.MEASUREMENT,
|
|
549
|
-
|
|
550
|
-
*BATTERY_SENSORS,
|
|
551
|
-
),
|
|
552
|
-
# Door and Window Controller
|
|
553
|
-
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r5zjsy9
|
|
554
|
-
"mc": BATTERY_SENSORS,
|
|
555
|
-
# Door Window Sensor
|
|
556
|
-
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48hm02l8m
|
|
557
|
-
"mcs": BATTERY_SENSORS,
|
|
558
|
-
# Sous Vide Cooker
|
|
559
|
-
# https://developer.tuya.com/en/docs/iot/categorymzj?id=Kaiuz2vy130ux
|
|
560
|
-
"mzj": (
|
|
561
|
-
TuyaSensorEntityDescription(
|
|
562
|
-
key=DPCode.TEMP_CURRENT,
|
|
563
|
-
translation_key="current_temperature",
|
|
564
|
-
device_class=SensorDeviceClass.TEMPERATURE,
|
|
565
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
566
|
-
),
|
|
567
|
-
TuyaSensorEntityDescription(
|
|
568
|
-
key=DPCode.STATUS,
|
|
569
|
-
translation_key="sous_vide_status",
|
|
570
|
-
),
|
|
571
|
-
TuyaSensorEntityDescription(
|
|
572
|
-
key=DPCode.REMAIN_TIME,
|
|
573
|
-
translation_key="remaining_time",
|
|
574
|
-
native_unit_of_measurement=UnitOfTime.MINUTES,
|
|
575
|
-
),
|
|
576
|
-
),
|
|
577
|
-
# PIR Detector
|
|
578
|
-
# https://developer.tuya.com/en/docs/iot/categorypir?id=Kaiuz3ss11b80
|
|
579
|
-
"pir": BATTERY_SENSORS,
|
|
580
|
-
# PM2.5 Sensor
|
|
581
|
-
# https://developer.tuya.com/en/docs/iot/categorypm25?id=Kaiuz3qof3yfu
|
|
582
|
-
"pm2.5": (
|
|
583
|
-
TuyaSensorEntityDescription(
|
|
584
|
-
key=DPCode.PM25_VALUE,
|
|
585
|
-
translation_key="pm25",
|
|
586
|
-
device_class=SensorDeviceClass.PM25,
|
|
587
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
498
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
588
499
|
),
|
|
589
500
|
TuyaSensorEntityDescription(
|
|
590
501
|
key=DPCode.CH2O_VALUE,
|
|
@@ -598,119 +509,54 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
598
509
|
state_class=SensorStateClass.MEASUREMENT,
|
|
599
510
|
),
|
|
600
511
|
TuyaSensorEntityDescription(
|
|
601
|
-
key=DPCode.
|
|
602
|
-
translation_key="
|
|
603
|
-
device_class=SensorDeviceClass.
|
|
604
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
605
|
-
),
|
|
606
|
-
TuyaSensorEntityDescription(
|
|
607
|
-
key=DPCode.CO2_VALUE,
|
|
608
|
-
translation_key="carbon_dioxide",
|
|
609
|
-
device_class=SensorDeviceClass.CO2,
|
|
610
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
611
|
-
),
|
|
612
|
-
TuyaSensorEntityDescription(
|
|
613
|
-
key=DPCode.HUMIDITY_VALUE,
|
|
614
|
-
translation_key="humidity",
|
|
615
|
-
device_class=SensorDeviceClass.HUMIDITY,
|
|
616
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
617
|
-
),
|
|
618
|
-
TuyaSensorEntityDescription(
|
|
619
|
-
key=DPCode.PM1,
|
|
620
|
-
translation_key="pm1",
|
|
621
|
-
device_class=SensorDeviceClass.PM1,
|
|
512
|
+
key=DPCode.PM25_VALUE,
|
|
513
|
+
translation_key="pm25",
|
|
514
|
+
device_class=SensorDeviceClass.PM25,
|
|
622
515
|
state_class=SensorStateClass.MEASUREMENT,
|
|
516
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
623
517
|
),
|
|
624
518
|
TuyaSensorEntityDescription(
|
|
625
519
|
key=DPCode.PM10,
|
|
626
520
|
translation_key="pm10",
|
|
627
521
|
device_class=SensorDeviceClass.PM10,
|
|
628
522
|
state_class=SensorStateClass.MEASUREMENT,
|
|
523
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
629
524
|
),
|
|
630
525
|
*BATTERY_SENSORS,
|
|
631
526
|
),
|
|
632
|
-
#
|
|
633
|
-
#
|
|
634
|
-
"
|
|
527
|
+
# Formaldehyde Detector
|
|
528
|
+
# Note: Not documented
|
|
529
|
+
"jqbj": (
|
|
635
530
|
TuyaSensorEntityDescription(
|
|
636
|
-
key=DPCode.
|
|
637
|
-
translation_key="
|
|
638
|
-
device_class=SensorDeviceClass.
|
|
531
|
+
key=DPCode.CO2_VALUE,
|
|
532
|
+
translation_key="carbon_dioxide",
|
|
533
|
+
device_class=SensorDeviceClass.CO2,
|
|
639
534
|
state_class=SensorStateClass.MEASUREMENT,
|
|
535
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
640
536
|
),
|
|
641
|
-
),
|
|
642
|
-
# Gas Detector
|
|
643
|
-
# https://developer.tuya.com/en/docs/iot/categoryrqbj?id=Kaiuz3d162ubw
|
|
644
|
-
"rqbj": (
|
|
645
537
|
TuyaSensorEntityDescription(
|
|
646
|
-
key=DPCode.
|
|
647
|
-
|
|
648
|
-
|
|
538
|
+
key=DPCode.VOC_VALUE,
|
|
539
|
+
translation_key="voc",
|
|
540
|
+
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
|
|
649
541
|
state_class=SensorStateClass.MEASUREMENT,
|
|
650
542
|
),
|
|
651
|
-
*BATTERY_SENSORS,
|
|
652
|
-
),
|
|
653
|
-
# Smart Water Timer
|
|
654
|
-
"sfkzq": (
|
|
655
|
-
# Total seconds of irrigation. Read-write value; the device appears to ignore the write action (maybe firmware bug)
|
|
656
543
|
TuyaSensorEntityDescription(
|
|
657
|
-
key=DPCode.
|
|
658
|
-
translation_key="
|
|
659
|
-
|
|
660
|
-
entity_category=EntityCategory.DIAGNOSTIC,
|
|
661
|
-
),
|
|
662
|
-
*BATTERY_SENSORS,
|
|
663
|
-
),
|
|
664
|
-
# Irrigator
|
|
665
|
-
# https://developer.tuya.com/en/docs/iot/categoryggq?id=Kaiuz1qib7z0k
|
|
666
|
-
"ggq": BATTERY_SENSORS,
|
|
667
|
-
# Water Detector
|
|
668
|
-
# https://developer.tuya.com/en/docs/iot/categorysj?id=Kaiuz3iub2sli
|
|
669
|
-
"sj": BATTERY_SENSORS,
|
|
670
|
-
# Emergency Button
|
|
671
|
-
# https://developer.tuya.com/en/docs/iot/categorysos?id=Kaiuz3oi6agjy
|
|
672
|
-
"sos": BATTERY_SENSORS,
|
|
673
|
-
# Smart Camera
|
|
674
|
-
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
|
|
675
|
-
"sp": (
|
|
676
|
-
TuyaSensorEntityDescription(
|
|
677
|
-
key=DPCode.SENSOR_TEMPERATURE,
|
|
678
|
-
translation_key="temperature",
|
|
679
|
-
device_class=SensorDeviceClass.TEMPERATURE,
|
|
544
|
+
key=DPCode.PM25_VALUE,
|
|
545
|
+
translation_key="pm25",
|
|
546
|
+
device_class=SensorDeviceClass.PM25,
|
|
680
547
|
state_class=SensorStateClass.MEASUREMENT,
|
|
548
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
681
549
|
),
|
|
682
550
|
TuyaSensorEntityDescription(
|
|
683
|
-
key=DPCode.
|
|
551
|
+
key=DPCode.VA_HUMIDITY,
|
|
684
552
|
translation_key="humidity",
|
|
685
553
|
device_class=SensorDeviceClass.HUMIDITY,
|
|
686
554
|
state_class=SensorStateClass.MEASUREMENT,
|
|
687
555
|
),
|
|
688
556
|
TuyaSensorEntityDescription(
|
|
689
|
-
key=DPCode.
|
|
690
|
-
translation_key="
|
|
691
|
-
device_class=SensorDeviceClass.
|
|
692
|
-
entity_category=EntityCategory.DIAGNOSTIC,
|
|
693
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
694
|
-
),
|
|
695
|
-
),
|
|
696
|
-
# Fingerbot
|
|
697
|
-
"szjqr": BATTERY_SENSORS,
|
|
698
|
-
# Solar Light
|
|
699
|
-
# https://developer.tuya.com/en/docs/iot/tynd?id=Kaof8j02e1t98
|
|
700
|
-
"tyndj": BATTERY_SENSORS,
|
|
701
|
-
# Volatile Organic Compound Sensor
|
|
702
|
-
# Note: Undocumented in cloud API docs, based on test device
|
|
703
|
-
"voc": (
|
|
704
|
-
TuyaSensorEntityDescription(
|
|
705
|
-
key=DPCode.CO2_VALUE,
|
|
706
|
-
translation_key="carbon_dioxide",
|
|
707
|
-
device_class=SensorDeviceClass.CO2,
|
|
708
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
709
|
-
),
|
|
710
|
-
TuyaSensorEntityDescription(
|
|
711
|
-
key=DPCode.PM25_VALUE,
|
|
712
|
-
translation_key="pm25",
|
|
713
|
-
device_class=SensorDeviceClass.PM25,
|
|
557
|
+
key=DPCode.VA_TEMPERATURE,
|
|
558
|
+
translation_key="temperature",
|
|
559
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
714
560
|
state_class=SensorStateClass.MEASUREMENT,
|
|
715
561
|
),
|
|
716
562
|
TuyaSensorEntityDescription(
|
|
@@ -718,8 +564,13 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
718
564
|
translation_key="formaldehyde",
|
|
719
565
|
state_class=SensorStateClass.MEASUREMENT,
|
|
720
566
|
),
|
|
567
|
+
*BATTERY_SENSORS,
|
|
568
|
+
),
|
|
569
|
+
# Humidifier
|
|
570
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48qwjz0i3
|
|
571
|
+
"jsq": (
|
|
721
572
|
TuyaSensorEntityDescription(
|
|
722
|
-
key=DPCode.
|
|
573
|
+
key=DPCode.HUMIDITY_CURRENT,
|
|
723
574
|
translation_key="humidity",
|
|
724
575
|
device_class=SensorDeviceClass.HUMIDITY,
|
|
725
576
|
state_class=SensorStateClass.MEASUREMENT,
|
|
@@ -731,320 +582,290 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
731
582
|
state_class=SensorStateClass.MEASUREMENT,
|
|
732
583
|
),
|
|
733
584
|
TuyaSensorEntityDescription(
|
|
734
|
-
key=DPCode.
|
|
735
|
-
translation_key="voc",
|
|
736
|
-
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
|
|
737
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
738
|
-
),
|
|
739
|
-
*BATTERY_SENSORS,
|
|
740
|
-
),
|
|
741
|
-
# Thermostatic Radiator Valve
|
|
742
|
-
# Not documented
|
|
743
|
-
"wkf": BATTERY_SENSORS,
|
|
744
|
-
# Temperature and Humidity Sensor
|
|
745
|
-
# https://developer.tuya.com/en/docs/iot/categorywsdcg?id=Kaiuz3hinij34
|
|
746
|
-
"wsdcg": (
|
|
747
|
-
TuyaSensorEntityDescription(
|
|
748
|
-
key=DPCode.VA_TEMPERATURE,
|
|
585
|
+
key=DPCode.TEMP_CURRENT_F,
|
|
749
586
|
translation_key="temperature",
|
|
750
587
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
751
588
|
state_class=SensorStateClass.MEASUREMENT,
|
|
752
589
|
),
|
|
753
590
|
TuyaSensorEntityDescription(
|
|
754
|
-
key=DPCode.
|
|
755
|
-
translation_key="
|
|
756
|
-
|
|
757
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
591
|
+
key=DPCode.LEVEL_CURRENT,
|
|
592
|
+
translation_key="water_level",
|
|
593
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
758
594
|
),
|
|
595
|
+
),
|
|
596
|
+
# Methane Detector
|
|
597
|
+
# https://developer.tuya.com/en/docs/iot/categoryjwbj?id=Kaiuz40u98lkm
|
|
598
|
+
"jwbj": (
|
|
759
599
|
TuyaSensorEntityDescription(
|
|
760
|
-
key=DPCode.
|
|
761
|
-
translation_key="
|
|
762
|
-
device_class=SensorDeviceClass.HUMIDITY,
|
|
600
|
+
key=DPCode.CH4_SENSOR_VALUE,
|
|
601
|
+
translation_key="methane",
|
|
763
602
|
state_class=SensorStateClass.MEASUREMENT,
|
|
764
603
|
),
|
|
604
|
+
*BATTERY_SENSORS,
|
|
605
|
+
),
|
|
606
|
+
# Switch
|
|
607
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
|
|
608
|
+
"kg": (
|
|
765
609
|
TuyaSensorEntityDescription(
|
|
766
|
-
key=DPCode.
|
|
767
|
-
translation_key="
|
|
768
|
-
device_class=SensorDeviceClass.
|
|
610
|
+
key=DPCode.CUR_CURRENT,
|
|
611
|
+
translation_key="current",
|
|
612
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
769
613
|
state_class=SensorStateClass.MEASUREMENT,
|
|
614
|
+
suggested_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
615
|
+
entity_registry_enabled_default=False,
|
|
770
616
|
),
|
|
771
617
|
TuyaSensorEntityDescription(
|
|
772
|
-
key=DPCode.
|
|
773
|
-
translation_key="
|
|
774
|
-
device_class=SensorDeviceClass.
|
|
618
|
+
key=DPCode.CUR_POWER,
|
|
619
|
+
translation_key="power",
|
|
620
|
+
device_class=SensorDeviceClass.POWER,
|
|
775
621
|
state_class=SensorStateClass.MEASUREMENT,
|
|
622
|
+
entity_registry_enabled_default=False,
|
|
776
623
|
),
|
|
777
|
-
*BATTERY_SENSORS,
|
|
778
|
-
),
|
|
779
|
-
# Temperature and Humidity Sensor with External Probe
|
|
780
|
-
# New undocumented category qxj, see https://github.com/home-assistant/core/issues/136472
|
|
781
|
-
"qxj": (
|
|
782
624
|
TuyaSensorEntityDescription(
|
|
783
|
-
key=DPCode.
|
|
784
|
-
translation_key="
|
|
785
|
-
device_class=SensorDeviceClass.
|
|
625
|
+
key=DPCode.CUR_VOLTAGE,
|
|
626
|
+
translation_key="voltage",
|
|
627
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
786
628
|
state_class=SensorStateClass.MEASUREMENT,
|
|
629
|
+
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
630
|
+
entity_registry_enabled_default=False,
|
|
787
631
|
),
|
|
632
|
+
),
|
|
633
|
+
# Air Purifier
|
|
634
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r41mn81
|
|
635
|
+
"kj": (
|
|
788
636
|
TuyaSensorEntityDescription(
|
|
789
|
-
key=DPCode.
|
|
790
|
-
translation_key="
|
|
791
|
-
|
|
792
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
637
|
+
key=DPCode.FILTER,
|
|
638
|
+
translation_key="filter_utilization",
|
|
639
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
793
640
|
),
|
|
794
641
|
TuyaSensorEntityDescription(
|
|
795
|
-
key=DPCode.
|
|
796
|
-
translation_key="
|
|
797
|
-
device_class=SensorDeviceClass.
|
|
642
|
+
key=DPCode.PM25,
|
|
643
|
+
translation_key="pm25",
|
|
644
|
+
device_class=SensorDeviceClass.PM25,
|
|
798
645
|
state_class=SensorStateClass.MEASUREMENT,
|
|
646
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
799
647
|
),
|
|
800
648
|
TuyaSensorEntityDescription(
|
|
801
|
-
key=DPCode.
|
|
802
|
-
translation_key="
|
|
803
|
-
device_class=SensorDeviceClass.
|
|
649
|
+
key=DPCode.TEMP,
|
|
650
|
+
translation_key="temperature",
|
|
651
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
804
652
|
state_class=SensorStateClass.MEASUREMENT,
|
|
805
653
|
),
|
|
806
654
|
TuyaSensorEntityDescription(
|
|
807
|
-
key=DPCode.
|
|
655
|
+
key=DPCode.HUMIDITY,
|
|
808
656
|
translation_key="humidity",
|
|
809
657
|
device_class=SensorDeviceClass.HUMIDITY,
|
|
810
658
|
state_class=SensorStateClass.MEASUREMENT,
|
|
811
659
|
),
|
|
812
660
|
TuyaSensorEntityDescription(
|
|
813
|
-
key=DPCode.
|
|
814
|
-
translation_key="
|
|
815
|
-
device_class=SensorDeviceClass.
|
|
661
|
+
key=DPCode.TVOC,
|
|
662
|
+
translation_key="total_volatile_organic_compound",
|
|
663
|
+
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
|
|
816
664
|
state_class=SensorStateClass.MEASUREMENT,
|
|
817
665
|
),
|
|
818
|
-
*BATTERY_SENSORS,
|
|
819
|
-
),
|
|
820
|
-
# Pressure Sensor
|
|
821
|
-
# https://developer.tuya.com/en/docs/iot/categoryylcg?id=Kaiuz3kc2e4gm
|
|
822
|
-
"ylcg": (
|
|
823
666
|
TuyaSensorEntityDescription(
|
|
824
|
-
key=DPCode.
|
|
825
|
-
|
|
826
|
-
device_class=SensorDeviceClass.
|
|
667
|
+
key=DPCode.ECO2,
|
|
668
|
+
translation_key="concentration_carbon_dioxide",
|
|
669
|
+
device_class=SensorDeviceClass.CO2,
|
|
827
670
|
state_class=SensorStateClass.MEASUREMENT,
|
|
671
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
828
672
|
),
|
|
829
|
-
*BATTERY_SENSORS,
|
|
830
|
-
),
|
|
831
|
-
# Smoke Detector
|
|
832
|
-
# https://developer.tuya.com/en/docs/iot/categoryywbj?id=Kaiuz3f6sf952
|
|
833
|
-
"ywbj": (
|
|
834
673
|
TuyaSensorEntityDescription(
|
|
835
|
-
key=DPCode.
|
|
836
|
-
translation_key="
|
|
674
|
+
key=DPCode.TOTAL_TIME,
|
|
675
|
+
translation_key="total_operating_time",
|
|
676
|
+
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
837
677
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
838
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
839
678
|
),
|
|
840
|
-
*BATTERY_SENSORS,
|
|
841
|
-
),
|
|
842
|
-
# Vibration Sensor
|
|
843
|
-
# https://developer.tuya.com/en/docs/iot/categoryzd?id=Kaiuz3a5vrzno
|
|
844
|
-
"zd": BATTERY_SENSORS,
|
|
845
|
-
# Smart Electricity Meter
|
|
846
|
-
# https://developer.tuya.com/en/docs/iot/smart-meter?id=Kaiuz4gv6ack7
|
|
847
|
-
"zndb": (
|
|
848
679
|
TuyaSensorEntityDescription(
|
|
849
|
-
key=DPCode.
|
|
850
|
-
translation_key="
|
|
851
|
-
device_class=SensorDeviceClass.ENERGY,
|
|
680
|
+
key=DPCode.TOTAL_PM,
|
|
681
|
+
translation_key="total_absorption_particles",
|
|
852
682
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
683
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
853
684
|
),
|
|
854
685
|
TuyaSensorEntityDescription(
|
|
855
|
-
key=DPCode.
|
|
856
|
-
translation_key="
|
|
857
|
-
device_class=SensorDeviceClass.ENERGY,
|
|
858
|
-
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
686
|
+
key=DPCode.AIR_QUALITY,
|
|
687
|
+
translation_key="air_quality",
|
|
859
688
|
),
|
|
689
|
+
),
|
|
690
|
+
# Luminance Sensor
|
|
691
|
+
# https://developer.tuya.com/en/docs/iot/categoryldcg?id=Kaiuz3n7u69l8
|
|
692
|
+
"ldcg": (
|
|
860
693
|
TuyaSensorEntityDescription(
|
|
861
|
-
key=DPCode.
|
|
862
|
-
translation_key="
|
|
863
|
-
device_class=SensorDeviceClass.POWER,
|
|
864
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
865
|
-
subkey="power",
|
|
694
|
+
key=DPCode.BRIGHT_STATE,
|
|
695
|
+
translation_key="luminosity",
|
|
866
696
|
),
|
|
867
697
|
TuyaSensorEntityDescription(
|
|
868
|
-
key=DPCode.
|
|
869
|
-
translation_key="
|
|
870
|
-
device_class=SensorDeviceClass.
|
|
871
|
-
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
698
|
+
key=DPCode.BRIGHT_VALUE,
|
|
699
|
+
translation_key="illuminance",
|
|
700
|
+
device_class=SensorDeviceClass.ILLUMINANCE,
|
|
872
701
|
state_class=SensorStateClass.MEASUREMENT,
|
|
873
|
-
subkey="electriccurrent",
|
|
874
702
|
),
|
|
875
703
|
TuyaSensorEntityDescription(
|
|
876
|
-
key=DPCode.
|
|
877
|
-
translation_key="
|
|
878
|
-
device_class=SensorDeviceClass.
|
|
704
|
+
key=DPCode.TEMP_CURRENT,
|
|
705
|
+
translation_key="temperature",
|
|
706
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
879
707
|
state_class=SensorStateClass.MEASUREMENT,
|
|
880
|
-
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
881
|
-
subkey="power",
|
|
882
708
|
),
|
|
883
709
|
TuyaSensorEntityDescription(
|
|
884
|
-
key=DPCode.
|
|
885
|
-
translation_key="
|
|
886
|
-
device_class=SensorDeviceClass.
|
|
710
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
711
|
+
translation_key="humidity",
|
|
712
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
887
713
|
state_class=SensorStateClass.MEASUREMENT,
|
|
888
|
-
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
889
|
-
subkey="voltage",
|
|
890
714
|
),
|
|
891
715
|
TuyaSensorEntityDescription(
|
|
892
|
-
key=DPCode.
|
|
893
|
-
translation_key="
|
|
894
|
-
device_class=SensorDeviceClass.
|
|
895
|
-
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
716
|
+
key=DPCode.CO2_VALUE,
|
|
717
|
+
translation_key="carbon_dioxide",
|
|
718
|
+
device_class=SensorDeviceClass.CO2,
|
|
896
719
|
state_class=SensorStateClass.MEASUREMENT,
|
|
897
|
-
|
|
720
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
898
721
|
),
|
|
722
|
+
*BATTERY_SENSORS,
|
|
723
|
+
),
|
|
724
|
+
# Door and Window Controller
|
|
725
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48r5zjsy9
|
|
726
|
+
"mc": BATTERY_SENSORS,
|
|
727
|
+
# Door Window Sensor
|
|
728
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48hm02l8m
|
|
729
|
+
"mcs": BATTERY_SENSORS,
|
|
730
|
+
# Sous Vide Cooker
|
|
731
|
+
# https://developer.tuya.com/en/docs/iot/categorymzj?id=Kaiuz2vy130ux
|
|
732
|
+
"mzj": (
|
|
899
733
|
TuyaSensorEntityDescription(
|
|
900
|
-
key=DPCode.
|
|
901
|
-
translation_key="
|
|
902
|
-
device_class=SensorDeviceClass.
|
|
734
|
+
key=DPCode.TEMP_CURRENT,
|
|
735
|
+
translation_key="current_temperature",
|
|
736
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
903
737
|
state_class=SensorStateClass.MEASUREMENT,
|
|
904
|
-
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
905
|
-
subkey="power",
|
|
906
738
|
),
|
|
907
739
|
TuyaSensorEntityDescription(
|
|
908
|
-
key=DPCode.
|
|
909
|
-
translation_key="
|
|
910
|
-
device_class=SensorDeviceClass.VOLTAGE,
|
|
911
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
912
|
-
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
913
|
-
subkey="voltage",
|
|
740
|
+
key=DPCode.STATUS,
|
|
741
|
+
translation_key="sous_vide_status",
|
|
914
742
|
),
|
|
915
743
|
TuyaSensorEntityDescription(
|
|
916
|
-
key=DPCode.
|
|
917
|
-
translation_key="
|
|
918
|
-
|
|
919
|
-
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
920
|
-
state_class=SensorStateClass.MEASUREMENT,
|
|
921
|
-
subkey="electriccurrent",
|
|
744
|
+
key=DPCode.REMAIN_TIME,
|
|
745
|
+
translation_key="remaining_time",
|
|
746
|
+
native_unit_of_measurement=UnitOfTime.MINUTES,
|
|
922
747
|
),
|
|
748
|
+
),
|
|
749
|
+
# PIR Detector
|
|
750
|
+
# https://developer.tuya.com/en/docs/iot/categorypir?id=Kaiuz3ss11b80
|
|
751
|
+
"pir": BATTERY_SENSORS,
|
|
752
|
+
# PM2.5 Sensor
|
|
753
|
+
# https://developer.tuya.com/en/docs/iot/categorypm25?id=Kaiuz3qof3yfu
|
|
754
|
+
"pm2.5": (
|
|
923
755
|
TuyaSensorEntityDescription(
|
|
924
|
-
key=DPCode.
|
|
925
|
-
translation_key="
|
|
926
|
-
device_class=SensorDeviceClass.
|
|
756
|
+
key=DPCode.PM25_VALUE,
|
|
757
|
+
translation_key="pm25",
|
|
758
|
+
device_class=SensorDeviceClass.PM25,
|
|
927
759
|
state_class=SensorStateClass.MEASUREMENT,
|
|
928
|
-
|
|
929
|
-
subkey="power",
|
|
760
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
930
761
|
),
|
|
931
762
|
TuyaSensorEntityDescription(
|
|
932
|
-
key=DPCode.
|
|
933
|
-
translation_key="
|
|
934
|
-
device_class=SensorDeviceClass.VOLTAGE,
|
|
763
|
+
key=DPCode.CH2O_VALUE,
|
|
764
|
+
translation_key="formaldehyde",
|
|
935
765
|
state_class=SensorStateClass.MEASUREMENT,
|
|
936
|
-
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
937
|
-
subkey="voltage",
|
|
938
766
|
),
|
|
939
|
-
),
|
|
940
|
-
# Circuit Breaker
|
|
941
|
-
# https://developer.tuya.com/en/docs/iot/dlq?id=Kb0kidk9enyh8
|
|
942
|
-
"dlq": (
|
|
943
767
|
TuyaSensorEntityDescription(
|
|
944
|
-
key=DPCode.
|
|
945
|
-
translation_key="
|
|
946
|
-
device_class=SensorDeviceClass.
|
|
947
|
-
state_class=SensorStateClass.
|
|
768
|
+
key=DPCode.VOC_VALUE,
|
|
769
|
+
translation_key="voc",
|
|
770
|
+
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
|
|
771
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
948
772
|
),
|
|
949
773
|
TuyaSensorEntityDescription(
|
|
950
|
-
key=DPCode.
|
|
951
|
-
translation_key="
|
|
952
|
-
device_class=SensorDeviceClass.
|
|
953
|
-
state_class=SensorStateClass.
|
|
774
|
+
key=DPCode.TEMP_CURRENT,
|
|
775
|
+
translation_key="temperature",
|
|
776
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
777
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
954
778
|
),
|
|
955
779
|
TuyaSensorEntityDescription(
|
|
956
|
-
key=DPCode.
|
|
957
|
-
translation_key="
|
|
958
|
-
device_class=SensorDeviceClass.
|
|
959
|
-
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
780
|
+
key=DPCode.CO2_VALUE,
|
|
781
|
+
translation_key="carbon_dioxide",
|
|
782
|
+
device_class=SensorDeviceClass.CO2,
|
|
960
783
|
state_class=SensorStateClass.MEASUREMENT,
|
|
961
|
-
|
|
784
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
962
785
|
),
|
|
963
786
|
TuyaSensorEntityDescription(
|
|
964
|
-
key=DPCode.
|
|
965
|
-
translation_key="
|
|
966
|
-
device_class=SensorDeviceClass.
|
|
787
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
788
|
+
translation_key="humidity",
|
|
789
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
967
790
|
state_class=SensorStateClass.MEASUREMENT,
|
|
968
|
-
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
969
|
-
subkey="power",
|
|
970
791
|
),
|
|
971
792
|
TuyaSensorEntityDescription(
|
|
972
|
-
key=DPCode.
|
|
973
|
-
translation_key="
|
|
974
|
-
device_class=SensorDeviceClass.
|
|
793
|
+
key=DPCode.PM1,
|
|
794
|
+
translation_key="pm1",
|
|
795
|
+
device_class=SensorDeviceClass.PM1,
|
|
975
796
|
state_class=SensorStateClass.MEASUREMENT,
|
|
976
|
-
|
|
977
|
-
subkey="voltage",
|
|
797
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
978
798
|
),
|
|
979
799
|
TuyaSensorEntityDescription(
|
|
980
|
-
key=DPCode.
|
|
981
|
-
translation_key="
|
|
982
|
-
device_class=SensorDeviceClass.
|
|
983
|
-
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
800
|
+
key=DPCode.PM10,
|
|
801
|
+
translation_key="pm10",
|
|
802
|
+
device_class=SensorDeviceClass.PM10,
|
|
984
803
|
state_class=SensorStateClass.MEASUREMENT,
|
|
985
|
-
|
|
804
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
986
805
|
),
|
|
806
|
+
*BATTERY_SENSORS,
|
|
807
|
+
),
|
|
808
|
+
# Heater
|
|
809
|
+
# https://developer.tuya.com/en/docs/iot/categoryqn?id=Kaiuz18kih0sm
|
|
810
|
+
"qn": (
|
|
987
811
|
TuyaSensorEntityDescription(
|
|
988
|
-
key=DPCode.
|
|
989
|
-
translation_key="
|
|
812
|
+
key=DPCode.WORK_POWER,
|
|
813
|
+
translation_key="power",
|
|
990
814
|
device_class=SensorDeviceClass.POWER,
|
|
991
815
|
state_class=SensorStateClass.MEASUREMENT,
|
|
992
|
-
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
993
|
-
subkey="power",
|
|
994
816
|
),
|
|
817
|
+
),
|
|
818
|
+
# Temperature and Humidity Sensor with External Probe
|
|
819
|
+
# New undocumented category qxj, see https://github.com/home-assistant/core/issues/136472
|
|
820
|
+
"qxj": (
|
|
995
821
|
TuyaSensorEntityDescription(
|
|
996
|
-
key=DPCode.
|
|
997
|
-
translation_key="
|
|
998
|
-
device_class=SensorDeviceClass.
|
|
822
|
+
key=DPCode.VA_TEMPERATURE,
|
|
823
|
+
translation_key="temperature",
|
|
824
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
999
825
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1000
|
-
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1001
|
-
subkey="voltage",
|
|
1002
826
|
),
|
|
1003
827
|
TuyaSensorEntityDescription(
|
|
1004
|
-
key=DPCode.
|
|
1005
|
-
translation_key="
|
|
1006
|
-
device_class=SensorDeviceClass.
|
|
1007
|
-
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
828
|
+
key=DPCode.TEMP_CURRENT,
|
|
829
|
+
translation_key="temperature",
|
|
830
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1008
831
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1009
|
-
subkey="electriccurrent",
|
|
1010
832
|
),
|
|
1011
833
|
TuyaSensorEntityDescription(
|
|
1012
|
-
key=DPCode.
|
|
1013
|
-
translation_key="
|
|
1014
|
-
device_class=SensorDeviceClass.
|
|
834
|
+
key=DPCode.TEMP_CURRENT_EXTERNAL,
|
|
835
|
+
translation_key="temperature_external",
|
|
836
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1015
837
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1016
|
-
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
1017
|
-
subkey="power",
|
|
1018
838
|
),
|
|
1019
839
|
TuyaSensorEntityDescription(
|
|
1020
|
-
key=DPCode.
|
|
1021
|
-
translation_key="
|
|
1022
|
-
device_class=SensorDeviceClass.
|
|
840
|
+
key=DPCode.VA_HUMIDITY,
|
|
841
|
+
translation_key="humidity",
|
|
842
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
1023
843
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1024
|
-
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1025
|
-
subkey="voltage",
|
|
1026
844
|
),
|
|
1027
845
|
TuyaSensorEntityDescription(
|
|
1028
|
-
key=DPCode.
|
|
1029
|
-
translation_key="
|
|
1030
|
-
device_class=SensorDeviceClass.
|
|
846
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
847
|
+
translation_key="humidity",
|
|
848
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
1031
849
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1032
|
-
entity_registry_enabled_default=False,
|
|
1033
850
|
),
|
|
1034
851
|
TuyaSensorEntityDescription(
|
|
1035
|
-
key=DPCode.
|
|
1036
|
-
translation_key="
|
|
1037
|
-
device_class=SensorDeviceClass.
|
|
852
|
+
key=DPCode.BRIGHT_VALUE,
|
|
853
|
+
translation_key="illuminance",
|
|
854
|
+
device_class=SensorDeviceClass.ILLUMINANCE,
|
|
1038
855
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1039
|
-
entity_registry_enabled_default=False,
|
|
1040
856
|
),
|
|
857
|
+
*BATTERY_SENSORS,
|
|
858
|
+
),
|
|
859
|
+
# Gas Detector
|
|
860
|
+
# https://developer.tuya.com/en/docs/iot/categoryrqbj?id=Kaiuz3d162ubw
|
|
861
|
+
"rqbj": (
|
|
1041
862
|
TuyaSensorEntityDescription(
|
|
1042
|
-
key=DPCode.
|
|
1043
|
-
|
|
1044
|
-
|
|
863
|
+
key=DPCode.GAS_SENSOR_VALUE,
|
|
864
|
+
name=None,
|
|
865
|
+
translation_key="gas",
|
|
1045
866
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1046
|
-
entity_registry_enabled_default=False,
|
|
1047
867
|
),
|
|
868
|
+
*BATTERY_SENSORS,
|
|
1048
869
|
),
|
|
1049
870
|
# Robot Vacuum
|
|
1050
871
|
# https://developer.tuya.com/en/docs/iot/fsd?id=K9gf487ck1tlo
|
|
@@ -1095,6 +916,46 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
1095
916
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1096
917
|
),
|
|
1097
918
|
),
|
|
919
|
+
# Smart Water Timer
|
|
920
|
+
"sfkzq": (
|
|
921
|
+
# Total seconds of irrigation. Read-write value; the device appears to ignore the write action (maybe firmware bug)
|
|
922
|
+
TuyaSensorEntityDescription(
|
|
923
|
+
key=DPCode.TIME_USE,
|
|
924
|
+
translation_key="total_watering_time",
|
|
925
|
+
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
926
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
927
|
+
),
|
|
928
|
+
*BATTERY_SENSORS,
|
|
929
|
+
),
|
|
930
|
+
# Water Detector
|
|
931
|
+
# https://developer.tuya.com/en/docs/iot/categorysj?id=Kaiuz3iub2sli
|
|
932
|
+
"sj": BATTERY_SENSORS,
|
|
933
|
+
# Emergency Button
|
|
934
|
+
# https://developer.tuya.com/en/docs/iot/categorysos?id=Kaiuz3oi6agjy
|
|
935
|
+
"sos": BATTERY_SENSORS,
|
|
936
|
+
# Smart Camera
|
|
937
|
+
# https://developer.tuya.com/en/docs/iot/categorysp?id=Kaiuz35leyo12
|
|
938
|
+
"sp": (
|
|
939
|
+
TuyaSensorEntityDescription(
|
|
940
|
+
key=DPCode.SENSOR_TEMPERATURE,
|
|
941
|
+
translation_key="temperature",
|
|
942
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
943
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
944
|
+
),
|
|
945
|
+
TuyaSensorEntityDescription(
|
|
946
|
+
key=DPCode.SENSOR_HUMIDITY,
|
|
947
|
+
translation_key="humidity",
|
|
948
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
949
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
950
|
+
),
|
|
951
|
+
TuyaSensorEntityDescription(
|
|
952
|
+
key=DPCode.WIRELESS_ELECTRICITY,
|
|
953
|
+
translation_key="battery",
|
|
954
|
+
device_class=SensorDeviceClass.BATTERY,
|
|
955
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
956
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
957
|
+
),
|
|
958
|
+
),
|
|
1098
959
|
# Smart Gardening system
|
|
1099
960
|
# https://developer.tuya.com/en/docs/iot/categorysz?id=Kaiuz4e6h7up0
|
|
1100
961
|
"sz": (
|
|
@@ -1111,107 +972,157 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
1111
972
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1112
973
|
),
|
|
1113
974
|
),
|
|
1114
|
-
#
|
|
1115
|
-
|
|
1116
|
-
|
|
975
|
+
# Fingerbot
|
|
976
|
+
"szjqr": BATTERY_SENSORS,
|
|
977
|
+
# IoT Switch
|
|
978
|
+
# Note: Undocumented
|
|
979
|
+
"tdq": (
|
|
1117
980
|
TuyaSensorEntityDescription(
|
|
1118
|
-
key=DPCode.
|
|
1119
|
-
translation_key="
|
|
1120
|
-
|
|
981
|
+
key=DPCode.CUR_CURRENT,
|
|
982
|
+
translation_key="current",
|
|
983
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
984
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
985
|
+
suggested_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
986
|
+
entity_registry_enabled_default=False,
|
|
1121
987
|
),
|
|
1122
|
-
),
|
|
1123
|
-
# Humidifier
|
|
1124
|
-
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48qwjz0i3
|
|
1125
|
-
"jsq": (
|
|
1126
988
|
TuyaSensorEntityDescription(
|
|
1127
|
-
key=DPCode.
|
|
1128
|
-
translation_key="
|
|
1129
|
-
device_class=SensorDeviceClass.
|
|
989
|
+
key=DPCode.CUR_POWER,
|
|
990
|
+
translation_key="power",
|
|
991
|
+
device_class=SensorDeviceClass.POWER,
|
|
1130
992
|
state_class=SensorStateClass.MEASUREMENT,
|
|
993
|
+
entity_registry_enabled_default=False,
|
|
1131
994
|
),
|
|
1132
995
|
TuyaSensorEntityDescription(
|
|
1133
|
-
key=DPCode.
|
|
996
|
+
key=DPCode.CUR_VOLTAGE,
|
|
997
|
+
translation_key="voltage",
|
|
998
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
999
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1000
|
+
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1001
|
+
entity_registry_enabled_default=False,
|
|
1002
|
+
),
|
|
1003
|
+
TuyaSensorEntityDescription(
|
|
1004
|
+
key=DPCode.VA_TEMPERATURE,
|
|
1134
1005
|
translation_key="temperature",
|
|
1135
1006
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1136
1007
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1137
1008
|
),
|
|
1138
1009
|
TuyaSensorEntityDescription(
|
|
1139
|
-
key=DPCode.
|
|
1010
|
+
key=DPCode.TEMP_CURRENT,
|
|
1140
1011
|
translation_key="temperature",
|
|
1141
1012
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1142
1013
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1143
1014
|
),
|
|
1144
1015
|
TuyaSensorEntityDescription(
|
|
1145
|
-
key=DPCode.
|
|
1146
|
-
translation_key="
|
|
1147
|
-
|
|
1016
|
+
key=DPCode.VA_HUMIDITY,
|
|
1017
|
+
translation_key="humidity",
|
|
1018
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
1019
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1020
|
+
),
|
|
1021
|
+
TuyaSensorEntityDescription(
|
|
1022
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
1023
|
+
translation_key="humidity",
|
|
1024
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
1025
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1026
|
+
),
|
|
1027
|
+
TuyaSensorEntityDescription(
|
|
1028
|
+
key=DPCode.BRIGHT_VALUE,
|
|
1029
|
+
translation_key="illuminance",
|
|
1030
|
+
device_class=SensorDeviceClass.ILLUMINANCE,
|
|
1031
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1148
1032
|
),
|
|
1033
|
+
*BATTERY_SENSORS,
|
|
1149
1034
|
),
|
|
1150
|
-
#
|
|
1151
|
-
# https://developer.tuya.com/en/docs/iot/
|
|
1152
|
-
"
|
|
1035
|
+
# Solar Light
|
|
1036
|
+
# https://developer.tuya.com/en/docs/iot/tynd?id=Kaof8j02e1t98
|
|
1037
|
+
"tyndj": BATTERY_SENSORS,
|
|
1038
|
+
# Volatile Organic Compound Sensor
|
|
1039
|
+
# Note: Undocumented in cloud API docs, based on test device
|
|
1040
|
+
"voc": (
|
|
1153
1041
|
TuyaSensorEntityDescription(
|
|
1154
|
-
key=DPCode.
|
|
1155
|
-
translation_key="
|
|
1156
|
-
|
|
1042
|
+
key=DPCode.CO2_VALUE,
|
|
1043
|
+
translation_key="carbon_dioxide",
|
|
1044
|
+
device_class=SensorDeviceClass.CO2,
|
|
1045
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1046
|
+
suggested_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
1157
1047
|
),
|
|
1158
1048
|
TuyaSensorEntityDescription(
|
|
1159
|
-
key=DPCode.
|
|
1049
|
+
key=DPCode.PM25_VALUE,
|
|
1160
1050
|
translation_key="pm25",
|
|
1161
1051
|
device_class=SensorDeviceClass.PM25,
|
|
1162
1052
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1053
|
+
suggested_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
1163
1054
|
),
|
|
1164
1055
|
TuyaSensorEntityDescription(
|
|
1165
|
-
key=DPCode.
|
|
1166
|
-
translation_key="
|
|
1167
|
-
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1056
|
+
key=DPCode.CH2O_VALUE,
|
|
1057
|
+
translation_key="formaldehyde",
|
|
1168
1058
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1169
1059
|
),
|
|
1170
1060
|
TuyaSensorEntityDescription(
|
|
1171
|
-
key=DPCode.
|
|
1061
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
1172
1062
|
translation_key="humidity",
|
|
1173
1063
|
device_class=SensorDeviceClass.HUMIDITY,
|
|
1174
1064
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1175
1065
|
),
|
|
1176
1066
|
TuyaSensorEntityDescription(
|
|
1177
|
-
key=DPCode.
|
|
1178
|
-
translation_key="
|
|
1067
|
+
key=DPCode.TEMP_CURRENT,
|
|
1068
|
+
translation_key="temperature",
|
|
1069
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1070
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1071
|
+
),
|
|
1072
|
+
TuyaSensorEntityDescription(
|
|
1073
|
+
key=DPCode.VOC_VALUE,
|
|
1074
|
+
translation_key="voc",
|
|
1179
1075
|
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS,
|
|
1180
1076
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1181
1077
|
),
|
|
1078
|
+
*BATTERY_SENSORS,
|
|
1079
|
+
),
|
|
1080
|
+
# Thermostat
|
|
1081
|
+
# https://developer.tuya.com/en/docs/iot/f?id=K9gf45ld5l0t9
|
|
1082
|
+
"wk": (*BATTERY_SENSORS,),
|
|
1083
|
+
# Two-way temperature and humidity switch
|
|
1084
|
+
# "MOES Temperature and Humidity Smart Switch Module MS-103"
|
|
1085
|
+
# Documentation not found
|
|
1086
|
+
"wkcz": (
|
|
1182
1087
|
TuyaSensorEntityDescription(
|
|
1183
|
-
key=DPCode.
|
|
1184
|
-
translation_key="
|
|
1185
|
-
device_class=SensorDeviceClass.
|
|
1088
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
1089
|
+
translation_key="humidity",
|
|
1090
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
1186
1091
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1187
1092
|
),
|
|
1188
1093
|
TuyaSensorEntityDescription(
|
|
1189
|
-
key=DPCode.
|
|
1190
|
-
translation_key="
|
|
1191
|
-
|
|
1192
|
-
|
|
1094
|
+
key=DPCode.TEMP_CURRENT,
|
|
1095
|
+
translation_key="temperature",
|
|
1096
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1097
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1193
1098
|
),
|
|
1194
1099
|
TuyaSensorEntityDescription(
|
|
1195
|
-
key=DPCode.
|
|
1196
|
-
translation_key="
|
|
1197
|
-
|
|
1198
|
-
|
|
1100
|
+
key=DPCode.CUR_CURRENT,
|
|
1101
|
+
translation_key="current",
|
|
1102
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
1103
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1104
|
+
suggested_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
1105
|
+
entity_registry_enabled_default=False,
|
|
1199
1106
|
),
|
|
1200
1107
|
TuyaSensorEntityDescription(
|
|
1201
|
-
key=DPCode.
|
|
1202
|
-
translation_key="
|
|
1108
|
+
key=DPCode.CUR_POWER,
|
|
1109
|
+
translation_key="power",
|
|
1110
|
+
device_class=SensorDeviceClass.POWER,
|
|
1111
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1112
|
+
entity_registry_enabled_default=False,
|
|
1203
1113
|
),
|
|
1204
|
-
),
|
|
1205
|
-
# Fan
|
|
1206
|
-
# https://developer.tuya.com/en/docs/iot/s?id=K9gf48quojr54
|
|
1207
|
-
"fs": (
|
|
1208
1114
|
TuyaSensorEntityDescription(
|
|
1209
|
-
key=DPCode.
|
|
1210
|
-
translation_key="
|
|
1211
|
-
device_class=SensorDeviceClass.
|
|
1115
|
+
key=DPCode.CUR_VOLTAGE,
|
|
1116
|
+
translation_key="voltage",
|
|
1117
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
1212
1118
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1119
|
+
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1120
|
+
entity_registry_enabled_default=False,
|
|
1213
1121
|
),
|
|
1214
1122
|
),
|
|
1123
|
+
# Thermostatic Radiator Valve
|
|
1124
|
+
# Not documented
|
|
1125
|
+
"wkf": BATTERY_SENSORS,
|
|
1215
1126
|
# eMylo Smart WiFi IR Remote
|
|
1216
1127
|
# Air Conditioner Mate (Smart IR Socket)
|
|
1217
1128
|
"wnykq": (
|
|
@@ -1232,6 +1143,7 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
1232
1143
|
translation_key="current",
|
|
1233
1144
|
device_class=SensorDeviceClass.CURRENT,
|
|
1234
1145
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1146
|
+
suggested_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
1235
1147
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
1236
1148
|
entity_registry_enabled_default=False,
|
|
1237
1149
|
),
|
|
@@ -1248,42 +1160,168 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
1248
1160
|
translation_key="voltage",
|
|
1249
1161
|
device_class=SensorDeviceClass.VOLTAGE,
|
|
1250
1162
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1163
|
+
suggested_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1251
1164
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
1252
1165
|
entity_registry_enabled_default=False,
|
|
1253
1166
|
),
|
|
1254
1167
|
),
|
|
1255
|
-
#
|
|
1256
|
-
# https://developer.tuya.com/en/docs/iot/
|
|
1257
|
-
"
|
|
1168
|
+
# Temperature and Humidity Sensor
|
|
1169
|
+
# https://developer.tuya.com/en/docs/iot/categorywsdcg?id=Kaiuz3hinij34
|
|
1170
|
+
"wsdcg": (
|
|
1258
1171
|
TuyaSensorEntityDescription(
|
|
1259
|
-
key=DPCode.
|
|
1172
|
+
key=DPCode.VA_TEMPERATURE,
|
|
1260
1173
|
translation_key="temperature",
|
|
1261
1174
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1262
1175
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1263
1176
|
),
|
|
1264
1177
|
TuyaSensorEntityDescription(
|
|
1265
|
-
key=DPCode.
|
|
1178
|
+
key=DPCode.TEMP_CURRENT,
|
|
1179
|
+
translation_key="temperature",
|
|
1180
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1181
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1182
|
+
),
|
|
1183
|
+
TuyaSensorEntityDescription(
|
|
1184
|
+
key=DPCode.VA_HUMIDITY,
|
|
1185
|
+
translation_key="humidity",
|
|
1186
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
1187
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1188
|
+
),
|
|
1189
|
+
TuyaSensorEntityDescription(
|
|
1190
|
+
key=DPCode.HUMIDITY_VALUE,
|
|
1266
1191
|
translation_key="humidity",
|
|
1267
1192
|
device_class=SensorDeviceClass.HUMIDITY,
|
|
1268
1193
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1269
1194
|
),
|
|
1195
|
+
TuyaSensorEntityDescription(
|
|
1196
|
+
key=DPCode.BRIGHT_VALUE,
|
|
1197
|
+
translation_key="illuminance",
|
|
1198
|
+
device_class=SensorDeviceClass.ILLUMINANCE,
|
|
1199
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1200
|
+
),
|
|
1201
|
+
*BATTERY_SENSORS,
|
|
1270
1202
|
),
|
|
1271
|
-
#
|
|
1272
|
-
|
|
1203
|
+
# Wireless Switch
|
|
1204
|
+
# https://developer.tuya.com/en/docs/iot/s?id=Kbeoa9fkv6brp
|
|
1205
|
+
"wxkg": BATTERY_SENSORS, # Pressure Sensor
|
|
1206
|
+
# https://developer.tuya.com/en/docs/iot/categoryylcg?id=Kaiuz3kc2e4gm
|
|
1207
|
+
"ylcg": (
|
|
1273
1208
|
TuyaSensorEntityDescription(
|
|
1274
|
-
key=DPCode.
|
|
1275
|
-
|
|
1276
|
-
device_class=SensorDeviceClass.
|
|
1209
|
+
key=DPCode.PRESSURE_VALUE,
|
|
1210
|
+
name=None,
|
|
1211
|
+
device_class=SensorDeviceClass.PRESSURE,
|
|
1277
1212
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1278
1213
|
),
|
|
1214
|
+
*BATTERY_SENSORS,
|
|
1215
|
+
),
|
|
1216
|
+
# Smoke Detector
|
|
1217
|
+
# https://developer.tuya.com/en/docs/iot/categoryywbj?id=Kaiuz3f6sf952
|
|
1218
|
+
"ywbj": (
|
|
1279
1219
|
TuyaSensorEntityDescription(
|
|
1280
|
-
key=DPCode.
|
|
1281
|
-
translation_key="
|
|
1282
|
-
|
|
1220
|
+
key=DPCode.SMOKE_SENSOR_VALUE,
|
|
1221
|
+
translation_key="smoke_amount",
|
|
1222
|
+
entity_category=EntityCategory.DIAGNOSTIC,
|
|
1283
1223
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1284
1224
|
),
|
|
1285
1225
|
*BATTERY_SENSORS,
|
|
1286
1226
|
),
|
|
1227
|
+
# Vibration Sensor
|
|
1228
|
+
# https://developer.tuya.com/en/docs/iot/categoryzd?id=Kaiuz3a5vrzno
|
|
1229
|
+
"zd": BATTERY_SENSORS,
|
|
1230
|
+
# Smart Electricity Meter
|
|
1231
|
+
# https://developer.tuya.com/en/docs/iot/smart-meter?id=Kaiuz4gv6ack7
|
|
1232
|
+
"zndb": (
|
|
1233
|
+
TuyaSensorEntityDescription(
|
|
1234
|
+
key=DPCode.FORWARD_ENERGY_TOTAL,
|
|
1235
|
+
translation_key="total_energy",
|
|
1236
|
+
device_class=SensorDeviceClass.ENERGY,
|
|
1237
|
+
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
1238
|
+
),
|
|
1239
|
+
TuyaSensorEntityDescription(
|
|
1240
|
+
key=DPCode.REVERSE_ENERGY_TOTAL,
|
|
1241
|
+
translation_key="total_energy",
|
|
1242
|
+
device_class=SensorDeviceClass.ENERGY,
|
|
1243
|
+
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
1244
|
+
),
|
|
1245
|
+
TuyaSensorEntityDescription(
|
|
1246
|
+
key=DPCode.TOTAL_POWER,
|
|
1247
|
+
translation_key="total_power",
|
|
1248
|
+
device_class=SensorDeviceClass.POWER,
|
|
1249
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1250
|
+
subkey="power",
|
|
1251
|
+
),
|
|
1252
|
+
TuyaSensorEntityDescription(
|
|
1253
|
+
key=DPCode.PHASE_A,
|
|
1254
|
+
translation_key="phase_a_current",
|
|
1255
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
1256
|
+
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
1257
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1258
|
+
subkey="electriccurrent",
|
|
1259
|
+
),
|
|
1260
|
+
TuyaSensorEntityDescription(
|
|
1261
|
+
key=DPCode.PHASE_A,
|
|
1262
|
+
translation_key="phase_a_power",
|
|
1263
|
+
device_class=SensorDeviceClass.POWER,
|
|
1264
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1265
|
+
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
1266
|
+
subkey="power",
|
|
1267
|
+
),
|
|
1268
|
+
TuyaSensorEntityDescription(
|
|
1269
|
+
key=DPCode.PHASE_A,
|
|
1270
|
+
translation_key="phase_a_voltage",
|
|
1271
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
1272
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1273
|
+
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1274
|
+
subkey="voltage",
|
|
1275
|
+
),
|
|
1276
|
+
TuyaSensorEntityDescription(
|
|
1277
|
+
key=DPCode.PHASE_B,
|
|
1278
|
+
translation_key="phase_b_current",
|
|
1279
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
1280
|
+
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
1281
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1282
|
+
subkey="electriccurrent",
|
|
1283
|
+
),
|
|
1284
|
+
TuyaSensorEntityDescription(
|
|
1285
|
+
key=DPCode.PHASE_B,
|
|
1286
|
+
translation_key="phase_b_power",
|
|
1287
|
+
device_class=SensorDeviceClass.POWER,
|
|
1288
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1289
|
+
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
1290
|
+
subkey="power",
|
|
1291
|
+
),
|
|
1292
|
+
TuyaSensorEntityDescription(
|
|
1293
|
+
key=DPCode.PHASE_B,
|
|
1294
|
+
translation_key="phase_b_voltage",
|
|
1295
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
1296
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1297
|
+
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1298
|
+
subkey="voltage",
|
|
1299
|
+
),
|
|
1300
|
+
TuyaSensorEntityDescription(
|
|
1301
|
+
key=DPCode.PHASE_C,
|
|
1302
|
+
translation_key="phase_c_current",
|
|
1303
|
+
device_class=SensorDeviceClass.CURRENT,
|
|
1304
|
+
native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
|
|
1305
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1306
|
+
subkey="electriccurrent",
|
|
1307
|
+
),
|
|
1308
|
+
TuyaSensorEntityDescription(
|
|
1309
|
+
key=DPCode.PHASE_C,
|
|
1310
|
+
translation_key="phase_c_power",
|
|
1311
|
+
device_class=SensorDeviceClass.POWER,
|
|
1312
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1313
|
+
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
1314
|
+
subkey="power",
|
|
1315
|
+
),
|
|
1316
|
+
TuyaSensorEntityDescription(
|
|
1317
|
+
key=DPCode.PHASE_C,
|
|
1318
|
+
translation_key="phase_c_voltage",
|
|
1319
|
+
device_class=SensorDeviceClass.VOLTAGE,
|
|
1320
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1321
|
+
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
|
|
1322
|
+
subkey="voltage",
|
|
1323
|
+
),
|
|
1324
|
+
),
|
|
1287
1325
|
# VESKA-micro inverter
|
|
1288
1326
|
"znnbq": (
|
|
1289
1327
|
TuyaSensorEntityDescription(
|
|
@@ -1311,23 +1349,36 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
|
|
1311
1349
|
state_class=SensorStateClass.MEASUREMENT,
|
|
1312
1350
|
),
|
|
1313
1351
|
),
|
|
1314
|
-
#
|
|
1315
|
-
|
|
1316
|
-
|
|
1352
|
+
# Soil sensor (Plant monitor)
|
|
1353
|
+
"zwjcy": (
|
|
1354
|
+
TuyaSensorEntityDescription(
|
|
1355
|
+
key=DPCode.TEMP_CURRENT,
|
|
1356
|
+
translation_key="temperature",
|
|
1357
|
+
device_class=SensorDeviceClass.TEMPERATURE,
|
|
1358
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1359
|
+
),
|
|
1360
|
+
TuyaSensorEntityDescription(
|
|
1361
|
+
key=DPCode.HUMIDITY,
|
|
1362
|
+
translation_key="humidity",
|
|
1363
|
+
device_class=SensorDeviceClass.HUMIDITY,
|
|
1364
|
+
state_class=SensorStateClass.MEASUREMENT,
|
|
1365
|
+
),
|
|
1366
|
+
*BATTERY_SENSORS,
|
|
1367
|
+
),
|
|
1317
1368
|
}
|
|
1318
1369
|
|
|
1319
1370
|
# Socket (duplicate of `kg`)
|
|
1320
1371
|
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
|
|
1321
1372
|
SENSORS["cz"] = SENSORS["kg"]
|
|
1322
1373
|
|
|
1323
|
-
# Power Socket (duplicate of `kg`)
|
|
1324
|
-
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
|
|
1325
|
-
SENSORS["pc"] = SENSORS["kg"]
|
|
1326
|
-
|
|
1327
1374
|
# Smart Camera - Low power consumption camera (duplicate of `sp`)
|
|
1328
1375
|
# Undocumented, see https://github.com/home-assistant/core/issues/132844
|
|
1329
1376
|
SENSORS["dghsxj"] = SENSORS["sp"]
|
|
1330
1377
|
|
|
1378
|
+
# Power Socket (duplicate of `kg`)
|
|
1379
|
+
# https://developer.tuya.com/en/docs/iot/s?id=K9gf7o5prgf7s
|
|
1380
|
+
SENSORS["pc"] = SENSORS["kg"]
|
|
1381
|
+
|
|
1331
1382
|
|
|
1332
1383
|
async def async_setup_entry(
|
|
1333
1384
|
hass: HomeAssistant,
|
|
@@ -1401,6 +1452,9 @@ class TuyaSensorEntity(TuyaEntity, SensorEntity):
|
|
|
1401
1452
|
self.device_class is not None
|
|
1402
1453
|
and not self.device_class.startswith(DOMAIN)
|
|
1403
1454
|
and description.native_unit_of_measurement is None
|
|
1455
|
+
# we do not need to check mappings if the API UOM is allowed
|
|
1456
|
+
and self.native_unit_of_measurement
|
|
1457
|
+
not in SENSOR_DEVICE_CLASS_UNITS[self.device_class]
|
|
1404
1458
|
):
|
|
1405
1459
|
# We cannot have a device class, if the UOM isn't set or the
|
|
1406
1460
|
# device class cannot be found in the validation mapping.
|
|
@@ -1408,24 +1462,28 @@ class TuyaSensorEntity(TuyaEntity, SensorEntity):
|
|
|
1408
1462
|
self.native_unit_of_measurement is None
|
|
1409
1463
|
or self.device_class not in DEVICE_CLASS_UNITS
|
|
1410
1464
|
):
|
|
1465
|
+
LOGGER.debug(
|
|
1466
|
+
"Device class %s ignored for incompatible unit %s in sensor entity %s",
|
|
1467
|
+
self.device_class,
|
|
1468
|
+
self.native_unit_of_measurement,
|
|
1469
|
+
self.unique_id,
|
|
1470
|
+
)
|
|
1411
1471
|
self._attr_device_class = None
|
|
1412
1472
|
return
|
|
1413
1473
|
|
|
1414
1474
|
uoms = DEVICE_CLASS_UNITS[self.device_class]
|
|
1415
|
-
|
|
1475
|
+
uom = uoms.get(self.native_unit_of_measurement) or uoms.get(
|
|
1416
1476
|
self.native_unit_of_measurement.lower()
|
|
1417
1477
|
)
|
|
1418
1478
|
|
|
1419
1479
|
# Unknown unit of measurement, device class should not be used.
|
|
1420
|
-
if
|
|
1480
|
+
if uom is None:
|
|
1421
1481
|
self._attr_device_class = None
|
|
1422
1482
|
return
|
|
1423
1483
|
|
|
1424
1484
|
# Found unit of measurement, use the standardized Unit
|
|
1425
1485
|
# Use the target conversion unit (if set)
|
|
1426
|
-
self._attr_native_unit_of_measurement =
|
|
1427
|
-
self._uom.conversion_unit or self._uom.unit
|
|
1428
|
-
)
|
|
1486
|
+
self._attr_native_unit_of_measurement = uom.unit
|
|
1429
1487
|
|
|
1430
1488
|
@property
|
|
1431
1489
|
def native_value(self) -> StateType:
|
|
@@ -1447,10 +1505,7 @@ class TuyaSensorEntity(TuyaEntity, SensorEntity):
|
|
|
1447
1505
|
|
|
1448
1506
|
# Scale integer/float value
|
|
1449
1507
|
if isinstance(self._type_data, IntegerTypeData):
|
|
1450
|
-
|
|
1451
|
-
if self._uom and self._uom.conversion_fn is not None:
|
|
1452
|
-
return self._uom.conversion_fn(scaled_value)
|
|
1453
|
-
return scaled_value
|
|
1508
|
+
return self._type_data.scale_value(value)
|
|
1454
1509
|
|
|
1455
1510
|
# Unexpected enum value
|
|
1456
1511
|
if (
|