homeassistant-stubs 2025.3.4__py3-none-any.whl → 2025.4.0b1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant-stubs/bootstrap.pyi +3 -2
- homeassistant-stubs/components/accuweather/const.pyi +3 -1
- homeassistant-stubs/components/accuweather/sensor.pyi +1 -1
- homeassistant-stubs/components/anova/config_flow.pyi +4 -1
- homeassistant-stubs/components/anthemav/media_player.pyi +2 -0
- homeassistant-stubs/components/arwn/sensor.pyi +3 -2
- homeassistant-stubs/components/assist_pipeline/pipeline.pyi +14 -5
- homeassistant-stubs/components/assist_satellite/entity.pyi +5 -3
- homeassistant-stubs/components/azure_storage/__init__.pyi +1 -1
- homeassistant-stubs/components/azure_storage/backup.pyi +1 -1
- homeassistant-stubs/components/azure_storage/config_flow.pyi +7 -0
- homeassistant-stubs/components/backup/__init__.pyi +2 -2
- homeassistant-stubs/components/backup/agent.pyi +1 -1
- homeassistant-stubs/components/backup/backup.pyi +1 -1
- homeassistant-stubs/components/backup/config_flow.pyi +7 -0
- homeassistant-stubs/components/backup/coordinator.pyi +28 -0
- homeassistant-stubs/components/backup/diagnostics.pyi +7 -0
- homeassistant-stubs/components/backup/entity.pyi +13 -0
- homeassistant-stubs/components/backup/http.pyi +1 -0
- homeassistant-stubs/components/backup/manager.pyi +8 -3
- homeassistant-stubs/components/backup/sensor.pyi +23 -0
- homeassistant-stubs/components/bosch_alarm/__init__.pyi +12 -0
- homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +31 -0
- homeassistant-stubs/components/bosch_alarm/config_flow.pyi +20 -0
- homeassistant-stubs/components/bosch_alarm/const.pyi +4 -0
- homeassistant-stubs/components/bring/diagnostics.pyi +5 -0
- homeassistant-stubs/components/brother/__init__.pyi +1 -0
- homeassistant-stubs/components/brother/coordinator.pyi +1 -0
- homeassistant-stubs/components/cloud/backup.pyi +3 -3
- homeassistant-stubs/components/cloud/http_api.pyi +6 -3
- homeassistant-stubs/components/cloud/tts.pyi +2 -2
- homeassistant-stubs/components/comelit/__init__.pyi +11 -0
- homeassistant-stubs/components/comelit/alarm_control_panel.pyi +44 -0
- homeassistant-stubs/components/comelit/binary_sensor.pyi +22 -0
- homeassistant-stubs/components/comelit/climate.pyi +60 -0
- homeassistant-stubs/components/comelit/config_flow.pyi +28 -0
- homeassistant-stubs/components/comelit/const.pyi +7 -0
- homeassistant-stubs/components/comelit/coordinator.pyi +38 -0
- homeassistant-stubs/components/comelit/cover.pyi +40 -0
- homeassistant-stubs/components/comelit/diagnostics.pyi +10 -0
- homeassistant-stubs/components/comelit/humidifier.pyi +61 -0
- homeassistant-stubs/components/comelit/light.pyi +28 -0
- homeassistant-stubs/components/comelit/sensor.pyi +45 -0
- homeassistant-stubs/components/comelit/switch.pyi +27 -0
- homeassistant-stubs/components/cover/reproduce_state.pyi +17 -6
- homeassistant-stubs/components/demo/valve.pyi +30 -0
- homeassistant-stubs/components/discovergy/__init__.pyi +1 -1
- homeassistant-stubs/components/energy/data.pyi +1 -0
- homeassistant-stubs/components/enigma2/config_flow.pyi +1 -0
- homeassistant-stubs/components/esphome/__init__.pyi +1 -1
- homeassistant-stubs/components/esphome/assist_satellite.pyi +2 -0
- homeassistant-stubs/components/esphome/const.pyi +1 -0
- homeassistant-stubs/components/esphome/diagnostics.pyi +0 -1
- homeassistant-stubs/components/esphome/manager.pyi +1 -1
- homeassistant-stubs/components/frontend/__init__.pyi +9 -10
- homeassistant-stubs/components/frontend/storage.pyi +2 -1
- homeassistant-stubs/components/gios/__init__.pyi +1 -0
- homeassistant-stubs/components/gios/config_flow.pyi +1 -0
- homeassistant-stubs/components/gios/coordinator.pyi +2 -2
- homeassistant-stubs/components/google/calendar.pyi +3 -2
- homeassistant-stubs/components/google_drive/backup.pyi +2 -2
- homeassistant-stubs/components/habitica/const.pyi +25 -0
- homeassistant-stubs/components/habitica/services.pyi +6 -2
- homeassistant-stubs/components/heos/const.pyi +1 -0
- homeassistant-stubs/components/heos/coordinator.pyi +5 -5
- homeassistant-stubs/components/heos/media_player.pyi +18 -8
- homeassistant-stubs/components/home_connect/__init__.pyi +6 -17
- homeassistant-stubs/components/home_connect/button.pyi +0 -2
- homeassistant-stubs/components/home_connect/const.pyi +0 -6
- homeassistant-stubs/components/home_connect/entity.pyi +1 -1
- homeassistant-stubs/components/home_connect/light.pyi +1 -1
- homeassistant-stubs/components/home_connect/number.pyi +1 -1
- homeassistant-stubs/components/home_connect/select.pyi +1 -1
- homeassistant-stubs/components/home_connect/services.pyi +35 -0
- homeassistant-stubs/components/home_connect/switch.pyi +1 -1
- homeassistant-stubs/components/home_connect/time.pyi +6 -1
- homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +15 -0
- homeassistant-stubs/components/homeassistant_hardware/update.pyi +69 -0
- homeassistant-stubs/components/homeassistant_hardware/util.pyi +6 -1
- homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +1 -0
- homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +1 -1
- homeassistant-stubs/components/homeassistant_sky_connect/const.pyi +10 -0
- homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +26 -0
- homeassistant-stubs/components/homeassistant_yellow/__init__.pyi +1 -1
- homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -1
- homeassistant-stubs/components/homeassistant_yellow/const.pyi +4 -0
- homeassistant-stubs/components/homeassistant_yellow/update.pyi +26 -0
- homeassistant-stubs/components/homee/binary_sensor.pyi +21 -0
- homeassistant-stubs/components/homee/button.pyi +1 -0
- homeassistant-stubs/components/homee/cover.pyi +1 -0
- homeassistant-stubs/components/homee/light.pyi +1 -0
- homeassistant-stubs/components/homee/lock.pyi +25 -0
- homeassistant-stubs/components/homee/number.pyi +1 -0
- homeassistant-stubs/components/homee/select.pyi +23 -0
- homeassistant-stubs/components/homee/sensor.pyi +2 -0
- homeassistant-stubs/components/homee/switch.pyi +2 -0
- homeassistant-stubs/components/homee/valve.pyi +1 -0
- homeassistant-stubs/components/homekit/__init__.pyi +3 -1
- homeassistant-stubs/components/homekit/accessories.pyi +1 -0
- homeassistant-stubs/components/homekit/type_switches.pyi +6 -0
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +7 -7
- homeassistant-stubs/components/incomfort/config_flow.pyi +1 -0
- homeassistant-stubs/components/iron_os/coordinator.pyi +2 -0
- homeassistant-stubs/components/iron_os/number.pyi +2 -0
- homeassistant-stubs/components/iron_os/select.pyi +3 -0
- homeassistant-stubs/components/jewish_calendar/__init__.pyi +9 -2
- homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +4 -4
- homeassistant-stubs/components/jewish_calendar/const.pyi +3 -0
- homeassistant-stubs/components/jewish_calendar/entity.pyi +2 -2
- homeassistant-stubs/components/jewish_calendar/sensor.pyi +5 -6
- homeassistant-stubs/components/jewish_calendar/service.pyi +10 -0
- homeassistant-stubs/components/lawn_mower/__init__.pyi +1 -0
- homeassistant-stubs/components/linkplay/entity.pyi +0 -1
- homeassistant-stubs/components/linkplay/media_player.pyi +3 -2
- homeassistant-stubs/components/linkplay/utils.pyi +0 -32
- homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
- homeassistant-stubs/components/mastodon/config_flow.pyi +2 -1
- homeassistant-stubs/components/mastodon/const.pyi +0 -7
- homeassistant-stubs/components/mastodon/coordinator.pyi +5 -5
- homeassistant-stubs/components/mastodon/diagnostics.pyi +2 -1
- homeassistant-stubs/components/mastodon/entity.pyi +1 -1
- homeassistant-stubs/components/mastodon/notify.pyi +3 -2
- homeassistant-stubs/components/mastodon/sensor.pyi +2 -3
- homeassistant-stubs/components/mastodon/services.pyi +1 -0
- homeassistant-stubs/components/mastodon/utils.pyi +3 -2
- homeassistant-stubs/components/mcp/coordinator.pyi +2 -9
- homeassistant-stubs/components/mcp_server/config_flow.pyi +1 -1
- homeassistant-stubs/components/mcp_server/const.pyi +1 -2
- homeassistant-stubs/components/mcp_server/server.pyi +1 -0
- homeassistant-stubs/components/modbus/__init__.pyi +1 -1
- homeassistant-stubs/components/modbus/climate.pyi +6 -2
- homeassistant-stubs/components/modbus/const.pyi +10 -0
- homeassistant-stubs/components/mqtt/config_flow.pyi +95 -7
- homeassistant-stubs/components/mqtt/const.pyi +65 -0
- homeassistant-stubs/components/mqtt/cover.pyi +2 -0
- homeassistant-stubs/components/mqtt/entity.pyi +4 -4
- homeassistant-stubs/components/mqtt/lawn_mower.pyi +1 -2
- homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -48
- homeassistant-stubs/components/mqtt/light/schema_json.pyi +1 -14
- homeassistant-stubs/components/mqtt/light/schema_template.pyi +1 -12
- homeassistant-stubs/components/mqtt/models.pyi +25 -1
- homeassistant-stubs/components/mqtt/sensor.pyi +6 -5
- homeassistant-stubs/components/mqtt/util.pyi +2 -0
- homeassistant-stubs/components/mysensors/__init__.pyi +1 -1
- homeassistant-stubs/components/mysensors/binary_sensor.pyi +0 -1
- homeassistant-stubs/components/mysensors/climate.pyi +0 -1
- homeassistant-stubs/components/mysensors/const.pyi +0 -1
- homeassistant-stubs/components/mysensors/cover.pyi +1 -2
- homeassistant-stubs/components/mysensors/device_tracker.pyi +0 -1
- homeassistant-stubs/components/mysensors/gateway.pyi +1 -1
- homeassistant-stubs/components/mysensors/helpers.pyi +1 -3
- homeassistant-stubs/components/mysensors/light.pyi +4 -5
- homeassistant-stubs/components/mysensors/remote.pyi +0 -1
- homeassistant-stubs/components/mysensors/sensor.pyi +0 -1
- homeassistant-stubs/components/mysensors/switch.pyi +1 -2
- homeassistant-stubs/components/mysensors/text.pyi +0 -1
- homeassistant-stubs/components/nam/button.pyi +2 -0
- homeassistant-stubs/components/nam/const.pyi +1 -0
- homeassistant-stubs/components/nam/sensor.pyi +2 -2
- homeassistant-stubs/components/nest/media_source.pyi +5 -0
- homeassistant-stubs/components/nextdns/__init__.pyi +1 -1
- homeassistant-stubs/components/nextdns/button.pyi +2 -0
- homeassistant-stubs/components/nextdns/config_flow.pyi +1 -0
- homeassistant-stubs/components/nextdns/switch.pyi +1 -0
- homeassistant-stubs/components/nut/__init__.pyi +1 -0
- homeassistant-stubs/components/nut/button.pyi +14 -0
- homeassistant-stubs/components/nut/entity.pyi +19 -0
- homeassistant-stubs/components/nut/sensor.pyi +8 -13
- homeassistant-stubs/components/nut/switch.pyi +18 -0
- homeassistant-stubs/components/onboarding/views.pyi +1 -0
- homeassistant-stubs/components/onedrive/__init__.pyi +4 -0
- homeassistant-stubs/components/onedrive/backup.pyi +1 -1
- homeassistant-stubs/components/onedrive/services.pyi +15 -0
- homeassistant-stubs/components/openai_conversation/__init__.pyi +5 -1
- homeassistant-stubs/components/openai_conversation/config_flow.pyi +5 -2
- homeassistant-stubs/components/openai_conversation/const.pyi +22 -11
- homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -7
- homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +1 -0
- homeassistant-stubs/components/overkiz/water_heater/atlantic_domestic_hot_water_production_v2_io_component.pyi +41 -0
- homeassistant-stubs/components/purpleair/__init__.pyi +5 -10
- homeassistant-stubs/components/purpleair/const.pyi +6 -4
- homeassistant-stubs/components/purpleair/coordinator.pyi +3 -2
- homeassistant-stubs/components/purpleair/diagnostics.pyi +2 -4
- homeassistant-stubs/components/purpleair/entity.pyi +2 -3
- homeassistant-stubs/components/purpleair/sensor.pyi +4 -5
- homeassistant-stubs/components/pyload/__init__.pyi +12 -0
- homeassistant-stubs/components/pyload/button.pyi +32 -0
- homeassistant-stubs/components/pyload/config_flow.pyi +23 -0
- homeassistant-stubs/components/pyload/const.pyi +6 -0
- homeassistant-stubs/components/pyload/coordinator.pyi +33 -0
- homeassistant-stubs/components/pyload/diagnostics.pyi +10 -0
- homeassistant-stubs/components/pyload/entity.pyi +13 -0
- homeassistant-stubs/components/pyload/sensor.pyi +33 -0
- homeassistant-stubs/components/pyload/switch.pyi +37 -0
- homeassistant-stubs/components/qbus/climate.pyi +41 -0
- homeassistant-stubs/components/qbus/light.pyi +3 -3
- homeassistant-stubs/components/recorder/const.pyi +1 -0
- homeassistant-stubs/components/recorder/core.pyi +1 -2
- homeassistant-stubs/components/recorder/db_schema.pyi +3 -1
- homeassistant-stubs/components/recorder/migration.pyi +16 -2
- homeassistant-stubs/components/recorder/models/__init__.pyi +2 -2
- homeassistant-stubs/components/recorder/models/statistics.pyi +10 -2
- homeassistant-stubs/components/recorder/statistics.pyi +27 -9
- homeassistant-stubs/components/recorder/table_managers/statistics_meta.pyi +5 -3
- homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
- homeassistant-stubs/components/remote_calendar/__init__.pyi +11 -0
- homeassistant-stubs/components/remote_calendar/calendar.pyi +26 -0
- homeassistant-stubs/components/remote_calendar/config_flow.pyi +13 -0
- homeassistant-stubs/components/remote_calendar/const.pyi +2 -0
- homeassistant-stubs/components/remote_calendar/coordinator.pyi +20 -0
- homeassistant-stubs/components/remote_calendar/diagnostics.pyi +5 -0
- homeassistant-stubs/components/renault/config_flow.pyi +1 -0
- homeassistant-stubs/components/reolink/__init__.pyi +1 -1
- homeassistant-stubs/components/reolink/binary_sensor.pyi +17 -1
- homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
- homeassistant-stubs/components/reolink/const.pyi +1 -0
- homeassistant-stubs/components/reolink/host.pyi +4 -4
- homeassistant-stubs/components/reolink/number.pyi +21 -1
- homeassistant-stubs/components/reolink/select.pyi +17 -1
- homeassistant-stubs/components/reolink/update.pyi +2 -1
- homeassistant-stubs/components/reolink/util.pyi +7 -0
- homeassistant-stubs/components/roborock/__init__.pyi +5 -3
- homeassistant-stubs/components/roborock/binary_sensor.pyi +4 -1
- homeassistant-stubs/components/roborock/button.pyi +11 -1
- homeassistant-stubs/components/roborock/config_flow.pyi +7 -3
- homeassistant-stubs/components/roborock/const.pyi +7 -1
- homeassistant-stubs/components/roborock/coordinator.pyi +18 -3
- homeassistant-stubs/components/roborock/entity.pyi +3 -1
- homeassistant-stubs/components/roborock/image.pyi +2 -7
- homeassistant-stubs/components/roborock/models.pyi +7 -0
- homeassistant-stubs/components/roborock/number.pyi +1 -0
- homeassistant-stubs/components/roborock/select.pyi +7 -5
- homeassistant-stubs/components/roborock/sensor.pyi +14 -1
- homeassistant-stubs/components/roborock/switch.pyi +2 -0
- homeassistant-stubs/components/roborock/time.pyi +1 -0
- homeassistant-stubs/components/roborock/vacuum.pyi +1 -1
- homeassistant-stubs/components/sensor/const.pyi +2 -0
- homeassistant-stubs/components/sensor/recorder.pyi +15 -3
- homeassistant-stubs/components/shelly/__init__.pyi +2 -2
- homeassistant-stubs/components/shelly/bluetooth/__init__.pyi +4 -2
- homeassistant-stubs/components/shelly/button.pyi +22 -7
- homeassistant-stubs/components/shelly/climate.pyi +1 -1
- homeassistant-stubs/components/shelly/config_flow.pyi +5 -5
- homeassistant-stubs/components/shelly/const.pyi +0 -1
- homeassistant-stubs/components/shelly/coordinator.pyi +5 -1
- homeassistant-stubs/components/shelly/diagnostics.pyi +1 -2
- homeassistant-stubs/components/shelly/entity.pyi +1 -3
- homeassistant-stubs/components/shelly/event.pyi +1 -1
- homeassistant-stubs/components/shelly/number.pyi +1 -1
- homeassistant-stubs/components/shelly/sensor.pyi +2 -2
- homeassistant-stubs/components/shelly/switch.pyi +14 -14
- homeassistant-stubs/components/shelly/update.pyi +1 -1
- homeassistant-stubs/components/shelly/utils.pyi +6 -2
- homeassistant-stubs/components/skybell/config_flow.pyi +3 -0
- homeassistant-stubs/components/smlight/__init__.pyi +0 -2
- homeassistant-stubs/components/smlight/sensor.pyi +5 -2
- homeassistant-stubs/components/smlight/update.pyi +0 -1
- homeassistant-stubs/components/squeezebox/browse_media.pyi +6 -11
- homeassistant-stubs/components/squeezebox/button.pyi +31 -0
- homeassistant-stubs/components/squeezebox/entity.pyi +8 -2
- homeassistant-stubs/components/squeezebox/media_player.pyi +3 -5
- homeassistant-stubs/components/synology_dsm/__init__.pyi +5 -7
- homeassistant-stubs/components/synology_dsm/backup.pyi +3 -4
- homeassistant-stubs/components/synology_dsm/binary_sensor.pyi +2 -5
- homeassistant-stubs/components/synology_dsm/button.pyi +2 -3
- homeassistant-stubs/components/synology_dsm/camera.pyi +2 -4
- homeassistant-stubs/components/synology_dsm/config_flow.pyi +3 -2
- homeassistant-stubs/components/synology_dsm/coordinator.pyi +15 -5
- homeassistant-stubs/components/synology_dsm/diagnostics.pyi +3 -4
- homeassistant-stubs/components/synology_dsm/media_source.pyi +3 -1
- homeassistant-stubs/components/synology_dsm/repairs.pyi +2 -3
- homeassistant-stubs/components/synology_dsm/sensor.pyi +3 -5
- homeassistant-stubs/components/synology_dsm/service.pyi +1 -1
- homeassistant-stubs/components/synology_dsm/switch.pyi +2 -4
- homeassistant-stubs/components/synology_dsm/update.pyi +2 -5
- homeassistant-stubs/components/tibber/coordinator.pyi +1 -1
- homeassistant-stubs/components/todo/intent.pyi +8 -0
- homeassistant-stubs/components/trafikverket_ferry/config_flow.pyi +1 -0
- homeassistant-stubs/components/trafikverket_weatherstation/config_flow.pyi +3 -0
- homeassistant-stubs/components/tts/__init__.pyi +66 -51
- homeassistant-stubs/components/tts/entity.pyi +54 -0
- homeassistant-stubs/components/tts/media_source.pyi +1 -1
- homeassistant-stubs/components/update/__init__.pyi +2 -2
- homeassistant-stubs/components/usb/__init__.pyi +0 -3
- homeassistant-stubs/components/vodafone_station/__init__.pyi +11 -0
- homeassistant-stubs/components/vodafone_station/button.pyi +31 -0
- homeassistant-stubs/components/vodafone_station/config_flow.pyi +29 -0
- homeassistant-stubs/components/vodafone_station/const.pyi +9 -0
- homeassistant-stubs/components/vodafone_station/coordinator.pyi +43 -0
- homeassistant-stubs/components/vodafone_station/device_tracker.pyi +30 -0
- homeassistant-stubs/components/vodafone_station/diagnostics.pyi +10 -0
- homeassistant-stubs/components/vodafone_station/helpers.pyi +8 -0
- homeassistant-stubs/components/vodafone_station/sensor.pyi +38 -0
- homeassistant-stubs/components/zwave_js/__init__.pyi +5 -9
- homeassistant-stubs/components/zwave_js/api.pyi +15 -0
- homeassistant-stubs/components/zwave_js/config_flow.pyi +0 -1
- homeassistant-stubs/config_entries.pyi +2 -5
- homeassistant-stubs/helpers/backup.pyi +4 -1
- homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +14 -0
- homeassistant-stubs/helpers/config_validation.pyi +5 -2
- homeassistant-stubs/helpers/frame.pyi +14 -5
- homeassistant-stubs/helpers/intent.pyi +13 -4
- homeassistant-stubs/helpers/llm.pyi +7 -1
- homeassistant-stubs/helpers/selector.pyi +1 -0
- homeassistant-stubs/helpers/template.pyi +14 -1
- homeassistant-stubs/loader.pyi +18 -8
- homeassistant-stubs/scripts/check_config.pyi +0 -1
- homeassistant-stubs/util/logging.pyi +16 -1
- homeassistant-stubs/util/unit_conversion.pyi +3 -0
- homeassistant-stubs/util/unit_system.pyi +12 -10
- homeassistant-stubs/util/yaml/__init__.pyi +3 -4
- homeassistant-stubs/util/yaml/dumper.pyi +2 -8
- homeassistant-stubs/util/yaml/input.pyi +2 -9
- homeassistant-stubs/util/yaml/loader.pyi +4 -72
- homeassistant-stubs/util/yaml/objects.pyi +2 -26
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/RECORD +319 -258
- homeassistant-stubs/components/mcp_server/llm_api.pyi +0 -15
- homeassistant-stubs/components/synology_dsm/models.pyi +0 -10
- homeassistant-stubs/util/yaml/const.pyi +0 -1
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/licenses/LICENSE +0 -0
@@ -2,7 +2,7 @@ from .context import bytes_to_ulid_or_none as bytes_to_ulid_or_none, bytes_to_uu
|
|
2
2
|
from .database import DatabaseEngine as DatabaseEngine, DatabaseOptimizer as DatabaseOptimizer, UnsupportedDialect as UnsupportedDialect
|
3
3
|
from .event import extract_event_type_ids as extract_event_type_ids
|
4
4
|
from .state import LazyState as LazyState, extract_metadata_ids as extract_metadata_ids, row_to_compressed_state as row_to_compressed_state
|
5
|
-
from .statistics import CalendarStatisticPeriod as CalendarStatisticPeriod, FixedStatisticPeriod as FixedStatisticPeriod, RollingWindowStatisticPeriod as RollingWindowStatisticPeriod, StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMetaData as StatisticMetaData, StatisticPeriod as StatisticPeriod, StatisticResult as StatisticResult
|
5
|
+
from .statistics import CalendarStatisticPeriod as CalendarStatisticPeriod, FixedStatisticPeriod as FixedStatisticPeriod, RollingWindowStatisticPeriod as RollingWindowStatisticPeriod, StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData, StatisticPeriod as StatisticPeriod, StatisticResult as StatisticResult
|
6
6
|
from .time import datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, process_timestamp as process_timestamp, process_timestamp_to_utc_isoformat as process_timestamp_to_utc_isoformat, timestamp_to_datetime_or_none as timestamp_to_datetime_or_none
|
7
7
|
|
8
|
-
__all__ = ['CalendarStatisticPeriod', 'DatabaseEngine', 'DatabaseOptimizer', 'FixedStatisticPeriod', 'LazyState', 'RollingWindowStatisticPeriod', 'StatisticData', 'StatisticDataTimestamp', 'StatisticMetaData', 'StatisticPeriod', 'StatisticResult', 'UnsupportedDialect', 'bytes_to_ulid_or_none', 'bytes_to_uuid_hex_or_none', 'datetime_to_timestamp_or_none', 'extract_event_type_ids', 'extract_metadata_ids', 'process_timestamp', 'process_timestamp_to_utc_isoformat', 'row_to_compressed_state', 'timestamp_to_datetime_or_none', 'ulid_to_bytes_or_none', 'uuid_hex_to_bytes_or_none']
|
8
|
+
__all__ = ['CalendarStatisticPeriod', 'DatabaseEngine', 'DatabaseOptimizer', 'FixedStatisticPeriod', 'LazyState', 'RollingWindowStatisticPeriod', 'StatisticData', 'StatisticDataTimestamp', 'StatisticMeanType', 'StatisticMetaData', 'StatisticPeriod', 'StatisticResult', 'UnsupportedDialect', 'bytes_to_ulid_or_none', 'bytes_to_uuid_hex_or_none', 'datetime_to_timestamp_or_none', 'extract_event_type_ids', 'extract_metadata_ids', 'process_timestamp', 'process_timestamp_to_utc_isoformat', 'row_to_compressed_state', 'timestamp_to_datetime_or_none', 'ulid_to_bytes_or_none', 'uuid_hex_to_bytes_or_none']
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from datetime import datetime, timedelta
|
2
|
-
from
|
2
|
+
from enum import IntEnum
|
3
|
+
from typing import Literal, NotRequired, TypedDict
|
3
4
|
|
4
5
|
class StatisticResult(TypedDict):
|
5
6
|
meta: StatisticMetaData
|
@@ -17,6 +18,7 @@ class StatisticMixIn(TypedDict, total=False):
|
|
17
18
|
min: float
|
18
19
|
max: float
|
19
20
|
mean: float
|
21
|
+
mean_weight: float
|
20
22
|
|
21
23
|
class StatisticData(StatisticDataBase, StatisticMixIn, total=False):
|
22
24
|
last_reset: datetime | None
|
@@ -24,8 +26,14 @@ class StatisticData(StatisticDataBase, StatisticMixIn, total=False):
|
|
24
26
|
class StatisticDataTimestamp(StatisticDataTimestampBase, StatisticMixIn, total=False):
|
25
27
|
last_reset_ts: float | None
|
26
28
|
|
29
|
+
class StatisticMeanType(IntEnum):
|
30
|
+
NONE = 0
|
31
|
+
ARITHMETIC = 1
|
32
|
+
CIRCULAR = 2
|
33
|
+
|
27
34
|
class StatisticMetaData(TypedDict):
|
28
|
-
has_mean: bool
|
35
|
+
has_mean: NotRequired[bool]
|
36
|
+
mean_type: StatisticMeanType
|
29
37
|
has_sum: bool
|
30
38
|
name: str | None
|
31
39
|
source: str
|
@@ -2,7 +2,7 @@ import dataclasses
|
|
2
2
|
from . import Recorder as Recorder
|
3
3
|
from .const import DOMAIN as DOMAIN, EVENT_RECORDER_5MIN_STATISTICS_GENERATED as EVENT_RECORDER_5MIN_STATISTICS_GENERATED, EVENT_RECORDER_HOURLY_STATISTICS_GENERATED as EVENT_RECORDER_HOURLY_STATISTICS_GENERATED, INTEGRATION_PLATFORM_COMPILE_STATISTICS as INTEGRATION_PLATFORM_COMPILE_STATISTICS, INTEGRATION_PLATFORM_LIST_STATISTIC_IDS as INTEGRATION_PLATFORM_LIST_STATISTIC_IDS, INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES as INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES, INTEGRATION_PLATFORM_VALIDATE_STATISTICS as INTEGRATION_PLATFORM_VALIDATE_STATISTICS, MAX_IDS_FOR_INDEXED_GROUP_BY as MAX_IDS_FOR_INDEXED_GROUP_BY, SupportedDialect as SupportedDialect
|
4
4
|
from .db_schema import STATISTICS_TABLES as STATISTICS_TABLES, Statistics as Statistics, StatisticsBase as StatisticsBase, StatisticsMeta as StatisticsMeta, StatisticsRuns as StatisticsRuns, StatisticsShortTerm as StatisticsShortTerm
|
5
|
-
from .models import StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMetaData as StatisticMetaData, StatisticResult as StatisticResult, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, process_timestamp as process_timestamp
|
5
|
+
from .models import StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData, StatisticResult as StatisticResult, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, process_timestamp as process_timestamp
|
6
6
|
from .util import execute as execute, execute_stmt_lambda_element as execute_stmt_lambda_element, filter_unique_constraint_integrity_error as filter_unique_constraint_integrity_error, get_instance as get_instance, retryable_database_job as retryable_database_job, session_scope as session_scope
|
7
7
|
from _typeshed import Incomplete
|
8
8
|
from collections.abc import Callable as Callable, Iterable, Sequence
|
@@ -14,15 +14,19 @@ from homeassistant.helpers.recorder import DATA_RECORDER as DATA_RECORDER
|
|
14
14
|
from homeassistant.helpers.singleton import singleton as singleton
|
15
15
|
from homeassistant.helpers.typing import UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
|
16
16
|
from homeassistant.util.collection import chunked_or_all as chunked_or_all
|
17
|
+
from homeassistant.util.enum import try_parse_enum as try_parse_enum
|
17
18
|
from homeassistant.util.unit_conversion import 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, PowerConverter as PowerConverter, PressureConverter as PressureConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
18
|
-
from sqlalchemy import Select as Select
|
19
|
+
from sqlalchemy import Label as Label, Select as Select
|
19
20
|
from sqlalchemy.engine.row import Row
|
20
21
|
from sqlalchemy.orm.session import Session as Session
|
21
22
|
from sqlalchemy.sql.lambdas import StatementLambdaElement as StatementLambdaElement
|
22
|
-
from typing import Any, Literal, TypedDict
|
23
|
+
from typing import Any, Literal, Required, TypedDict
|
23
24
|
|
24
25
|
QUERY_STATISTICS: Incomplete
|
25
26
|
QUERY_STATISTICS_SHORT_TERM: Incomplete
|
27
|
+
|
28
|
+
def query_circular_mean(table: type[StatisticsBase]) -> tuple[Label, Label]: ...
|
29
|
+
|
26
30
|
QUERY_STATISTICS_SUMMARY_MEAN: Incomplete
|
27
31
|
QUERY_STATISTICS_SUMMARY_SUM: Incomplete
|
28
32
|
STATISTIC_UNIT_TO_UNIT_CONVERTER: dict[str | None, type[BaseUnitConverter]]
|
@@ -31,6 +35,12 @@ DATA_SHORT_TERM_STATISTICS_RUN_CACHE: str
|
|
31
35
|
|
32
36
|
def mean(values: list[float]) -> float | None: ...
|
33
37
|
|
38
|
+
DEG_TO_RAD: Incomplete
|
39
|
+
RAD_TO_DEG: Incomplete
|
40
|
+
|
41
|
+
def weighted_circular_mean(values: Iterable[tuple[float, float]]) -> float: ...
|
42
|
+
def circular_mean(values: list[float]) -> float: ...
|
43
|
+
|
34
44
|
_LOGGER: Incomplete
|
35
45
|
|
36
46
|
@dataclasses.dataclass(slots=True)
|
@@ -96,18 +106,26 @@ async def async_list_statistic_ids(hass: HomeAssistant, statistic_ids: set[str]
|
|
96
106
|
def _statistic_by_id_from_metadata(hass: HomeAssistant, metadata: dict[str, tuple[int, StatisticMetaData]]) -> dict[str, dict[str, Any]]: ...
|
97
107
|
def _flatten_list_statistic_ids_metadata_result(result: dict[str, dict[str, Any]]) -> list[dict]: ...
|
98
108
|
def list_statistic_ids(hass: HomeAssistant, statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None) -> list[dict]: ...
|
99
|
-
def _reduce_statistics(stats: dict[str, list[StatisticsRow]], same_period: Callable[[float, float], bool], period_start_end: Callable[[float], tuple[float, float]], period: timedelta, types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']]) -> dict[str, list[StatisticsRow]]: ...
|
109
|
+
def _reduce_statistics(stats: dict[str, list[StatisticsRow]], same_period: Callable[[float, float], bool], period_start_end: Callable[[float], tuple[float, float]], period: timedelta, types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']], metadata: dict[str, tuple[int, StatisticMetaData]]) -> dict[str, list[StatisticsRow]]: ...
|
100
110
|
def reduce_day_ts_factory() -> tuple[Callable[[float, float], bool], Callable[[float], tuple[float, float]]]: ...
|
101
|
-
def _reduce_statistics_per_day(stats: dict[str, list[StatisticsRow]], types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']]) -> dict[str, list[StatisticsRow]]: ...
|
111
|
+
def _reduce_statistics_per_day(stats: dict[str, list[StatisticsRow]], types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']], metadata: dict[str, tuple[int, StatisticMetaData]]) -> dict[str, list[StatisticsRow]]: ...
|
102
112
|
def reduce_week_ts_factory() -> tuple[Callable[[float, float], bool], Callable[[float], tuple[float, float]]]: ...
|
103
|
-
def _reduce_statistics_per_week(stats: dict[str, list[StatisticsRow]], types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']]) -> dict[str, list[StatisticsRow]]: ...
|
113
|
+
def _reduce_statistics_per_week(stats: dict[str, list[StatisticsRow]], types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']], metadata: dict[str, tuple[int, StatisticMetaData]]) -> dict[str, list[StatisticsRow]]: ...
|
104
114
|
def _find_month_end_time(timestamp: datetime) -> datetime: ...
|
105
115
|
def reduce_month_ts_factory() -> tuple[Callable[[float, float], bool], Callable[[float], tuple[float, float]]]: ...
|
106
|
-
def _reduce_statistics_per_month(stats: dict[str, list[StatisticsRow]], types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']]) -> dict[str, list[StatisticsRow]]: ...
|
116
|
+
def _reduce_statistics_per_month(stats: dict[str, list[StatisticsRow]], types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']], metadata: dict[str, tuple[int, StatisticMetaData]]) -> dict[str, list[StatisticsRow]]: ...
|
107
117
|
def _generate_statistics_during_period_stmt(start_time: datetime, end_time: datetime | None, metadata_ids: list[int] | None, table: type[StatisticsBase], types: set[Literal['last_reset', 'max', 'mean', 'min', 'state', 'sum']]) -> StatementLambdaElement: ...
|
108
118
|
def _generate_max_mean_min_statistic_in_sub_period_stmt(columns: Select, start_time: datetime | None, end_time: datetime | None, table: type[StatisticsBase], metadata_id: int) -> StatementLambdaElement: ...
|
109
|
-
|
110
|
-
|
119
|
+
|
120
|
+
class _MaxMinMeanStatisticSubPeriod(TypedDict, total=False):
|
121
|
+
max: float
|
122
|
+
mean_acc: float
|
123
|
+
min: float
|
124
|
+
duration: float
|
125
|
+
circular_means: Required[list[tuple[float, float]]]
|
126
|
+
|
127
|
+
def _get_max_mean_min_statistic_in_sub_period(session: Session, result: _MaxMinMeanStatisticSubPeriod, start_time: datetime | None, end_time: datetime | None, table: type[StatisticsBase], types: set[Literal['max', 'mean', 'min', 'change']], metadata: tuple[int, StatisticMetaData]) -> None: ...
|
128
|
+
def _get_max_mean_min_statistic(session: Session, head_start_time: datetime | None, head_end_time: datetime | None, main_start_time: datetime | None, main_end_time: datetime | None, tail_start_time: datetime | None, tail_end_time: datetime | None, tail_only: bool, metadata: tuple[int, StatisticMetaData], types: set[Literal['max', 'mean', 'min', 'change']]) -> dict[str, float | None]: ...
|
111
129
|
def _first_statistic(session: Session, table: type[StatisticsBase], metadata_id: int) -> datetime | None: ...
|
112
130
|
def _last_statistic(session: Session, table: type[StatisticsBase], metadata_id: int) -> datetime | None: ...
|
113
131
|
def _get_oldest_sum_statistic(session: Session, head_start_time: datetime | None, main_start_time: datetime | None, tail_start_time: datetime | None, oldest_stat: datetime | None, oldest_5_min_stat: datetime | None, tail_only: bool, metadata_id: int) -> float | None: ...
|
@@ -1,9 +1,11 @@
|
|
1
|
+
from ..const import CIRCULAR_MEAN_SCHEMA_VERSION as CIRCULAR_MEAN_SCHEMA_VERSION
|
1
2
|
from ..core import Recorder as Recorder
|
2
3
|
from ..db_schema import StatisticsMeta as StatisticsMeta
|
3
|
-
from ..models import StatisticMetaData as StatisticMetaData
|
4
|
+
from ..models import StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData
|
4
5
|
from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element
|
5
6
|
from _typeshed import Incomplete
|
6
7
|
from lru import LRU
|
8
|
+
from sqlalchemy.orm import InstrumentedAttribute as InstrumentedAttribute
|
7
9
|
from sqlalchemy.orm.session import Session as Session
|
8
10
|
from sqlalchemy.sql.lambdas import StatementLambdaElement as StatementLambdaElement
|
9
11
|
from typing import Final, Literal
|
@@ -15,11 +17,11 @@ INDEX_ID: Final[int]
|
|
15
17
|
INDEX_STATISTIC_ID: Final[int]
|
16
18
|
INDEX_SOURCE: Final[int]
|
17
19
|
INDEX_UNIT_OF_MEASUREMENT: Final[int]
|
18
|
-
INDEX_HAS_MEAN: Final[int]
|
19
20
|
INDEX_HAS_SUM: Final[int]
|
20
21
|
INDEX_NAME: Final[int]
|
22
|
+
INDEX_MEAN_TYPE: Final[int]
|
21
23
|
|
22
|
-
def _generate_get_metadata_stmt(statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None, statistic_source: str | None = None) -> StatementLambdaElement: ...
|
24
|
+
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: ...
|
23
25
|
|
24
26
|
class StatisticsMetaManager:
|
25
27
|
recorder: Incomplete
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .models import StatisticPeriod as StatisticPeriod
|
1
|
+
from .models import StatisticMeanType as StatisticMeanType, StatisticPeriod as StatisticPeriod
|
2
2
|
from .statistics import STATISTIC_UNIT_TO_UNIT_CONVERTER as STATISTIC_UNIT_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, 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
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import RemoteCalendarConfigEntry as RemoteCalendarConfigEntry, RemoteCalendarDataUpdateCoordinator as RemoteCalendarDataUpdateCoordinator
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from homeassistant.const import Platform as Platform
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
|
+
|
7
|
+
_LOGGER: Incomplete
|
8
|
+
PLATFORMS: list[Platform]
|
9
|
+
|
10
|
+
async def async_setup_entry(hass: HomeAssistant, entry: RemoteCalendarConfigEntry) -> bool: ...
|
11
|
+
async def async_unload_entry(hass: HomeAssistant, entry: RemoteCalendarConfigEntry) -> bool: ...
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from . import RemoteCalendarConfigEntry as RemoteCalendarConfigEntry
|
2
|
+
from .const import CONF_CALENDAR_NAME as CONF_CALENDAR_NAME
|
3
|
+
from .coordinator import RemoteCalendarDataUpdateCoordinator as RemoteCalendarDataUpdateCoordinator
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from datetime import datetime
|
6
|
+
from homeassistant.components.calendar import CalendarEntity as CalendarEntity, CalendarEvent as CalendarEvent
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
9
|
+
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
10
|
+
from ical.event import Event as Event
|
11
|
+
|
12
|
+
_LOGGER: Incomplete
|
13
|
+
PARALLEL_UPDATES: int
|
14
|
+
|
15
|
+
async def async_setup_entry(hass: HomeAssistant, entry: RemoteCalendarConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
16
|
+
|
17
|
+
class RemoteCalendarEntity(CoordinatorEntity[RemoteCalendarDataUpdateCoordinator], CalendarEntity):
|
18
|
+
_attr_has_entity_name: bool
|
19
|
+
_attr_name: Incomplete
|
20
|
+
_attr_unique_id: Incomplete
|
21
|
+
def __init__(self, coordinator: RemoteCalendarDataUpdateCoordinator, entry: RemoteCalendarConfigEntry) -> None: ...
|
22
|
+
@property
|
23
|
+
def event(self) -> CalendarEvent | None: ...
|
24
|
+
async def async_get_events(self, hass: HomeAssistant, start_date: datetime, end_date: datetime) -> list[CalendarEvent]: ...
|
25
|
+
|
26
|
+
def _get_calendar_event(event: Event) -> CalendarEvent: ...
|
@@ -0,0 +1,13 @@
|
|
1
|
+
from .const import CONF_CALENDAR_NAME as CONF_CALENDAR_NAME, DOMAIN as DOMAIN
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
4
|
+
from homeassistant.const import CONF_URL as CONF_URL
|
5
|
+
from homeassistant.helpers.httpx_client import get_async_client as get_async_client
|
6
|
+
from typing import Any
|
7
|
+
|
8
|
+
_LOGGER: Incomplete
|
9
|
+
STEP_USER_DATA_SCHEMA: Incomplete
|
10
|
+
|
11
|
+
class RemoteCalendarConfigFlow(ConfigFlow, domain=DOMAIN):
|
12
|
+
VERSION: int
|
13
|
+
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
@@ -0,0 +1,20 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
4
|
+
from homeassistant.const import CONF_URL as CONF_URL
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
|
+
from homeassistant.helpers.httpx_client import get_async_client as get_async_client
|
7
|
+
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
8
|
+
from ical.calendar import Calendar
|
9
|
+
|
10
|
+
type RemoteCalendarConfigEntry = ConfigEntry[RemoteCalendarDataUpdateCoordinator]
|
11
|
+
_LOGGER: Incomplete
|
12
|
+
SCAN_INTERVAL: Incomplete
|
13
|
+
|
14
|
+
class RemoteCalendarDataUpdateCoordinator(DataUpdateCoordinator[Calendar]):
|
15
|
+
config_entry: RemoteCalendarConfigEntry
|
16
|
+
ics: str
|
17
|
+
_client: Incomplete
|
18
|
+
_url: Incomplete
|
19
|
+
def __init__(self, hass: HomeAssistant, config_entry: RemoteCalendarConfigEntry) -> None: ...
|
20
|
+
async def _async_update_data(self) -> Calendar: ...
|
@@ -0,0 +1,5 @@
|
|
1
|
+
from . import RemoteCalendarConfigEntry as RemoteCalendarConfigEntry
|
2
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
3
|
+
from typing import Any
|
4
|
+
|
5
|
+
async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: RemoteCalendarConfigEntry) -> dict[str, Any]: ...
|
@@ -6,6 +6,7 @@ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowRes
|
|
6
6
|
from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
|
7
7
|
from typing import Any
|
8
8
|
|
9
|
+
_LOGGER: Incomplete
|
9
10
|
USER_SCHEMA: Incomplete
|
10
11
|
REAUTH_SCHEMA: Incomplete
|
11
12
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
|
1
|
+
from .const import CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
|
2
2
|
from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkException as ReolinkException, UserNotAdmin as UserNotAdmin
|
3
3
|
from .host import ReolinkHost as ReolinkHost
|
4
4
|
from .services import async_setup_services as async_setup_services
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription
|
1
|
+
from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkEntityDescription as ReolinkEntityDescription
|
2
2
|
from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from collections.abc import Callable as Callable
|
@@ -16,8 +16,15 @@ PARALLEL_UPDATES: int
|
|
16
16
|
class ReolinkBinarySensorEntityDescription(BinarySensorEntityDescription, ReolinkChannelEntityDescription):
|
17
17
|
value: Callable[[Host, int], bool]
|
18
18
|
|
19
|
+
@dataclass(frozen=True, kw_only=True)
|
20
|
+
class ReolinkSmartAIBinarySensorEntityDescription(BinarySensorEntityDescription, ReolinkEntityDescription):
|
21
|
+
smart_type: str
|
22
|
+
value: Callable[[Host, int, int], bool]
|
23
|
+
supported: Callable[[Host, int, int], bool] = ...
|
24
|
+
|
19
25
|
BINARY_PUSH_SENSORS: Incomplete
|
20
26
|
BINARY_SENSORS: Incomplete
|
27
|
+
BINARY_SMART_AI_SENSORS: Incomplete
|
21
28
|
|
22
29
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
23
30
|
|
@@ -31,3 +38,12 @@ class ReolinkBinarySensorEntity(ReolinkChannelCoordinatorEntity, BinarySensorEnt
|
|
31
38
|
class ReolinkPushBinarySensorEntity(ReolinkBinarySensorEntity):
|
32
39
|
async def async_added_to_hass(self) -> None: ...
|
33
40
|
async def _async_handle_event(self, event: str) -> None: ...
|
41
|
+
|
42
|
+
class ReolinkSmartAIBinarySensorEntity(ReolinkChannelCoordinatorEntity, BinarySensorEntity):
|
43
|
+
entity_description: ReolinkSmartAIBinarySensorEntityDescription
|
44
|
+
_attr_unique_id: Incomplete
|
45
|
+
_location: Incomplete
|
46
|
+
_attr_translation_placeholders: Incomplete
|
47
|
+
def __init__(self, reolink_data: ReolinkData, channel: int, location: int, entity_description: ReolinkSmartAIBinarySensorEntityDescription) -> None: ...
|
48
|
+
@property
|
49
|
+
def is_on(self) -> bool: ...
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
|
1
|
+
from .const import CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
|
2
2
|
from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkException as ReolinkException, ReolinkWebhookException as ReolinkWebhookException, UserNotAdmin as UserNotAdmin
|
3
3
|
from .host import ReolinkHost as ReolinkHost
|
4
4
|
from .util import ReolinkConfigEntry as ReolinkConfigEntry, is_connected as is_connected
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import asyncio
|
2
|
-
from .const import CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
|
2
|
+
from .const import CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
|
3
3
|
from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkSetupException as ReolinkSetupException, ReolinkWebhookException as ReolinkWebhookException, UserNotAdmin as UserNotAdmin
|
4
|
-
from .util import get_store as get_store
|
4
|
+
from .util import ReolinkConfigEntry as ReolinkConfigEntry, get_store as get_store
|
5
5
|
from _typeshed import Incomplete
|
6
6
|
from aiohttp.web import Request as Request
|
7
7
|
from collections import defaultdict
|
@@ -33,7 +33,7 @@ _LOGGER: Incomplete
|
|
33
33
|
|
34
34
|
class ReolinkHost:
|
35
35
|
_hass: HomeAssistant
|
36
|
-
|
36
|
+
_config_entry: Incomplete
|
37
37
|
_config: Incomplete
|
38
38
|
_unique_id: str
|
39
39
|
_api: Incomplete
|
@@ -61,7 +61,7 @@ class ReolinkHost:
|
|
61
61
|
_lost_subscription_start: bool
|
62
62
|
_lost_subscription: bool
|
63
63
|
cancel_refresh_privacy_mode: CALLBACK_TYPE | None
|
64
|
-
def __init__(self, hass: HomeAssistant, config: Mapping[str, Any], options: Mapping[str, Any],
|
64
|
+
def __init__(self, hass: HomeAssistant, config: Mapping[str, Any], options: Mapping[str, Any], config_entry: ReolinkConfigEntry | None = None) -> None: ...
|
65
65
|
@callback
|
66
66
|
def async_register_update_cmd(self, cmd: str, channel: int | None = None) -> None: ...
|
67
67
|
@callback
|
@@ -3,7 +3,7 @@ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as Reoli
|
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from collections.abc import Callable as Callable
|
5
5
|
from dataclasses import dataclass
|
6
|
-
from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription, NumberMode as NumberMode
|
6
|
+
from homeassistant.components.number import NumberDeviceClass as NumberDeviceClass, NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription, NumberMode as NumberMode
|
7
7
|
from homeassistant.const import EntityCategory as EntityCategory, UnitOfTime as UnitOfTime
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
9
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
@@ -20,6 +20,13 @@ class ReolinkNumberEntityDescription(NumberEntityDescription, ReolinkChannelEnti
|
|
20
20
|
mode: NumberMode = ...
|
21
21
|
value: Callable[[Host, int], float | None]
|
22
22
|
|
23
|
+
@dataclass(frozen=True, kw_only=True)
|
24
|
+
class ReolinkSmartAINumberEntityDescription(NumberEntityDescription, ReolinkChannelEntityDescription):
|
25
|
+
smart_type: str
|
26
|
+
method: Callable[[Host, int, int, float], Any]
|
27
|
+
mode: NumberMode = ...
|
28
|
+
value: Callable[[Host, int, int], float | None]
|
29
|
+
|
23
30
|
@dataclass(frozen=True, kw_only=True)
|
24
31
|
class ReolinkHostNumberEntityDescription(NumberEntityDescription, ReolinkHostEntityDescription):
|
25
32
|
method: Callable[[Host, float], Any]
|
@@ -33,6 +40,7 @@ class ReolinkChimeNumberEntityDescription(NumberEntityDescription, ReolinkChimeE
|
|
33
40
|
value: Callable[[Chime], float | None]
|
34
41
|
|
35
42
|
NUMBER_ENTITIES: Incomplete
|
43
|
+
SMART_AI_NUMBER_ENTITIES: Incomplete
|
36
44
|
HOST_NUMBER_ENTITIES: Incomplete
|
37
45
|
CHIME_NUMBER_ENTITIES: Incomplete
|
38
46
|
|
@@ -49,6 +57,18 @@ class ReolinkNumberEntity(ReolinkChannelCoordinatorEntity, NumberEntity):
|
|
49
57
|
@raise_translated_error
|
50
58
|
async def async_set_native_value(self, value: float) -> None: ...
|
51
59
|
|
60
|
+
class ReolinkSmartAINumberEntity(ReolinkChannelCoordinatorEntity, NumberEntity):
|
61
|
+
entity_description: ReolinkSmartAINumberEntityDescription
|
62
|
+
_attr_unique_id: Incomplete
|
63
|
+
_location: Incomplete
|
64
|
+
_attr_mode: Incomplete
|
65
|
+
_attr_translation_placeholders: Incomplete
|
66
|
+
def __init__(self, reolink_data: ReolinkData, channel: int, location: int, entity_description: ReolinkSmartAINumberEntityDescription) -> None: ...
|
67
|
+
@property
|
68
|
+
def native_value(self) -> float | None: ...
|
69
|
+
@raise_translated_error
|
70
|
+
async def async_set_native_value(self, value: float) -> None: ...
|
71
|
+
|
52
72
|
class ReolinkHostNumberEntity(ReolinkHostCoordinatorEntity, NumberEntity):
|
53
73
|
entity_description: ReolinkHostNumberEntityDescription
|
54
74
|
_attr_mode: Incomplete
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription
|
1
|
+
from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
|
2
2
|
from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from collections.abc import Callable as Callable
|
@@ -19,6 +19,12 @@ class ReolinkSelectEntityDescription(SelectEntityDescription, ReolinkChannelEnti
|
|
19
19
|
method: Callable[[Host, int, str], Any]
|
20
20
|
value: Callable[[Host, int], str] | None = ...
|
21
21
|
|
22
|
+
@dataclass(frozen=True, kw_only=True)
|
23
|
+
class ReolinkHostSelectEntityDescription(SelectEntityDescription, ReolinkHostEntityDescription):
|
24
|
+
get_options: Callable[[Host], list[str]]
|
25
|
+
method: Callable[[Host, str], Any]
|
26
|
+
value: Callable[[Host], str]
|
27
|
+
|
22
28
|
@dataclass(frozen=True, kw_only=True)
|
23
29
|
class ReolinkChimeSelectEntityDescription(SelectEntityDescription, ReolinkChimeEntityDescription):
|
24
30
|
get_options: list[str]
|
@@ -28,6 +34,7 @@ class ReolinkChimeSelectEntityDescription(SelectEntityDescription, ReolinkChimeE
|
|
28
34
|
def _get_quick_reply_id(api: Host, ch: int, mess: str) -> int: ...
|
29
35
|
|
30
36
|
SELECT_ENTITIES: Incomplete
|
37
|
+
HOST_SELECT_ENTITIES: Incomplete
|
31
38
|
CHIME_SELECT_ENTITIES: Incomplete
|
32
39
|
|
33
40
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
@@ -42,6 +49,15 @@ class ReolinkSelectEntity(ReolinkChannelCoordinatorEntity, SelectEntity):
|
|
42
49
|
@raise_translated_error
|
43
50
|
async def async_select_option(self, option: str) -> None: ...
|
44
51
|
|
52
|
+
class ReolinkHostSelectEntity(ReolinkHostCoordinatorEntity, SelectEntity):
|
53
|
+
entity_description: ReolinkHostSelectEntityDescription
|
54
|
+
_attr_options: Incomplete
|
55
|
+
def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostSelectEntityDescription) -> None: ...
|
56
|
+
@property
|
57
|
+
def current_option(self) -> str | None: ...
|
58
|
+
@raise_translated_error
|
59
|
+
async def async_select_option(self, option: str) -> None: ...
|
60
|
+
|
45
61
|
class ReolinkChimeSelectEntity(ReolinkChimeCoordinatorEntity, SelectEntity):
|
46
62
|
entity_description: ReolinkChimeSelectEntityDescription
|
47
63
|
_log_error: bool
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from . import DEVICE_UPDATE_INTERVAL as DEVICE_UPDATE_INTERVAL
|
2
2
|
from .const import DOMAIN as DOMAIN
|
3
3
|
from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
|
4
|
-
from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
|
4
|
+
from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
|
5
5
|
from _typeshed import Incomplete
|
6
6
|
from dataclasses import dataclass
|
7
7
|
from homeassistant.components.update import UpdateDeviceClass as UpdateDeviceClass, UpdateEntity as UpdateEntity, UpdateEntityDescription as UpdateEntityDescription, UpdateEntityFeature as UpdateEntityFeature
|
@@ -51,6 +51,7 @@ class ReolinkUpdateBaseEntity(CoordinatorEntity[DataUpdateCoordinator[None]], Up
|
|
51
51
|
def available(self) -> bool: ...
|
52
52
|
def version_is_newer(self, latest_version: str, installed_version: str) -> bool: ...
|
53
53
|
async def async_release_notes(self) -> str | None: ...
|
54
|
+
@raise_translated_error
|
54
55
|
async def async_install(self, version: str | None, backup: bool, **kwargs: Any) -> None: ...
|
55
56
|
async def _pause_update_coordinator(self) -> None: ...
|
56
57
|
async def _resume_update_coordinator(self, *args: Any) -> None: ...
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from .const import DOMAIN as DOMAIN
|
2
2
|
from .host import ReolinkHost as ReolinkHost
|
3
|
+
from _typeshed import Incomplete
|
3
4
|
from collections.abc import Awaitable, Callable as Callable, Coroutine
|
4
5
|
from dataclasses import dataclass
|
5
6
|
from homeassistant import config_entries as config_entries
|
@@ -8,7 +9,9 @@ from homeassistant.core import HomeAssistant as HomeAssistant
|
|
8
9
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
|
9
10
|
from homeassistant.helpers import device_registry as dr
|
10
11
|
from homeassistant.helpers.storage import Store as Store
|
12
|
+
from homeassistant.helpers.translation import async_get_exception_message as async_get_exception_message
|
11
13
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
|
14
|
+
from reolink_aio.exceptions import ReolinkError
|
12
15
|
from typing import Any
|
13
16
|
|
14
17
|
STORAGE_VERSION: int
|
@@ -24,4 +27,8 @@ def is_connected(hass: HomeAssistant, config_entry: config_entries.ConfigEntry)
|
|
24
27
|
def get_host(hass: HomeAssistant, config_entry_id: str) -> ReolinkHost: ...
|
25
28
|
def get_store(hass: HomeAssistant, config_entry_id: str) -> Store[str]: ...
|
26
29
|
def get_device_uid_and_ch(device: dr.DeviceEntry, host: ReolinkHost) -> tuple[list[str], int | None, bool]: ...
|
30
|
+
def check_translation_key(err: ReolinkError) -> str | None: ...
|
31
|
+
|
32
|
+
_EXCEPTION_TO_TRANSLATION_KEY: Incomplete
|
33
|
+
|
27
34
|
def raise_translated_error[**P, R](func: Callable[P, Awaitable[R]]) -> Callable[P, Coroutine[Any, Any, R]]: ...
|
@@ -6,17 +6,19 @@ from collections.abc import Coroutine
|
|
6
6
|
from homeassistant.const import CONF_USERNAME as CONF_USERNAME, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
|
7
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
8
|
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
9
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
9
10
|
from roborock import HomeDataRoom as HomeDataRoom
|
10
11
|
from roborock.containers import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, UserData
|
12
|
+
from roborock.web_api import RoborockApiClient
|
11
13
|
from typing import Any
|
12
14
|
|
13
15
|
SCAN_INTERVAL: Incomplete
|
14
16
|
_LOGGER: Incomplete
|
15
17
|
|
16
18
|
async def async_setup_entry(hass: HomeAssistant, entry: RoborockConfigEntry) -> bool: ...
|
17
|
-
def build_setup_functions(hass: HomeAssistant, entry: RoborockConfigEntry, device_map: dict[str, HomeDataDevice], user_data: UserData, product_info: dict[str, HomeDataProduct], home_data_rooms: list[HomeDataRoom]) -> list[Coroutine[Any, Any, RoborockDataUpdateCoordinator | RoborockDataUpdateCoordinatorA01 | None]]: ...
|
18
|
-
async def setup_device(hass: HomeAssistant, entry: RoborockConfigEntry, user_data: UserData, device: HomeDataDevice, product_info: HomeDataProduct, home_data_rooms: list[HomeDataRoom]) -> RoborockDataUpdateCoordinator | RoborockDataUpdateCoordinatorA01 | None: ...
|
19
|
-
async def setup_device_v1(hass: HomeAssistant, entry: RoborockConfigEntry, user_data: UserData, device: HomeDataDevice, product_info: HomeDataProduct, home_data_rooms: list[HomeDataRoom]) -> RoborockDataUpdateCoordinator | None: ...
|
19
|
+
def build_setup_functions(hass: HomeAssistant, entry: RoborockConfigEntry, device_map: dict[str, HomeDataDevice], user_data: UserData, product_info: dict[str, HomeDataProduct], home_data_rooms: list[HomeDataRoom], api_client: RoborockApiClient) -> list[Coroutine[Any, Any, RoborockDataUpdateCoordinator | RoborockDataUpdateCoordinatorA01 | None]]: ...
|
20
|
+
async def setup_device(hass: HomeAssistant, entry: RoborockConfigEntry, user_data: UserData, device: HomeDataDevice, product_info: HomeDataProduct, home_data_rooms: list[HomeDataRoom], api_client: RoborockApiClient) -> RoborockDataUpdateCoordinator | RoborockDataUpdateCoordinatorA01 | None: ...
|
21
|
+
async def setup_device_v1(hass: HomeAssistant, entry: RoborockConfigEntry, user_data: UserData, device: HomeDataDevice, product_info: HomeDataProduct, home_data_rooms: list[HomeDataRoom], api_client: RoborockApiClient) -> RoborockDataUpdateCoordinator | None: ...
|
20
22
|
async def setup_device_a01(hass: HomeAssistant, entry: RoborockConfigEntry, user_data: UserData, device: HomeDataDevice, product_info: HomeDataProduct) -> RoborockDataUpdateCoordinatorA01 | None: ...
|
21
23
|
async def async_unload_entry(hass: HomeAssistant, entry: RoborockConfigEntry) -> bool: ...
|
22
24
|
async def update_listener(hass: HomeAssistant, entry: RoborockConfigEntry) -> None: ...
|
@@ -4,14 +4,17 @@ from _typeshed import Incomplete
|
|
4
4
|
from collections.abc import Callable as Callable
|
5
5
|
from dataclasses import dataclass
|
6
6
|
from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
|
7
|
-
from homeassistant.const import EntityCategory as EntityCategory
|
7
|
+
from homeassistant.const import ATTR_BATTERY_CHARGING as ATTR_BATTERY_CHARGING, EntityCategory as EntityCategory
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
9
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
10
10
|
from roborock.roborock_typing import DeviceProp as DeviceProp
|
11
11
|
|
12
|
+
PARALLEL_UPDATES: int
|
13
|
+
|
12
14
|
@dataclass(frozen=True, kw_only=True)
|
13
15
|
class RoborockBinarySensorDescription(BinarySensorEntityDescription):
|
14
16
|
value_fn: Callable[[DeviceProp], bool | int | None]
|
17
|
+
is_dock_entity: bool = ...
|
15
18
|
|
16
19
|
BINARY_SENSOR_DESCRIPTIONS: Incomplete
|
17
20
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from .coordinator import RoborockConfigEntry as RoborockConfigEntry, RoborockDataUpdateCoordinator as RoborockDataUpdateCoordinator
|
2
|
-
from .entity import RoborockEntityV1 as RoborockEntityV1
|
2
|
+
from .entity import RoborockEntity as RoborockEntity, RoborockEntityV1 as RoborockEntityV1
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from dataclasses import dataclass
|
5
5
|
from homeassistant.components.button import ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
|
@@ -7,6 +7,9 @@ from homeassistant.const import EntityCategory as EntityCategory
|
|
7
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
8
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
9
9
|
from roborock.roborock_typing import RoborockCommand
|
10
|
+
from typing import Any
|
11
|
+
|
12
|
+
PARALLEL_UPDATES: int
|
10
13
|
|
11
14
|
@dataclass(frozen=True, kw_only=True)
|
12
15
|
class RoborockButtonDescription(ButtonEntityDescription):
|
@@ -21,3 +24,10 @@ class RoborockButtonEntity(RoborockEntityV1, ButtonEntity):
|
|
21
24
|
entity_description: RoborockButtonDescription
|
22
25
|
def __init__(self, coordinator: RoborockDataUpdateCoordinator, entity_description: RoborockButtonDescription) -> None: ...
|
23
26
|
async def async_press(self) -> None: ...
|
27
|
+
|
28
|
+
class RoborockRoutineButtonEntity(RoborockEntity, ButtonEntity):
|
29
|
+
entity_description: ButtonEntityDescription
|
30
|
+
_routine_id: Incomplete
|
31
|
+
_coordinator: Incomplete
|
32
|
+
def __init__(self, coordinator: RoborockDataUpdateCoordinator, entity_description: ButtonEntityDescription) -> None: ...
|
33
|
+
async def async_press(self, **kwargs: Any) -> None: ...
|
@@ -1,9 +1,12 @@
|
|
1
|
+
from . import RoborockConfigEntry as RoborockConfigEntry
|
1
2
|
from .const import CONF_BASE_URL as CONF_BASE_URL, CONF_ENTRY_CODE as CONF_ENTRY_CODE, CONF_USER_DATA as CONF_USER_DATA, DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES
|
2
3
|
from _typeshed import Incomplete
|
3
4
|
from collections.abc import Mapping
|
4
|
-
from homeassistant.config_entries import
|
5
|
+
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow, SOURCE_REAUTH as SOURCE_REAUTH
|
5
6
|
from homeassistant.const import CONF_USERNAME as CONF_USERNAME
|
6
7
|
from homeassistant.core import callback as callback
|
8
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
9
|
+
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo as DhcpServiceInfo
|
7
10
|
from roborock.containers import UserData as UserData
|
8
11
|
from roborock.web_api import RoborockApiClient
|
9
12
|
from typing import Any
|
@@ -18,15 +21,16 @@ class RoborockFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
18
21
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
19
22
|
async def _request_code(self) -> dict: ...
|
20
23
|
async def async_step_code(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
24
|
+
async def async_step_dhcp(self, discovery_info: DhcpServiceInfo) -> ConfigFlowResult: ...
|
21
25
|
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
22
26
|
async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
23
27
|
def _create_entry(self, client: RoborockApiClient, username: str, user_data: UserData) -> ConfigFlowResult: ...
|
24
28
|
@staticmethod
|
25
29
|
@callback
|
26
|
-
def async_get_options_flow(config_entry:
|
30
|
+
def async_get_options_flow(config_entry: RoborockConfigEntry) -> RoborockOptionsFlowHandler: ...
|
27
31
|
|
28
32
|
class RoborockOptionsFlowHandler(OptionsFlow):
|
29
33
|
options: Incomplete
|
30
|
-
def __init__(self, config_entry:
|
34
|
+
def __init__(self, config_entry: RoborockConfigEntry) -> None: ...
|
31
35
|
async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
32
36
|
async def async_step_drawables(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
@@ -8,10 +8,16 @@ CONF_USER_DATA: str
|
|
8
8
|
DRAWABLES: str
|
9
9
|
DEFAULT_DRAWABLES: Incomplete
|
10
10
|
PLATFORMS: Incomplete
|
11
|
-
IMAGE_CACHE_INTERVAL:
|
11
|
+
IMAGE_CACHE_INTERVAL: Incomplete
|
12
12
|
MAP_SLEEP: int
|
13
13
|
GET_MAPS_SERVICE_NAME: str
|
14
|
+
MAP_SCALE: int
|
14
15
|
MAP_FILE_FORMAT: str
|
15
16
|
MAP_FILENAME_SUFFIX: str
|
16
17
|
SET_VACUUM_GOTO_POSITION_SERVICE_NAME: str
|
17
18
|
GET_VACUUM_CURRENT_POSITION_SERVICE_NAME: str
|
19
|
+
A01_UPDATE_INTERVAL: Incomplete
|
20
|
+
V1_CLOUD_IN_CLEANING_INTERVAL: Incomplete
|
21
|
+
V1_CLOUD_NOT_CLEANING_INTERVAL: Incomplete
|
22
|
+
V1_LOCAL_IN_CLEANING_INTERVAL: Incomplete
|
23
|
+
V1_LOCAL_NOT_CLEANING_INTERVAL: Incomplete
|