homeassistant-stubs 2025.3.3__py3-none-any.whl → 2025.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant-stubs/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/const.pyi +3 -0
- homeassistant-stubs/components/assist_satellite/entity.pyi +6 -4
- 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 +39 -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/config_flow.pyi +1 -0
- homeassistant-stubs/components/esphome/const.pyi +1 -0
- homeassistant-stubs/components/esphome/diagnostics.pyi +0 -1
- homeassistant-stubs/components/esphome/event.pyi +2 -0
- homeassistant-stubs/components/esphome/manager.pyi +1 -1
- homeassistant-stubs/components/fritzbox/climate.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 +1 -6
- homeassistant-stubs/components/home_connect/coordinator.pyi +4 -2
- homeassistant-stubs/components/home_connect/entity.pyi +7 -2
- homeassistant-stubs/components/home_connect/light.pyi +1 -1
- homeassistant-stubs/components/home_connect/number.pyi +4 -3
- homeassistant-stubs/components/home_connect/select.pyi +7 -3
- homeassistant-stubs/components/home_connect/sensor.pyi +3 -1
- homeassistant-stubs/components/home_connect/services.pyi +35 -0
- homeassistant-stubs/components/home_connect/switch.pyi +2 -1
- homeassistant-stubs/components/home_connect/time.pyi +6 -1
- homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +15 -0
- homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +2 -1
- homeassistant-stubs/components/homeassistant_hardware/update.pyi +68 -0
- homeassistant-stubs/components/homeassistant_hardware/util.pyi +6 -1
- homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +7 -1
- 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 +29 -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 +29 -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/huawei_lte/__init__.pyi +1 -1
- 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/lovelace/__init__.pyi +3 -1
- 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 +3 -14
- homeassistant-stubs/components/mqtt/models.pyi +25 -1
- homeassistant-stubs/components/mqtt/sensor.pyi +6 -5
- homeassistant-stubs/components/mqtt/update.pyi +1 -1
- 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 +2 -1
- 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 +34 -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 +1 -5
- homeassistant-stubs/components/usb/utils.pyi +2 -0
- 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/script.pyi +1 -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 +18 -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.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/RECORD +331 -270
- 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.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -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
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import DOMAIN as DOMAIN
|
1
|
+
from .const import A01_UPDATE_INTERVAL as A01_UPDATE_INTERVAL, DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES, IMAGE_CACHE_INTERVAL as IMAGE_CACHE_INTERVAL, MAP_FILE_FORMAT as MAP_FILE_FORMAT, MAP_SCALE as MAP_SCALE, MAP_SLEEP as MAP_SLEEP, V1_CLOUD_IN_CLEANING_INTERVAL as V1_CLOUD_IN_CLEANING_INTERVAL, V1_CLOUD_NOT_CLEANING_INTERVAL as V1_CLOUD_NOT_CLEANING_INTERVAL, V1_LOCAL_IN_CLEANING_INTERVAL as V1_LOCAL_IN_CLEANING_INTERVAL, V1_LOCAL_NOT_CLEANING_INTERVAL as V1_LOCAL_NOT_CLEANING_INTERVAL
|
2
2
|
from .models import RoborockA01HassDeviceInfo as RoborockA01HassDeviceInfo, RoborockHassDeviceInfo as RoborockHassDeviceInfo, RoborockMapInfo as RoborockMapInfo
|
3
3
|
from .roborock_storage import RoborockMapStorage as RoborockMapStorage
|
4
4
|
from _typeshed import Incomplete
|
@@ -6,18 +6,21 @@ from dataclasses import dataclass
|
|
6
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
7
7
|
from homeassistant.const import ATTR_CONNECTIONS as ATTR_CONNECTIONS
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
9
10
|
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
10
11
|
from homeassistant.helpers.typing import StateType as StateType
|
11
12
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
12
13
|
from homeassistant.util import slugify as slugify
|
13
14
|
from propcache.api import cached_property
|
14
15
|
from roborock import HomeDataRoom as HomeDataRoom
|
15
|
-
from roborock.containers import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, NetworkInfo as NetworkInfo
|
16
|
+
from roborock.containers import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, HomeDataScene as HomeDataScene, NetworkInfo as NetworkInfo, UserData as UserData
|
16
17
|
from roborock.roborock_message import RoborockDyadDataProtocol, RoborockZeoProtocol
|
17
18
|
from roborock.roborock_typing import DeviceProp
|
18
19
|
from roborock.version_1_apis.roborock_local_client_v1 import RoborockLocalClientV1
|
19
20
|
from roborock.version_1_apis.roborock_mqtt_client_v1 import RoborockMqttClientV1 as RoborockMqttClientV1
|
20
21
|
from roborock.version_a01_apis import RoborockClientA01 as RoborockClientA01
|
22
|
+
from roborock.web_api import RoborockApiClient as RoborockApiClient
|
23
|
+
from vacuum_map_parser_base.map_data import MapData as MapData
|
21
24
|
|
22
25
|
SCAN_INTERVAL: Incomplete
|
23
26
|
_LOGGER: Incomplete
|
@@ -39,18 +42,30 @@ class RoborockDataUpdateCoordinator(DataUpdateCoordinator[DeviceProp]):
|
|
39
42
|
maps: dict[int, RoborockMapInfo]
|
40
43
|
_home_data_rooms: Incomplete
|
41
44
|
map_storage: Incomplete
|
42
|
-
|
45
|
+
_user_data: Incomplete
|
46
|
+
_api_client: Incomplete
|
47
|
+
_is_cloud_api: bool
|
48
|
+
map_parser: Incomplete
|
49
|
+
def __init__(self, hass: HomeAssistant, config_entry: RoborockConfigEntry, device: HomeDataDevice, device_networking: NetworkInfo, product_info: HomeDataProduct, cloud_api: RoborockMqttClientV1, home_data_rooms: list[HomeDataRoom], api_client: RoborockApiClient, user_data: UserData) -> None: ...
|
50
|
+
@cached_property
|
51
|
+
def dock_device_info(self) -> DeviceInfo: ...
|
52
|
+
def parse_map_data_v1(self, map_bytes: bytes) -> tuple[bytes | None, MapData | None]: ...
|
43
53
|
async def _async_setup(self) -> None: ...
|
54
|
+
async def update_map(self) -> None: ...
|
55
|
+
update_interval: Incomplete
|
44
56
|
async def _verify_api(self) -> None: ...
|
45
57
|
async def async_shutdown(self) -> None: ...
|
46
58
|
async def _update_device_prop(self) -> None: ...
|
47
59
|
async def _async_update_data(self) -> DeviceProp: ...
|
48
60
|
def _set_current_map(self) -> None: ...
|
49
61
|
async def set_current_map_rooms(self) -> None: ...
|
62
|
+
async def get_routines(self) -> list[HomeDataScene]: ...
|
63
|
+
async def execute_routines(self, routine_id: int) -> None: ...
|
50
64
|
@cached_property
|
51
65
|
def duid(self) -> str: ...
|
52
66
|
@cached_property
|
53
67
|
def duid_slug(self) -> str: ...
|
68
|
+
async def refresh_coordinator_map(self) -> None: ...
|
54
69
|
|
55
70
|
class RoborockDataUpdateCoordinatorA01(DataUpdateCoordinator[dict[RoborockDyadDataProtocol | RoborockZeoProtocol, StateType]]):
|
56
71
|
config_entry: RoborockConfigEntry
|
@@ -26,6 +26,8 @@ class RoborockEntityV1(RoborockEntity):
|
|
26
26
|
_api: RoborockClientV1
|
27
27
|
def __init__(self, unique_id: str, device_info: DeviceInfo, api: RoborockClientV1) -> None: ...
|
28
28
|
def get_cache(self, attribute: CacheableAttribute) -> AttributeCache: ...
|
29
|
+
@classmethod
|
30
|
+
async def _send_command(cls, command: RoborockCommand | str, api: RoborockClientV1, params: dict[str, Any] | list[Any] | int | None = None) -> dict: ...
|
29
31
|
async def send(self, command: RoborockCommand | str, params: dict[str, Any] | list[Any] | int | None = None) -> dict: ...
|
30
32
|
@property
|
31
33
|
def api(self) -> RoborockClientV1: ...
|
@@ -38,7 +40,7 @@ class RoborockCoordinatedEntityV1(RoborockEntityV1, CoordinatorEntity[RoborockDa
|
|
38
40
|
_attr_has_entity_name: bool
|
39
41
|
_attr_unique_id: Incomplete
|
40
42
|
listener_requests: Incomplete
|
41
|
-
def __init__(self, unique_id: str, coordinator: RoborockDataUpdateCoordinator, listener_request: list[RoborockDataProtocol] | RoborockDataProtocol | None = None) -> None: ...
|
43
|
+
def __init__(self, unique_id: str, coordinator: RoborockDataUpdateCoordinator, listener_request: list[RoborockDataProtocol] | RoborockDataProtocol | None = None, is_dock_entity: bool = False) -> None: ...
|
42
44
|
async def async_added_to_hass(self) -> None: ...
|
43
45
|
async def async_will_remove_from_hass(self) -> None: ...
|
44
46
|
@property
|
@@ -1,17 +1,15 @@
|
|
1
|
-
from .const import DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES, IMAGE_CACHE_INTERVAL as IMAGE_CACHE_INTERVAL, MAP_FILE_FORMAT as MAP_FILE_FORMAT, MAP_SLEEP as MAP_SLEEP
|
2
1
|
from .coordinator import RoborockConfigEntry as RoborockConfigEntry, RoborockDataUpdateCoordinator as RoborockDataUpdateCoordinator
|
3
2
|
from .entity import RoborockCoordinatedEntityV1 as RoborockCoordinatedEntityV1
|
4
3
|
from _typeshed import Incomplete
|
5
|
-
from collections.abc import Callable as Callable
|
6
4
|
from datetime import datetime
|
7
5
|
from homeassistant.components.image import ImageEntity as ImageEntity
|
8
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
9
7
|
from homeassistant.const import EntityCategory as EntityCategory
|
10
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
11
|
-
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
12
9
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
13
10
|
|
14
11
|
_LOGGER: Incomplete
|
12
|
+
PARALLEL_UPDATES: int
|
15
13
|
|
16
14
|
async def async_setup_entry(hass: HomeAssistant, config_entry: RoborockConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
17
15
|
|
@@ -20,16 +18,13 @@ class RoborockMap(RoborockCoordinatedEntityV1, ImageEntity):
|
|
20
18
|
image_last_updated: datetime
|
21
19
|
_attr_name: str
|
22
20
|
config_entry: Incomplete
|
23
|
-
parser: Incomplete
|
24
21
|
map_flag: Incomplete
|
25
22
|
cached_map: bytes
|
26
23
|
_attr_entity_category: Incomplete
|
27
|
-
def __init__(self, config_entry: ConfigEntry, unique_id: str, coordinator: RoborockDataUpdateCoordinator, map_flag: int, map_name: str
|
24
|
+
def __init__(self, config_entry: ConfigEntry, unique_id: str, coordinator: RoborockDataUpdateCoordinator, map_flag: int, map_name: str) -> None: ...
|
28
25
|
@property
|
29
26
|
def is_selected(self) -> bool: ...
|
30
27
|
_attr_image_last_updated: Incomplete
|
31
28
|
async def async_added_to_hass(self) -> None: ...
|
32
29
|
def _handle_coordinator_update(self) -> None: ...
|
33
30
|
async def async_image(self) -> bytes | None: ...
|
34
|
-
|
35
|
-
async def refresh_coordinators(hass: HomeAssistant, coord: RoborockDataUpdateCoordinator) -> None: ...
|
@@ -1,7 +1,9 @@
|
|
1
1
|
from dataclasses import dataclass
|
2
|
+
from datetime import datetime
|
2
3
|
from roborock.containers import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, NetworkInfo as NetworkInfo
|
3
4
|
from roborock.roborock_typing import DeviceProp as DeviceProp
|
4
5
|
from typing import Any
|
6
|
+
from vacuum_map_parser_base.map_data import MapData as MapData
|
5
7
|
|
6
8
|
@dataclass
|
7
9
|
class RoborockHassDeviceInfo:
|
@@ -22,3 +24,8 @@ class RoborockMapInfo:
|
|
22
24
|
flag: int
|
23
25
|
name: str
|
24
26
|
rooms: dict[int, str]
|
27
|
+
image: bytes | None
|
28
|
+
last_updated: datetime
|
29
|
+
map_data: MapData | None
|
30
|
+
@property
|
31
|
+
def current_room(self) -> str | None: ...
|
@@ -14,6 +14,7 @@ from roborock.version_1_apis.roborock_client_v1 import AttributeCache as Attribu
|
|
14
14
|
from typing import Any
|
15
15
|
|
16
16
|
_LOGGER: Incomplete
|
17
|
+
PARALLEL_UPDATES: int
|
17
18
|
|
18
19
|
@dataclass(frozen=True, kw_only=True)
|
19
20
|
class RoborockNumberDescription(NumberEntityDescription):
|
@@ -8,17 +8,19 @@ from homeassistant.components.select import SelectEntity as SelectEntity, Select
|
|
8
8
|
from homeassistant.const import EntityCategory as EntityCategory
|
9
9
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
10
10
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
11
|
-
from roborock.containers import Status as Status
|
12
11
|
from roborock.roborock_message import RoborockDataProtocol
|
13
|
-
from roborock.roborock_typing import RoborockCommand
|
12
|
+
from roborock.roborock_typing import DeviceProp as DeviceProp, RoborockCommand
|
13
|
+
|
14
|
+
PARALLEL_UPDATES: int
|
14
15
|
|
15
16
|
@dataclass(frozen=True, kw_only=True)
|
16
17
|
class RoborockSelectDescription(SelectEntityDescription):
|
17
18
|
api_command: RoborockCommand
|
18
|
-
value_fn: Callable[[
|
19
|
-
options_lambda: Callable[[
|
20
|
-
parameter_lambda: Callable[[str,
|
19
|
+
value_fn: Callable[[DeviceProp], str | None]
|
20
|
+
options_lambda: Callable[[DeviceProp], list[str] | None]
|
21
|
+
parameter_lambda: Callable[[str, DeviceProp], list[int]]
|
21
22
|
protocol_listener: RoborockDataProtocol | None = ...
|
23
|
+
is_dock_entity: bool = ...
|
22
24
|
|
23
25
|
SELECT_DESCRIPTIONS: list[RoborockSelectDescription]
|
24
26
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import datetime
|
2
2
|
from .coordinator import RoborockConfigEntry as RoborockConfigEntry, RoborockDataUpdateCoordinator as RoborockDataUpdateCoordinator, RoborockDataUpdateCoordinatorA01 as RoborockDataUpdateCoordinatorA01
|
3
|
-
from .entity import RoborockCoordinatedEntityA01 as RoborockCoordinatedEntityA01, RoborockCoordinatedEntityV1 as RoborockCoordinatedEntityV1
|
3
|
+
from .entity import RoborockCoordinatedEntityA01 as RoborockCoordinatedEntityA01, RoborockCoordinatedEntityV1 as RoborockCoordinatedEntityV1, RoborockEntity as RoborockEntity
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from collections.abc import Callable as Callable
|
6
6
|
from dataclasses import dataclass
|
@@ -12,10 +12,13 @@ from homeassistant.helpers.typing import StateType as StateType
|
|
12
12
|
from roborock.roborock_message import RoborockDataProtocol, RoborockDyadDataProtocol, RoborockZeoProtocol
|
13
13
|
from roborock.roborock_typing import DeviceProp as DeviceProp
|
14
14
|
|
15
|
+
PARALLEL_UPDATES: int
|
16
|
+
|
15
17
|
@dataclass(frozen=True, kw_only=True)
|
16
18
|
class RoborockSensorDescription(SensorEntityDescription):
|
17
19
|
value_fn: Callable[[DeviceProp], StateType | datetime.datetime]
|
18
20
|
protocol_listener: RoborockDataProtocol | None = ...
|
21
|
+
is_dock_entity: bool = ...
|
19
22
|
|
20
23
|
@dataclass(frozen=True, kw_only=True)
|
21
24
|
class RoborockSensorDescriptionA01(SensorEntityDescription):
|
@@ -34,6 +37,16 @@ class RoborockSensorEntity(RoborockCoordinatedEntityV1, SensorEntity):
|
|
34
37
|
@property
|
35
38
|
def native_value(self) -> StateType | datetime.datetime: ...
|
36
39
|
|
40
|
+
class RoborockCurrentRoom(RoborockCoordinatedEntityV1, SensorEntity):
|
41
|
+
_attr_device_class: Incomplete
|
42
|
+
_attr_translation_key: str
|
43
|
+
_attr_entity_category: Incomplete
|
44
|
+
def __init__(self, coordinator: RoborockDataUpdateCoordinator) -> None: ...
|
45
|
+
@property
|
46
|
+
def options(self) -> list[str]: ...
|
47
|
+
@property
|
48
|
+
def native_value(self) -> str | None: ...
|
49
|
+
|
37
50
|
class RoborockSensorEntityA01(RoborockCoordinatedEntityA01, SensorEntity):
|
38
51
|
entity_description: RoborockSensorDescriptionA01
|
39
52
|
def __init__(self, coordinator: RoborockDataUpdateCoordinatorA01, description: RoborockSensorDescriptionA01) -> None: ...
|
@@ -14,12 +14,14 @@ from roborock.version_1_apis.roborock_client_v1 import AttributeCache as Attribu
|
|
14
14
|
from typing import Any
|
15
15
|
|
16
16
|
_LOGGER: Incomplete
|
17
|
+
PARALLEL_UPDATES: int
|
17
18
|
|
18
19
|
@dataclass(frozen=True, kw_only=True)
|
19
20
|
class RoborockSwitchDescription(SwitchEntityDescription):
|
20
21
|
cache_key: CacheableAttribute
|
21
22
|
update_value: Callable[[AttributeCache, bool], Coroutine[Any, Any, None]]
|
22
23
|
attribute: str
|
24
|
+
is_dock_entity: bool = ...
|
23
25
|
|
24
26
|
SWITCH_DESCRIPTIONS: list[RoborockSwitchDescription]
|
25
27
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
from .const import DOMAIN as DOMAIN, GET_MAPS_SERVICE_NAME as GET_MAPS_SERVICE_NAME, GET_VACUUM_CURRENT_POSITION_SERVICE_NAME as GET_VACUUM_CURRENT_POSITION_SERVICE_NAME, SET_VACUUM_GOTO_POSITION_SERVICE_NAME as SET_VACUUM_GOTO_POSITION_SERVICE_NAME
|
2
2
|
from .coordinator import RoborockConfigEntry as RoborockConfigEntry, RoborockDataUpdateCoordinator as RoborockDataUpdateCoordinator
|
3
3
|
from .entity import RoborockCoordinatedEntityV1 as RoborockCoordinatedEntityV1
|
4
|
-
from .image import ColorsPalette as ColorsPalette, ImageConfig as ImageConfig, RoborockMapDataParser as RoborockMapDataParser, Sizes as Sizes
|
5
4
|
from _typeshed import Incomplete
|
6
5
|
from homeassistant.components.vacuum import StateVacuumEntity as StateVacuumEntity, VacuumActivity as VacuumActivity, VacuumEntityFeature as VacuumEntityFeature
|
7
6
|
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
|
@@ -11,6 +10,7 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|
11
10
|
from typing import Any
|
12
11
|
|
13
12
|
STATE_CODE_TO_STATE: Incomplete
|
13
|
+
PARALLEL_UPDATES: int
|
14
14
|
|
15
15
|
async def async_setup_entry(hass: HomeAssistant, config_entry: RoborockConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
16
16
|
|
@@ -74,6 +74,7 @@ DEVICE_CLASSES: Final[list[str]]
|
|
74
74
|
|
75
75
|
class SensorStateClass(StrEnum):
|
76
76
|
MEASUREMENT = 'measurement'
|
77
|
+
MEASUREMENT_ANGLE = 'measurement_angle'
|
77
78
|
TOTAL = 'total'
|
78
79
|
TOTAL_INCREASING = 'total_increasing'
|
79
80
|
|
@@ -82,3 +83,4 @@ STATE_CLASSES: Final[list[str]]
|
|
82
83
|
UNIT_CONVERTERS: dict[SensorDeviceClass | str | None, type[BaseUnitConverter]]
|
83
84
|
DEVICE_CLASS_UNITS: dict[SensorDeviceClass, set[type[StrEnum] | str | None]]
|
84
85
|
DEVICE_CLASS_STATE_CLASSES: dict[SensorDeviceClass, set[SensorStateClass]]
|
86
|
+
STATE_CLASS_UNITS: dict[SensorStateClass | str, set[type[StrEnum] | str | None]]
|