homeassistant-stubs 2025.10.4__py3-none-any.whl → 2025.11.0b0__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 +2 -3
- 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/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.0b0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.10.4.dist-info → homeassistant_stubs-2025.11.0b0.dist-info}/RECORD +433 -397
- 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.0b0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.10.4.dist-info → homeassistant_stubs-2025.11.0b0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
from .const import MODEL_FRANKEVER_IRRIGATION_CONTROLLER as MODEL_FRANKEVER_IRRIGATION_CONTROLLER, MODEL_LINKEDGO_ST1820_THERMOSTAT as MODEL_LINKEDGO_ST1820_THERMOSTAT, MODEL_LINKEDGO_ST802_THERMOSTAT as MODEL_LINKEDGO_ST802_THERMOSTAT, MODEL_NEO_WATER_VALVE as MODEL_NEO_WATER_VALVE, MODEL_TOP_EV_CHARGER_EVE01 as MODEL_TOP_EV_CHARGER_EVE01, ROLE_GENERIC as ROLE_GENERIC
|
|
1
2
|
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
|
2
|
-
from .entity import BlockEntityDescription as BlockEntityDescription, RpcEntityDescription as RpcEntityDescription, ShellyBlockAttributeEntity as ShellyBlockAttributeEntity, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, ShellySleepingBlockAttributeEntity as ShellySleepingBlockAttributeEntity, async_setup_entry_attribute_entities as async_setup_entry_attribute_entities, async_setup_entry_rpc as async_setup_entry_rpc
|
|
3
|
+
from .entity import BlockEntityDescription as BlockEntityDescription, RpcEntityDescription as RpcEntityDescription, ShellyBlockAttributeEntity as ShellyBlockAttributeEntity, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, ShellySleepingBlockAttributeEntity as ShellySleepingBlockAttributeEntity, async_setup_entry_attribute_entities as async_setup_entry_attribute_entities, async_setup_entry_rpc as async_setup_entry_rpc, rpc_call as rpc_call
|
|
3
4
|
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, get_device_entry_gen as get_device_entry_gen, get_virtual_component_ids as get_virtual_component_ids, is_block_exclude_from_relay as is_block_exclude_from_relay, is_rpc_exclude_from_relay as is_rpc_exclude_from_relay, is_view_for_platform as is_view_for_platform
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
6
|
from aioshelly.block_device import Block as Block
|
|
@@ -26,16 +27,16 @@ class RpcSwitchDescription(RpcEntityDescription, SwitchEntityDescription):
|
|
|
26
27
|
is_on: Callable[[dict[str, Any]], bool]
|
|
27
28
|
method_on: str
|
|
28
29
|
method_off: str
|
|
29
|
-
method_params_fn: Callable[[int | None, bool],
|
|
30
|
+
method_params_fn: Callable[[int | None, bool], tuple]
|
|
30
31
|
|
|
31
32
|
RPC_RELAY_SWITCHES: Incomplete
|
|
32
33
|
RPC_SWITCHES: Incomplete
|
|
33
34
|
|
|
34
35
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
35
36
|
@callback
|
|
36
|
-
def
|
|
37
|
+
def _async_setup_block_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
37
38
|
@callback
|
|
38
|
-
def
|
|
39
|
+
def _async_setup_rpc_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
39
40
|
|
|
40
41
|
class BlockSleepingMotionSwitch(ShellySleepingBlockAttributeEntity, RestoreEntity, SwitchEntity):
|
|
41
42
|
entity_description: BlockSwitchDescription
|
|
@@ -64,7 +65,9 @@ class RpcSwitch(ShellyRpcAttributeEntity, SwitchEntity):
|
|
|
64
65
|
entity_description: RpcSwitchDescription
|
|
65
66
|
@property
|
|
66
67
|
def is_on(self) -> bool: ...
|
|
68
|
+
@rpc_call
|
|
67
69
|
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
|
70
|
+
@rpc_call
|
|
68
71
|
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
|
69
72
|
|
|
70
73
|
class RpcRelaySwitch(RpcSwitch):
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
from .const import ROLE_GENERIC as ROLE_GENERIC
|
|
1
2
|
from .coordinator import ShellyConfigEntry as ShellyConfigEntry
|
|
2
3
|
from .entity import RpcEntityDescription as RpcEntityDescription, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, async_setup_entry_rpc as async_setup_entry_rpc, rpc_call as rpc_call
|
|
3
4
|
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, get_device_entry_gen as get_device_entry_gen, get_virtual_component_ids as get_virtual_component_ids, is_view_for_platform as is_view_for_platform
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
6
|
from dataclasses import dataclass
|
|
6
7
|
from homeassistant.components.text import TextEntity as TextEntity, TextEntityDescription as TextEntityDescription
|
|
7
|
-
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
8
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
8
9
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
9
10
|
from typing import Final
|
|
10
11
|
|
|
@@ -16,6 +17,8 @@ class RpcTextDescription(RpcEntityDescription, TextEntityDescription): ...
|
|
|
16
17
|
RPC_TEXT_ENTITIES: Final[Incomplete]
|
|
17
18
|
|
|
18
19
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
20
|
+
@callback
|
|
21
|
+
def _async_setup_rpc_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
19
22
|
|
|
20
23
|
class RpcText(ShellyRpcAttributeEntity, TextEntity):
|
|
21
24
|
entity_description: RpcTextDescription
|
|
@@ -30,6 +30,10 @@ REST_UPDATES: Final[Incomplete]
|
|
|
30
30
|
RPC_UPDATES: Final[Incomplete]
|
|
31
31
|
|
|
32
32
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
33
|
+
@callback
|
|
34
|
+
def _async_setup_block_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
35
|
+
@callback
|
|
36
|
+
def _async_setup_rpc_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
33
37
|
|
|
34
38
|
class RestUpdateEntity(ShellyRestAttributeEntity, UpdateEntity):
|
|
35
39
|
_attr_supported_features: Incomplete
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from .const import API_WS_URL as API_WS_URL, All_LIGHT_TYPES as All_LIGHT_TYPES, BASIC_INPUTS_EVENTS_TYPES as BASIC_INPUTS_EVENTS_TYPES, COMPONENT_ID_PATTERN as COMPONENT_ID_PATTERN, CONF_COAP_PORT as CONF_COAP_PORT, CONF_GEN as CONF_GEN, DEVICES_WITHOUT_FIRMWARE_CHANGELOG as DEVICES_WITHOUT_FIRMWARE_CHANGELOG, DEVICE_UNIT_MAP as DEVICE_UNIT_MAP, DOMAIN as DOMAIN, FIRMWARE_UNSUPPORTED_ISSUE_ID as FIRMWARE_UNSUPPORTED_ISSUE_ID, GEN1_RELEASE_URL as GEN1_RELEASE_URL, GEN2_BETA_RELEASE_URL as GEN2_BETA_RELEASE_URL, GEN2_RELEASE_URL as GEN2_RELEASE_URL, LOGGER as LOGGER, MAX_SCRIPT_SIZE as MAX_SCRIPT_SIZE, RPC_INPUTS_EVENTS_TYPES as RPC_INPUTS_EVENTS_TYPES, SHAIR_MAX_WORK_HOURS as SHAIR_MAX_WORK_HOURS, SHBTN_INPUTS_EVENTS_TYPES as SHBTN_INPUTS_EVENTS_TYPES, SHBTN_MODELS as SHBTN_MODELS, SHELLY_EMIT_EVENT_PATTERN as SHELLY_EMIT_EVENT_PATTERN, SHIX3_1_INPUTS_EVENTS_TYPES as SHIX3_1_INPUTS_EVENTS_TYPES, UPTIME_DEVIATION as UPTIME_DEVIATION, VIRTUAL_COMPONENTS as VIRTUAL_COMPONENTS, VIRTUAL_COMPONENTS_MAP as VIRTUAL_COMPONENTS_MAP
|
|
1
|
+
from .const import API_WS_URL as API_WS_URL, All_LIGHT_TYPES as All_LIGHT_TYPES, BASIC_INPUTS_EVENTS_TYPES as BASIC_INPUTS_EVENTS_TYPES, COMPONENT_ID_PATTERN as COMPONENT_ID_PATTERN, CONF_COAP_PORT as CONF_COAP_PORT, CONF_GEN as CONF_GEN, DEVICES_WITHOUT_FIRMWARE_CHANGELOG as DEVICES_WITHOUT_FIRMWARE_CHANGELOG, DEVICE_UNIT_MAP as DEVICE_UNIT_MAP, DOMAIN as DOMAIN, FIRMWARE_UNSUPPORTED_ISSUE_ID as FIRMWARE_UNSUPPORTED_ISSUE_ID, GEN1_RELEASE_URL as GEN1_RELEASE_URL, GEN2_BETA_RELEASE_URL as GEN2_BETA_RELEASE_URL, GEN2_RELEASE_URL as GEN2_RELEASE_URL, LOGGER as LOGGER, MAX_SCRIPT_SIZE as MAX_SCRIPT_SIZE, ROLE_GENERIC as ROLE_GENERIC, RPC_INPUTS_EVENTS_TYPES as RPC_INPUTS_EVENTS_TYPES, SHAIR_MAX_WORK_HOURS as SHAIR_MAX_WORK_HOURS, SHBTN_INPUTS_EVENTS_TYPES as SHBTN_INPUTS_EVENTS_TYPES, SHBTN_MODELS as SHBTN_MODELS, SHELLY_EMIT_EVENT_PATTERN as SHELLY_EMIT_EVENT_PATTERN, SHIX3_1_INPUTS_EVENTS_TYPES as SHIX3_1_INPUTS_EVENTS_TYPES, UPTIME_DEVIATION as UPTIME_DEVIATION, VIRTUAL_COMPONENTS as VIRTUAL_COMPONENTS, VIRTUAL_COMPONENTS_MAP as VIRTUAL_COMPONENTS_MAP
|
|
2
2
|
from _typeshed import Incomplete
|
|
3
3
|
from aiohttp.web import Request as Request, WebSocketResponse as WebSocketResponse
|
|
4
4
|
from aioshelly.block_device import Block as Block, BlockDevice as BlockDevice, COAP
|
|
@@ -10,7 +10,7 @@ from homeassistant.components.http import HomeAssistantView as HomeAssistantView
|
|
|
10
10
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
11
11
|
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_MODEL as CONF_MODEL, CONF_PORT as CONF_PORT, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
|
|
12
12
|
from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant, callback as callback
|
|
13
|
-
from homeassistant.helpers import singleton as singleton
|
|
13
|
+
from homeassistant.helpers import entity_registry as er, singleton as singleton
|
|
14
14
|
from homeassistant.helpers.device_registry import CONNECTION_BLUETOOTH as CONNECTION_BLUETOOTH, CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, DeviceInfo as DeviceInfo
|
|
15
15
|
from homeassistant.helpers.network import NoURLAvailableError as NoURLAvailableError, get_url as get_url
|
|
16
16
|
from homeassistant.util.dt import utcnow as utcnow
|
|
@@ -46,12 +46,15 @@ def get_model_name(info: dict[str, Any]) -> str: ...
|
|
|
46
46
|
def get_shelly_model_name(model: str, sleep_period: int, device: BlockDevice | RpcDevice) -> str | None: ...
|
|
47
47
|
def get_rpc_channel_name(device: RpcDevice, key: str) -> str | None: ...
|
|
48
48
|
def get_rpc_sub_device_name(device: RpcDevice, key: str, emeter_phase: str | None = None) -> str: ...
|
|
49
|
-
def get_rpc_entity_name(device: RpcDevice, key: str,
|
|
49
|
+
def get_rpc_entity_name(device: RpcDevice, key: str, name: str | None = None, role: str | None = None) -> str | None: ...
|
|
50
50
|
def get_device_entry_gen(entry: ConfigEntry) -> int: ...
|
|
51
51
|
def get_rpc_key_instances(keys_dict: dict[str, Any], key: str, all_lights: bool = False) -> list[str]: ...
|
|
52
52
|
def get_rpc_key_ids(keys_dict: dict[str, Any], key: str) -> list[int]: ...
|
|
53
|
+
def get_rpc_key_by_role(keys_dict: dict[str, Any], role: str) -> str | None: ...
|
|
54
|
+
def get_rpc_role_by_key(keys_dict: dict[str, Any], key: str) -> str: ...
|
|
55
|
+
def id_from_key(key: str) -> int: ...
|
|
53
56
|
def is_rpc_momentary_input(config: dict[str, Any], status: dict[str, Any], key: str) -> bool: ...
|
|
54
|
-
def is_block_channel_type_light(settings: dict[str, Any],
|
|
57
|
+
def is_block_channel_type_light(settings: dict[str, Any], block: Block) -> bool: ...
|
|
55
58
|
def is_rpc_channel_type_light(config: dict[str, Any], channel: int) -> bool: ...
|
|
56
59
|
def is_rpc_thermostat_internal_actuator(status: dict[str, Any]) -> bool: ...
|
|
57
60
|
def get_rpc_input_triggers(device: RpcDevice) -> list[tuple[str, str]]: ...
|
|
@@ -68,7 +71,6 @@ def get_http_port(data: Mapping[str, Any]) -> int: ...
|
|
|
68
71
|
def get_host(host: str) -> str: ...
|
|
69
72
|
@callback
|
|
70
73
|
def async_remove_shelly_rpc_entities(hass: HomeAssistant, domain: str, mac: str, keys: list[str]) -> None: ...
|
|
71
|
-
def is_rpc_thermostat_mode(ident: int, status: dict[str, Any]) -> bool: ...
|
|
72
74
|
def get_virtual_component_ids(config: dict[str, Any], platform: str) -> list[str]: ...
|
|
73
75
|
def is_view_for_platform(config: dict[str, Any], key: str, platform: str) -> bool: ...
|
|
74
76
|
def get_virtual_component_unit(config: dict[str, Any]) -> str | None: ...
|
|
@@ -79,6 +81,7 @@ async def get_rpc_script_event_types(device: RpcDevice, id: int) -> list[str]: .
|
|
|
79
81
|
def is_rpc_exclude_from_relay(settings: dict[str, Any], status: dict[str, Any], channel: str) -> bool: ...
|
|
80
82
|
def get_shelly_air_lamp_life(lamp_seconds: int) -> float: ...
|
|
81
83
|
async def get_rpc_scripts_event_types(device: RpcDevice, ignore_scripts: list[str]) -> dict[int, list[str]]: ...
|
|
84
|
+
def get_irrigation_zone_id(config: dict[str, Any], key: str) -> int | None: ...
|
|
82
85
|
def get_rpc_device_info(device: RpcDevice, mac: str, configuration_url: str, model: str, model_name: str | None = None, key: str | None = None, emeter_phase: str | None = None, suggested_area: str | None = None) -> DeviceInfo: ...
|
|
83
86
|
def get_blu_trv_device_info(config: dict[str, Any], ble_addr: str, parent_mac: str, fw_ver: str | None) -> DeviceInfo: ...
|
|
84
87
|
def get_block_device_info(device: BlockDevice, mac: str, configuration_url: str, model: str, model_name: str | None = None, block: Block | None = None, suggested_area: str | None = None) -> DeviceInfo: ...
|
|
@@ -87,3 +90,5 @@ def remove_stale_blu_trv_devices(hass: HomeAssistant, rpc_device: RpcDevice, ent
|
|
|
87
90
|
@callback
|
|
88
91
|
def remove_empty_sub_devices(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
|
|
89
92
|
def format_ble_addr(ble_addr: str) -> str: ...
|
|
93
|
+
@callback
|
|
94
|
+
def async_migrate_rpc_virtual_components_unique_ids(config: dict[str, Any], entity_entry: er.RegistryEntry) -> dict[str, Any] | None: ...
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
from .
|
|
2
|
-
from .
|
|
3
|
-
from .
|
|
1
|
+
from .const import MODEL_FRANKEVER_IRRIGATION_CONTROLLER as MODEL_FRANKEVER_IRRIGATION_CONTROLLER, MODEL_FRANKEVER_WATER_VALVE as MODEL_FRANKEVER_WATER_VALVE, MODEL_NEO_WATER_VALVE as MODEL_NEO_WATER_VALVE
|
|
2
|
+
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
|
3
|
+
from .entity import BlockEntityDescription as BlockEntityDescription, RpcEntityDescription as RpcEntityDescription, ShellyBlockAttributeEntity as ShellyBlockAttributeEntity, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, async_setup_block_attribute_entities as async_setup_block_attribute_entities, async_setup_entry_rpc as async_setup_entry_rpc
|
|
4
|
+
from .utils import get_device_entry_gen as get_device_entry_gen
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
6
|
from aioshelly.block_device import Block as Block
|
|
6
7
|
from dataclasses import dataclass
|
|
@@ -13,12 +14,40 @@ PARALLEL_UPDATES: int
|
|
|
13
14
|
|
|
14
15
|
@dataclass(kw_only=True, frozen=True)
|
|
15
16
|
class BlockValveDescription(BlockEntityDescription, ValveEntityDescription): ...
|
|
17
|
+
@dataclass(kw_only=True, frozen=True)
|
|
18
|
+
class RpcValveDescription(RpcEntityDescription, ValveEntityDescription): ...
|
|
19
|
+
|
|
20
|
+
BLOCK_VALVES: dict[tuple[str, str], BlockValveDescription]
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
class RpcShellyBaseWaterValve(ShellyRpcAttributeEntity, ValveEntity):
|
|
23
|
+
entity_description: RpcValveDescription
|
|
24
|
+
_attr_device_class: Incomplete
|
|
25
|
+
_id: int
|
|
26
|
+
_attr_name: Incomplete
|
|
27
|
+
def __init__(self, coordinator: ShellyRpcCoordinator, key: str, attribute: str, description: RpcEntityDescription) -> None: ...
|
|
28
|
+
|
|
29
|
+
class RpcShellyWaterValve(RpcShellyBaseWaterValve):
|
|
30
|
+
_attr_supported_features: Incomplete
|
|
31
|
+
_attr_reports_position: bool
|
|
32
|
+
@property
|
|
33
|
+
def current_valve_position(self) -> int: ...
|
|
34
|
+
async def async_set_valve_position(self, position: int) -> None: ...
|
|
35
|
+
|
|
36
|
+
class RpcShellySimpleWaterValve(RpcShellyBaseWaterValve):
|
|
37
|
+
_attr_supported_features: Incomplete
|
|
38
|
+
_attr_reports_position: bool
|
|
39
|
+
@property
|
|
40
|
+
def is_closed(self) -> bool | None: ...
|
|
41
|
+
async def async_open_valve(self, **kwargs: Any) -> None: ...
|
|
42
|
+
async def async_close_valve(self, **kwargs: Any) -> None: ...
|
|
43
|
+
|
|
44
|
+
RPC_VALVES: dict[str, RpcValveDescription]
|
|
18
45
|
|
|
19
46
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
20
47
|
@callback
|
|
21
|
-
def
|
|
48
|
+
def _async_setup_block_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
49
|
+
@callback
|
|
50
|
+
def _async_setup_rpc_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
22
51
|
|
|
23
52
|
class BlockShellyValve(ShellyBlockAttributeEntity, ValveEntity):
|
|
24
53
|
entity_description: BlockValveDescription
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from .const import CONF_GROUP as CONF_GROUP
|
|
2
|
+
from .coordinator import SMADataUpdateCoordinator as SMADataUpdateCoordinator
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
5
|
+
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_SSL as CONF_SSL, CONF_VERIFY_SSL as CONF_VERIFY_SSL, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, Platform as Platform
|
|
6
|
+
from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant
|
|
7
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
|
8
|
+
|
|
9
|
+
PLATFORMS: Incomplete
|
|
10
|
+
_LOGGER: Incomplete
|
|
11
|
+
type SMAConfigEntry = ConfigEntry[SMADataUpdateCoordinator]
|
|
12
|
+
|
|
13
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SMAConfigEntry) -> bool: ...
|
|
14
|
+
async def async_unload_entry(hass: HomeAssistant, entry: SMAConfigEntry) -> bool: ...
|
|
15
|
+
async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from .const import CONF_GROUP as CONF_GROUP, DOMAIN as DOMAIN, GROUPS as GROUPS
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
|
5
|
+
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_MAC as CONF_MAC, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_SSL as CONF_SSL, CONF_VERIFY_SSL as CONF_VERIFY_SSL
|
|
6
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
7
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
|
8
|
+
from homeassistant.helpers.device_registry import format_mac as format_mac
|
|
9
|
+
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo as DhcpServiceInfo
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
_LOGGER: Incomplete
|
|
13
|
+
|
|
14
|
+
async def validate_input(hass: HomeAssistant, user_input: dict[str, Any], data: dict[str, Any] | None = None) -> dict[str, Any]: ...
|
|
15
|
+
|
|
16
|
+
class SmaConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
17
|
+
VERSION: int
|
|
18
|
+
MINOR_VERSION: int
|
|
19
|
+
_data: dict[str, Any]
|
|
20
|
+
_discovery_data: dict[str, Any]
|
|
21
|
+
def __init__(self) -> None: ...
|
|
22
|
+
async def _handle_user_input(self, user_input: dict[str, Any], discovery: bool = False) -> tuple[dict[str, str], dict[str, str]]: ...
|
|
23
|
+
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
24
|
+
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
|
25
|
+
async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
26
|
+
async def async_step_dhcp(self, discovery_info: DhcpServiceInfo) -> ConfigFlowResult: ...
|
|
27
|
+
async def async_step_discovery_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from .const import DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DOMAIN as DOMAIN
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
5
|
+
from homeassistant.const import CONF_SCAN_INTERVAL as CONF_SCAN_INTERVAL
|
|
6
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
7
|
+
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
|
8
|
+
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
|
9
|
+
from pysma import SMAWebConnect as SMAWebConnect
|
|
10
|
+
from pysma.helpers import DeviceInfo
|
|
11
|
+
from pysma.sensor import Sensors
|
|
12
|
+
|
|
13
|
+
_LOGGER: Incomplete
|
|
14
|
+
|
|
15
|
+
@dataclass(slots=True)
|
|
16
|
+
class SMACoordinatorData:
|
|
17
|
+
sma_device_info: DeviceInfo
|
|
18
|
+
sensors: Sensors
|
|
19
|
+
|
|
20
|
+
class SMADataUpdateCoordinator(DataUpdateCoordinator[SMACoordinatorData]):
|
|
21
|
+
config_entry: ConfigEntry
|
|
22
|
+
sma: Incomplete
|
|
23
|
+
_sma_device_info: Incomplete
|
|
24
|
+
_sensors: Incomplete
|
|
25
|
+
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, sma: SMAWebConnect) -> None: ...
|
|
26
|
+
async def _async_setup(self) -> None: ...
|
|
27
|
+
async def _async_update_data(self) -> SMACoordinatorData: ...
|
|
28
|
+
async def async_close_sma_session(self) -> None: ...
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from homeassistant.components.diagnostics import async_redact_data as async_redact_data
|
|
3
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
4
|
+
from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD
|
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
TO_REDACT: Incomplete
|
|
9
|
+
|
|
10
|
+
async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: ConfigEntry) -> dict[str, Any]: ...
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from . import SMAConfigEntry as SMAConfigEntry
|
|
2
|
+
from .const import DOMAIN as DOMAIN
|
|
3
|
+
from .coordinator import SMADataUpdateCoordinator as SMADataUpdateCoordinator
|
|
4
|
+
from _typeshed import Incomplete
|
|
5
|
+
from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
|
6
|
+
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_SSL as CONF_SSL, EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfApparentPower as UnitOfApparentPower, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfFrequency as UnitOfFrequency, UnitOfPower as UnitOfPower, UnitOfReactivePower as UnitOfReactivePower, UnitOfTemperature as UnitOfTemperature
|
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
8
|
+
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
9
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
10
|
+
from homeassistant.helpers.typing import StateType as StateType
|
|
11
|
+
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
|
12
|
+
from pysma.sensor import Sensor as Sensor
|
|
13
|
+
|
|
14
|
+
SENSOR_ENTITIES: dict[str, SensorEntityDescription]
|
|
15
|
+
|
|
16
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SMAConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
17
|
+
|
|
18
|
+
class SMAsensor(CoordinatorEntity[SMADataUpdateCoordinator], SensorEntity):
|
|
19
|
+
entity_description: Incomplete
|
|
20
|
+
_attr_name: Incomplete
|
|
21
|
+
_sensor: Incomplete
|
|
22
|
+
_serial: Incomplete
|
|
23
|
+
_attr_device_info: Incomplete
|
|
24
|
+
_attr_unique_id: Incomplete
|
|
25
|
+
def __init__(self, coordinator: SMADataUpdateCoordinator, description: SensorEntityDescription | None, pysma_sensor: Sensor, entry: SMAConfigEntry) -> None: ...
|
|
26
|
+
@property
|
|
27
|
+
def name(self) -> str: ...
|
|
28
|
+
@property
|
|
29
|
+
def available(self) -> bool: ...
|
|
30
|
+
@property
|
|
31
|
+
def native_value(self) -> StateType: ...
|
|
32
|
+
async def async_added_to_hass(self) -> None: ...
|
|
33
|
+
async def async_will_remove_from_hass(self) -> None: ...
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from .const import CONF_ADVANCED_OPTIONS as CONF_ADVANCED_OPTIONS, CONF_COLUMN_NAME as CONF_COLUMN_NAME, CONF_QUERY as CONF_QUERY, DOMAIN as DOMAIN, PLATFORMS as PLATFORMS
|
|
2
|
-
from .
|
|
2
|
+
from .services import async_setup_services as async_setup_services
|
|
3
|
+
from .util import redact_credentials as redact_credentials, validate_sql_select as validate_sql_select
|
|
3
4
|
from _typeshed import Incomplete
|
|
4
5
|
from homeassistant.components.recorder import CONF_DB_URL as CONF_DB_URL, get_instance as get_instance
|
|
5
6
|
from homeassistant.components.sensor import CONF_STATE_CLASS as CONF_STATE_CLASS, DEVICE_CLASSES_SCHEMA as DEVICE_CLASSES_SCHEMA, STATE_CLASSES_SCHEMA as STATE_CLASSES_SCHEMA
|
|
@@ -11,9 +12,6 @@ from homeassistant.helpers.trigger_template_entity import CONF_AVAILABILITY as C
|
|
|
11
12
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
12
13
|
|
|
13
14
|
_LOGGER: Incomplete
|
|
14
|
-
|
|
15
|
-
def validate_sql_select(value: str) -> str: ...
|
|
16
|
-
|
|
17
15
|
QUERY_SCHEMA: Incomplete
|
|
18
16
|
CONFIG_SCHEMA: Incomplete
|
|
19
17
|
|
|
@@ -1,35 +1,28 @@
|
|
|
1
1
|
from .const import CONF_ADVANCED_OPTIONS as CONF_ADVANCED_OPTIONS, CONF_COLUMN_NAME as CONF_COLUMN_NAME, CONF_QUERY as CONF_QUERY, DOMAIN as DOMAIN
|
|
2
|
-
from .
|
|
3
|
-
from .util import redact_credentials as redact_credentials, resolve_db_url as resolve_db_url
|
|
2
|
+
from .util import async_create_sessionmaker as async_create_sessionmaker, generate_lambda_stmt as generate_lambda_stmt, redact_credentials as redact_credentials, resolve_db_url as resolve_db_url, validate_query as validate_query
|
|
4
3
|
from _typeshed import Incomplete
|
|
5
|
-
from homeassistant.components.recorder import CONF_DB_URL as CONF_DB_URL,
|
|
4
|
+
from homeassistant.components.recorder import CONF_DB_URL as CONF_DB_URL, get_instance as get_instance
|
|
6
5
|
from homeassistant.components.sensor import CONF_STATE_CLASS as CONF_STATE_CLASS
|
|
7
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
8
|
-
from homeassistant.const import CONF_DEVICE_CLASS as CONF_DEVICE_CLASS, CONF_ICON as CONF_ICON, CONF_NAME as CONF_NAME, CONF_UNIQUE_ID as CONF_UNIQUE_ID, CONF_UNIT_OF_MEASUREMENT as CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE as CONF_VALUE_TEMPLATE,
|
|
9
|
-
from homeassistant.core import
|
|
7
|
+
from homeassistant.const import CONF_DEVICE_CLASS as CONF_DEVICE_CLASS, CONF_ICON as CONF_ICON, CONF_NAME as CONF_NAME, CONF_UNIQUE_ID as CONF_UNIQUE_ID, CONF_UNIT_OF_MEASUREMENT as CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE as CONF_VALUE_TEMPLATE, MATCH_ALL as MATCH_ALL
|
|
8
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
10
9
|
from homeassistant.exceptions import TemplateError as TemplateError
|
|
11
10
|
from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
|
|
12
11
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback, AddEntitiesCallback as AddEntitiesCallback
|
|
12
|
+
from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue
|
|
13
13
|
from homeassistant.helpers.template import Template as Template
|
|
14
14
|
from homeassistant.helpers.trigger_template_entity import CONF_AVAILABILITY as CONF_AVAILABILITY, CONF_PICTURE as CONF_PICTURE, ManualTriggerSensorEntity as ManualTriggerSensorEntity, ValueTemplate as ValueTemplate
|
|
15
15
|
from homeassistant.helpers.typing import ConfigType as ConfigType, DiscoveryInfoType as DiscoveryInfoType
|
|
16
16
|
from sqlalchemy.engine import Result as Result
|
|
17
|
-
from sqlalchemy.orm import
|
|
18
|
-
from sqlalchemy.sql.lambdas import StatementLambdaElement as StatementLambdaElement
|
|
19
|
-
from sqlalchemy.util import LRUCache
|
|
17
|
+
from sqlalchemy.orm import scoped_session as scoped_session
|
|
20
18
|
from typing import Any
|
|
21
19
|
|
|
22
20
|
_LOGGER: Incomplete
|
|
23
|
-
_SQL_LAMBDA_CACHE: LRUCache
|
|
24
21
|
TRIGGER_ENTITY_OPTIONS: Incomplete
|
|
25
22
|
|
|
26
23
|
async def async_setup_platform(hass: HomeAssistant, config: ConfigType, async_add_entities: AddEntitiesCallback, discovery_info: DiscoveryInfoType | None = None) -> None: ...
|
|
27
24
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
28
|
-
@callback
|
|
29
|
-
def _async_get_or_init_domain_data(hass: HomeAssistant) -> SQLData: ...
|
|
30
25
|
async def async_setup_sensor(hass: HomeAssistant, trigger_entity_config: ConfigType, query_str: str, column_name: str, value_template: ValueTemplate | None, unique_id: str | None, db_url: str, yaml: bool, async_add_entities: AddEntitiesCallback | AddConfigEntryEntitiesCallback) -> None: ...
|
|
31
|
-
def _validate_and_get_session_maker_for_db_url(db_url: str) -> scoped_session | None: ...
|
|
32
|
-
def _generate_lambda_stmt(query: str) -> StatementLambdaElement: ...
|
|
33
26
|
|
|
34
27
|
class SQLSensor(ManualTriggerSensorEntity):
|
|
35
28
|
_unrecorded_attributes: Incomplete
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from .const import CONF_QUERY as CONF_QUERY, DOMAIN as DOMAIN
|
|
2
|
+
from .util import async_create_sessionmaker as async_create_sessionmaker, generate_lambda_stmt as generate_lambda_stmt, redact_credentials as redact_credentials, resolve_db_url as resolve_db_url, validate_query as validate_query, validate_sql_select as validate_sql_select
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from homeassistant.components.recorder import CONF_DB_URL as CONF_DB_URL, get_instance as get_instance
|
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse, callback as callback
|
|
6
|
+
from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
|
|
7
|
+
from homeassistant.util.json import JsonValueType as JsonValueType
|
|
8
|
+
from sqlalchemy.engine import Result as Result
|
|
9
|
+
from sqlalchemy.orm import Session as Session
|
|
10
|
+
|
|
11
|
+
_LOGGER: Incomplete
|
|
12
|
+
SERVICE_QUERY: str
|
|
13
|
+
SERVICE_QUERY_SCHEMA: Incomplete
|
|
14
|
+
|
|
15
|
+
async def _async_query_service(call: ServiceCall) -> ServiceResponse: ...
|
|
16
|
+
@callback
|
|
17
|
+
def async_setup_services(hass: HomeAssistant) -> None: ...
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
from .const import DB_URL_RE as DB_URL_RE
|
|
1
|
+
from .const import DB_URL_RE as DB_URL_RE, DOMAIN as DOMAIN
|
|
2
|
+
from .models import SQLData as SQLData
|
|
2
3
|
from _typeshed import Incomplete
|
|
3
|
-
from homeassistant.components.recorder import get_instance as get_instance
|
|
4
|
-
from homeassistant.
|
|
4
|
+
from homeassistant.components.recorder import SupportedDialect as SupportedDialect, get_instance as get_instance
|
|
5
|
+
from homeassistant.const import EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
|
|
6
|
+
from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant, callback as callback
|
|
7
|
+
from sqlalchemy.orm import Session as Session, scoped_session
|
|
8
|
+
from sqlalchemy.sql.lambdas import StatementLambdaElement as StatementLambdaElement
|
|
9
|
+
from sqlalchemy.util import LRUCache
|
|
5
10
|
|
|
6
11
|
_LOGGER: Incomplete
|
|
12
|
+
_SQL_LAMBDA_CACHE: LRUCache
|
|
7
13
|
|
|
8
14
|
def redact_credentials(data: str | None) -> str: ...
|
|
9
15
|
def resolve_db_url(hass: HomeAssistant, db_url: str | None) -> str: ...
|
|
16
|
+
def validate_sql_select(value: str) -> str: ...
|
|
17
|
+
async def async_create_sessionmaker(hass: HomeAssistant, db_url: str) -> tuple[scoped_session | None, bool, bool]: ...
|
|
18
|
+
def validate_query(hass: HomeAssistant, query_str: str, uses_recorder_db: bool, unique_id: str | None = None) -> None: ...
|
|
19
|
+
@callback
|
|
20
|
+
def _async_get_or_init_domain_data(hass: HomeAssistant) -> SQLData: ...
|
|
21
|
+
def _validate_and_get_session_maker_for_db_url(db_url: str) -> scoped_session | None: ...
|
|
22
|
+
def generate_lambda_stmt(query: str) -> StatementLambdaElement: ...
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import asyncio
|
|
2
|
+
from .const import CONF_HTTPS as CONF_HTTPS, DISCOVERY_INTERVAL as DISCOVERY_INTERVAL, DOMAIN as DOMAIN, SERVER_MANUFACTURER as SERVER_MANUFACTURER, SERVER_MODEL as SERVER_MODEL, SERVER_MODEL_ID as SERVER_MODEL_ID, SIGNAL_PLAYER_DISCOVERED as SIGNAL_PLAYER_DISCOVERED, SIGNAL_PLAYER_REDISCOVERED as SIGNAL_PLAYER_REDISCOVERED, STATUS_API_TIMEOUT as STATUS_API_TIMEOUT, STATUS_QUERY_LIBRARYNAME as STATUS_QUERY_LIBRARYNAME, STATUS_QUERY_MAC as STATUS_QUERY_MAC, STATUS_QUERY_UUID as STATUS_QUERY_UUID, STATUS_QUERY_VERSION as STATUS_QUERY_VERSION
|
|
2
3
|
from .coordinator import LMSStatusDataUpdateCoordinator as LMSStatusDataUpdateCoordinator, SqueezeBoxPlayerUpdateCoordinator as SqueezeBoxPlayerUpdateCoordinator
|
|
3
4
|
from _typeshed import Incomplete
|
|
4
5
|
from dataclasses import dataclass, field
|
|
@@ -10,10 +11,12 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession as asyn
|
|
|
10
11
|
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, DeviceEntryType as DeviceEntryType, format_mac as format_mac
|
|
11
12
|
from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
|
|
12
13
|
from homeassistant.helpers.event import async_call_later as async_call_later
|
|
14
|
+
from homeassistant.util.hass_dict import HassKey as HassKey
|
|
13
15
|
from pysqueezebox import Player as Player, Server
|
|
14
16
|
|
|
15
17
|
_LOGGER: Incomplete
|
|
16
18
|
PLATFORMS: Incomplete
|
|
19
|
+
SQUEEZEBOX_HASS_DATA: HassKey[asyncio.Task]
|
|
17
20
|
|
|
18
21
|
@dataclass
|
|
19
22
|
class SqueezeboxData:
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN, UNPLAYABLE_TYPES as UNPLAYABLE_TYPES
|
|
2
|
+
from .media_player import SqueezeBoxMediaPlayerEntity as SqueezeBoxMediaPlayerEntity
|
|
2
3
|
from _typeshed import Incomplete
|
|
3
4
|
from dataclasses import dataclass, field
|
|
4
5
|
from homeassistant.components import media_source as media_source
|
|
5
|
-
from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass,
|
|
6
|
+
from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass, MediaType as MediaType
|
|
6
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
7
8
|
from homeassistant.helpers.network import is_internal_request as is_internal_request
|
|
8
9
|
from pysqueezebox import Player as Player
|
|
@@ -29,8 +30,8 @@ class BrowseData:
|
|
|
29
30
|
def _build_response_apps_radios_category(browse_data: BrowseData, cmd: str | MediaType, item: dict[str, Any]) -> BrowseMedia: ...
|
|
30
31
|
def _build_response_known_app(browse_data: BrowseData, search_type: str, item: dict[str, Any]) -> BrowseMedia: ...
|
|
31
32
|
def _build_response_favorites(item: dict[str, Any]) -> BrowseMedia: ...
|
|
32
|
-
def _get_item_thumbnail(item: dict[str, Any], player: Player, entity:
|
|
33
|
-
async def build_item_response(entity:
|
|
33
|
+
def _get_item_thumbnail(item: dict[str, Any], player: Player, entity: SqueezeBoxMediaPlayerEntity, item_type: str | MediaType | None, search_type: str, internal_request: bool, known_apps_radios: set[str]) -> str | None: ...
|
|
34
|
+
async def build_item_response(entity: SqueezeBoxMediaPlayerEntity, player: Player, payload: dict[str, str | None], browse_limit: int, browse_data: BrowseData) -> BrowseMedia: ...
|
|
34
35
|
async def library_payload(hass: HomeAssistant, player: Player, browse_media: BrowseData) -> BrowseMedia: ...
|
|
35
36
|
def media_source_content_filter(item: BrowseMedia) -> bool: ...
|
|
36
37
|
async def generate_playlist(player: Player, payload: dict[str, str], browse_limit: int, browse_media: BrowseData) -> list | None: ...
|
|
@@ -2,6 +2,7 @@ from . import SqueezeboxConfigEntry as SqueezeboxConfigEntry
|
|
|
2
2
|
from .const import SIGNAL_PLAYER_DISCOVERED as SIGNAL_PLAYER_DISCOVERED
|
|
3
3
|
from .coordinator import SqueezeBoxPlayerUpdateCoordinator as SqueezeBoxPlayerUpdateCoordinator
|
|
4
4
|
from .entity import SqueezeboxEntity as SqueezeboxEntity
|
|
5
|
+
from .util import safe_library_call as safe_library_call
|
|
5
6
|
from _typeshed import Incomplete
|
|
6
7
|
from dataclasses import dataclass
|
|
7
8
|
from homeassistant.components.button import ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
from . import SqueezeboxConfigEntry as SqueezeboxConfigEntry
|
|
1
|
+
from . import SQUEEZEBOX_HASS_DATA as SQUEEZEBOX_HASS_DATA, SqueezeboxConfigEntry as SqueezeboxConfigEntry
|
|
2
2
|
from .browse_media import BrowseData as BrowseData, build_item_response as build_item_response, generate_playlist as generate_playlist, library_payload as library_payload, media_source_content_filter as media_source_content_filter
|
|
3
|
-
from .const import ATTR_ANNOUNCE_TIMEOUT as ATTR_ANNOUNCE_TIMEOUT, ATTR_ANNOUNCE_VOLUME as ATTR_ANNOUNCE_VOLUME, CONF_BROWSE_LIMIT as CONF_BROWSE_LIMIT, CONF_VOLUME_STEP as CONF_VOLUME_STEP, DEFAULT_BROWSE_LIMIT as DEFAULT_BROWSE_LIMIT, DEFAULT_VOLUME_STEP as DEFAULT_VOLUME_STEP,
|
|
3
|
+
from .const import ATTR_ANNOUNCE_TIMEOUT as ATTR_ANNOUNCE_TIMEOUT, ATTR_ANNOUNCE_VOLUME as ATTR_ANNOUNCE_VOLUME, CONF_BROWSE_LIMIT as CONF_BROWSE_LIMIT, CONF_VOLUME_STEP as CONF_VOLUME_STEP, DEFAULT_BROWSE_LIMIT as DEFAULT_BROWSE_LIMIT, DEFAULT_VOLUME_STEP as DEFAULT_VOLUME_STEP, DOMAIN as DOMAIN, SERVER_MANUFACTURER as SERVER_MANUFACTURER, SERVER_MODEL as SERVER_MODEL, SERVER_MODEL_ID as SERVER_MODEL_ID, SIGNAL_PLAYER_DISCOVERED as SIGNAL_PLAYER_DISCOVERED, SQUEEZEBOX_SOURCE_STRINGS as SQUEEZEBOX_SOURCE_STRINGS
|
|
4
4
|
from .coordinator import SqueezeBoxPlayerUpdateCoordinator as SqueezeBoxPlayerUpdateCoordinator
|
|
5
5
|
from .entity import SqueezeboxEntity as SqueezeboxEntity
|
|
6
|
+
from .util import safe_library_call as safe_library_call
|
|
6
7
|
from _typeshed import Incomplete
|
|
7
8
|
from collections.abc import Callable as Callable
|
|
8
9
|
from datetime import datetime
|
|
@@ -18,6 +19,8 @@ from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_d
|
|
|
18
19
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
19
20
|
from homeassistant.helpers.start import async_at_start as async_at_start
|
|
20
21
|
from homeassistant.util.dt import utcnow as utcnow
|
|
22
|
+
from homeassistant.util.ulid import ulid_now as ulid_now
|
|
23
|
+
from lru import LRU
|
|
21
24
|
from pysqueezebox import Server as Server
|
|
22
25
|
from typing import Any
|
|
23
26
|
|
|
@@ -46,6 +49,7 @@ class SqueezeBoxMediaPlayerEntity(SqueezeboxEntity, MediaPlayerEntity):
|
|
|
46
49
|
_previous_media_position: int
|
|
47
50
|
_attr_unique_id: Incomplete
|
|
48
51
|
_browse_data: Incomplete
|
|
52
|
+
_synthetic_media_browser_thumbnail_items: LRU[str, str]
|
|
49
53
|
def __init__(self, coordinator: SqueezeBoxPlayerUpdateCoordinator) -> None: ...
|
|
50
54
|
@callback
|
|
51
55
|
def _handle_coordinator_update(self) -> None: ...
|
|
@@ -111,5 +115,6 @@ class SqueezeBoxMediaPlayerEntity(SqueezeboxEntity, MediaPlayerEntity):
|
|
|
111
115
|
async def async_call_query(self, command: str, parameters: list[str] | None = None) -> None: ...
|
|
112
116
|
async def async_join_players(self, group_members: list[str]) -> None: ...
|
|
113
117
|
async def async_unjoin_player(self) -> None: ...
|
|
118
|
+
def get_synthetic_id_and_cache_url(self, url: str) -> str: ...
|
|
114
119
|
async def async_browse_media(self, media_content_type: MediaType | str | None = None, media_content_id: str | None = None) -> BrowseMedia: ...
|
|
115
120
|
async def async_get_browse_image(self, media_content_type: MediaType | str, media_content_id: str, media_image_id: str | None = None) -> tuple[bytes | None, str | None]: ...
|
|
@@ -14,6 +14,7 @@ from pysqueezebox.player import Alarm as Alarm
|
|
|
14
14
|
from typing import Any
|
|
15
15
|
|
|
16
16
|
_LOGGER: Incomplete
|
|
17
|
+
PARALLEL_UPDATES: int
|
|
17
18
|
|
|
18
19
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
19
20
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
|
2
|
+
from collections.abc import Awaitable, Callable as Callable
|
|
3
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
async def safe_library_call(method: Callable[..., Awaitable[Any]], *args: Any, translation_key: str, translation_placeholders: dict[str, Any] | None = None, **kwargs: Any) -> Any: ...
|
|
@@ -10,6 +10,7 @@ from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as
|
|
|
10
10
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
11
11
|
from homeassistant.exceptions import ConfigEntryError as ConfigEntryError
|
|
12
12
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
|
13
|
+
from homeassistant.util.unit_conversion import VolumeConverter as VolumeConverter
|
|
13
14
|
from pysuez import SuezClient, TelemetryMeasure as TelemetryMeasure
|
|
14
15
|
|
|
15
16
|
_LOGGER: Incomplete
|
|
@@ -42,5 +43,5 @@ class SuezWaterCoordinator(DataUpdateCoordinator[SuezWaterData]):
|
|
|
42
43
|
async def _update_statistics(self, current_price: float | None) -> None: ...
|
|
43
44
|
def _build_statistics(self, current_price: float | None, consumption_sum: float, cost_sum: float, last_stats: date | None, usage: list[TelemetryMeasure]) -> tuple[list[StatisticData], list[StatisticData]]: ...
|
|
44
45
|
def _persist_statistics(self, consumption_statistics: list[StatisticData], cost_statistics: list[StatisticData]) -> None: ...
|
|
45
|
-
def _get_statistics_metadata(self, id: str, name: str, unit: str) -> StatisticMetaData: ...
|
|
46
|
+
def _get_statistics_metadata(self, id: str, name: str, unit: str, unit_class: str | None) -> StatisticMetaData: ...
|
|
46
47
|
async def _get_last_stat(self, id: str) -> StatisticsRow | None: ...
|
|
@@ -1,21 +1,26 @@
|
|
|
1
|
+
import voluptuous as vol
|
|
1
2
|
from _typeshed import Incomplete
|
|
2
3
|
from datetime import timedelta
|
|
3
|
-
from homeassistant.const import
|
|
4
|
+
from homeassistant.const import CONF_OPTIONS as CONF_OPTIONS, SUN_EVENT_SUNRISE as SUN_EVENT_SUNRISE, SUN_EVENT_SUNSET as SUN_EVENT_SUNSET
|
|
4
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
5
|
-
from homeassistant.helpers.
|
|
6
|
+
from homeassistant.helpers.automation import move_top_level_schema_fields_to_options as move_top_level_schema_fields_to_options
|
|
7
|
+
from homeassistant.helpers.condition import Condition as Condition, ConditionCheckerType as ConditionCheckerType, ConditionConfig as ConditionConfig, condition_trace_set_result as condition_trace_set_result, condition_trace_update_result as condition_trace_update_result, trace_condition_function as trace_condition_function
|
|
6
8
|
from homeassistant.helpers.sun import get_astral_event_date as get_astral_event_date
|
|
7
9
|
from homeassistant.helpers.typing import ConfigType as ConfigType, TemplateVarsType as TemplateVarsType
|
|
10
|
+
from typing import Any
|
|
8
11
|
|
|
12
|
+
_OPTIONS_SCHEMA_DICT: dict[vol.Marker, Any]
|
|
9
13
|
_CONDITION_SCHEMA: Incomplete
|
|
10
14
|
|
|
11
15
|
def sun(hass: HomeAssistant, before: str | None = None, after: str | None = None, before_offset: timedelta | None = None, after_offset: timedelta | None = None) -> bool: ...
|
|
12
16
|
|
|
13
17
|
class SunCondition(Condition):
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def
|
|
18
|
+
_options: dict[str, Any]
|
|
19
|
+
@classmethod
|
|
20
|
+
async def async_validate_complete_config(cls, hass: HomeAssistant, complete_config: ConfigType) -> ConfigType: ...
|
|
17
21
|
@classmethod
|
|
18
22
|
async def async_validate_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
|
|
23
|
+
def __init__(self, hass: HomeAssistant, config: ConditionConfig) -> None: ...
|
|
19
24
|
async def async_get_checker(self) -> ConditionCheckerType: ...
|
|
20
25
|
|
|
21
26
|
CONDITIONS: dict[str, type[Condition]]
|
|
@@ -12,6 +12,5 @@ _LOGGER: Incomplete
|
|
|
12
12
|
def async_get_parent_device_id(hass: HomeAssistant, entity_id: str) -> str | None: ...
|
|
13
13
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
|
14
14
|
async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: ...
|
|
15
|
-
async def config_entry_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
|
|
16
15
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
|
17
16
|
async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
|