homeassistant-stubs 2025.10.4__py3-none-any.whl → 2025.11.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.
Potentially problematic release.
This version of homeassistant-stubs might be problematic. Click here for more details.
- homeassistant-stubs/components/acaia/coordinator.pyi +2 -0
- homeassistant-stubs/components/airly/config_flow.pyi +3 -0
- homeassistant-stubs/components/airos/__init__.pyi +4 -2
- homeassistant-stubs/components/airos/config_flow.pyi +10 -1
- homeassistant-stubs/components/airos/coordinator.pyi +1 -1
- homeassistant-stubs/components/airthings/config_flow.pyi +1 -0
- homeassistant-stubs/components/airthings_ble/config_flow.pyi +4 -2
- homeassistant-stubs/components/airthings_ble/sensor.pyi +2 -1
- homeassistant-stubs/components/alarm_control_panel/__init__.pyi +0 -10
- homeassistant-stubs/components/alexa_devices/const.pyi +2 -0
- homeassistant-stubs/components/alexa_devices/sensor.pyi +12 -2
- homeassistant-stubs/components/androidtv_remote/config_flow.pyi +2 -0
- homeassistant-stubs/components/apple_tv/__init__.pyi +3 -3
- homeassistant-stubs/components/assist_pipeline/__init__.pyi +3 -3
- homeassistant-stubs/components/assist_pipeline/pipeline.pyi +1 -1
- homeassistant-stubs/components/asuswrt/bridge.pyi +9 -9
- homeassistant-stubs/components/asuswrt/config_flow.pyi +1 -1
- homeassistant-stubs/components/asuswrt/device_tracker.pyi +0 -3
- homeassistant-stubs/components/asuswrt/helpers.pyi +2 -3
- homeassistant-stubs/components/asuswrt/router.pyi +1 -1
- homeassistant-stubs/components/backup/http.pyi +1 -0
- homeassistant-stubs/components/backup/manager.pyi +2 -1
- homeassistant-stubs/components/backup/util.pyi +2 -32
- homeassistant-stubs/components/bang_olufsen/media_player.pyi +5 -5
- homeassistant-stubs/components/bluetooth/__init__.pyi +2 -5
- homeassistant-stubs/components/bluetooth/api.pyi +2 -0
- homeassistant-stubs/components/bluetooth/manager.pyi +2 -0
- homeassistant-stubs/components/bryant_evolution/climate.pyi +2 -2
- homeassistant-stubs/components/calendar/trigger.pyi +1 -1
- homeassistant-stubs/components/camera/__init__.pyi +1 -9
- homeassistant-stubs/components/cert_expiry/config_flow.pyi +1 -1
- homeassistant-stubs/components/cert_expiry/errors.pyi +1 -0
- homeassistant-stubs/components/cert_expiry/helper.pyi +1 -1
- homeassistant-stubs/components/cloud/__init__.pyi +2 -1
- homeassistant-stubs/components/cloud/client.pyi +1 -1
- homeassistant-stubs/components/cloud/const.pyi +1 -1
- homeassistant-stubs/components/comelit/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/comelit/cover.pyi +2 -2
- homeassistant-stubs/components/comelit/light.pyi +1 -1
- homeassistant-stubs/components/comelit/sensor.pyi +1 -0
- homeassistant-stubs/components/comelit/switch.pyi +1 -1
- homeassistant-stubs/components/comelit/utils.pyi +5 -1
- homeassistant-stubs/components/config/config_entries.pyi +5 -1
- homeassistant-stubs/components/cover/__init__.pyi +1 -11
- homeassistant-stubs/components/demo/valve.pyi +14 -5
- homeassistant-stubs/components/derivative/__init__.pyi +0 -1
- homeassistant-stubs/components/derivative/config_flow.pyi +1 -0
- homeassistant-stubs/components/derivative/sensor.pyi +2 -1
- homeassistant-stubs/components/device_automation/condition.pyi +7 -6
- homeassistant-stubs/components/devolo_home_control/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/devolo_home_control/entity.pyi +1 -2
- homeassistant-stubs/components/devolo_home_control/sensor.pyi +1 -1
- homeassistant-stubs/components/devolo_home_control/subscriber.pyi +0 -1
- homeassistant-stubs/components/devolo_home_control/switch.pyi +1 -1
- homeassistant-stubs/components/dnsip/sensor.pyi +3 -3
- homeassistant-stubs/components/ecovacs/button.pyi +1 -1
- homeassistant-stubs/components/ecovacs/select.pyi +14 -2
- homeassistant-stubs/components/eheimdigital/sensor.pyi +1 -2
- homeassistant-stubs/components/enphase_envoy/sensor.pyi +4 -22
- homeassistant-stubs/components/eq3btsmart/sensor.pyi +1 -2
- homeassistant-stubs/components/esphome/__init__.pyi +1 -1
- homeassistant-stubs/components/esphome/assist_satellite.pyi +12 -2
- homeassistant-stubs/components/esphome/climate.pyi +1 -0
- homeassistant-stubs/components/esphome/config_flow.pyi +7 -4
- homeassistant-stubs/components/esphome/const.pyi +2 -0
- homeassistant-stubs/components/esphome/entry_data.pyi +1 -0
- homeassistant-stubs/components/esphome/manager.pyi +8 -3
- homeassistant-stubs/components/esphome/select.pyi +1 -1
- homeassistant-stubs/components/evohome/climate.pyi +1 -1
- homeassistant-stubs/components/fastdotcom/coordinator.pyi +2 -2
- homeassistant-stubs/components/fastdotcom/sensor.pyi +1 -1
- homeassistant-stubs/components/filter/__init__.pyi +0 -1
- homeassistant-stubs/components/filter/config_flow.pyi +1 -0
- homeassistant-stubs/components/firefly_iii/__init__.pyi +8 -0
- homeassistant-stubs/components/firefly_iii/config_flow.pyi +24 -0
- homeassistant-stubs/components/firefly_iii/const.pyi +3 -0
- homeassistant-stubs/components/firefly_iii/coordinator.pyi +30 -0
- homeassistant-stubs/components/firefly_iii/diagnostics.pyi +11 -0
- homeassistant-stubs/components/firefly_iii/entity.pyi +30 -0
- homeassistant-stubs/components/firefly_iii/sensor.pyi +66 -0
- homeassistant-stubs/components/fritz/coordinator.pyi +3 -0
- homeassistant-stubs/components/fritz/models.pyi +2 -2
- homeassistant-stubs/components/fritz/services.pyi +3 -0
- homeassistant-stubs/components/fritzbox/climate.pyi +2 -5
- homeassistant-stubs/components/generic_hygrostat/__init__.pyi +0 -1
- homeassistant-stubs/components/generic_hygrostat/config_flow.pyi +1 -0
- homeassistant-stubs/components/generic_thermostat/__init__.pyi +0 -1
- homeassistant-stubs/components/generic_thermostat/config_flow.pyi +1 -0
- homeassistant-stubs/components/github/__init__.pyi +12 -0
- homeassistant-stubs/components/github/config_flow.pyi +28 -0
- homeassistant-stubs/components/github/const.pyi +10 -0
- homeassistant-stubs/components/github/coordinator.pyi +26 -0
- homeassistant-stubs/components/github/diagnostics.pyi +7 -0
- homeassistant-stubs/components/github/sensor.pyi +37 -0
- homeassistant-stubs/components/go2rtc/__init__.pyi +1 -2
- homeassistant-stubs/components/google_assistant_sdk/config_flow.pyi +2 -1
- homeassistant-stubs/components/google_drive/api.pyi +1 -0
- homeassistant-stubs/components/google_sheets/services.pyi +9 -2
- homeassistant-stubs/components/group/__init__.pyi +0 -1
- homeassistant-stubs/components/group/config_flow.pyi +2 -0
- homeassistant-stubs/components/group/entity.pyi +3 -0
- homeassistant-stubs/components/group/light.pyi +1 -1
- homeassistant-stubs/components/group/util.pyi +1 -0
- homeassistant-stubs/components/group/valve.pyi +47 -0
- homeassistant-stubs/components/habitica/__init__.pyi +1 -0
- homeassistant-stubs/components/habitica/config_flow.pyi +11 -3
- homeassistant-stubs/components/habitica/const.pyi +1 -0
- homeassistant-stubs/components/habitica/coordinator.pyi +9 -3
- homeassistant-stubs/components/habitica/entity.pyi +15 -2
- homeassistant-stubs/components/habitica/image.pyi +6 -2
- homeassistant-stubs/components/habitica/notify.pyi +42 -0
- homeassistant-stubs/components/habitica/sensor.pyi +9 -4
- homeassistant-stubs/components/hardkernel/hardware.pyi +1 -1
- homeassistant-stubs/components/hardware/__init__.pyi +2 -10
- homeassistant-stubs/components/history_stats/__init__.pyi +0 -1
- homeassistant-stubs/components/history_stats/config_flow.pyi +1 -0
- homeassistant-stubs/components/home_connect/application_credentials.pyi +1 -0
- homeassistant-stubs/components/home_connect/const.pyi +1 -0
- homeassistant-stubs/components/home_connect/select.pyi +1 -1
- homeassistant-stubs/components/homeassistant_green/config_flow.pyi +4 -2
- homeassistant-stubs/components/homeassistant_green/hardware.pyi +1 -1
- homeassistant-stubs/components/homeassistant_hardware/const.pyi +1 -0
- homeassistant-stubs/components/homeassistant_hardware/helpers.pyi +12 -2
- homeassistant-stubs/components/homeassistant_hardware/switch.pyi +23 -0
- homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +13 -4
- homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +4 -0
- homeassistant-stubs/components/homeassistant_sky_connect/hardware.pyi +1 -1
- homeassistant-stubs/components/homeassistant_sky_connect/switch.pyi +17 -0
- homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +5 -7
- homeassistant-stubs/components/homeassistant_yellow/__init__.pyi +12 -4
- homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -1
- homeassistant-stubs/components/homeassistant_yellow/hardware.pyi +1 -1
- homeassistant-stubs/components/homeassistant_yellow/switch.pyi +17 -0
- homeassistant-stubs/components/homeassistant_yellow/update.pyi +5 -7
- homeassistant-stubs/components/homee/__init__.pyi +1 -0
- homeassistant-stubs/components/homewizard/__init__.pyi +2 -0
- homeassistant-stubs/components/husqvarna_automower/button.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/entity.pyi +8 -4
- homeassistant-stubs/components/husqvarna_automower/lawn_mower.pyi +5 -0
- homeassistant-stubs/components/husqvarna_automower/select.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/sensor.pyi +2 -0
- homeassistant-stubs/components/husqvarna_automower/switch.pyi +2 -0
- homeassistant-stubs/components/imap/__init__.pyi +3 -1
- homeassistant-stubs/components/imap/coordinator.pyi +4 -1
- homeassistant-stubs/components/inels/__init__.pyi +18 -0
- homeassistant-stubs/components/inels/config_flow.pyi +13 -0
- homeassistant-stubs/components/inels/const.pyi +7 -0
- homeassistant-stubs/components/inels/entity.pyi +20 -0
- homeassistant-stubs/components/inels/switch.pyi +34 -0
- homeassistant-stubs/components/knx/climate.pyi +23 -11
- homeassistant-stubs/components/knx/const.pyi +14 -0
- homeassistant-stubs/components/knx/schema.pyi +1 -13
- homeassistant-stubs/components/knx/sensor.pyi +8 -9
- homeassistant-stubs/components/knx/storage/const.pyi +20 -0
- homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +13 -2
- homeassistant-stubs/components/libre_hardware_monitor/__init__.pyi +3 -0
- homeassistant-stubs/components/libre_hardware_monitor/sensor.pyi +5 -9
- homeassistant-stubs/components/litterrobot/update.pyi +2 -0
- homeassistant-stubs/components/lock/__init__.pyi +1 -6
- homeassistant-stubs/components/london_underground/__init__.pyi +9 -0
- homeassistant-stubs/components/london_underground/config_flow.pyi +22 -0
- homeassistant-stubs/components/london_underground/const.pyi +1 -0
- homeassistant-stubs/components/london_underground/coordinator.pyi +3 -1
- homeassistant-stubs/components/london_underground/sensor.pyi +10 -5
- homeassistant-stubs/components/lunatone/__init__.pyi +12 -0
- homeassistant-stubs/components/lunatone/config_flow.pyi +16 -0
- homeassistant-stubs/components/lunatone/const.pyi +3 -0
- homeassistant-stubs/components/lunatone/coordinator.pyi +29 -0
- homeassistant-stubs/components/lunatone/light.pyi +43 -0
- homeassistant-stubs/components/matrix/__init__.pyi +10 -2
- homeassistant-stubs/components/matrix/const.pyi +5 -0
- homeassistant-stubs/components/matrix/services.pyi +3 -1
- homeassistant-stubs/components/matter/__init__.pyi +5 -0
- homeassistant-stubs/components/matter/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/matter/button.pyi +1 -1
- homeassistant-stubs/components/matter/climate.pyi +7 -1
- homeassistant-stubs/components/matter/cover.pyi +6 -2
- homeassistant-stubs/components/matter/entity.pyi +4 -2
- homeassistant-stubs/components/matter/event.pyi +5 -1
- homeassistant-stubs/components/matter/fan.pyi +5 -1
- homeassistant-stubs/components/matter/light.pyi +6 -2
- homeassistant-stubs/components/matter/lock.pyi +5 -1
- homeassistant-stubs/components/matter/models.pyi +3 -3
- homeassistant-stubs/components/matter/number.pyi +1 -1
- homeassistant-stubs/components/matter/select.pyi +1 -1
- homeassistant-stubs/components/matter/sensor.pyi +4 -1
- homeassistant-stubs/components/matter/services.pyi +11 -0
- homeassistant-stubs/components/matter/switch.pyi +5 -2
- homeassistant-stubs/components/matter/update.pyi +4 -1
- homeassistant-stubs/components/matter/vacuum.pyi +6 -2
- homeassistant-stubs/components/matter/valve.pyi +6 -2
- homeassistant-stubs/components/matter/water_heater.pyi +8 -1
- homeassistant-stubs/components/mcp/__init__.pyi +1 -6
- homeassistant-stubs/components/mcp/config_flow.pyi +12 -2
- homeassistant-stubs/components/mcp/const.pyi +1 -0
- homeassistant-stubs/components/mcp/coordinator.pyi +1 -1
- homeassistant-stubs/components/mcp_server/__init__.pyi +1 -8
- homeassistant-stubs/components/mcp_server/http.pyi +23 -1
- homeassistant-stubs/components/mealie/config_flow.pyi +8 -1
- homeassistant-stubs/components/media_player/__init__.pyi +1 -9
- homeassistant-stubs/components/media_player/const.pyi +10 -69
- homeassistant-stubs/components/media_player/intent.pyi +7 -9
- homeassistant-stubs/components/metoffice/__init__.pyi +1 -0
- homeassistant-stubs/components/metoffice/helpers.pyi +2 -2
- homeassistant-stubs/components/metoffice/weather.pyi +11 -11
- homeassistant-stubs/components/miele/sensor.pyi +7 -8
- homeassistant-stubs/components/min_max/__init__.pyi +0 -1
- homeassistant-stubs/components/min_max/config_flow.pyi +1 -0
- homeassistant-stubs/components/mold_indicator/__init__.pyi +0 -1
- homeassistant-stubs/components/mold_indicator/config_flow.pyi +1 -0
- homeassistant-stubs/components/mqtt/__init__.pyi +1 -4
- homeassistant-stubs/components/mqtt/config_flow.pyi +23 -4
- homeassistant-stubs/components/mqtt/const.pyi +7 -1
- homeassistant-stubs/components/mqtt/number.pyi +1 -5
- homeassistant-stubs/components/mqtt/siren.pyi +1 -9
- homeassistant-stubs/components/music_assistant/const.pyi +4 -0
- homeassistant-stubs/components/music_assistant/media_player.pyi +1 -1
- homeassistant-stubs/components/music_assistant/schemas.pyi +2 -2
- homeassistant-stubs/components/nasweb/sensor.pyi +0 -5
- homeassistant-stubs/components/nasweb/switch.pyi +1 -0
- homeassistant-stubs/components/nextdns/config_flow.pyi +6 -1
- homeassistant-stubs/components/number/const.pyi +2 -1
- homeassistant-stubs/components/onedrive/backup.pyi +2 -1
- homeassistant-stubs/components/onewire/binary_sensor.pyi +5 -12
- homeassistant-stubs/components/onewire/const.pyi +0 -2
- homeassistant-stubs/components/onewire/diagnostics.pyi +2 -0
- homeassistant-stubs/components/onewire/entity.pyi +6 -14
- homeassistant-stubs/components/onewire/onewirehub.pyi +5 -5
- homeassistant-stubs/components/onewire/select.pyi +3 -10
- homeassistant-stubs/components/onewire/sensor.pyi +5 -7
- homeassistant-stubs/components/onewire/switch.pyi +7 -14
- homeassistant-stubs/components/onkyo/receiver.pyi +1 -1
- homeassistant-stubs/components/open_router/entity.pyi +4 -1
- homeassistant-stubs/components/openai_conversation/ai_task.pyi +1 -1
- homeassistant-stubs/components/openai_conversation/config_flow.pyi +1 -1
- homeassistant-stubs/components/openai_conversation/const.pyi +2 -0
- homeassistant-stubs/components/openai_conversation/entity.pyi +1 -1
- homeassistant-stubs/components/opower/coordinator.pyi +1 -0
- homeassistant-stubs/components/ping/__init__.pyi +1 -0
- homeassistant-stubs/components/ping/config_flow.pyi +1 -0
- homeassistant-stubs/components/ping/device_tracker.pyi +3 -2
- homeassistant-stubs/components/ping/entity.pyi +1 -0
- homeassistant-stubs/components/portainer/button.pyi +29 -0
- homeassistant-stubs/components/portainer/config_flow.pyi +4 -0
- homeassistant-stubs/components/portainer/const.pyi +1 -0
- homeassistant-stubs/components/portainer/coordinator.pyi +11 -2
- homeassistant-stubs/components/portainer/diagnostics.pyi +12 -0
- homeassistant-stubs/components/portainer/entity.pyi +2 -0
- homeassistant-stubs/components/portainer/sensor.pyi +41 -0
- homeassistant-stubs/components/portainer/switch.pyi +35 -0
- homeassistant-stubs/components/qbus/entity.pyi +1 -3
- homeassistant-stubs/components/raspberry_pi/hardware.pyi +1 -1
- homeassistant-stubs/components/recorder/const.pyi +1 -1
- homeassistant-stubs/components/recorder/core.pyi +3 -3
- homeassistant-stubs/components/recorder/db_schema.pyi +3 -10
- homeassistant-stubs/components/recorder/entity_registry.pyi +1 -0
- homeassistant-stubs/components/recorder/history/__init__.pyi +2 -2
- homeassistant-stubs/components/recorder/migration.pyi +4 -1
- homeassistant-stubs/components/recorder/models/statistics.pyi +1 -0
- homeassistant-stubs/components/recorder/statistics.pyi +17 -12
- homeassistant-stubs/components/recorder/table_managers/states_meta.pyi +0 -1
- homeassistant-stubs/components/recorder/table_managers/statistics_meta.pyi +4 -2
- homeassistant-stubs/components/recorder/tasks.pyi +1 -0
- homeassistant-stubs/components/recorder/util.pyi +1 -1
- homeassistant-stubs/components/recorder/websocket_api.pyi +6 -4
- homeassistant-stubs/components/renault/sensor.pyi +1 -1
- homeassistant-stubs/components/reolink/__init__.pyi +1 -1
- homeassistant-stubs/components/reolink/binary_sensor.pyi +15 -0
- homeassistant-stubs/components/reolink/siren.pyi +2 -0
- homeassistant-stubs/components/reolink/switch.pyi +25 -7
- homeassistant-stubs/components/roborock/__init__.pyi +1 -1
- homeassistant-stubs/components/roborock/config_flow.pyi +1 -1
- homeassistant-stubs/components/roborock/coordinator.pyi +2 -1
- homeassistant-stubs/components/roborock/entity.pyi +1 -1
- homeassistant-stubs/components/roborock/models.pyi +1 -1
- homeassistant-stubs/components/scrape/coordinator.pyi +1 -2
- homeassistant-stubs/components/sensibo/__init__.pyi +6 -0
- homeassistant-stubs/components/sensibo/climate.pyi +3 -26
- homeassistant-stubs/components/sensibo/services.pyi +31 -0
- homeassistant-stubs/components/sensor/const.pyi +2 -1
- homeassistant-stubs/components/sensor/device_condition.pyi +1 -0
- homeassistant-stubs/components/sensor/device_trigger.pyi +1 -0
- homeassistant-stubs/components/sensor/recorder.pyi +6 -3
- homeassistant-stubs/components/sfr_box/__init__.pyi +4 -6
- homeassistant-stubs/components/sfr_box/binary_sensor.pyi +5 -14
- homeassistant-stubs/components/sfr_box/button.pyi +4 -9
- homeassistant-stubs/components/sfr_box/config_flow.pyi +2 -1
- homeassistant-stubs/components/sfr_box/coordinator.pyi +13 -2
- homeassistant-stubs/components/sfr_box/diagnostics.pyi +2 -4
- homeassistant-stubs/components/sfr_box/entity.pyi +18 -0
- homeassistant-stubs/components/sfr_box/sensor.pyi +4 -13
- homeassistant-stubs/components/shelly/__init__.pyi +2 -2
- homeassistant-stubs/components/shelly/binary_sensor.pyi +6 -2
- homeassistant-stubs/components/shelly/button.pyi +26 -16
- homeassistant-stubs/components/shelly/climate.pyi +61 -7
- homeassistant-stubs/components/shelly/const.pyi +15 -3
- homeassistant-stubs/components/shelly/cover.pyi +31 -10
- homeassistant-stubs/components/shelly/entity.pyi +5 -4
- homeassistant-stubs/components/shelly/event.pyi +4 -0
- homeassistant-stubs/components/shelly/light.pyi +23 -7
- homeassistant-stubs/components/shelly/number.pyi +11 -2
- homeassistant-stubs/components/shelly/repairs.pyi +2 -2
- homeassistant-stubs/components/shelly/select.pyi +4 -1
- homeassistant-stubs/components/shelly/sensor.pyi +8 -7
- homeassistant-stubs/components/shelly/switch.pyi +7 -4
- homeassistant-stubs/components/shelly/text.pyi +4 -1
- homeassistant-stubs/components/shelly/update.pyi +4 -0
- homeassistant-stubs/components/shelly/utils.pyi +10 -5
- homeassistant-stubs/components/shelly/valve.pyi +34 -5
- homeassistant-stubs/components/sleep_as_android/event.pyi +1 -0
- homeassistant-stubs/components/sma/__init__.pyi +15 -0
- homeassistant-stubs/components/sma/config_flow.pyi +27 -0
- homeassistant-stubs/components/sma/const.pyi +11 -0
- homeassistant-stubs/components/sma/coordinator.pyi +28 -0
- homeassistant-stubs/components/sma/diagnostics.pyi +10 -0
- homeassistant-stubs/components/sma/sensor.pyi +33 -0
- homeassistant-stubs/components/sql/__init__.pyi +2 -4
- homeassistant-stubs/components/sql/sensor.pyi +6 -13
- homeassistant-stubs/components/sql/services.pyi +17 -0
- homeassistant-stubs/components/sql/util.pyi +16 -3
- homeassistant-stubs/components/squeezebox/__init__.pyi +4 -1
- homeassistant-stubs/components/squeezebox/browse_media.pyi +4 -3
- homeassistant-stubs/components/squeezebox/button.pyi +1 -0
- homeassistant-stubs/components/squeezebox/const.pyi +0 -1
- homeassistant-stubs/components/squeezebox/media_player.pyi +7 -2
- homeassistant-stubs/components/squeezebox/switch.pyi +1 -0
- homeassistant-stubs/components/squeezebox/util.pyi +6 -0
- homeassistant-stubs/components/suez_water/coordinator.pyi +2 -1
- homeassistant-stubs/components/sun/condition.pyi +10 -5
- homeassistant-stubs/components/switch_as_x/__init__.pyi +0 -1
- homeassistant-stubs/components/switch_as_x/config_flow.pyi +1 -0
- homeassistant-stubs/components/switchbot_cloud/climate.pyi +2 -0
- homeassistant-stubs/components/switchbot_cloud/lock.pyi +7 -2
- homeassistant-stubs/components/switchbot_cloud/sensor.pyi +25 -2
- homeassistant-stubs/components/switchbot_cloud/switch.pyi +13 -1
- homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +4 -4
- homeassistant-stubs/components/switcher_kis/button.pyi +5 -6
- homeassistant-stubs/components/switcher_kis/climate.pyi +3 -3
- homeassistant-stubs/components/switcher_kis/const.pyi +1 -0
- homeassistant-stubs/components/switcher_kis/cover.pyi +4 -3
- homeassistant-stubs/components/switcher_kis/light.pyi +3 -2
- homeassistant-stubs/components/switcher_kis/sensor.pyi +4 -2
- homeassistant-stubs/components/switcher_kis/switch.pyi +3 -5
- homeassistant-stubs/components/systemmonitor/__init__.pyi +0 -1
- homeassistant-stubs/components/systemmonitor/config_flow.pyi +1 -0
- homeassistant-stubs/components/systemmonitor/coordinator.pyi +1 -0
- homeassistant-stubs/components/systemmonitor/sensor.pyi +3 -1
- homeassistant-stubs/components/telegram_bot/__init__.pyi +2 -1
- homeassistant-stubs/components/telegram_bot/bot.pyi +10 -5
- homeassistant-stubs/components/telegram_bot/const.pyi +9 -0
- homeassistant-stubs/components/telegram_bot/diagnostics.pyi +11 -0
- homeassistant-stubs/components/telegram_bot/entity.pyi +16 -0
- homeassistant-stubs/components/telegram_bot/event.pyi +18 -0
- homeassistant-stubs/components/telegram_bot/notify.pyi +6 -10
- homeassistant-stubs/components/tibber/coordinator.pyi +1 -0
- homeassistant-stubs/components/tod/__init__.pyi +0 -1
- homeassistant-stubs/components/tod/config_flow.pyi +1 -0
- homeassistant-stubs/components/tolo/__init__.pyi +3 -5
- homeassistant-stubs/components/tolo/binary_sensor.pyi +4 -6
- homeassistant-stubs/components/tolo/button.pyi +3 -5
- homeassistant-stubs/components/tolo/climate.pyi +3 -5
- homeassistant-stubs/components/tolo/coordinator.pyi +3 -2
- homeassistant-stubs/components/tolo/entity.pyi +2 -3
- homeassistant-stubs/components/tolo/fan.pyi +3 -5
- homeassistant-stubs/components/tolo/light.pyi +3 -5
- homeassistant-stubs/components/tolo/number.pyi +3 -5
- homeassistant-stubs/components/tolo/select.pyi +4 -5
- homeassistant-stubs/components/tolo/sensor.pyi +3 -5
- homeassistant-stubs/components/tolo/switch.pyi +3 -5
- homeassistant-stubs/components/trend/__init__.pyi +0 -1
- homeassistant-stubs/components/trend/config_flow.pyi +1 -0
- homeassistant-stubs/components/tts/__init__.pyi +2 -3
- homeassistant-stubs/components/unifi/light.pyi +44 -0
- homeassistant-stubs/components/uptimerobot/binary_sensor.pyi +2 -0
- homeassistant-stubs/components/uptimerobot/sensor.pyi +2 -0
- homeassistant-stubs/components/uptimerobot/switch.pyi +2 -0
- homeassistant-stubs/components/uptimerobot/utils.pyi +5 -0
- homeassistant-stubs/components/usb/__init__.pyi +2 -0
- homeassistant-stubs/components/usb/utils.pyi +7 -0
- homeassistant-stubs/components/vacuum/__init__.pyi +0 -15
- homeassistant-stubs/components/vivotek/__init__.pyi +0 -0
- homeassistant-stubs/components/vivotek/camera.pyi +35 -0
- homeassistant-stubs/components/vodafone_station/__init__.pyi +3 -1
- homeassistant-stubs/components/vodafone_station/config_flow.pyi +3 -2
- homeassistant-stubs/components/vodafone_station/const.pyi +3 -0
- homeassistant-stubs/components/vodafone_station/coordinator.pyi +4 -4
- homeassistant-stubs/components/volvo/__init__.pyi +2 -0
- homeassistant-stubs/components/volvo/binary_sensor.pyi +1 -3
- homeassistant-stubs/components/volvo/button.pyi +27 -0
- homeassistant-stubs/components/volvo/coordinator.pyi +12 -14
- homeassistant-stubs/components/volvo/device_tracker.pyi +23 -0
- homeassistant-stubs/components/volvo/diagnostics.pyi +12 -0
- homeassistant-stubs/components/volvo/entity.pyi +9 -5
- homeassistant-stubs/components/volvo/sensor.pyi +9 -8
- homeassistant-stubs/components/waqi/__init__.pyi +8 -0
- homeassistant-stubs/components/waqi/config_flow.pyi +14 -9
- homeassistant-stubs/components/waqi/const.pyi +1 -1
- homeassistant-stubs/components/waqi/coordinator.pyi +5 -4
- homeassistant-stubs/components/webostv/media_player.pyi +3 -0
- homeassistant-stubs/components/websocket_api/commands.pyi +2 -0
- homeassistant-stubs/components/wled/select.pyi +6 -3
- homeassistant-stubs/components/worldclock/__init__.pyi +0 -1
- homeassistant-stubs/components/worldclock/config_flow.pyi +1 -0
- homeassistant-stubs/components/zeroconf/__init__.pyi +3 -1
- homeassistant-stubs/components/zeroconf/discovery.pyi +8 -1
- homeassistant-stubs/components/zeroconf/repairs.pyi +13 -0
- homeassistant-stubs/components/zone/condition.pyi +10 -4
- homeassistant-stubs/components/zwave_js/config_flow.pyi +1 -0
- homeassistant-stubs/components/zwave_js/device_trigger.pyi +1 -1
- homeassistant-stubs/components/zwave_js/triggers/event.pyi +6 -8
- homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +6 -6
- homeassistant-stubs/config_entries.pyi +9 -0
- homeassistant-stubs/const.pyi +4 -21
- homeassistant-stubs/core.pyi +1 -7
- homeassistant-stubs/data_entry_flow.pyi +2 -0
- homeassistant-stubs/helpers/automation.pyi +6 -0
- homeassistant-stubs/helpers/condition.pyi +15 -5
- homeassistant-stubs/helpers/debounce.pyi +6 -1
- homeassistant-stubs/helpers/entity_platform.pyi +1 -1
- homeassistant-stubs/helpers/event.pyi +1 -1
- homeassistant-stubs/helpers/instance_id.pyi +1 -0
- homeassistant-stubs/helpers/llm.pyi +6 -1
- homeassistant-stubs/helpers/selector.pyi +5 -4
- homeassistant-stubs/helpers/service.pyi +4 -4
- homeassistant-stubs/helpers/template/__init__.pyi +0 -5
- homeassistant-stubs/helpers/trigger.pyi +18 -5
- homeassistant-stubs/helpers/update_coordinator.pyi +1 -0
- homeassistant-stubs/runner.pyi +1 -1
- homeassistant-stubs/util/async_iterator.pyi +33 -0
- homeassistant-stubs/util/unit_conversion.pyi +15 -0
- {homeassistant_stubs-2025.10.4.dist-info → homeassistant_stubs-2025.11.0b1.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.10.4.dist-info → homeassistant_stubs-2025.11.0b1.dist-info}/RECORD +434 -398
- homeassistant-stubs/components/elevenlabs/__init__.pyi +0 -22
- homeassistant-stubs/components/elevenlabs/config_flow.pyi +0 -33
- homeassistant-stubs/components/elevenlabs/const.pyi +0 -14
- homeassistant-stubs/components/elevenlabs/tts.pyi +0 -36
- homeassistant-stubs/components/neato/__init__.pyi +0 -15
- homeassistant-stubs/components/neato/api.pyi +0 -17
- homeassistant-stubs/components/neato/application_credentials.pyi +0 -6
- homeassistant-stubs/components/neato/button.pyi +0 -18
- homeassistant-stubs/components/neato/camera.pyi +0 -34
- homeassistant-stubs/components/neato/config_flow.pyi +0 -15
- homeassistant-stubs/components/neato/const.pyi +0 -13
- homeassistant-stubs/components/neato/entity.pyi +0 -11
- homeassistant-stubs/components/neato/hub.pyi +0 -17
- homeassistant-stubs/components/neato/sensor.pyi +0 -30
- homeassistant-stubs/components/neato/switch.pyi +0 -34
- homeassistant-stubs/components/neato/vacuum.pyi +0 -70
- homeassistant-stubs/components/recorder/history/legacy.pyi +0 -48
- homeassistant-stubs/components/recorder/history/modern.pyi +0 -39
- homeassistant-stubs/components/recorder/models/legacy.pyi +0 -45
- homeassistant-stubs/components/sfr_box/models.pyi +0 -12
- {homeassistant_stubs-2025.10.4.dist-info → homeassistant_stubs-2025.11.0b1.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.10.4.dist-info → homeassistant_stubs-2025.11.0b1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
from ..const import CIRCULAR_MEAN_SCHEMA_VERSION as CIRCULAR_MEAN_SCHEMA_VERSION
|
|
1
|
+
from ..const import CIRCULAR_MEAN_SCHEMA_VERSION as CIRCULAR_MEAN_SCHEMA_VERSION, UNIT_CLASS_SCHEMA_VERSION as UNIT_CLASS_SCHEMA_VERSION
|
|
2
2
|
from ..core import Recorder as Recorder
|
|
3
3
|
from ..db_schema import StatisticsMeta as StatisticsMeta
|
|
4
4
|
from ..models import StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData
|
|
5
|
+
from ..statistics import STATISTIC_UNIT_TO_UNIT_CONVERTER as STATISTIC_UNIT_TO_UNIT_CONVERTER
|
|
5
6
|
from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element
|
|
6
7
|
from _typeshed import Incomplete
|
|
7
8
|
from lru import LRU
|
|
@@ -20,6 +21,7 @@ INDEX_UNIT_OF_MEASUREMENT: Final[int]
|
|
|
20
21
|
INDEX_HAS_SUM: Final[int]
|
|
21
22
|
INDEX_NAME: Final[int]
|
|
22
23
|
INDEX_MEAN_TYPE: Final[int]
|
|
24
|
+
INDEX_UNIT_CLASS: Final[int]
|
|
23
25
|
|
|
24
26
|
def _generate_get_metadata_stmt(statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None, statistic_source: str | None = None, schema_version: int = 0) -> StatementLambdaElement: ...
|
|
25
27
|
|
|
@@ -37,7 +39,7 @@ class StatisticsMetaManager:
|
|
|
37
39
|
def get_many(self, session: Session, statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None, statistic_source: str | None = None) -> dict[str, tuple[int, StatisticMetaData]]: ...
|
|
38
40
|
def get_from_cache_threadsafe(self, statistic_ids: set[str]) -> dict[str, tuple[int, StatisticMetaData]]: ...
|
|
39
41
|
def update_or_add(self, session: Session, new_metadata: StatisticMetaData, old_metadata_dict: dict[str, tuple[int, StatisticMetaData]]) -> tuple[str | None, int]: ...
|
|
40
|
-
def update_unit_of_measurement(self, session: Session, statistic_id: str, new_unit: str | None) -> None: ...
|
|
42
|
+
def update_unit_of_measurement(self, session: Session, statistic_id: str, new_unit_class: str | None, new_unit: str | None) -> None: ...
|
|
41
43
|
def update_statistic_id(self, session: Session, source: str, old_statistic_id: str, new_statistic_id: str) -> None: ...
|
|
42
44
|
def delete(self, session: Session, statistic_ids: list[str]) -> None: ...
|
|
43
45
|
def reset(self) -> None: ...
|
|
@@ -41,6 +41,7 @@ class UpdateStatisticsMetadataTask(RecorderTask):
|
|
|
41
41
|
on_done: Callable[[], None] | None
|
|
42
42
|
statistic_id: str
|
|
43
43
|
new_statistic_id: str | None | UndefinedType
|
|
44
|
+
new_unit_class: str | None | UndefinedType
|
|
44
45
|
new_unit_of_measurement: str | None | UndefinedType
|
|
45
46
|
def run(self, instance: Recorder) -> None: ...
|
|
46
47
|
|
|
@@ -48,7 +48,7 @@ FIRST_POSSIBLE_SUNDAY: int
|
|
|
48
48
|
SUNDAY_WEEKDAY: int
|
|
49
49
|
DAYS_IN_WEEK: int
|
|
50
50
|
|
|
51
|
-
def execute(qry: Query
|
|
51
|
+
def execute(qry: Query) -> list[Row]: ...
|
|
52
52
|
def execute_stmt_lambda_element(session: Session, stmt: StatementLambdaElement, start_time: datetime | None = None, end_time: datetime | None = None, yield_per: int = ..., orm_rows: bool = True) -> Sequence[Row] | Result: ...
|
|
53
53
|
def validate_or_move_away_sqlite_database(dburl: str) -> bool: ...
|
|
54
54
|
def dburl_to_path(dburl: str) -> str: ...
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .models import StatisticMeanType as StatisticMeanType, StatisticPeriod as StatisticPeriod
|
|
2
|
-
from .statistics import
|
|
2
|
+
from .statistics import UNIT_CLASS_TO_UNIT_CONVERTER as UNIT_CLASS_TO_UNIT_CONVERTER, async_add_external_statistics as async_add_external_statistics, async_change_statistics_unit as async_change_statistics_unit, async_import_statistics as async_import_statistics, async_list_statistic_ids as async_list_statistic_ids, async_update_statistics_metadata as async_update_statistics_metadata, list_statistic_ids as list_statistic_ids, statistic_during_period as statistic_during_period, statistics_during_period as statistics_during_period, update_statistics_issues as update_statistics_issues, validate_statistics as validate_statistics
|
|
3
3
|
from .util import PERIOD_SCHEMA as PERIOD_SCHEMA, get_instance as get_instance, resolve_period as resolve_period
|
|
4
4
|
from _typeshed import Incomplete
|
|
5
5
|
from datetime import datetime as dt
|
|
@@ -8,9 +8,11 @@ from homeassistant.components.websocket_api import messages as messages
|
|
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback, valid_entity_id as valid_entity_id
|
|
9
9
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
10
10
|
from homeassistant.helpers.json import json_bytes as json_bytes
|
|
11
|
-
from homeassistant.
|
|
11
|
+
from homeassistant.helpers.typing import UNDEFINED as UNDEFINED
|
|
12
|
+
from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, CarbonMonoxideConcentrationConverter as CarbonMonoxideConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, TemperatureDeltaConverter as TemperatureDeltaConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
12
13
|
from typing import Any, Literal
|
|
13
14
|
|
|
15
|
+
_LOGGER: Incomplete
|
|
14
16
|
CLEAR_STATISTICS_TIME_OUT: int
|
|
15
17
|
UPDATE_STATISTICS_METADATA_TIME_OUT: int
|
|
16
18
|
UNIT_SCHEMA: Incomplete
|
|
@@ -41,8 +43,8 @@ async def ws_get_statistics_metadata(hass: HomeAssistant, connection: websocket_
|
|
|
41
43
|
@websocket_api.async_response
|
|
42
44
|
async def ws_update_statistics_metadata(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
|
43
45
|
@websocket_api.require_admin
|
|
44
|
-
@
|
|
45
|
-
def ws_change_statistics_unit(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
|
46
|
+
@websocket_api.async_response
|
|
47
|
+
async def ws_change_statistics_unit(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
|
46
48
|
@websocket_api.require_admin
|
|
47
49
|
@websocket_api.async_response
|
|
48
50
|
async def ws_adjust_sum_statistics(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
|
@@ -6,7 +6,7 @@ from collections.abc import Callable as Callable
|
|
|
6
6
|
from dataclasses import dataclass
|
|
7
7
|
from datetime import datetime
|
|
8
8
|
from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
|
9
|
-
from homeassistant.const import PERCENTAGE as PERCENTAGE, UnitOfEnergy as UnitOfEnergy, UnitOfLength as UnitOfLength, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume
|
|
9
|
+
from homeassistant.const import PERCENTAGE as PERCENTAGE, UnitOfEnergy as UnitOfEnergy, UnitOfLength as UnitOfLength, UnitOfPower as UnitOfPower, UnitOfPressure as UnitOfPressure, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume
|
|
10
10
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
11
11
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
12
12
|
from homeassistant.helpers.typing import StateType as StateType
|
|
@@ -11,7 +11,7 @@ from homeassistant.const import CONF_PORT as CONF_PORT, EVENT_HOMEASSISTANT_STOP
|
|
|
11
11
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
12
12
|
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
|
13
13
|
from homeassistant.helpers import device_registry as dr
|
|
14
|
-
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC
|
|
14
|
+
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC
|
|
15
15
|
from homeassistant.helpers.event import async_call_later as async_call_later
|
|
16
16
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
17
17
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
|
@@ -22,9 +22,15 @@ class ReolinkSmartAIBinarySensorEntityDescription(BinarySensorEntityDescription,
|
|
|
22
22
|
value: Callable[[Host, int, int], bool]
|
|
23
23
|
supported: Callable[[Host, int, int], bool] = ...
|
|
24
24
|
|
|
25
|
+
@dataclass(frozen=True, kw_only=True)
|
|
26
|
+
class ReolinkIndexBinarySensorEntityDescription(BinarySensorEntityDescription, ReolinkEntityDescription):
|
|
27
|
+
value: Callable[[Host, int, int], bool | None]
|
|
28
|
+
supported: Callable[[Host, int, int], bool] = ...
|
|
29
|
+
|
|
25
30
|
BINARY_PUSH_SENSORS: Incomplete
|
|
26
31
|
BINARY_SENSORS: Incomplete
|
|
27
32
|
BINARY_SMART_AI_SENSORS: Incomplete
|
|
33
|
+
BINARY_IO_INPUT_SENSOR: Incomplete
|
|
28
34
|
|
|
29
35
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
30
36
|
|
|
@@ -47,3 +53,12 @@ class ReolinkSmartAIBinarySensorEntity(ReolinkChannelCoordinatorEntity, BinarySe
|
|
|
47
53
|
def __init__(self, reolink_data: ReolinkData, channel: int, location: int, entity_description: ReolinkSmartAIBinarySensorEntityDescription) -> None: ...
|
|
48
54
|
@property
|
|
49
55
|
def is_on(self) -> bool: ...
|
|
56
|
+
|
|
57
|
+
class ReolinkIndexBinarySensorEntity(ReolinkChannelCoordinatorEntity, BinarySensorEntity):
|
|
58
|
+
entity_description: ReolinkIndexBinarySensorEntityDescription
|
|
59
|
+
_attr_unique_id: Incomplete
|
|
60
|
+
_index: Incomplete
|
|
61
|
+
_attr_translation_placeholders: Incomplete
|
|
62
|
+
def __init__(self, reolink_data: ReolinkData, channel: int, index: int, entity_description: ReolinkIndexBinarySensorEntityDescription) -> None: ...
|
|
63
|
+
@property
|
|
64
|
+
def is_on(self) -> bool | None: ...
|
|
@@ -23,6 +23,8 @@ class ReolinkSirenEntity(ReolinkChannelCoordinatorEntity, SirenEntity):
|
|
|
23
23
|
_attr_supported_features: Incomplete
|
|
24
24
|
entity_description: ReolinkSirenEntityDescription
|
|
25
25
|
def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkSirenEntityDescription) -> None: ...
|
|
26
|
+
@property
|
|
27
|
+
def is_on(self) -> bool | None: ...
|
|
26
28
|
@raise_translated_error
|
|
27
29
|
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
|
28
30
|
@raise_translated_error
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
from .const import DOMAIN as DOMAIN
|
|
2
1
|
from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostChimeCoordinatorEntity as ReolinkHostChimeCoordinatorEntity, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
|
|
3
2
|
from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
|
|
4
3
|
from _typeshed import Incomplete
|
|
@@ -19,7 +18,7 @@ class ReolinkSwitchEntityDescription(SwitchEntityDescription, ReolinkChannelEnti
|
|
|
19
18
|
value: Callable[[Host, int], bool | None]
|
|
20
19
|
|
|
21
20
|
@dataclass(frozen=True, kw_only=True)
|
|
22
|
-
class
|
|
21
|
+
class ReolinkHostSwitchEntityDescription(SwitchEntityDescription, ReolinkHostEntityDescription):
|
|
23
22
|
method: Callable[[Host, bool], Any]
|
|
24
23
|
value: Callable[[Host], bool]
|
|
25
24
|
|
|
@@ -28,10 +27,16 @@ class ReolinkChimeSwitchEntityDescription(SwitchEntityDescription, ReolinkChimeE
|
|
|
28
27
|
method: Callable[[Chime, bool], Any]
|
|
29
28
|
value: Callable[[Chime], bool | None]
|
|
30
29
|
|
|
30
|
+
@dataclass(frozen=True, kw_only=True)
|
|
31
|
+
class ReolinkSwitchIndexEntityDescription(SwitchEntityDescription, ReolinkChannelEntityDescription):
|
|
32
|
+
method: Callable[[Host, int, int, bool], Any]
|
|
33
|
+
value: Callable[[Host, int, int], bool | None]
|
|
34
|
+
placeholder: Callable[[Host, int, int], str]
|
|
35
|
+
|
|
31
36
|
SWITCH_ENTITIES: Incomplete
|
|
32
|
-
|
|
37
|
+
HOST_SWITCH_ENTITIES: Incomplete
|
|
33
38
|
CHIME_SWITCH_ENTITIES: Incomplete
|
|
34
|
-
|
|
39
|
+
RULE_SWITCH_ENTITY: Incomplete
|
|
35
40
|
|
|
36
41
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
37
42
|
|
|
@@ -45,9 +50,9 @@ class ReolinkSwitchEntity(ReolinkChannelCoordinatorEntity, SwitchEntity):
|
|
|
45
50
|
@raise_translated_error
|
|
46
51
|
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
|
47
52
|
|
|
48
|
-
class
|
|
49
|
-
entity_description:
|
|
50
|
-
def __init__(self, reolink_data: ReolinkData, entity_description:
|
|
53
|
+
class ReolinkHostSwitchEntity(ReolinkHostCoordinatorEntity, SwitchEntity):
|
|
54
|
+
entity_description: ReolinkHostSwitchEntityDescription
|
|
55
|
+
def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostSwitchEntityDescription) -> None: ...
|
|
51
56
|
@property
|
|
52
57
|
def is_on(self) -> bool: ...
|
|
53
58
|
@raise_translated_error
|
|
@@ -74,3 +79,16 @@ class ReolinkHostChimeSwitchEntity(ReolinkHostChimeCoordinatorEntity, SwitchEnti
|
|
|
74
79
|
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
|
75
80
|
@raise_translated_error
|
|
76
81
|
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
|
82
|
+
|
|
83
|
+
class ReolinkIndexSwitchEntity(ReolinkChannelCoordinatorEntity, SwitchEntity):
|
|
84
|
+
entity_description: ReolinkSwitchIndexEntityDescription
|
|
85
|
+
_index: Incomplete
|
|
86
|
+
_attr_translation_placeholders: Incomplete
|
|
87
|
+
_attr_unique_id: Incomplete
|
|
88
|
+
def __init__(self, reolink_data: ReolinkData, channel: int, index: int, entity_description: ReolinkSwitchIndexEntityDescription) -> None: ...
|
|
89
|
+
@property
|
|
90
|
+
def is_on(self) -> bool | None: ...
|
|
91
|
+
@raise_translated_error
|
|
92
|
+
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
|
93
|
+
@raise_translated_error
|
|
94
|
+
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
|
@@ -8,7 +8,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant
|
|
|
8
8
|
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
|
9
9
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
|
10
10
|
from roborock import HomeDataRoom as HomeDataRoom
|
|
11
|
-
from roborock.
|
|
11
|
+
from roborock.data import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, UserData
|
|
12
12
|
from roborock.web_api import RoborockApiClient
|
|
13
13
|
from typing import Any
|
|
14
14
|
|
|
@@ -7,7 +7,7 @@ from homeassistant.const import CONF_USERNAME as CONF_USERNAME
|
|
|
7
7
|
from homeassistant.core import callback as callback
|
|
8
8
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
|
9
9
|
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo as DhcpServiceInfo
|
|
10
|
-
from roborock.
|
|
10
|
+
from roborock.data import UserData as UserData
|
|
11
11
|
from roborock.web_api import RoborockApiClient
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
@@ -8,12 +8,13 @@ from homeassistant.const import ATTR_CONNECTIONS as ATTR_CONNECTIONS
|
|
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
9
9
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
10
10
|
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
11
|
+
from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue, async_delete_issue as async_delete_issue
|
|
11
12
|
from homeassistant.helpers.typing import StateType as StateType
|
|
12
13
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
|
13
14
|
from homeassistant.util import slugify as slugify
|
|
14
15
|
from propcache.api import cached_property
|
|
15
16
|
from roborock import HomeDataRoom as HomeDataRoom
|
|
16
|
-
from roborock.
|
|
17
|
+
from roborock.data import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, HomeDataScene as HomeDataScene, NetworkInfo as NetworkInfo, UserData as UserData
|
|
17
18
|
from roborock.roborock_message import RoborockDyadDataProtocol, RoborockZeoProtocol
|
|
18
19
|
from roborock.roborock_typing import DeviceProp
|
|
19
20
|
from roborock.version_1_apis.roborock_local_client_v1 import RoborockLocalClientV1
|
|
@@ -7,7 +7,7 @@ from homeassistant.helpers.entity import Entity as Entity
|
|
|
7
7
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
|
8
8
|
from roborock.api import RoborockClient as RoborockClient
|
|
9
9
|
from roborock.command_cache import CacheableAttribute as CacheableAttribute
|
|
10
|
-
from roborock.
|
|
10
|
+
from roborock.data import Consumable as Consumable, Status
|
|
11
11
|
from roborock.roborock_message import RoborockDataProtocol
|
|
12
12
|
from roborock.roborock_typing import RoborockCommand
|
|
13
13
|
from roborock.version_1_apis.roborock_client_v1 import AttributeCache as AttributeCache, RoborockClientV1 as RoborockClientV1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
2
|
from datetime import datetime
|
|
3
|
-
from roborock.
|
|
3
|
+
from roborock.data import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, NetworkInfo as NetworkInfo
|
|
4
4
|
from roborock.roborock_typing import DeviceProp as DeviceProp
|
|
5
5
|
from typing import Any
|
|
6
6
|
from vacuum_map_parser_base.map_data import MapData as MapData
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
from _typeshed import Incomplete
|
|
2
2
|
from bs4 import BeautifulSoup
|
|
3
3
|
from datetime import timedelta
|
|
4
|
-
from homeassistant.components.rest import RestData as RestData
|
|
5
|
-
from homeassistant.components.rest.const import CONF_PAYLOAD_TEMPLATE as CONF_PAYLOAD_TEMPLATE
|
|
4
|
+
from homeassistant.components.rest import CONF_PAYLOAD_TEMPLATE as CONF_PAYLOAD_TEMPLATE, RestData as RestData
|
|
6
5
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
7
6
|
from homeassistant.const import CONF_RESOURCE_TEMPLATE as CONF_RESOURCE_TEMPLATE
|
|
8
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN, LOGGER as LOGGER, PLATFORMS as PLATFORMS
|
|
2
2
|
from .coordinator import SensiboDataUpdateCoordinator as SensiboDataUpdateCoordinator
|
|
3
|
+
from .services import async_setup_services as async_setup_services
|
|
3
4
|
from .util import NoDevicesError as NoDevicesError, NoUsernameError as NoUsernameError, async_validate_api as async_validate_api
|
|
5
|
+
from _typeshed import Incomplete
|
|
4
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
5
7
|
from homeassistant.const import CONF_API_KEY as CONF_API_KEY
|
|
6
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
7
9
|
from homeassistant.helpers.device_registry import DeviceEntry as DeviceEntry
|
|
10
|
+
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
8
11
|
|
|
9
12
|
type SensiboConfigEntry = ConfigEntry[SensiboDataUpdateCoordinator]
|
|
13
|
+
CONFIG_SCHEMA: Incomplete
|
|
14
|
+
|
|
15
|
+
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
|
|
10
16
|
async def async_setup_entry(hass: HomeAssistant, entry: SensiboConfigEntry) -> bool: ...
|
|
11
17
|
async def async_unload_entry(hass: HomeAssistant, entry: SensiboConfigEntry) -> bool: ...
|
|
12
18
|
async def async_migrate_entry(hass: HomeAssistant, entry: SensiboConfigEntry) -> bool: ...
|
|
@@ -3,37 +3,14 @@ from .const import DOMAIN as DOMAIN
|
|
|
3
3
|
from .coordinator import SensiboDataUpdateCoordinator as SensiboDataUpdateCoordinator
|
|
4
4
|
from .entity import SensiboDeviceBaseEntity as SensiboDeviceBaseEntity, async_handle_api_call as async_handle_api_call
|
|
5
5
|
from _typeshed import Incomplete
|
|
6
|
-
from homeassistant.components.climate import
|
|
7
|
-
from homeassistant.const import
|
|
8
|
-
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
6
|
+
from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACMode as HVACMode
|
|
7
|
+
from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, PRECISION_TENTHS as PRECISION_TENTHS, UnitOfTemperature as UnitOfTemperature
|
|
8
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
9
9
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
|
|
10
|
-
from homeassistant.helpers import entity_platform as entity_platform
|
|
11
10
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
12
11
|
from homeassistant.util.unit_conversion import TemperatureConverter as TemperatureConverter
|
|
13
12
|
from typing import Any
|
|
14
13
|
|
|
15
|
-
SERVICE_ASSUME_STATE: str
|
|
16
|
-
SERVICE_ENABLE_TIMER: str
|
|
17
|
-
ATTR_MINUTES: str
|
|
18
|
-
SERVICE_ENABLE_PURE_BOOST: str
|
|
19
|
-
SERVICE_DISABLE_PURE_BOOST: str
|
|
20
|
-
SERVICE_FULL_STATE: str
|
|
21
|
-
SERVICE_ENABLE_CLIMATE_REACT: str
|
|
22
|
-
SERVICE_GET_DEVICE_CAPABILITIES: str
|
|
23
|
-
ATTR_HIGH_TEMPERATURE_THRESHOLD: str
|
|
24
|
-
ATTR_HIGH_TEMPERATURE_STATE: str
|
|
25
|
-
ATTR_LOW_TEMPERATURE_THRESHOLD: str
|
|
26
|
-
ATTR_LOW_TEMPERATURE_STATE: str
|
|
27
|
-
ATTR_SMART_TYPE: str
|
|
28
|
-
ATTR_AC_INTEGRATION: str
|
|
29
|
-
ATTR_GEO_INTEGRATION: str
|
|
30
|
-
ATTR_INDOOR_INTEGRATION: str
|
|
31
|
-
ATTR_OUTDOOR_INTEGRATION: str
|
|
32
|
-
ATTR_SENSITIVITY: str
|
|
33
|
-
ATTR_TARGET_TEMPERATURE: str
|
|
34
|
-
ATTR_HORIZONTAL_SWING_MODE: str
|
|
35
|
-
ATTR_LIGHT: str
|
|
36
|
-
BOOST_INCLUSIVE: str
|
|
37
14
|
AVAILABLE_FAN_MODES: Incomplete
|
|
38
15
|
AVAILABLE_SWING_MODES: Incomplete
|
|
39
16
|
AVAILABLE_HORIZONTAL_SWING_MODES: Incomplete
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
|
2
|
+
from homeassistant.components.climate import ATTR_FAN_MODE as ATTR_FAN_MODE, ATTR_HVAC_MODE as ATTR_HVAC_MODE, ATTR_SWING_MODE as ATTR_SWING_MODE, HVACMode as HVACMode
|
|
3
|
+
from homeassistant.const import ATTR_MODE as ATTR_MODE, ATTR_STATE as ATTR_STATE
|
|
4
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, SupportsResponse as SupportsResponse, callback as callback
|
|
5
|
+
from homeassistant.helpers import service as service
|
|
6
|
+
|
|
7
|
+
SERVICE_ASSUME_STATE: str
|
|
8
|
+
SERVICE_ENABLE_TIMER: str
|
|
9
|
+
ATTR_MINUTES: str
|
|
10
|
+
SERVICE_ENABLE_PURE_BOOST: str
|
|
11
|
+
SERVICE_DISABLE_PURE_BOOST: str
|
|
12
|
+
SERVICE_FULL_STATE: str
|
|
13
|
+
SERVICE_ENABLE_CLIMATE_REACT: str
|
|
14
|
+
SERVICE_GET_DEVICE_CAPABILITIES: str
|
|
15
|
+
ATTR_HIGH_TEMPERATURE_THRESHOLD: str
|
|
16
|
+
ATTR_HIGH_TEMPERATURE_STATE: str
|
|
17
|
+
ATTR_LOW_TEMPERATURE_THRESHOLD: str
|
|
18
|
+
ATTR_LOW_TEMPERATURE_STATE: str
|
|
19
|
+
ATTR_SMART_TYPE: str
|
|
20
|
+
ATTR_AC_INTEGRATION: str
|
|
21
|
+
ATTR_GEO_INTEGRATION: str
|
|
22
|
+
ATTR_INDOOR_INTEGRATION: str
|
|
23
|
+
ATTR_OUTDOOR_INTEGRATION: str
|
|
24
|
+
ATTR_SENSITIVITY: str
|
|
25
|
+
ATTR_TARGET_TEMPERATURE: str
|
|
26
|
+
ATTR_HORIZONTAL_SWING_MODE: str
|
|
27
|
+
ATTR_LIGHT: str
|
|
28
|
+
BOOST_INCLUSIVE: str
|
|
29
|
+
|
|
30
|
+
@callback
|
|
31
|
+
def async_setup_services(hass: HomeAssistant) -> None: ...
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from _typeshed import Incomplete
|
|
2
2
|
from enum import StrEnum
|
|
3
3
|
from homeassistant.const import CONCENTRATION_GRAMS_PER_CUBIC_METER as CONCENTRATION_GRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT as CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER as CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER as CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER, CONCENTRATION_PARTS_PER_BILLION as CONCENTRATION_PARTS_PER_BILLION, CONCENTRATION_PARTS_PER_MILLION as CONCENTRATION_PARTS_PER_MILLION, DEGREE as DEGREE, LIGHT_LUX as LIGHT_LUX, PERCENTAGE as PERCENTAGE, SIGNAL_STRENGTH_DECIBELS as SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS_MILLIWATT as SIGNAL_STRENGTH_DECIBELS_MILLIWATT, UnitOfApparentPower as UnitOfApparentPower, UnitOfArea as UnitOfArea, UnitOfBloodGlucoseConcentration as UnitOfBloodGlucoseConcentration, UnitOfConductivity as UnitOfConductivity, UnitOfDataRate as UnitOfDataRate, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfEnergyDistance as UnitOfEnergyDistance, UnitOfFrequency as UnitOfFrequency, UnitOfInformation as UnitOfInformation, UnitOfIrradiance as UnitOfIrradiance, UnitOfLength as UnitOfLength, UnitOfMass as UnitOfMass, UnitOfPower as UnitOfPower, UnitOfPrecipitationDepth as UnitOfPrecipitationDepth, UnitOfPressure as UnitOfPressure, UnitOfReactiveEnergy as UnitOfReactiveEnergy, UnitOfReactivePower as UnitOfReactivePower, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate, UnitOfVolumetricFlux as UnitOfVolumetricFlux
|
|
4
|
-
from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
4
|
+
from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, CarbonMonoxideConcentrationConverter as CarbonMonoxideConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, TemperatureDeltaConverter as TemperatureDeltaConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
5
5
|
from typing import Final
|
|
6
6
|
|
|
7
7
|
DOMAIN: Final[str]
|
|
@@ -60,6 +60,7 @@ class SensorDeviceClass(StrEnum):
|
|
|
60
60
|
SPEED = 'speed'
|
|
61
61
|
SULPHUR_DIOXIDE = 'sulphur_dioxide'
|
|
62
62
|
TEMPERATURE = 'temperature'
|
|
63
|
+
TEMPERATURE_DELTA = 'temperature_delta'
|
|
63
64
|
VOLATILE_ORGANIC_COMPOUNDS = 'volatile_organic_compounds'
|
|
64
65
|
VOLATILE_ORGANIC_COMPOUNDS_PARTS = 'volatile_organic_compounds_parts'
|
|
65
66
|
VOLTAGE = 'voltage'
|
|
@@ -55,6 +55,7 @@ CONF_IS_SIGNAL_STRENGTH: str
|
|
|
55
55
|
CONF_IS_SOUND_PRESSURE: str
|
|
56
56
|
CONF_IS_SULPHUR_DIOXIDE: str
|
|
57
57
|
CONF_IS_TEMPERATURE: str
|
|
58
|
+
CONF_IS_TEMPERATURE_DELTA: str
|
|
58
59
|
CONF_IS_VALUE: str
|
|
59
60
|
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS: str
|
|
60
61
|
CONF_IS_VOLATILE_ORGANIC_COMPOUNDS_PARTS: str
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import datetime
|
|
2
|
-
from .const import AMBIGUOUS_UNITS as AMBIGUOUS_UNITS, ATTR_LAST_RESET as ATTR_LAST_RESET, ATTR_STATE_CLASS as ATTR_STATE_CLASS, DOMAIN as DOMAIN, SensorStateClass as SensorStateClass, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate
|
|
2
|
+
from .const import AMBIGUOUS_UNITS as AMBIGUOUS_UNITS, ATTR_LAST_RESET as ATTR_LAST_RESET, ATTR_STATE_CLASS as ATTR_STATE_CLASS, DOMAIN as DOMAIN, SensorStateClass as SensorStateClass, UNIT_CONVERTERS as UNIT_CONVERTERS, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from collections.abc import Callable as Callable, Iterable
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from homeassistant.components.recorder import get_instance as get_instance, history as history, statistics as statistics
|
|
7
7
|
from homeassistant.components.recorder.models import StatisticData as StatisticData, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData, StatisticResult as StatisticResult
|
|
8
|
-
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT as ATTR_UNIT_OF_MEASUREMENT, REVOLUTIONS_PER_MINUTE as REVOLUTIONS_PER_MINUTE, UnitOfIrradiance as UnitOfIrradiance, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfVolume as UnitOfVolume
|
|
8
|
+
from homeassistant.const import ATTR_DEVICE_CLASS as ATTR_DEVICE_CLASS, ATTR_UNIT_OF_MEASUREMENT as ATTR_UNIT_OF_MEASUREMENT, REVOLUTIONS_PER_MINUTE as REVOLUTIONS_PER_MINUTE, UnitOfIrradiance as UnitOfIrradiance, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfVolume as UnitOfVolume
|
|
9
9
|
from homeassistant.core import HomeAssistant as HomeAssistant, State as State, callback as callback, split_entity_id as split_entity_id
|
|
10
10
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
11
11
|
from homeassistant.helpers.entity import entity_sources as entity_sources
|
|
@@ -14,6 +14,7 @@ from homeassistant.loader import async_suggest_report_issue as async_suggest_rep
|
|
|
14
14
|
from homeassistant.util.async_ import run_callback_threadsafe as run_callback_threadsafe
|
|
15
15
|
from homeassistant.util.enum import try_parse_enum as try_parse_enum
|
|
16
16
|
from homeassistant.util.hass_dict import HassKey as HassKey
|
|
17
|
+
from homeassistant.util.unit_conversion import BaseUnitConverter as BaseUnitConverter
|
|
17
18
|
from sqlalchemy.orm.session import Session as Session
|
|
18
19
|
from typing import Any
|
|
19
20
|
|
|
@@ -44,7 +45,9 @@ def _get_units(fstates: list[tuple[float, State]]) -> set[str | None]: ...
|
|
|
44
45
|
def _equivalent_units(units: set[str | None]) -> bool: ...
|
|
45
46
|
def _entity_history_to_float_and_state(entity_history: Iterable[State]) -> list[tuple[float, State]]: ...
|
|
46
47
|
def _is_numeric(state: State) -> bool: ...
|
|
47
|
-
def
|
|
48
|
+
def _get_unit_class(device_class: str | None, unit: str | None) -> str | None: ...
|
|
49
|
+
def _get_unit_converter(unit_class: str | None) -> type[BaseUnitConverter] | None: ...
|
|
50
|
+
def _normalize_states(hass: HomeAssistant, old_metadatas: dict[str, tuple[int, StatisticMetaData]], fstates: list[tuple[float, State]], entity_id: str) -> tuple[str | None, str | None, list[tuple[float, State]]]: ...
|
|
48
51
|
def _suggest_report_issue(hass: HomeAssistant, entity_id: str) -> str: ...
|
|
49
52
|
def warn_dip(hass: HomeAssistant, entity_id: str, state: State, previous_fstate: float) -> None: ...
|
|
50
53
|
def warn_negative(hass: HomeAssistant, entity_id: str, state: State) -> None: ...
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN, PLATFORMS as PLATFORMS, PLATFORMS_WITH_AUTH as PLATFORMS_WITH_AUTH
|
|
2
|
-
from .coordinator import SFRDataUpdateCoordinator as SFRDataUpdateCoordinator
|
|
3
|
-
from .models import DomainData as DomainData
|
|
4
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
2
|
+
from .coordinator import SFRConfigEntry as SFRConfigEntry, SFRDataUpdateCoordinator as SFRDataUpdateCoordinator, SFRRuntimeData as SFRRuntimeData
|
|
5
3
|
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
|
|
6
4
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
7
5
|
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
|
8
|
-
from homeassistant.helpers.
|
|
6
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
|
9
7
|
|
|
10
|
-
async def async_setup_entry(hass: HomeAssistant, entry:
|
|
11
|
-
async def async_unload_entry(hass: HomeAssistant, entry:
|
|
8
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SFRConfigEntry) -> bool: ...
|
|
9
|
+
async def async_unload_entry(hass: HomeAssistant, entry: SFRConfigEntry) -> bool: ...
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
from .
|
|
2
|
-
from .
|
|
3
|
-
from .models import DomainData as DomainData
|
|
4
|
-
from _typeshed import Incomplete
|
|
1
|
+
from .coordinator import SFRConfigEntry as SFRConfigEntry
|
|
2
|
+
from .entity import SFRCoordinatorEntity as SFRCoordinatorEntity
|
|
5
3
|
from collections.abc import Callable as Callable
|
|
6
4
|
from dataclasses import dataclass
|
|
7
5
|
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
6
|
from homeassistant.const import EntityCategory as EntityCategory
|
|
10
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
11
|
-
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
12
8
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
13
|
-
from
|
|
14
|
-
from sfrbox_api.models import DslInfo, FtthInfo, SystemInfo as SystemInfo, WanInfo
|
|
9
|
+
from sfrbox_api.models import DslInfo, FtthInfo, WanInfo
|
|
15
10
|
|
|
16
11
|
@dataclass(frozen=True, kw_only=True)
|
|
17
12
|
class SFRBoxBinarySensorEntityDescription[_T](BinarySensorEntityDescription):
|
|
@@ -21,13 +16,9 @@ DSL_SENSOR_TYPES: tuple[SFRBoxBinarySensorEntityDescription[DslInfo], ...]
|
|
|
21
16
|
FTTH_SENSOR_TYPES: tuple[SFRBoxBinarySensorEntityDescription[FtthInfo], ...]
|
|
22
17
|
WAN_SENSOR_TYPES: tuple[SFRBoxBinarySensorEntityDescription[WanInfo], ...]
|
|
23
18
|
|
|
24
|
-
async def async_setup_entry(hass: HomeAssistant, entry:
|
|
19
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SFRConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
25
20
|
|
|
26
|
-
class SFRBoxBinarySensor[_T](
|
|
21
|
+
class SFRBoxBinarySensor[_T](SFRCoordinatorEntity[_T], BinarySensorEntity):
|
|
27
22
|
entity_description: SFRBoxBinarySensorEntityDescription[_T]
|
|
28
|
-
_attr_has_entity_name: bool
|
|
29
|
-
_attr_unique_id: Incomplete
|
|
30
|
-
_attr_device_info: Incomplete
|
|
31
|
-
def __init__(self, coordinator: SFRDataUpdateCoordinator[_T], description: SFRBoxBinarySensorEntityDescription, system_info: SystemInfo) -> None: ...
|
|
32
23
|
@property
|
|
33
24
|
def is_on(self) -> bool | None: ...
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
from .
|
|
2
|
-
from .
|
|
1
|
+
from .coordinator import SFRConfigEntry as SFRConfigEntry
|
|
2
|
+
from .entity import SFREntity as SFREntity
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from collections.abc import Awaitable, Callable as Callable, Coroutine
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from homeassistant.components.button import ButtonDeviceClass as ButtonDeviceClass, ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
|
|
7
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
8
7
|
from homeassistant.const import EntityCategory as EntityCategory
|
|
9
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
10
9
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
11
|
-
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
12
10
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
13
11
|
from sfrbox_api.bridge import SFRBox as SFRBox
|
|
14
12
|
from sfrbox_api.models import SystemInfo as SystemInfo
|
|
@@ -22,14 +20,11 @@ class SFRBoxButtonEntityDescription(ButtonEntityDescription):
|
|
|
22
20
|
|
|
23
21
|
BUTTON_TYPES: tuple[SFRBoxButtonEntityDescription, ...]
|
|
24
22
|
|
|
25
|
-
async def async_setup_entry(hass: HomeAssistant, entry:
|
|
23
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SFRConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
26
24
|
|
|
27
|
-
class SFRBoxButton(ButtonEntity):
|
|
25
|
+
class SFRBoxButton(SFREntity, ButtonEntity):
|
|
28
26
|
entity_description: SFRBoxButtonEntityDescription
|
|
29
|
-
_attr_has_entity_name: bool
|
|
30
27
|
_box: Incomplete
|
|
31
|
-
_attr_unique_id: Incomplete
|
|
32
|
-
_attr_device_info: Incomplete
|
|
33
28
|
def __init__(self, box: SFRBox, description: SFRBoxButtonEntityDescription, system_info: SystemInfo) -> None: ...
|
|
34
29
|
@with_error_wrapping
|
|
35
30
|
async def async_press(self) -> None: ...
|
|
@@ -4,10 +4,11 @@ from collections.abc import Mapping
|
|
|
4
4
|
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, SOURCE_REAUTH as SOURCE_REAUTH
|
|
5
5
|
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
|
|
6
6
|
from homeassistant.helpers import selector as selector
|
|
7
|
-
from homeassistant.helpers.
|
|
7
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
|
8
8
|
from sfrbox_api.bridge import SFRBox
|
|
9
9
|
from typing import Any
|
|
10
10
|
|
|
11
|
+
_LOGGER: Incomplete
|
|
11
12
|
DATA_SCHEMA: Incomplete
|
|
12
13
|
AUTH_SCHEMA: Incomplete
|
|
13
14
|
|
|
@@ -1,17 +1,28 @@
|
|
|
1
1
|
from _typeshed import Incomplete
|
|
2
2
|
from collections.abc import Callable as Callable, Coroutine
|
|
3
|
+
from dataclasses import dataclass
|
|
3
4
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
4
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
5
6
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
|
6
7
|
from sfrbox_api.bridge import SFRBox as SFRBox
|
|
8
|
+
from sfrbox_api.models import DslInfo as DslInfo, FtthInfo as FtthInfo, SystemInfo as SystemInfo, WanInfo as WanInfo
|
|
7
9
|
from typing import Any
|
|
8
10
|
|
|
9
11
|
_LOGGER: Incomplete
|
|
10
12
|
_SCAN_INTERVAL: Incomplete
|
|
13
|
+
type SFRConfigEntry = ConfigEntry[SFRRuntimeData]
|
|
14
|
+
|
|
15
|
+
@dataclass
|
|
16
|
+
class SFRRuntimeData:
|
|
17
|
+
box: SFRBox
|
|
18
|
+
dsl: SFRDataUpdateCoordinator[DslInfo]
|
|
19
|
+
ftth: SFRDataUpdateCoordinator[FtthInfo]
|
|
20
|
+
system: SFRDataUpdateCoordinator[SystemInfo]
|
|
21
|
+
wan: SFRDataUpdateCoordinator[WanInfo]
|
|
11
22
|
|
|
12
23
|
class SFRDataUpdateCoordinator[_DataT](DataUpdateCoordinator[_DataT | None]):
|
|
13
|
-
config_entry:
|
|
24
|
+
config_entry: SFRConfigEntry
|
|
14
25
|
box: Incomplete
|
|
15
26
|
_method: Incomplete
|
|
16
|
-
def __init__(self, hass: HomeAssistant, config_entry:
|
|
27
|
+
def __init__(self, hass: HomeAssistant, config_entry: SFRConfigEntry, box: SFRBox, name: str, method: Callable[[SFRBox], Coroutine[Any, Any, _DataT | None]]) -> None: ...
|
|
17
28
|
async def _async_update_data(self) -> _DataT | None: ...
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
from .
|
|
2
|
-
from .models import DomainData as DomainData
|
|
1
|
+
from .coordinator import SFRConfigEntry as SFRConfigEntry
|
|
3
2
|
from _typeshed import DataclassInstance, Incomplete
|
|
4
3
|
from homeassistant.components.diagnostics import async_redact_data as async_redact_data
|
|
5
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
6
4
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
7
5
|
from typing import Any
|
|
8
6
|
|
|
9
7
|
TO_REDACT: Incomplete
|
|
10
8
|
|
|
11
9
|
def _async_redact_data(obj: DataclassInstance | None) -> dict[str, Any] | None: ...
|
|
12
|
-
async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry:
|
|
10
|
+
async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: SFRConfigEntry) -> dict[str, Any]: ...
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
|
2
|
+
from .coordinator import SFRDataUpdateCoordinator as SFRDataUpdateCoordinator
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
5
|
+
from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
|
|
6
|
+
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
|
7
|
+
from sfrbox_api.models import SystemInfo as SystemInfo
|
|
8
|
+
|
|
9
|
+
class SFREntity(Entity):
|
|
10
|
+
_attr_has_entity_name: bool
|
|
11
|
+
entity_description: Incomplete
|
|
12
|
+
_attr_device_info: Incomplete
|
|
13
|
+
_attr_unique_id: Incomplete
|
|
14
|
+
def __init__(self, description: EntityDescription, system_info: SystemInfo) -> None: ...
|
|
15
|
+
|
|
16
|
+
class SFRCoordinatorEntity[_T](CoordinatorEntity[SFRDataUpdateCoordinator[_T]], SFREntity):
|
|
17
|
+
_attr_unique_id: Incomplete
|
|
18
|
+
def __init__(self, coordinator: SFRDataUpdateCoordinator[_T], description: EntityDescription, system_info: SystemInfo) -> None: ...
|