homeassistant-stubs 2025.5.2__py3-none-any.whl → 2025.6.0__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-stubs/components/airthings/sensor.pyi +1 -1
- homeassistant-stubs/components/alexa_devices/__init__.pyi +9 -0
- homeassistant-stubs/components/alexa_devices/binary_sensor.pyi +26 -0
- homeassistant-stubs/components/alexa_devices/config_flow.pyi +8 -0
- homeassistant-stubs/components/alexa_devices/const.pyi +5 -0
- homeassistant-stubs/components/alexa_devices/coordinator.pyi +17 -0
- homeassistant-stubs/components/alexa_devices/diagnostics.pyi +14 -0
- homeassistant-stubs/components/alexa_devices/entity.pyi +19 -0
- homeassistant-stubs/components/alexa_devices/notify.pyi +25 -0
- homeassistant-stubs/components/alexa_devices/switch.pyi +30 -0
- homeassistant-stubs/components/apcupsd/config_flow.pyi +1 -0
- homeassistant-stubs/components/assist_pipeline/pipeline.pyi +3 -1
- homeassistant-stubs/components/axis/config_flow.pyi +2 -2
- homeassistant-stubs/components/axis/entity.pyi +1 -0
- homeassistant-stubs/components/backup/__init__.pyi +2 -2
- homeassistant-stubs/components/backup/coordinator.pyi +3 -0
- homeassistant-stubs/components/backup/entity.pyi +5 -2
- homeassistant-stubs/components/backup/event.pyi +23 -0
- homeassistant-stubs/components/backup/manager.pyi +22 -3
- homeassistant-stubs/components/backup/models.pyi +2 -2
- homeassistant-stubs/components/blue_current/button.pyi +25 -0
- homeassistant-stubs/components/blue_current/entity.pyi +3 -6
- homeassistant-stubs/components/bluesound/button.pyi +35 -0
- homeassistant-stubs/components/bluesound/media_player.pyi +1 -0
- homeassistant-stubs/components/bmw_connected_drive/button.pyi +1 -1
- homeassistant-stubs/components/bmw_connected_drive/coordinator.pyi +1 -1
- homeassistant-stubs/components/bmw_connected_drive/lock.pyi +1 -1
- homeassistant-stubs/components/bmw_connected_drive/notify.pyi +1 -1
- homeassistant-stubs/components/bmw_connected_drive/number.pyi +1 -1
- homeassistant-stubs/components/bmw_connected_drive/select.pyi +1 -1
- homeassistant-stubs/components/bmw_connected_drive/switch.pyi +1 -1
- homeassistant-stubs/components/bosch_alarm/__init__.pyi +8 -4
- homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +3 -1
- homeassistant-stubs/components/bosch_alarm/binary_sensor.pyi +45 -0
- homeassistant-stubs/components/bosch_alarm/config_flow.pyi +9 -3
- homeassistant-stubs/components/bosch_alarm/const.pyi +4 -1
- homeassistant-stubs/components/bosch_alarm/diagnostics.pyi +1 -1
- homeassistant-stubs/components/bosch_alarm/entity.pyi +30 -1
- homeassistant-stubs/components/bosch_alarm/sensor.pyi +6 -2
- homeassistant-stubs/components/bosch_alarm/services.pyi +15 -0
- homeassistant-stubs/components/bosch_alarm/switch.pyi +43 -0
- homeassistant-stubs/components/bosch_alarm/types.pyi +4 -0
- homeassistant-stubs/components/bring/__init__.pyi +1 -1
- homeassistant-stubs/components/bring/coordinator.pyi +21 -3
- homeassistant-stubs/components/bring/entity.pyi +3 -3
- homeassistant-stubs/components/bring/event.pyi +3 -2
- homeassistant-stubs/components/bring/sensor.pyi +1 -0
- homeassistant-stubs/components/bring/todo.pyi +1 -0
- homeassistant-stubs/components/camera/__init__.pyi +2 -10
- homeassistant-stubs/components/camera/webrtc.pyi +1 -22
- homeassistant-stubs/components/climate/__init__.pyi +3 -13
- homeassistant-stubs/components/climate/const.pyi +0 -3
- homeassistant-stubs/components/climate/significant_change.pyi +1 -1
- homeassistant-stubs/components/cloud/__init__.pyi +1 -1
- homeassistant-stubs/components/cloud/alexa_config.pyi +1 -1
- homeassistant-stubs/components/cloud/client.pyi +2 -1
- homeassistant-stubs/components/cloud/const.pyi +0 -1
- homeassistant-stubs/components/cloud/google_config.pyi +1 -1
- homeassistant-stubs/components/cloud/http_api.pyi +0 -2
- homeassistant-stubs/components/comelit/climate.pyi +14 -5
- homeassistant-stubs/components/comelit/config_flow.pyi +3 -4
- homeassistant-stubs/components/comelit/const.pyi +3 -0
- homeassistant-stubs/components/comelit/cover.pyi +3 -1
- homeassistant-stubs/components/comelit/humidifier.pyi +6 -1
- homeassistant-stubs/components/comelit/light.pyi +2 -0
- homeassistant-stubs/components/comelit/switch.pyi +2 -0
- homeassistant-stubs/components/comelit/utils.pyi +11 -0
- homeassistant-stubs/components/command_line/notify.pyi +3 -1
- homeassistant-stubs/components/config/entity_registry.pyi +6 -0
- homeassistant-stubs/components/deconz/entity.pyi +1 -0
- homeassistant-stubs/components/deconz/hub/hub.pyi +1 -1
- homeassistant-stubs/components/deconz/light.pyi +1 -1
- homeassistant-stubs/components/demo/media_player.pyi +2 -1
- homeassistant-stubs/components/derivative/__init__.pyi +2 -1
- homeassistant-stubs/components/device_automation/trigger.pyi +5 -2
- homeassistant-stubs/components/devolo_home_network/__init__.pyi +3 -18
- homeassistant-stubs/components/devolo_home_network/binary_sensor.pyi +1 -2
- homeassistant-stubs/components/devolo_home_network/button.pyi +1 -1
- homeassistant-stubs/components/devolo_home_network/config_flow.pyi +1 -1
- homeassistant-stubs/components/devolo_home_network/coordinator.pyi +56 -6
- homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +1 -2
- homeassistant-stubs/components/devolo_home_network/diagnostics.pyi +1 -1
- homeassistant-stubs/components/devolo_home_network/entity.pyi +1 -2
- homeassistant-stubs/components/devolo_home_network/image.pyi +1 -2
- homeassistant-stubs/components/devolo_home_network/sensor.pyi +1 -2
- homeassistant-stubs/components/devolo_home_network/switch.pyi +1 -2
- homeassistant-stubs/components/devolo_home_network/update.pyi +1 -2
- homeassistant-stubs/components/dhcp/__init__.pyi +2 -0
- homeassistant-stubs/components/downloader/__init__.pyi +3 -4
- homeassistant-stubs/components/downloader/services.pyi +7 -0
- homeassistant-stubs/components/ecovacs/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/ecovacs/button.pyi +2 -2
- homeassistant-stubs/components/ecovacs/number.pyi +1 -1
- homeassistant-stubs/components/ecovacs/select.pyi +1 -1
- homeassistant-stubs/components/ecovacs/sensor.pyi +1 -1
- homeassistant-stubs/components/ecovacs/switch.pyi +1 -1
- homeassistant-stubs/components/ecovacs/util.pyi +1 -1
- homeassistant-stubs/components/eheimdigital/climate.pyi +4 -2
- homeassistant-stubs/components/eheimdigital/diagnostics.pyi +9 -0
- homeassistant-stubs/components/eheimdigital/entity.pyi +5 -0
- homeassistant-stubs/components/eheimdigital/light.pyi +3 -2
- homeassistant-stubs/components/eheimdigital/number.pyi +3 -1
- homeassistant-stubs/components/eheimdigital/select.pyi +34 -0
- homeassistant-stubs/components/eheimdigital/switch.pyi +3 -1
- homeassistant-stubs/components/eheimdigital/time.pyi +2 -1
- homeassistant-stubs/components/elkm1/climate.pyi +0 -6
- homeassistant-stubs/components/esphome/entity.pyi +2 -0
- homeassistant-stubs/components/esphome/entry_data.pyi +0 -12
- homeassistant-stubs/components/esphome/light.pyi +4 -4
- homeassistant-stubs/components/esphome/manager.pyi +0 -1
- homeassistant-stubs/components/esphome/update.pyi +8 -4
- homeassistant-stubs/components/feedreader/event.pyi +1 -2
- homeassistant-stubs/components/fritz/__init__.pyi +1 -1
- homeassistant-stubs/components/fritz/config_flow.pyi +2 -1
- homeassistant-stubs/components/fritz/const.pyi +2 -0
- homeassistant-stubs/components/fritz/coordinator.pyi +5 -3
- homeassistant-stubs/components/frontend/storage.pyi +25 -9
- homeassistant-stubs/components/fyta/image.pyi +18 -4
- homeassistant-stubs/components/generic_hygrostat/__init__.pyi +4 -2
- homeassistant-stubs/components/generic_thermostat/__init__.pyi +5 -3
- homeassistant-stubs/components/geocaching/__init__.pyi +3 -5
- homeassistant-stubs/components/geocaching/coordinator.pyi +3 -2
- homeassistant-stubs/components/geocaching/sensor.pyi +2 -3
- homeassistant-stubs/components/google/__init__.pyi +7 -8
- homeassistant-stubs/components/google/api.pyi +2 -2
- homeassistant-stubs/components/google/calendar.pyi +5 -5
- homeassistant-stubs/components/google/config_flow.pyi +3 -2
- homeassistant-stubs/components/google/const.pyi +0 -2
- homeassistant-stubs/components/google/coordinator.pyi +5 -5
- homeassistant-stubs/components/google/diagnostics.pyi +2 -3
- homeassistant-stubs/components/google/store.pyi +9 -0
- homeassistant-stubs/components/google_assistant_sdk/__init__.pyi +5 -6
- homeassistant-stubs/components/google_assistant_sdk/config_flow.pyi +3 -3
- homeassistant-stubs/components/google_assistant_sdk/const.pyi +0 -2
- homeassistant-stubs/components/google_assistant_sdk/diagnostics.pyi +2 -2
- homeassistant-stubs/components/google_assistant_sdk/helpers.pyi +8 -1
- homeassistant-stubs/components/google_assistant_sdk/notify.pyi +1 -2
- homeassistant-stubs/components/greeneye_monitor/const.pyi +4 -1
- homeassistant-stubs/components/guardian/__init__.pyi +11 -18
- homeassistant-stubs/components/guardian/binary_sensor.pyi +5 -6
- homeassistant-stubs/components/guardian/button.pyi +4 -5
- homeassistant-stubs/components/guardian/coordinator.pyi +3 -3
- homeassistant-stubs/components/guardian/diagnostics.pyi +3 -4
- homeassistant-stubs/components/guardian/entity.pyi +3 -3
- homeassistant-stubs/components/guardian/sensor.pyi +3 -4
- homeassistant-stubs/components/guardian/services.pyi +28 -0
- homeassistant-stubs/components/guardian/switch.pyi +4 -5
- homeassistant-stubs/components/guardian/util.pyi +2 -2
- homeassistant-stubs/components/guardian/valve.pyi +4 -5
- homeassistant-stubs/components/habitica/const.pyi +1 -6
- homeassistant-stubs/components/habitica/coordinator.pyi +2 -2
- homeassistant-stubs/components/habitica/sensor.pyi +3 -1
- homeassistant-stubs/components/habitica/services.pyi +2 -4
- homeassistant-stubs/components/habitica/util.pyi +2 -0
- homeassistant-stubs/components/hardware/__init__.pyi +3 -1
- homeassistant-stubs/components/hardware/const.pyi +4 -0
- homeassistant-stubs/components/hardware/hardware.pyi +1 -1
- homeassistant-stubs/components/hardware/models.pyi +14 -1
- homeassistant-stubs/components/hardware/websocket_api.pyi +2 -12
- homeassistant-stubs/components/heos/media_player.pyi +1 -0
- homeassistant-stubs/components/here_travel_time/__init__.pyi +4 -6
- homeassistant-stubs/components/here_travel_time/coordinator.pyi +9 -10
- homeassistant-stubs/components/here_travel_time/model.pyi +6 -10
- homeassistant-stubs/components/here_travel_time/sensor.pyi +4 -5
- homeassistant-stubs/components/history_stats/__init__.pyi +2 -1
- homeassistant-stubs/components/history_stats/config_flow.pyi +2 -2
- homeassistant-stubs/components/history_stats/data.pyi +2 -0
- homeassistant-stubs/components/home_connect/application_credentials.pyi +1 -0
- homeassistant-stubs/components/home_connect/config_flow.pyi +2 -0
- homeassistant-stubs/components/home_connect/diagnostics.pyi +1 -2
- homeassistant-stubs/components/home_connect/entity.pyi +0 -1
- homeassistant-stubs/components/home_connect/light.pyi +2 -2
- homeassistant-stubs/components/home_connect/number.pyi +1 -0
- homeassistant-stubs/components/home_connect/sensor.pyi +4 -5
- homeassistant-stubs/components/home_connect/switch.pyi +1 -19
- homeassistant-stubs/components/homeassistant/__init__.pyi +5 -0
- homeassistant-stubs/components/homee/alarm_control_panel.pyi +39 -0
- homeassistant-stubs/components/homee/const.pyi +2 -0
- homeassistant-stubs/components/homee/event.pyi +19 -0
- homeassistant-stubs/components/homee/fan.pyi +38 -0
- homeassistant-stubs/components/homee/sensor.pyi +5 -1
- homeassistant-stubs/components/homekit/const.pyi +1 -0
- homeassistant-stubs/components/homekit/util.pyi +1 -1
- homeassistant-stubs/components/homeworks/__init__.pyi +5 -5
- homeassistant-stubs/components/homeworks/binary_sensor.pyi +2 -3
- homeassistant-stubs/components/homeworks/button.pyi +2 -3
- homeassistant-stubs/components/homeworks/light.pyi +2 -3
- homeassistant-stubs/components/http/decorators.pyi +1 -1
- homeassistant-stubs/components/huawei_lte/__init__.pyi +0 -1
- homeassistant-stubs/components/husqvarna_automower/binary_sensor.pyi +0 -7
- homeassistant-stubs/components/hydrawise/__init__.pyi +4 -5
- homeassistant-stubs/components/hydrawise/binary_sensor.pyi +3 -4
- homeassistant-stubs/components/hydrawise/coordinator.pyi +4 -3
- homeassistant-stubs/components/hydrawise/sensor.pyi +2 -4
- homeassistant-stubs/components/hydrawise/switch.pyi +3 -4
- homeassistant-stubs/components/hydrawise/valve.pyi +2 -4
- homeassistant-stubs/components/immich/__init__.pyi +10 -0
- homeassistant-stubs/components/immich/config_flow.pyi +27 -0
- homeassistant-stubs/components/immich/const.pyi +4 -0
- homeassistant-stubs/components/immich/coordinator.pyi +27 -0
- homeassistant-stubs/components/immich/diagnostics.pyi +10 -0
- homeassistant-stubs/components/immich/entity.pyi +10 -0
- homeassistant-stubs/components/immich/media_source.pyi +38 -0
- homeassistant-stubs/components/immich/sensor.pyi +28 -0
- homeassistant-stubs/components/integration/__init__.pyi +2 -1
- homeassistant-stubs/components/iqvia/__init__.pyi +4 -7
- homeassistant-stubs/components/iqvia/coordinator.pyi +16 -0
- homeassistant-stubs/components/iqvia/diagnostics.pyi +3 -4
- homeassistant-stubs/components/iqvia/entity.pyi +5 -6
- homeassistant-stubs/components/iqvia/sensor.pyi +3 -3
- homeassistant-stubs/components/isy994/__init__.pyi +6 -7
- homeassistant-stubs/components/isy994/binary_sensor.pyi +3 -4
- homeassistant-stubs/components/isy994/button.pyi +2 -3
- homeassistant-stubs/components/isy994/climate.pyi +3 -4
- homeassistant-stubs/components/isy994/config_flow.pyi +4 -3
- homeassistant-stubs/components/isy994/cover.pyi +3 -5
- homeassistant-stubs/components/isy994/fan.pyi +3 -5
- homeassistant-stubs/components/isy994/light.pyi +3 -4
- homeassistant-stubs/components/isy994/lock.pyi +2 -5
- homeassistant-stubs/components/isy994/models.pyi +2 -0
- homeassistant-stubs/components/isy994/number.pyi +3 -4
- homeassistant-stubs/components/isy994/select.pyi +3 -4
- homeassistant-stubs/components/isy994/sensor.pyi +3 -4
- homeassistant-stubs/components/isy994/services.pyi +1 -1
- homeassistant-stubs/components/isy994/switch.pyi +2 -4
- homeassistant-stubs/components/isy994/system_health.pyi +1 -3
- homeassistant-stubs/components/isy994/util.pyi +3 -2
- homeassistant-stubs/components/jellyfin/__init__.pyi +1 -1
- homeassistant-stubs/components/jellyfin/entity.pyi +2 -2
- homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +3 -2
- homeassistant-stubs/components/jewish_calendar/config_flow.pyi +3 -2
- homeassistant-stubs/components/jewish_calendar/const.pyi +1 -0
- homeassistant-stubs/components/jewish_calendar/diagnostics.pyi +11 -0
- homeassistant-stubs/components/jewish_calendar/entity.pyi +12 -5
- homeassistant-stubs/components/jewish_calendar/sensor.pyi +34 -15
- homeassistant-stubs/components/jewish_calendar/service.pyi +1 -0
- homeassistant-stubs/components/kaleidescape/entity.pyi +1 -0
- homeassistant-stubs/components/kaleidescape/media_player.pyi +1 -0
- homeassistant-stubs/components/kaleidescape/remote.pyi +1 -0
- homeassistant-stubs/components/kaleidescape/sensor.pyi +1 -0
- homeassistant-stubs/components/knocki/config_flow.pyi +2 -0
- homeassistant-stubs/components/knx/const.pyi +7 -0
- homeassistant-stubs/components/knx/cover.pyi +20 -9
- homeassistant-stubs/components/knx/schema.pyi +1 -6
- homeassistant-stubs/components/knx/storage/const.pyi +6 -0
- homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +4 -3
- homeassistant-stubs/components/lcn/config_flow.pyi +0 -2
- homeassistant-stubs/components/lcn/const.pyi +3 -1
- homeassistant-stubs/components/lcn/cover.pyi +7 -2
- homeassistant-stubs/components/lcn/entity.pyi +1 -0
- homeassistant-stubs/components/lcn/helpers.pyi +0 -1
- homeassistant-stubs/components/lcn/schemas.pyi +1 -1
- homeassistant-stubs/components/lcn/services.pyi +2 -3
- homeassistant-stubs/components/litterrobot/entity.pyi +1 -1
- homeassistant-stubs/components/matter/select.pyi +2 -0
- homeassistant-stubs/components/matter/sensor.pyi +3 -1
- homeassistant-stubs/components/media_player/intent.pyi +11 -1
- homeassistant-stubs/components/metoffice/__init__.pyi +3 -5
- homeassistant-stubs/components/metoffice/config_flow.pyi +4 -2
- homeassistant-stubs/components/metoffice/const.pyi +7 -6
- homeassistant-stubs/components/metoffice/helpers.pyi +5 -6
- homeassistant-stubs/components/metoffice/sensor.pyi +15 -13
- homeassistant-stubs/components/metoffice/weather.pyi +23 -11
- homeassistant-stubs/components/miele/__init__.pyi +15 -0
- homeassistant-stubs/components/miele/api.pyi +9 -0
- homeassistant-stubs/components/miele/application_credentials.pyi +5 -0
- homeassistant-stubs/components/miele/binary_sensor.pyi +34 -0
- homeassistant-stubs/components/miele/button.pyi +32 -0
- homeassistant-stubs/components/miele/climate.pyi +55 -0
- homeassistant-stubs/components/miele/config_flow.pyi +17 -0
- homeassistant-stubs/components/miele/const.pyi +127 -0
- homeassistant-stubs/components/miele/coordinator.pyi +29 -0
- homeassistant-stubs/components/miele/diagnostics.pyi +13 -0
- homeassistant-stubs/components/miele/entity.pyi +24 -0
- homeassistant-stubs/components/miele/fan.pyi +39 -0
- homeassistant-stubs/components/miele/light.pyi +39 -0
- homeassistant-stubs/components/miele/sensor.pyi +72 -0
- homeassistant-stubs/components/miele/switch.pyi +52 -0
- homeassistant-stubs/components/miele/vacuum.pyi +84 -0
- homeassistant-stubs/components/minecraft_server/api.pyi +1 -1
- homeassistant-stubs/components/modbus/__init__.pyi +1 -1
- homeassistant-stubs/components/modbus/const.pyi +9 -0
- homeassistant-stubs/components/modbus/light.pyi +24 -1
- homeassistant-stubs/components/modbus/sensor.pyi +5 -3
- homeassistant-stubs/components/mqtt/binary_sensor.pyi +1 -2
- homeassistant-stubs/components/mqtt/button.pyi +1 -3
- homeassistant-stubs/components/mqtt/config_flow.pyi +26 -9
- homeassistant-stubs/components/mqtt/const.pyi +57 -0
- homeassistant-stubs/components/mqtt/cover.pyi +1 -25
- homeassistant-stubs/components/mqtt/fan.pyi +1 -31
- homeassistant-stubs/components/mqtt/sensor.pyi +1 -1
- homeassistant-stubs/components/mqtt/switch.pyi +1 -5
- homeassistant-stubs/components/music_assistant/media_player.pyi +6 -2
- homeassistant-stubs/components/number/const.pyi +3 -2
- homeassistant-stubs/components/nut/__init__.pyi +1 -1
- homeassistant-stubs/components/openai_conversation/conversation.pyi +2 -0
- homeassistant-stubs/components/openuv/binary_sensor.pyi +2 -1
- homeassistant-stubs/components/openuv/entity.pyi +1 -0
- homeassistant-stubs/components/otbr/util.pyi +1 -3
- homeassistant-stubs/components/pandora/__init__.pyi +1 -0
- homeassistant-stubs/components/pandora/media_player.pyi +14 -13
- homeassistant-stubs/components/paperless_ngx/__init__.pyi +13 -0
- homeassistant-stubs/components/paperless_ngx/config_flow.pyi +16 -0
- homeassistant-stubs/components/paperless_ngx/const.pyi +4 -0
- homeassistant-stubs/components/paperless_ngx/coordinator.pyi +39 -0
- homeassistant-stubs/components/{rtsp_to_webrtc → paperless_ngx}/diagnostics.pyi +2 -2
- homeassistant-stubs/components/paperless_ngx/entity.pyi +16 -0
- homeassistant-stubs/components/paperless_ngx/sensor.pyi +27 -0
- homeassistant-stubs/components/plugwise/coordinator.pyi +2 -2
- homeassistant-stubs/components/qbus/climate.pyi +1 -0
- homeassistant-stubs/components/qbus/entity.pyi +3 -3
- homeassistant-stubs/components/qbus/light.pyi +1 -0
- homeassistant-stubs/components/qbus/scene.pyi +21 -0
- homeassistant-stubs/components/qbus/switch.pyi +1 -0
- homeassistant-stubs/components/recorder/services.pyi +7 -1
- homeassistant-stubs/components/recorder/statistics.pyi +1 -1
- homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
- homeassistant-stubs/components/reolink/__init__.pyi +3 -1
- homeassistant-stubs/components/reolink/const.pyi +5 -0
- homeassistant-stubs/components/reolink/host.pyi +3 -3
- homeassistant-stubs/components/reolink/media_source.pyi +2 -1
- homeassistant-stubs/components/reolink/views.pyi +1 -0
- homeassistant-stubs/components/repairs/websocket_api.pyi +0 -1
- homeassistant-stubs/components/samsungtv/__init__.pyi +5 -5
- homeassistant-stubs/components/samsungtv/bridge.pyi +2 -1
- homeassistant-stubs/components/samsungtv/config_flow.pyi +4 -4
- homeassistant-stubs/components/samsungtv/entity.pyi +1 -1
- homeassistant-stubs/components/samsungtv/media_player.pyi +2 -1
- homeassistant-stubs/components/sensor/__init__.pyi +1 -0
- homeassistant-stubs/components/sensor/const.pyi +5 -2
- homeassistant-stubs/components/sensor/device_condition.pyi +1 -0
- homeassistant-stubs/components/sensor/device_trigger.pyi +1 -0
- homeassistant-stubs/components/shelly/__init__.pyi +1 -1
- homeassistant-stubs/components/shelly/binary_sensor.pyi +3 -2
- homeassistant-stubs/components/shelly/button.pyi +5 -4
- homeassistant-stubs/components/shelly/climate.pyi +5 -5
- homeassistant-stubs/components/shelly/const.pyi +2 -0
- homeassistant-stubs/components/shelly/cover.pyi +2 -0
- homeassistant-stubs/components/shelly/entity.pyi +4 -2
- homeassistant-stubs/components/shelly/event.pyi +4 -2
- homeassistant-stubs/components/shelly/light.pyi +2 -0
- homeassistant-stubs/components/shelly/number.pyi +3 -2
- homeassistant-stubs/components/shelly/select.pyi +2 -0
- homeassistant-stubs/components/shelly/sensor.pyi +9 -2
- homeassistant-stubs/components/shelly/switch.pyi +2 -2
- homeassistant-stubs/components/shelly/text.pyi +2 -0
- homeassistant-stubs/components/shelly/update.pyi +1 -0
- homeassistant-stubs/components/shelly/utils.pyi +14 -7
- homeassistant-stubs/components/shelly/valve.pyi +2 -0
- homeassistant-stubs/components/smlight/button.pyi +3 -2
- homeassistant-stubs/components/squeezebox/__init__.pyi +1 -1
- homeassistant-stubs/components/squeezebox/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/squeezebox/browse_media.pyi +1 -1
- homeassistant-stubs/components/squeezebox/button.pyi +3 -0
- homeassistant-stubs/components/squeezebox/const.pyi +12 -2
- homeassistant-stubs/components/squeezebox/coordinator.pyi +7 -3
- homeassistant-stubs/components/squeezebox/media_player.pyi +3 -1
- homeassistant-stubs/components/squeezebox/sensor.pyi +1 -0
- homeassistant-stubs/components/squeezebox/switch.pyi +47 -0
- homeassistant-stubs/components/squeezebox/update.pyi +50 -0
- homeassistant-stubs/components/statistics/__init__.pyi +2 -1
- homeassistant-stubs/components/suez_water/coordinator.pyi +19 -4
- homeassistant-stubs/components/suez_water/sensor.pyi +2 -0
- homeassistant-stubs/components/sun/condition.pyi +13 -0
- homeassistant-stubs/components/switch_as_x/__init__.pyi +16 -3
- homeassistant-stubs/components/switchbot_cloud/__init__.pyi +15 -9
- homeassistant-stubs/components/switchbot_cloud/binary_sensor.pyi +29 -0
- homeassistant-stubs/components/switchbot_cloud/coordinator.pyi +6 -1
- homeassistant-stubs/components/threshold/__init__.pyi +2 -1
- homeassistant-stubs/components/tibber/coordinator.pyi +1 -0
- homeassistant-stubs/components/tibber/notify.pyi +2 -2
- homeassistant-stubs/components/tibber/sensor.pyi +1 -1
- homeassistant-stubs/components/trend/__init__.pyi +2 -1
- homeassistant-stubs/components/tts/__init__.pyi +4 -1
- homeassistant-stubs/components/tts/const.pyi +1 -0
- homeassistant-stubs/components/tts/entity.pyi +4 -0
- homeassistant-stubs/components/tts/legacy.pyi +3 -1
- homeassistant-stubs/components/tts/media_source.pyi +5 -2
- homeassistant-stubs/components/unifi/__init__.pyi +1 -1
- homeassistant-stubs/components/unifi/config_flow.pyi +2 -2
- homeassistant-stubs/components/unifi/device_tracker.pyi +1 -0
- homeassistant-stubs/components/unifi/services.pyi +1 -0
- homeassistant-stubs/components/uptimerobot/coordinator.pyi +0 -1
- homeassistant-stubs/components/uptimerobot/switch.pyi +2 -1
- homeassistant-stubs/components/wallbox/const.pyi +10 -0
- homeassistant-stubs/components/wallbox/coordinator.pyi +4 -1
- homeassistant-stubs/components/wallbox/select.pyi +29 -0
- homeassistant-stubs/components/wallbox/sensor.pyi +1 -1
- homeassistant-stubs/components/wemo/device_trigger.pyi +1 -1
- homeassistant-stubs/components/wemo/light.pyi +1 -0
- homeassistant-stubs/components/whois/const.pyi +1 -0
- homeassistant-stubs/components/whois/sensor.pyi +2 -1
- homeassistant-stubs/components/withings/application_credentials.pyi +2 -0
- homeassistant-stubs/components/youtube/sensor.pyi +1 -1
- homeassistant-stubs/components/zwave_js/__init__.pyi +1 -3
- homeassistant-stubs/components/zwave_js/api.pyi +1 -2
- homeassistant-stubs/components/zwave_js/config_flow.pyi +8 -8
- homeassistant-stubs/components/zwave_js/const.pyi +2 -3
- homeassistant-stubs/config_entries.pyi +0 -1
- homeassistant-stubs/const.pyi +5 -0
- homeassistant-stubs/core_config.pyi +0 -2
- homeassistant-stubs/helpers/condition.pyi +1 -6
- homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +10 -0
- homeassistant-stubs/helpers/config_validation.pyi +7 -2
- homeassistant-stubs/helpers/device.pyi +1 -1
- homeassistant-stubs/helpers/device_registry.pyi +4 -4
- homeassistant-stubs/helpers/entity_component.pyi +5 -2
- homeassistant-stubs/helpers/entity_platform.pyi +4 -1
- homeassistant-stubs/helpers/entity_registry.pyi +7 -6
- homeassistant-stubs/helpers/helper_integration.pyi +6 -0
- homeassistant-stubs/helpers/selector.pyi +55 -50
- homeassistant-stubs/helpers/service.pyi +3 -3
- homeassistant-stubs/helpers/template.pyi +4 -1
- homeassistant-stubs/scripts/check_config.pyi +1 -1
- homeassistant-stubs/util/aiohttp.pyi +5 -0
- homeassistant-stubs/util/unit_conversion.pyi +11 -1
- {homeassistant_stubs-2025.5.2.dist-info → homeassistant_stubs-2025.6.0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.5.2.dist-info → homeassistant_stubs-2025.6.0.dist-info}/RECORD +420 -361
- homeassistant-stubs/components/metoffice/data.pyi +0 -10
- homeassistant-stubs/components/rtsp_to_webrtc/__init__.pyi +0 -19
- homeassistant-stubs/components/rtsp_to_webrtc/config_flow.pyi +0 -24
- {homeassistant_stubs-2025.5.2.dist-info → homeassistant_stubs-2025.6.0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.5.2.dist-info → homeassistant_stubs-2025.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,9 +1,12 @@
|
|
1
|
-
from .const import DOMAIN as DOMAIN
|
1
|
+
from .const import DOMAIN as DOMAIN, ENTRY_TITLE as ENTRY_TITLE
|
2
2
|
from .coordinator import SwitchBotCoordinator as SwitchBotCoordinator
|
3
3
|
from _typeshed import Incomplete
|
4
|
+
from aiohttp import web as web
|
5
|
+
from collections.abc import Awaitable, Callable as Callable
|
4
6
|
from dataclasses import dataclass, field
|
7
|
+
from homeassistant.components import webhook as webhook
|
5
8
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
6
|
-
from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_API_TOKEN as CONF_API_TOKEN, Platform as Platform
|
9
|
+
from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_API_TOKEN as CONF_API_TOKEN, CONF_WEBHOOK_ID as CONF_WEBHOOK_ID, Platform as Platform
|
7
10
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
11
|
from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
|
9
12
|
from switchbot_api import Device, Remote, SwitchBotAPI
|
@@ -13,20 +16,23 @@ PLATFORMS: list[Platform]
|
|
13
16
|
|
14
17
|
@dataclass
|
15
18
|
class SwitchbotDevices:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
binary_sensors: list[tuple[Device, SwitchBotCoordinator]] = field(default_factory=list)
|
20
|
+
buttons: list[tuple[Device, SwitchBotCoordinator]] = field(default_factory=list)
|
21
|
+
climates: list[tuple[Remote, SwitchBotCoordinator]] = field(default_factory=list)
|
22
|
+
switches: list[tuple[Device | Remote, SwitchBotCoordinator]] = field(default_factory=list)
|
23
|
+
sensors: list[tuple[Device, SwitchBotCoordinator]] = field(default_factory=list)
|
24
|
+
vacuums: list[tuple[Device, SwitchBotCoordinator]] = field(default_factory=list)
|
25
|
+
locks: list[tuple[Device, SwitchBotCoordinator]] = field(default_factory=list)
|
22
26
|
|
23
27
|
@dataclass
|
24
28
|
class SwitchbotCloudData:
|
25
29
|
api: SwitchBotAPI
|
26
30
|
devices: SwitchbotDevices
|
27
31
|
|
28
|
-
async def coordinator_for_device(hass: HomeAssistant, entry: ConfigEntry, api: SwitchBotAPI, device: Device | Remote, coordinators_by_id: dict[str, SwitchBotCoordinator]) -> SwitchBotCoordinator: ...
|
32
|
+
async def coordinator_for_device(hass: HomeAssistant, entry: ConfigEntry, api: SwitchBotAPI, device: Device | Remote, coordinators_by_id: dict[str, SwitchBotCoordinator], manageable_by_webhook: bool = False) -> SwitchBotCoordinator: ...
|
29
33
|
async def make_switchbot_devices(hass: HomeAssistant, entry: ConfigEntry, api: SwitchBotAPI, devices: list[Device | Remote], coordinators_by_id: dict[str, SwitchBotCoordinator]) -> SwitchbotDevices: ...
|
30
34
|
async def make_device_data(hass: HomeAssistant, entry: ConfigEntry, api: SwitchBotAPI, device: Device | Remote, devices_data: SwitchbotDevices, coordinators_by_id: dict[str, SwitchBotCoordinator]) -> None: ...
|
31
35
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
32
36
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
37
|
+
async def _initialize_webhook(hass: HomeAssistant, entry: ConfigEntry, api: SwitchBotAPI, coordinators_by_id: dict[str, SwitchBotCoordinator]) -> None: ...
|
38
|
+
def _create_handle_webhook(coordinators_by_id: dict[str, SwitchBotCoordinator]) -> Callable[[HomeAssistant, str, web.Request], Awaitable[None]]: ...
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from . import SwitchbotCloudData as SwitchbotCloudData
|
2
|
+
from .const import DOMAIN as DOMAIN
|
3
|
+
from .coordinator import SwitchBotCoordinator as SwitchBotCoordinator
|
4
|
+
from .entity import SwitchBotCloudEntity as SwitchBotCloudEntity
|
5
|
+
from _typeshed import Incomplete
|
6
|
+
from dataclasses import dataclass
|
7
|
+
from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
|
8
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
9
|
+
from homeassistant.const import EntityCategory as EntityCategory
|
10
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
11
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
12
|
+
from switchbot_api import Device as Device, SwitchBotAPI as SwitchBotAPI
|
13
|
+
|
14
|
+
@dataclass(frozen=True)
|
15
|
+
class SwitchBotCloudBinarySensorEntityDescription(BinarySensorEntityDescription):
|
16
|
+
on_value: bool | str = ...
|
17
|
+
|
18
|
+
CALIBRATION_DESCRIPTION: Incomplete
|
19
|
+
DOOR_OPEN_DESCRIPTION: Incomplete
|
20
|
+
BINARY_SENSOR_DESCRIPTIONS_BY_DEVICE_TYPES: Incomplete
|
21
|
+
|
22
|
+
async def async_setup_entry(hass: HomeAssistant, config: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
23
|
+
|
24
|
+
class SwitchBotCloudBinarySensor(SwitchBotCloudEntity, BinarySensorEntity):
|
25
|
+
entity_description: SwitchBotCloudBinarySensorEntityDescription
|
26
|
+
_attr_unique_id: Incomplete
|
27
|
+
def __init__(self, api: SwitchBotAPI, device: Device, coordinator: SwitchBotCoordinator, description: SwitchBotCloudBinarySensorEntityDescription) -> None: ...
|
28
|
+
@property
|
29
|
+
def is_on(self) -> bool | None: ...
|
@@ -13,6 +13,11 @@ class SwitchBotCoordinator(DataUpdateCoordinator[Status]):
|
|
13
13
|
config_entry: ConfigEntry
|
14
14
|
_api: SwitchBotAPI
|
15
15
|
_device_id: str
|
16
|
+
_manageable_by_webhook: bool
|
17
|
+
_webhooks_connected: bool
|
16
18
|
_should_poll: Incomplete
|
17
|
-
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, api: SwitchBotAPI, device: Device | Remote) -> None: ...
|
19
|
+
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, api: SwitchBotAPI, device: Device | Remote, manageable_by_webhook: bool) -> None: ...
|
20
|
+
update_interval: Incomplete
|
21
|
+
def webhook_subscription_listener(self, connected: bool) -> None: ...
|
22
|
+
def manageable_by_webhook(self) -> bool: ...
|
18
23
|
async def _async_update_data(self) -> Status: ...
|
@@ -1,7 +1,8 @@
|
|
1
1
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
2
2
|
from homeassistant.const import CONF_ENTITY_ID as CONF_ENTITY_ID, Platform as Platform
|
3
3
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
4
|
-
from homeassistant.helpers.device import async_remove_stale_devices_links_keep_entity_device as async_remove_stale_devices_links_keep_entity_device
|
4
|
+
from homeassistant.helpers.device import async_entity_id_to_device_id as async_entity_id_to_device_id, async_remove_stale_devices_links_keep_entity_device as async_remove_stale_devices_links_keep_entity_device
|
5
|
+
from homeassistant.helpers.helper_integration import async_handle_source_entity_changes as async_handle_source_entity_changes
|
5
6
|
|
6
7
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
7
8
|
async def config_entry_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import tibber
|
2
|
+
from .const import DOMAIN as DOMAIN
|
2
3
|
from _typeshed import Incomplete
|
3
4
|
from homeassistant.components.recorder import get_instance as get_instance
|
4
5
|
from homeassistant.components.recorder.models import StatisticData as StatisticData, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from . import DOMAIN as
|
1
|
+
from . import DOMAIN as DOMAIN
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from homeassistant.components.notify import ATTR_TITLE_DEFAULT as ATTR_TITLE_DEFAULT, NotifyEntity as NotifyEntity, NotifyEntityFeature as NotifyEntityFeature
|
4
4
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
@@ -11,7 +11,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_e
|
|
11
11
|
|
12
12
|
class TibberNotificationEntity(NotifyEntity):
|
13
13
|
_attr_supported_features: Incomplete
|
14
|
-
_attr_name =
|
14
|
+
_attr_name = DOMAIN
|
15
15
|
_attr_icon: str
|
16
16
|
_attr_unique_id: Incomplete
|
17
17
|
def __init__(self, unique_id: str) -> None: ...
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import datetime
|
2
2
|
import tibber
|
3
|
-
from .const import MANUFACTURER as MANUFACTURER
|
3
|
+
from .const import DOMAIN as DOMAIN, MANUFACTURER as MANUFACTURER
|
4
4
|
from .coordinator import TibberDataCoordinator as TibberDataCoordinator
|
5
5
|
from _typeshed import Incomplete
|
6
6
|
from collections.abc import Callable as Callable
|
@@ -2,7 +2,8 @@ from _typeshed import Incomplete
|
|
2
2
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
3
3
|
from homeassistant.const import CONF_ENTITY_ID as CONF_ENTITY_ID, Platform as Platform
|
4
4
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
5
|
-
from homeassistant.helpers.device import async_remove_stale_devices_links_keep_entity_device as async_remove_stale_devices_links_keep_entity_device
|
5
|
+
from homeassistant.helpers.device import async_entity_id_to_device_id as async_entity_id_to_device_id, async_remove_stale_devices_links_keep_entity_device as async_remove_stale_devices_links_keep_entity_device
|
6
|
+
from homeassistant.helpers.helper_integration import async_handle_source_entity_changes as async_handle_source_entity_changes
|
6
7
|
|
7
8
|
PLATFORMS: Incomplete
|
8
9
|
|
@@ -52,10 +52,13 @@ class ResultStream:
|
|
52
52
|
use_file_cache: bool
|
53
53
|
language: str
|
54
54
|
options: dict
|
55
|
+
supports_streaming_input: bool
|
55
56
|
_manager: SpeechManager
|
56
57
|
@cached_property
|
57
58
|
def url(self) -> str: ...
|
58
59
|
@cached_property
|
60
|
+
def media_source_id(self) -> str: ...
|
61
|
+
@cached_property
|
59
62
|
def _result_cache(self) -> asyncio.Future[TTSCache]: ...
|
60
63
|
@callback
|
61
64
|
def async_set_message(self, message: str) -> None: ...
|
@@ -109,7 +112,7 @@ class SpeechManager:
|
|
109
112
|
@callback
|
110
113
|
def async_cache_message_in_memory(self, engine: str, message: str, use_file_cache: bool, language: str, options: dict) -> TTSCache: ...
|
111
114
|
async def _load_data_into_cache(self, cache: TTSCache, engine_instance: TextToSpeechEntity | Provider, message: str, store_to_disk: bool, language: str, options: dict) -> None: ...
|
112
|
-
async def _async_generate_tts_audio(self, engine_instance: TextToSpeechEntity | Provider,
|
115
|
+
async def _async_generate_tts_audio(self, engine_instance: TextToSpeechEntity | Provider, message_or_stream: str | AsyncGenerator[str], language: str, options: dict[str, Any]) -> AsyncGenerator[bytes]: ...
|
113
116
|
async def _async_load_file(self, cache_key: str) -> AsyncGenerator[bytes]: ...
|
114
117
|
@staticmethod
|
115
118
|
def write_tags(filename: str, data: bytes, engine_name: str, message: str, language: str, options: dict | None) -> bytes: ...
|
@@ -43,12 +43,16 @@ class TextToSpeechEntity(RestoreEntity, cached_properties=CACHED_PROPERTIES_WITH
|
|
43
43
|
def supported_options(self) -> list[str] | None: ...
|
44
44
|
@cached_property
|
45
45
|
def default_options(self) -> Mapping[str, Any] | None: ...
|
46
|
+
@classmethod
|
47
|
+
def async_supports_streaming_input(cls) -> bool: ...
|
46
48
|
@callback
|
47
49
|
def async_get_supported_voices(self, language: str) -> list[Voice] | None: ...
|
48
50
|
async def async_internal_added_to_hass(self) -> None: ...
|
49
51
|
async def async_speak(self, media_player_entity_id: list[str], message: str, cache: bool, language: str | None = None, options: dict | None = None) -> None: ...
|
50
52
|
@final
|
51
53
|
async def internal_async_stream_tts_audio(self, request: TTSAudioRequest) -> TTSAudioResponse: ...
|
54
|
+
@final
|
55
|
+
async def async_internal_get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
|
52
56
|
async def async_stream_tts_audio(self, request: TTSAudioRequest) -> TTSAudioResponse: ...
|
53
57
|
def get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
|
54
58
|
async def async_get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
|
@@ -14,7 +14,7 @@ from homeassistant.helpers.service import async_set_service_schema as async_set_
|
|
14
14
|
from homeassistant.helpers.typing import ConfigType as ConfigType, DiscoveryInfoType as DiscoveryInfoType
|
15
15
|
from homeassistant.setup import SetupPhases as SetupPhases, async_prepare_setup_platform as async_prepare_setup_platform, async_start_setup as async_start_setup
|
16
16
|
from homeassistant.util.yaml import load_yaml_dict as load_yaml_dict
|
17
|
-
from typing import Any
|
17
|
+
from typing import Any, final
|
18
18
|
|
19
19
|
_LOGGER: Incomplete
|
20
20
|
CONF_SERVICE_NAME: str
|
@@ -45,3 +45,5 @@ class Provider(metaclass=abc.ABCMeta):
|
|
45
45
|
def default_options(self) -> Mapping[str, Any] | None: ...
|
46
46
|
def get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
|
47
47
|
async def async_get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
|
48
|
+
@final
|
49
|
+
async def async_internal_get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import DATA_COMPONENT as DATA_COMPONENT, DATA_TTS_MANAGER as DATA_TTS_MANAGER, DOMAIN as DOMAIN
|
1
|
+
from .const import DATA_COMPONENT as DATA_COMPONENT, DATA_TTS_MANAGER as DATA_TTS_MANAGER, DOMAIN as DOMAIN, MEDIA_SOURCE_STREAM_PATH as MEDIA_SOURCE_STREAM_PATH
|
2
2
|
from .helper import get_engine_instance as get_engine_instance
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from homeassistant.components.media_player import BrowseError as BrowseError, MediaClass as MediaClass
|
@@ -23,8 +23,11 @@ class ParsedMediaSourceId(TypedDict):
|
|
23
23
|
options: MediaSourceOptions
|
24
24
|
message: str
|
25
25
|
|
26
|
+
class ParsedMediaSourceStreamId(TypedDict):
|
27
|
+
stream: str
|
28
|
+
|
26
29
|
@callback
|
27
|
-
def parse_media_source_id(media_source_id: str) -> ParsedMediaSourceId: ...
|
30
|
+
def parse_media_source_id(media_source_id: str) -> ParsedMediaSourceId | ParsedMediaSourceStreamId: ...
|
28
31
|
|
29
32
|
class TTSMediaSource(MediaSource):
|
30
33
|
name: str
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import PLATFORMS as PLATFORMS, UNIFI_WIRELESS_CLIENTS as UNIFI_WIRELESS_CLIENTS
|
1
|
+
from .const import DOMAIN as DOMAIN, PLATFORMS as PLATFORMS, UNIFI_WIRELESS_CLIENTS as UNIFI_WIRELESS_CLIENTS
|
2
2
|
from .errors import AuthenticationRequired as AuthenticationRequired, CannotConnect as CannotConnect
|
3
3
|
from .hub import UnifiHub as UnifiHub, get_unifi_api as get_unifi_api
|
4
4
|
from .services import async_setup_services as async_setup_services
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import voluptuous as vol
|
2
2
|
from . import UnifiConfigEntry as UnifiConfigEntry
|
3
|
-
from .const import CONF_ALLOW_BANDWIDTH_SENSORS as CONF_ALLOW_BANDWIDTH_SENSORS, CONF_ALLOW_UPTIME_SENSORS as CONF_ALLOW_UPTIME_SENSORS, CONF_BLOCK_CLIENT as CONF_BLOCK_CLIENT, CONF_CLIENT_SOURCE as CONF_CLIENT_SOURCE, CONF_DETECTION_TIME as CONF_DETECTION_TIME, CONF_DPI_RESTRICTIONS as CONF_DPI_RESTRICTIONS, CONF_IGNORE_WIRED_BUG as CONF_IGNORE_WIRED_BUG, CONF_SITE_ID as CONF_SITE_ID, CONF_SSID_FILTER as CONF_SSID_FILTER, CONF_TRACK_CLIENTS as CONF_TRACK_CLIENTS, CONF_TRACK_DEVICES as CONF_TRACK_DEVICES, CONF_TRACK_WIRED_CLIENTS as CONF_TRACK_WIRED_CLIENTS, DEFAULT_DPI_RESTRICTIONS as DEFAULT_DPI_RESTRICTIONS, DOMAIN as
|
3
|
+
from .const import CONF_ALLOW_BANDWIDTH_SENSORS as CONF_ALLOW_BANDWIDTH_SENSORS, CONF_ALLOW_UPTIME_SENSORS as CONF_ALLOW_UPTIME_SENSORS, CONF_BLOCK_CLIENT as CONF_BLOCK_CLIENT, CONF_CLIENT_SOURCE as CONF_CLIENT_SOURCE, CONF_DETECTION_TIME as CONF_DETECTION_TIME, CONF_DPI_RESTRICTIONS as CONF_DPI_RESTRICTIONS, CONF_IGNORE_WIRED_BUG as CONF_IGNORE_WIRED_BUG, CONF_SITE_ID as CONF_SITE_ID, CONF_SSID_FILTER as CONF_SSID_FILTER, CONF_TRACK_CLIENTS as CONF_TRACK_CLIENTS, CONF_TRACK_DEVICES as CONF_TRACK_DEVICES, CONF_TRACK_WIRED_CLIENTS as CONF_TRACK_WIRED_CLIENTS, DEFAULT_DPI_RESTRICTIONS as DEFAULT_DPI_RESTRICTIONS, DOMAIN as DOMAIN
|
4
4
|
from .errors import AuthenticationRequired as AuthenticationRequired, CannotConnect as CannotConnect
|
5
5
|
from .hub import UnifiHub as UnifiHub, get_unifi_api as get_unifi_api
|
6
6
|
from _typeshed import Incomplete
|
@@ -18,7 +18,7 @@ DEFAULT_SITE_ID: str
|
|
18
18
|
DEFAULT_VERIFY_SSL: bool
|
19
19
|
MODEL_PORTS: Incomplete
|
20
20
|
|
21
|
-
class UnifiFlowHandler(ConfigFlow, domain=
|
21
|
+
class UnifiFlowHandler(ConfigFlow, domain=DOMAIN):
|
22
22
|
VERSION: int
|
23
23
|
sites: Sites
|
24
24
|
@staticmethod
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import aiounifi
|
2
2
|
from . import UnifiConfigEntry as UnifiConfigEntry
|
3
|
+
from .const import DOMAIN as DOMAIN
|
3
4
|
from .entity import HandlerT as HandlerT, UnifiEntity as UnifiEntity, UnifiEntityDescription as UnifiEntityDescription, async_device_available_fn as async_device_available_fn
|
4
5
|
from .hub import UnifiHub as UnifiHub
|
5
6
|
from _typeshed import Incomplete
|
@@ -9,7 +9,6 @@ from pyuptimerobot import UptimeRobot as UptimeRobot, UptimeRobotMonitor
|
|
9
9
|
type UptimeRobotConfigEntry = ConfigEntry[UptimeRobotDataUpdateCoordinator]
|
10
10
|
class UptimeRobotDataUpdateCoordinator(DataUpdateCoordinator[list[UptimeRobotMonitor]]):
|
11
11
|
config_entry: UptimeRobotConfigEntry
|
12
|
-
_device_registry: Incomplete
|
13
12
|
api: Incomplete
|
14
13
|
def __init__(self, hass: HomeAssistant, config_entry: UptimeRobotConfigEntry, api: UptimeRobot) -> None: ...
|
15
14
|
async def _async_update_data(self) -> list[UptimeRobotMonitor]: ...
|
@@ -1,8 +1,9 @@
|
|
1
|
-
from .const import API_ATTR_OK as API_ATTR_OK,
|
1
|
+
from .const import API_ATTR_OK as API_ATTR_OK, DOMAIN as DOMAIN
|
2
2
|
from .coordinator import UptimeRobotConfigEntry as UptimeRobotConfigEntry
|
3
3
|
from .entity import UptimeRobotEntity as UptimeRobotEntity
|
4
4
|
from homeassistant.components.switch import SwitchDeviceClass as SwitchDeviceClass, SwitchEntity as SwitchEntity, SwitchEntityDescription as SwitchEntityDescription
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
6
7
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
7
8
|
from typing import Any
|
8
9
|
|
@@ -8,6 +8,8 @@ CODE_KEY: str
|
|
8
8
|
CONF_STATION: str
|
9
9
|
CHARGER_ADDED_DISCHARGED_ENERGY_KEY: str
|
10
10
|
CHARGER_ADDED_ENERGY_KEY: str
|
11
|
+
CHARGER_ADDED_GREEN_ENERGY_KEY: str
|
12
|
+
CHARGER_ADDED_GRID_ENERGY_KEY: str
|
11
13
|
CHARGER_ADDED_RANGE_KEY: str
|
12
14
|
CHARGER_CHARGING_POWER_KEY: str
|
13
15
|
CHARGER_CHARGING_SPEED_KEY: str
|
@@ -35,6 +37,9 @@ CHARGER_STATE_OF_CHARGE_KEY: str
|
|
35
37
|
CHARGER_STATUS_ID_KEY: str
|
36
38
|
CHARGER_STATUS_DESCRIPTION_KEY: str
|
37
39
|
CHARGER_CONNECTIONS: str
|
40
|
+
CHARGER_ECO_SMART_KEY: str
|
41
|
+
CHARGER_ECO_SMART_STATUS_KEY: str
|
42
|
+
CHARGER_ECO_SMART_MODE_KEY: str
|
38
43
|
|
39
44
|
class ChargerStatus(StrEnum):
|
40
45
|
CHARGING = 'Charging'
|
@@ -55,3 +60,8 @@ class ChargerStatus(StrEnum):
|
|
55
60
|
WAITING_MID_SAFETY = 'Waiting MID safety margin exceeded'
|
56
61
|
WAITING_IN_QUEUE_ECO_SMART = 'Waiting in queue by Eco-Smart'
|
57
62
|
UNKNOWN = 'Unknown'
|
63
|
+
|
64
|
+
class EcoSmartMode(StrEnum):
|
65
|
+
OFF = 'off'
|
66
|
+
ECO_MODE = 'eco_mode'
|
67
|
+
FULL_SOLAR = 'full_solar'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import CHARGER_CURRENCY_KEY as CHARGER_CURRENCY_KEY, CHARGER_DATA_KEY as CHARGER_DATA_KEY, CHARGER_ENERGY_PRICE_KEY as CHARGER_ENERGY_PRICE_KEY, CHARGER_FEATURES_KEY as CHARGER_FEATURES_KEY, CHARGER_LOCKED_UNLOCKED_KEY as CHARGER_LOCKED_UNLOCKED_KEY, CHARGER_MAX_CHARGING_CURRENT_KEY as CHARGER_MAX_CHARGING_CURRENT_KEY, CHARGER_MAX_ICP_CURRENT_KEY as CHARGER_MAX_ICP_CURRENT_KEY, CHARGER_PLAN_KEY as CHARGER_PLAN_KEY, CHARGER_POWER_BOOST_KEY as CHARGER_POWER_BOOST_KEY, CHARGER_STATUS_DESCRIPTION_KEY as CHARGER_STATUS_DESCRIPTION_KEY, CHARGER_STATUS_ID_KEY as CHARGER_STATUS_ID_KEY, CODE_KEY as CODE_KEY, CONF_STATION as CONF_STATION, ChargerStatus as ChargerStatus, DOMAIN as DOMAIN, UPDATE_INTERVAL as UPDATE_INTERVAL
|
1
|
+
from .const import CHARGER_CURRENCY_KEY as CHARGER_CURRENCY_KEY, CHARGER_DATA_KEY as CHARGER_DATA_KEY, CHARGER_ECO_SMART_KEY as CHARGER_ECO_SMART_KEY, CHARGER_ECO_SMART_MODE_KEY as CHARGER_ECO_SMART_MODE_KEY, CHARGER_ECO_SMART_STATUS_KEY as CHARGER_ECO_SMART_STATUS_KEY, CHARGER_ENERGY_PRICE_KEY as CHARGER_ENERGY_PRICE_KEY, CHARGER_FEATURES_KEY as CHARGER_FEATURES_KEY, CHARGER_LOCKED_UNLOCKED_KEY as CHARGER_LOCKED_UNLOCKED_KEY, CHARGER_MAX_CHARGING_CURRENT_KEY as CHARGER_MAX_CHARGING_CURRENT_KEY, CHARGER_MAX_ICP_CURRENT_KEY as CHARGER_MAX_ICP_CURRENT_KEY, CHARGER_PLAN_KEY as CHARGER_PLAN_KEY, CHARGER_POWER_BOOST_KEY as CHARGER_POWER_BOOST_KEY, CHARGER_STATUS_DESCRIPTION_KEY as CHARGER_STATUS_DESCRIPTION_KEY, CHARGER_STATUS_ID_KEY as CHARGER_STATUS_ID_KEY, CODE_KEY as CODE_KEY, CONF_STATION as CONF_STATION, ChargerStatus as ChargerStatus, DOMAIN as DOMAIN, EcoSmartMode as EcoSmartMode, UPDATE_INTERVAL as UPDATE_INTERVAL
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from collections.abc import Callable as Callable
|
4
4
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
@@ -39,5 +39,8 @@ class WallboxCoordinator(DataUpdateCoordinator[dict[str, Any]]):
|
|
39
39
|
@_require_authentication
|
40
40
|
def _pause_charger(self, pause: bool) -> None: ...
|
41
41
|
async def async_pause_charger(self, pause: bool) -> None: ...
|
42
|
+
@_require_authentication
|
43
|
+
def _set_eco_smart(self, option: str) -> None: ...
|
44
|
+
async def async_set_eco_smart(self, option: str) -> None: ...
|
42
45
|
|
43
46
|
class InvalidAuth(HomeAssistantError): ...
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from .const import CHARGER_DATA_KEY as CHARGER_DATA_KEY, CHARGER_ECO_SMART_KEY as CHARGER_ECO_SMART_KEY, CHARGER_FEATURES_KEY as CHARGER_FEATURES_KEY, CHARGER_PLAN_KEY as CHARGER_PLAN_KEY, CHARGER_POWER_BOOST_KEY as CHARGER_POWER_BOOST_KEY, CHARGER_SERIAL_NUMBER_KEY as CHARGER_SERIAL_NUMBER_KEY, DOMAIN as DOMAIN, EcoSmartMode as EcoSmartMode
|
2
|
+
from .coordinator import WallboxCoordinator as WallboxCoordinator
|
3
|
+
from .entity import WallboxEntity as WallboxEntity
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from collections.abc import Awaitable, Callable as Callable
|
6
|
+
from dataclasses import dataclass
|
7
|
+
from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
|
8
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
9
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
10
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
11
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
12
|
+
|
13
|
+
@dataclass(frozen=True, kw_only=True)
|
14
|
+
class WallboxSelectEntityDescription(SelectEntityDescription):
|
15
|
+
current_option_fn: Callable[[WallboxCoordinator], str | None]
|
16
|
+
select_option_fn: Callable[[WallboxCoordinator, str], Awaitable[None]]
|
17
|
+
supported_fn: Callable[[WallboxCoordinator], bool]
|
18
|
+
|
19
|
+
SELECT_TYPES: dict[str, WallboxSelectEntityDescription]
|
20
|
+
|
21
|
+
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
22
|
+
|
23
|
+
class WallboxSelect(WallboxEntity, SelectEntity):
|
24
|
+
entity_description: WallboxSelectEntityDescription
|
25
|
+
_attr_unique_id: Incomplete
|
26
|
+
def __init__(self, coordinator: WallboxCoordinator, description: WallboxSelectEntityDescription) -> None: ...
|
27
|
+
@property
|
28
|
+
def current_option(self) -> str | None: ...
|
29
|
+
async def async_select_option(self, option: str) -> None: ...
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import CHARGER_ADDED_DISCHARGED_ENERGY_KEY as CHARGER_ADDED_DISCHARGED_ENERGY_KEY, CHARGER_ADDED_ENERGY_KEY as CHARGER_ADDED_ENERGY_KEY, CHARGER_ADDED_RANGE_KEY as CHARGER_ADDED_RANGE_KEY, CHARGER_CHARGING_POWER_KEY as CHARGER_CHARGING_POWER_KEY, CHARGER_CHARGING_SPEED_KEY as CHARGER_CHARGING_SPEED_KEY, CHARGER_COST_KEY as CHARGER_COST_KEY, CHARGER_CURRENCY_KEY as CHARGER_CURRENCY_KEY, CHARGER_CURRENT_MODE_KEY as CHARGER_CURRENT_MODE_KEY, CHARGER_DATA_KEY as CHARGER_DATA_KEY, CHARGER_DEPOT_PRICE_KEY as CHARGER_DEPOT_PRICE_KEY, CHARGER_ENERGY_PRICE_KEY as CHARGER_ENERGY_PRICE_KEY, CHARGER_MAX_AVAILABLE_POWER_KEY as CHARGER_MAX_AVAILABLE_POWER_KEY, CHARGER_MAX_CHARGING_CURRENT_KEY as CHARGER_MAX_CHARGING_CURRENT_KEY, CHARGER_MAX_ICP_CURRENT_KEY as CHARGER_MAX_ICP_CURRENT_KEY, CHARGER_SERIAL_NUMBER_KEY as CHARGER_SERIAL_NUMBER_KEY, CHARGER_STATE_OF_CHARGE_KEY as CHARGER_STATE_OF_CHARGE_KEY, CHARGER_STATUS_DESCRIPTION_KEY as CHARGER_STATUS_DESCRIPTION_KEY, DOMAIN as DOMAIN
|
1
|
+
from .const import CHARGER_ADDED_DISCHARGED_ENERGY_KEY as CHARGER_ADDED_DISCHARGED_ENERGY_KEY, CHARGER_ADDED_ENERGY_KEY as CHARGER_ADDED_ENERGY_KEY, CHARGER_ADDED_GREEN_ENERGY_KEY as CHARGER_ADDED_GREEN_ENERGY_KEY, CHARGER_ADDED_GRID_ENERGY_KEY as CHARGER_ADDED_GRID_ENERGY_KEY, CHARGER_ADDED_RANGE_KEY as CHARGER_ADDED_RANGE_KEY, CHARGER_CHARGING_POWER_KEY as CHARGER_CHARGING_POWER_KEY, CHARGER_CHARGING_SPEED_KEY as CHARGER_CHARGING_SPEED_KEY, CHARGER_COST_KEY as CHARGER_COST_KEY, CHARGER_CURRENCY_KEY as CHARGER_CURRENCY_KEY, CHARGER_CURRENT_MODE_KEY as CHARGER_CURRENT_MODE_KEY, CHARGER_DATA_KEY as CHARGER_DATA_KEY, CHARGER_DEPOT_PRICE_KEY as CHARGER_DEPOT_PRICE_KEY, CHARGER_ENERGY_PRICE_KEY as CHARGER_ENERGY_PRICE_KEY, CHARGER_MAX_AVAILABLE_POWER_KEY as CHARGER_MAX_AVAILABLE_POWER_KEY, CHARGER_MAX_CHARGING_CURRENT_KEY as CHARGER_MAX_CHARGING_CURRENT_KEY, CHARGER_MAX_ICP_CURRENT_KEY as CHARGER_MAX_ICP_CURRENT_KEY, CHARGER_SERIAL_NUMBER_KEY as CHARGER_SERIAL_NUMBER_KEY, CHARGER_STATE_OF_CHARGE_KEY as CHARGER_STATE_OF_CHARGE_KEY, CHARGER_STATUS_DESCRIPTION_KEY as CHARGER_STATUS_DESCRIPTION_KEY, DOMAIN as DOMAIN
|
2
2
|
from .coordinator import WallboxCoordinator as WallboxCoordinator
|
3
3
|
from .entity import WallboxEntity as WallboxEntity
|
4
4
|
from _typeshed import Incomplete
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import WEMO_SUBSCRIPTION_EVENT as WEMO_SUBSCRIPTION_EVENT
|
1
|
+
from .const import DOMAIN as DOMAIN, WEMO_SUBSCRIPTION_EVENT as WEMO_SUBSCRIPTION_EVENT
|
2
2
|
from .coordinator import async_get_coordinator as async_get_coordinator
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from homeassistant.components.device_automation import DEVICE_TRIGGER_BASE_SCHEMA as DEVICE_TRIGGER_BASE_SCHEMA
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from . import async_wemo_dispatcher_connect as async_wemo_dispatcher_connect
|
2
|
+
from .const import DOMAIN as DOMAIN
|
2
3
|
from .coordinator import DeviceCoordinator as DeviceCoordinator
|
3
4
|
from .entity import WemoBinaryStateEntity as WemoBinaryStateEntity, WemoEntity as WemoEntity
|
4
5
|
from _typeshed import Incomplete
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import ATTR_EXPIRES as ATTR_EXPIRES, ATTR_NAME_SERVERS as ATTR_NAME_SERVERS, ATTR_REGISTRAR as ATTR_REGISTRAR, ATTR_UPDATED as ATTR_UPDATED, DOMAIN as DOMAIN
|
1
|
+
from .const import ATTR_EXPIRES as ATTR_EXPIRES, ATTR_NAME_SERVERS as ATTR_NAME_SERVERS, ATTR_REGISTRAR as ATTR_REGISTRAR, ATTR_UPDATED as ATTR_UPDATED, DOMAIN as DOMAIN, STATUS_TYPES as STATUS_TYPES
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from collections.abc import Callable as Callable
|
4
4
|
from dataclasses import dataclass
|
@@ -18,6 +18,7 @@ class WhoisSensorEntityDescription(SensorEntityDescription):
|
|
18
18
|
|
19
19
|
def _days_until_expiration(domain: Domain) -> int | None: ...
|
20
20
|
def _ensure_timezone(timestamp: datetime | None) -> datetime | None: ...
|
21
|
+
def _get_status_type(status: str | None) -> str | None: ...
|
21
22
|
|
22
23
|
SENSORS: tuple[WhoisSensorEntityDescription, ...]
|
23
24
|
|
@@ -10,3 +10,5 @@ class WithingsLocalOAuth2Implementation(AuthImplementation):
|
|
10
10
|
async def _token_request(self, data: dict) -> dict: ...
|
11
11
|
async def async_resolve_external_data(self, external_data: Any) -> dict: ...
|
12
12
|
async def _async_refresh_token(self, token: dict) -> dict: ...
|
13
|
+
|
14
|
+
async def async_get_description_placeholders(hass: HomeAssistant) -> dict[str, str]: ...
|
@@ -4,7 +4,7 @@ from .entity import YouTubeChannelEntity as YouTubeChannelEntity
|
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from collections.abc import Callable as Callable
|
6
6
|
from dataclasses import dataclass
|
7
|
-
from homeassistant.components.sensor import SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
|
7
|
+
from homeassistant.components.sensor import SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
8
8
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
9
9
|
from homeassistant.const import ATTR_ICON as ATTR_ICON
|
10
10
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import asyncio
|
2
2
|
from .addon import get_addon_manager as get_addon_manager
|
3
3
|
from .api import async_register_api as async_register_api
|
4
|
-
from .const import ATTR_ACKNOWLEDGED_FRAMES as ATTR_ACKNOWLEDGED_FRAMES, ATTR_COMMAND_CLASS as ATTR_COMMAND_CLASS, ATTR_COMMAND_CLASS_NAME as ATTR_COMMAND_CLASS_NAME, ATTR_DATA_TYPE as ATTR_DATA_TYPE, ATTR_DATA_TYPE_LABEL as ATTR_DATA_TYPE_LABEL, ATTR_DIRECTION as ATTR_DIRECTION, ATTR_ENDPOINT as ATTR_ENDPOINT, ATTR_EVENT as ATTR_EVENT, ATTR_EVENT_DATA as ATTR_EVENT_DATA, ATTR_EVENT_LABEL as ATTR_EVENT_LABEL, ATTR_EVENT_TYPE as ATTR_EVENT_TYPE, ATTR_EVENT_TYPE_LABEL as ATTR_EVENT_TYPE_LABEL, ATTR_HOME_ID as ATTR_HOME_ID, ATTR_LABEL as ATTR_LABEL, ATTR_NODE_ID as ATTR_NODE_ID, ATTR_PARAMETERS as ATTR_PARAMETERS, ATTR_PROPERTY as ATTR_PROPERTY, ATTR_PROPERTY_KEY as ATTR_PROPERTY_KEY, ATTR_PROPERTY_KEY_NAME as ATTR_PROPERTY_KEY_NAME, ATTR_PROPERTY_NAME as ATTR_PROPERTY_NAME, ATTR_STATUS as ATTR_STATUS, ATTR_TEST_NODE_ID as ATTR_TEST_NODE_ID, ATTR_TYPE as ATTR_TYPE, ATTR_VALUE as ATTR_VALUE, ATTR_VALUE_RAW as ATTR_VALUE_RAW, CONF_ADDON_DEVICE as CONF_ADDON_DEVICE, CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY as CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY, CONF_ADDON_LR_S2_AUTHENTICATED_KEY as CONF_ADDON_LR_S2_AUTHENTICATED_KEY, CONF_ADDON_NETWORK_KEY as CONF_ADDON_NETWORK_KEY, CONF_ADDON_S0_LEGACY_KEY as CONF_ADDON_S0_LEGACY_KEY, CONF_ADDON_S2_ACCESS_CONTROL_KEY as CONF_ADDON_S2_ACCESS_CONTROL_KEY, CONF_ADDON_S2_AUTHENTICATED_KEY as CONF_ADDON_S2_AUTHENTICATED_KEY, CONF_ADDON_S2_UNAUTHENTICATED_KEY as CONF_ADDON_S2_UNAUTHENTICATED_KEY, CONF_DATA_COLLECTION_OPTED_IN as CONF_DATA_COLLECTION_OPTED_IN, CONF_INSTALLER_MODE as CONF_INSTALLER_MODE, CONF_INTEGRATION_CREATED_ADDON as CONF_INTEGRATION_CREATED_ADDON, CONF_LR_S2_ACCESS_CONTROL_KEY as CONF_LR_S2_ACCESS_CONTROL_KEY, CONF_LR_S2_AUTHENTICATED_KEY as CONF_LR_S2_AUTHENTICATED_KEY, CONF_NETWORK_KEY as CONF_NETWORK_KEY, CONF_S0_LEGACY_KEY as CONF_S0_LEGACY_KEY, CONF_S2_ACCESS_CONTROL_KEY as CONF_S2_ACCESS_CONTROL_KEY, CONF_S2_AUTHENTICATED_KEY as CONF_S2_AUTHENTICATED_KEY, CONF_S2_UNAUTHENTICATED_KEY as CONF_S2_UNAUTHENTICATED_KEY, CONF_USB_PATH as CONF_USB_PATH, CONF_USE_ADDON as CONF_USE_ADDON, DATA_CLIENT as DATA_CLIENT, DOMAIN as DOMAIN, EVENT_DEVICE_ADDED_TO_REGISTRY as EVENT_DEVICE_ADDED_TO_REGISTRY, EVENT_VALUE_UPDATED as EVENT_VALUE_UPDATED, LIB_LOGGER as LIB_LOGGER, LOGGER as LOGGER, LR_ADDON_VERSION as LR_ADDON_VERSION, USER_AGENT as USER_AGENT, ZWAVE_JS_NOTIFICATION_EVENT as ZWAVE_JS_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_NOTIFICATION_EVENT as ZWAVE_JS_VALUE_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_UPDATED_EVENT as ZWAVE_JS_VALUE_UPDATED_EVENT
|
4
|
+
from .const import ATTR_ACKNOWLEDGED_FRAMES as ATTR_ACKNOWLEDGED_FRAMES, ATTR_COMMAND_CLASS as ATTR_COMMAND_CLASS, ATTR_COMMAND_CLASS_NAME as ATTR_COMMAND_CLASS_NAME, ATTR_DATA_TYPE as ATTR_DATA_TYPE, ATTR_DATA_TYPE_LABEL as ATTR_DATA_TYPE_LABEL, ATTR_DIRECTION as ATTR_DIRECTION, ATTR_ENDPOINT as ATTR_ENDPOINT, ATTR_EVENT as ATTR_EVENT, ATTR_EVENT_DATA as ATTR_EVENT_DATA, ATTR_EVENT_LABEL as ATTR_EVENT_LABEL, ATTR_EVENT_TYPE as ATTR_EVENT_TYPE, ATTR_EVENT_TYPE_LABEL as ATTR_EVENT_TYPE_LABEL, ATTR_HOME_ID as ATTR_HOME_ID, ATTR_LABEL as ATTR_LABEL, ATTR_NODE_ID as ATTR_NODE_ID, ATTR_PARAMETERS as ATTR_PARAMETERS, ATTR_PROPERTY as ATTR_PROPERTY, ATTR_PROPERTY_KEY as ATTR_PROPERTY_KEY, ATTR_PROPERTY_KEY_NAME as ATTR_PROPERTY_KEY_NAME, ATTR_PROPERTY_NAME as ATTR_PROPERTY_NAME, ATTR_STATUS as ATTR_STATUS, ATTR_TEST_NODE_ID as ATTR_TEST_NODE_ID, ATTR_TYPE as ATTR_TYPE, ATTR_VALUE as ATTR_VALUE, ATTR_VALUE_RAW as ATTR_VALUE_RAW, CONF_ADDON_DEVICE as CONF_ADDON_DEVICE, CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY as CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY, CONF_ADDON_LR_S2_AUTHENTICATED_KEY as CONF_ADDON_LR_S2_AUTHENTICATED_KEY, CONF_ADDON_NETWORK_KEY as CONF_ADDON_NETWORK_KEY, CONF_ADDON_S0_LEGACY_KEY as CONF_ADDON_S0_LEGACY_KEY, CONF_ADDON_S2_ACCESS_CONTROL_KEY as CONF_ADDON_S2_ACCESS_CONTROL_KEY, CONF_ADDON_S2_AUTHENTICATED_KEY as CONF_ADDON_S2_AUTHENTICATED_KEY, CONF_ADDON_S2_UNAUTHENTICATED_KEY as CONF_ADDON_S2_UNAUTHENTICATED_KEY, CONF_DATA_COLLECTION_OPTED_IN as CONF_DATA_COLLECTION_OPTED_IN, CONF_INSTALLER_MODE as CONF_INSTALLER_MODE, CONF_INTEGRATION_CREATED_ADDON as CONF_INTEGRATION_CREATED_ADDON, CONF_KEEP_OLD_DEVICES as CONF_KEEP_OLD_DEVICES, CONF_LR_S2_ACCESS_CONTROL_KEY as CONF_LR_S2_ACCESS_CONTROL_KEY, CONF_LR_S2_AUTHENTICATED_KEY as CONF_LR_S2_AUTHENTICATED_KEY, CONF_NETWORK_KEY as CONF_NETWORK_KEY, CONF_S0_LEGACY_KEY as CONF_S0_LEGACY_KEY, CONF_S2_ACCESS_CONTROL_KEY as CONF_S2_ACCESS_CONTROL_KEY, CONF_S2_AUTHENTICATED_KEY as CONF_S2_AUTHENTICATED_KEY, CONF_S2_UNAUTHENTICATED_KEY as CONF_S2_UNAUTHENTICATED_KEY, CONF_USB_PATH as CONF_USB_PATH, CONF_USE_ADDON as CONF_USE_ADDON, DATA_CLIENT as DATA_CLIENT, DOMAIN as DOMAIN, DRIVER_READY_TIMEOUT as DRIVER_READY_TIMEOUT, EVENT_DEVICE_ADDED_TO_REGISTRY as EVENT_DEVICE_ADDED_TO_REGISTRY, EVENT_VALUE_UPDATED as EVENT_VALUE_UPDATED, LIB_LOGGER as LIB_LOGGER, LOGGER as LOGGER, LR_ADDON_VERSION as LR_ADDON_VERSION, USER_AGENT as USER_AGENT, ZWAVE_JS_NOTIFICATION_EVENT as ZWAVE_JS_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_NOTIFICATION_EVENT as ZWAVE_JS_VALUE_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_UPDATED_EVENT as ZWAVE_JS_VALUE_UPDATED_EVENT
|
5
5
|
from .discovery import ZwaveDiscoveryInfo as ZwaveDiscoveryInfo, async_discover_node_values as async_discover_node_values, async_discover_single_value as async_discover_single_value
|
6
6
|
from .helpers import async_disable_server_logging_if_needed as async_disable_server_logging_if_needed, async_enable_server_logging_if_needed as async_enable_server_logging_if_needed, async_enable_statistics as async_enable_statistics, get_device_id as get_device_id, get_device_id_ext as get_device_id_ext, get_network_identifier_for_notification as get_network_identifier_for_notification, get_unique_id as get_unique_id, get_valueless_base_unique_id as get_valueless_base_unique_id
|
7
7
|
from .migrate import async_migrate_discovered_value as async_migrate_discovered_value
|
@@ -26,7 +26,6 @@ from zwave_js_server.model.value import Value as Value, ValueNotification as Val
|
|
26
26
|
|
27
27
|
CONNECT_TIMEOUT: int
|
28
28
|
DATA_DRIVER_EVENTS: str
|
29
|
-
DRIVER_READY_TIMEOUT: int
|
30
29
|
CONFIG_SCHEMA: Incomplete
|
31
30
|
PLATFORMS: Incomplete
|
32
31
|
|
@@ -82,7 +81,6 @@ class NodeEvents:
|
|
82
81
|
async def client_listen(hass: HomeAssistant, entry: ConfigEntry, client: ZwaveClient, driver_ready: asyncio.Event) -> None: ...
|
83
82
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
84
83
|
async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
|
85
|
-
async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry) -> bool: ...
|
86
84
|
async def async_ensure_addon_running(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
|
87
85
|
@callback
|
88
86
|
def _get_addon_manager(hass: HomeAssistant) -> AddonManager: ...
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from .config_validation import BITMASK_SCHEMA as BITMASK_SCHEMA
|
2
|
-
from .const import ATTR_COMMAND_CLASS as ATTR_COMMAND_CLASS, ATTR_ENDPOINT as ATTR_ENDPOINT, ATTR_METHOD_NAME as ATTR_METHOD_NAME, ATTR_PARAMETERS as ATTR_PARAMETERS, ATTR_WAIT_FOR_RESULT as ATTR_WAIT_FOR_RESULT, CONF_DATA_COLLECTION_OPTED_IN as CONF_DATA_COLLECTION_OPTED_IN, CONF_INSTALLER_MODE as CONF_INSTALLER_MODE, DATA_CLIENT as DATA_CLIENT, DOMAIN as DOMAIN,
|
2
|
+
from .const import ATTR_COMMAND_CLASS as ATTR_COMMAND_CLASS, ATTR_ENDPOINT as ATTR_ENDPOINT, ATTR_METHOD_NAME as ATTR_METHOD_NAME, ATTR_PARAMETERS as ATTR_PARAMETERS, ATTR_WAIT_FOR_RESULT as ATTR_WAIT_FOR_RESULT, CONF_DATA_COLLECTION_OPTED_IN as CONF_DATA_COLLECTION_OPTED_IN, CONF_INSTALLER_MODE as CONF_INSTALLER_MODE, DATA_CLIENT as DATA_CLIENT, DOMAIN as DOMAIN, DRIVER_READY_TIMEOUT as DRIVER_READY_TIMEOUT, EVENT_DEVICE_ADDED_TO_REGISTRY as EVENT_DEVICE_ADDED_TO_REGISTRY, LOGGER as LOGGER, USER_AGENT as USER_AGENT
|
3
3
|
from .helpers import CannotConnect as CannotConnect, async_enable_statistics as async_enable_statistics, async_get_node_from_device_id as async_get_node_from_device_id, async_get_provisioning_entry_from_device_id as async_get_provisioning_entry_from_device_id, async_get_version_info as async_get_version_info, get_device_id as get_device_id
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from aiohttp import web as web
|
@@ -76,7 +76,6 @@ AREA_ID: str
|
|
76
76
|
FEATURE: str
|
77
77
|
STRATEGY: str
|
78
78
|
MINIMUM_QR_STRING_LENGTH: int
|
79
|
-
HARD_RESET_CONTROLLER_DRIVER_READY_TIMEOUT: int
|
80
79
|
PLANNED_PROVISIONING_ENTRY_SCHEMA: Incomplete
|
81
80
|
QR_PROVISIONING_INFORMATION_SCHEMA: Incomplete
|
82
81
|
QR_CODE_STRING_SCHEMA: Incomplete
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import asyncio
|
2
2
|
import voluptuous as vol
|
3
3
|
from .addon import get_addon_manager as get_addon_manager
|
4
|
-
from .const import ADDON_SLUG as ADDON_SLUG, CONF_ADDON_DEVICE as CONF_ADDON_DEVICE,
|
4
|
+
from .const import ADDON_SLUG as ADDON_SLUG, CONF_ADDON_DEVICE as CONF_ADDON_DEVICE, CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY as CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY, CONF_ADDON_LR_S2_AUTHENTICATED_KEY as CONF_ADDON_LR_S2_AUTHENTICATED_KEY, CONF_ADDON_NETWORK_KEY as CONF_ADDON_NETWORK_KEY, CONF_ADDON_S0_LEGACY_KEY as CONF_ADDON_S0_LEGACY_KEY, CONF_ADDON_S2_ACCESS_CONTROL_KEY as CONF_ADDON_S2_ACCESS_CONTROL_KEY, CONF_ADDON_S2_AUTHENTICATED_KEY as CONF_ADDON_S2_AUTHENTICATED_KEY, CONF_ADDON_S2_UNAUTHENTICATED_KEY as CONF_ADDON_S2_UNAUTHENTICATED_KEY, CONF_INTEGRATION_CREATED_ADDON as CONF_INTEGRATION_CREATED_ADDON, CONF_KEEP_OLD_DEVICES as CONF_KEEP_OLD_DEVICES, CONF_LR_S2_ACCESS_CONTROL_KEY as CONF_LR_S2_ACCESS_CONTROL_KEY, CONF_LR_S2_AUTHENTICATED_KEY as CONF_LR_S2_AUTHENTICATED_KEY, CONF_S0_LEGACY_KEY as CONF_S0_LEGACY_KEY, CONF_S2_ACCESS_CONTROL_KEY as CONF_S2_ACCESS_CONTROL_KEY, CONF_S2_AUTHENTICATED_KEY as CONF_S2_AUTHENTICATED_KEY, CONF_S2_UNAUTHENTICATED_KEY as CONF_S2_UNAUTHENTICATED_KEY, CONF_USB_PATH as CONF_USB_PATH, CONF_USE_ADDON as CONF_USE_ADDON, DATA_CLIENT as DATA_CLIENT, DOMAIN as DOMAIN, DRIVER_READY_TIMEOUT as DRIVER_READY_TIMEOUT
|
5
5
|
from .helpers import CannotConnect as CannotConnect, async_get_version_info as async_get_version_info
|
6
6
|
from _typeshed import Incomplete
|
7
7
|
from homeassistant.components import usb as usb
|
@@ -16,6 +16,7 @@ from homeassistant.helpers.service_info.hassio import HassioServiceInfo as Hassi
|
|
16
16
|
from homeassistant.helpers.service_info.usb import UsbServiceInfo as UsbServiceInfo
|
17
17
|
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
18
18
|
from homeassistant.helpers.typing import VolDictType as VolDictType
|
19
|
+
from pathlib import Path
|
19
20
|
from typing import Any
|
20
21
|
from zwave_js_server.client import Client as Client
|
21
22
|
from zwave_js_server.model.driver import Driver as Driver
|
@@ -26,9 +27,6 @@ DEFAULT_URL: str
|
|
26
27
|
TITLE: str
|
27
28
|
ADDON_SETUP_TIMEOUT: int
|
28
29
|
ADDON_SETUP_TIMEOUT_ROUNDS: int
|
29
|
-
CONF_EMULATE_HARDWARE: str
|
30
|
-
CONF_LOG_LEVEL: str
|
31
|
-
ADDON_LOG_LEVELS: Incomplete
|
32
30
|
ADDON_USER_INPUT_MAP: Incomplete
|
33
31
|
ON_SUPERVISOR_SCHEMA: Incomplete
|
34
32
|
MIN_MIGRATION_SDK_VERSION: Incomplete
|
@@ -41,7 +39,6 @@ async def async_get_usb_ports(hass: HomeAssistant) -> dict[str, str]: ...
|
|
41
39
|
|
42
40
|
class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
43
41
|
VERSION: int
|
44
|
-
_title: str
|
45
42
|
s0_legacy_key: str | None
|
46
43
|
s2_access_control_key: str | None
|
47
44
|
s2_authenticated_key: str | None
|
@@ -60,11 +57,12 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
60
57
|
backup_task: asyncio.Task | None
|
61
58
|
restore_backup_task: asyncio.Task | None
|
62
59
|
backup_data: bytes | None
|
63
|
-
backup_filepath:
|
60
|
+
backup_filepath: Path | None
|
64
61
|
use_addon: bool
|
65
62
|
_migrating: bool
|
66
63
|
_reconfigure_config_entry: ConfigEntry | None
|
67
64
|
_usb_discovery: bool
|
65
|
+
_recommended_install: bool
|
68
66
|
def __init__(self) -> None: ...
|
69
67
|
async def async_step_install_addon(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
70
68
|
async def async_step_install_failed(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
@@ -78,21 +76,23 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
78
76
|
async def _async_install_addon(self) -> None: ...
|
79
77
|
async def _async_get_addon_discovery_info(self) -> dict: ...
|
80
78
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
79
|
+
async def async_step_installation_type(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
81
80
|
async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
82
81
|
async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
|
83
82
|
async def async_step_zeroconf_confirm(self, user_input: dict | None = None) -> ConfigFlowResult: ...
|
84
83
|
async def async_step_usb(self, discovery_info: UsbServiceInfo) -> ConfigFlowResult: ...
|
85
|
-
async def async_step_usb_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
86
84
|
async def async_step_manual(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
87
85
|
async def async_step_hassio(self, discovery_info: HassioServiceInfo) -> ConfigFlowResult: ...
|
88
86
|
async def async_step_hassio_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
87
|
+
async def async_step_intent_recommended(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
88
|
+
async def async_step_intent_custom(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
89
89
|
async def async_step_on_supervisor(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
90
90
|
async def async_step_configure_addon_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
91
91
|
async def async_step_finish_addon_setup_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
92
92
|
@callback
|
93
93
|
def _async_create_entry_from_vars(self) -> ConfigFlowResult: ...
|
94
94
|
@callback
|
95
|
-
def _async_update_entry(self, updates: dict[str, Any]
|
95
|
+
def _async_update_entry(self, updates: dict[str, Any]) -> None: ...
|
96
96
|
async def async_step_intent_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
97
97
|
async def async_step_intent_migrate(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
98
98
|
async def async_step_backup_nvm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
@@ -4,8 +4,6 @@ from homeassistant.const import APPLICATION_NAME as APPLICATION_NAME
|
|
4
4
|
LR_ADDON_VERSION: Incomplete
|
5
5
|
USER_AGENT: Incomplete
|
6
6
|
CONF_ADDON_DEVICE: str
|
7
|
-
CONF_ADDON_EMULATE_HARDWARE: str
|
8
|
-
CONF_ADDON_LOG_LEVEL: str
|
9
7
|
CONF_ADDON_NETWORK_KEY: str
|
10
8
|
CONF_ADDON_S0_LEGACY_KEY: str
|
11
9
|
CONF_ADDON_S2_ACCESS_CONTROL_KEY: str
|
@@ -15,6 +13,7 @@ CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY: str
|
|
15
13
|
CONF_ADDON_LR_S2_AUTHENTICATED_KEY: str
|
16
14
|
CONF_INSTALLER_MODE: str
|
17
15
|
CONF_INTEGRATION_CREATED_ADDON: str
|
16
|
+
CONF_KEEP_OLD_DEVICES: str
|
18
17
|
CONF_NETWORK_KEY: str
|
19
18
|
CONF_S0_LEGACY_KEY: str
|
20
19
|
CONF_S2_ACCESS_CONTROL_KEY: str
|
@@ -130,4 +129,4 @@ ENTITY_DESC_KEY_ENERGY_PRODUCTION_TODAY: str
|
|
130
129
|
API_KEY_FIRMWARE_UPDATE_SERVICE: str
|
131
130
|
COVER_POSITION_PROPERTY_KEYS: set[str | int | None]
|
132
131
|
COVER_TILT_PROPERTY_KEYS: set[str | int | None]
|
133
|
-
|
132
|
+
DRIVER_READY_TIMEOUT: int
|
@@ -354,7 +354,6 @@ class ConfigEntries:
|
|
354
354
|
def _async_dispatch(self, change_type: ConfigEntryChange, entry: ConfigEntry) -> None: ...
|
355
355
|
async def async_forward_entry_setups(self, entry: ConfigEntry, platforms: Iterable[Platform | str]) -> None: ...
|
356
356
|
async def _async_forward_entry_setups_locked(self, entry: ConfigEntry, platforms: Iterable[Platform | str]) -> None: ...
|
357
|
-
async def async_forward_entry_setup(self, entry: ConfigEntry, domain: Platform | str) -> bool: ...
|
358
357
|
async def _async_forward_entry_setup(self, entry: ConfigEntry, domain: Platform | str, preload_platform: bool) -> bool: ...
|
359
358
|
async def async_unload_platforms(self, entry: ConfigEntry, platforms: Iterable[Platform | str]) -> bool: ...
|
360
359
|
async def async_forward_entry_unload(self, entry: ConfigEntry, domain: Platform | str) -> bool: ...
|
homeassistant-stubs/const.pyi
CHANGED
@@ -423,8 +423,13 @@ class UnitOfEnergy(StrEnum):
|
|
423
423
|
MEGA_CALORIE = 'Mcal'
|
424
424
|
GIGA_CALORIE = 'Gcal'
|
425
425
|
|
426
|
+
class UnitOfReactiveEnergy(StrEnum):
|
427
|
+
VOLT_AMPERE_REACTIVE_HOUR = 'varh'
|
428
|
+
KILO_VOLT_AMPERE_REACTIVE_HOUR = 'kvarh'
|
429
|
+
|
426
430
|
class UnitOfEnergyDistance(StrEnum):
|
427
431
|
KILO_WATT_HOUR_PER_100_KM = 'kWh/100km'
|
432
|
+
WATT_HOUR_PER_KM = 'Wh/km'
|
428
433
|
MILES_PER_KILO_WATT_HOUR = 'mi/kWh'
|
429
434
|
KM_PER_KILO_WATT_HOUR = 'km/kWh'
|
430
435
|
|