homeassistant-stubs 2025.4.3__py3-none-any.whl → 2025.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant-stubs/components/adax/__init__.pyi +5 -4
- homeassistant-stubs/components/adax/climate.pyi +25 -17
- homeassistant-stubs/components/adax/const.pyi +2 -0
- homeassistant-stubs/components/adax/coordinator.pyi +21 -0
- homeassistant-stubs/components/androidtv_remote/media_player.pyi +1 -1
- homeassistant-stubs/components/apcupsd/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/apcupsd/coordinator.pyi +2 -0
- homeassistant-stubs/components/apcupsd/sensor.pyi +1 -1
- homeassistant-stubs/components/apsystems/coordinator.pyi +1 -0
- homeassistant-stubs/components/apsystems/switch.pyi +1 -1
- homeassistant-stubs/components/asuswrt/router.pyi +2 -3
- homeassistant-stubs/components/automation/__init__.pyi +2 -2
- homeassistant-stubs/components/automation/config.pyi +2 -2
- homeassistant-stubs/components/automation/const.pyi +0 -4
- homeassistant-stubs/components/axis/hub/api.pyi +2 -2
- homeassistant-stubs/components/backup/config.pyi +10 -2
- homeassistant-stubs/components/backup/onboarding.pyi +30 -0
- homeassistant-stubs/components/bluetooth/passive_update_processor.pyi +3 -0
- homeassistant-stubs/components/bluetooth/storage.pyi +1 -1
- homeassistant-stubs/components/bond/config_flow.pyi +3 -0
- homeassistant-stubs/components/bosch_alarm/__init__.pyi +1 -1
- homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +2 -11
- homeassistant-stubs/components/bosch_alarm/config_flow.pyi +5 -1
- homeassistant-stubs/components/bosch_alarm/diagnostics.pyi +11 -0
- homeassistant-stubs/components/bosch_alarm/entity.pyi +29 -0
- homeassistant-stubs/components/bosch_alarm/sensor.pyi +30 -0
- homeassistant-stubs/components/cambridge_audio/media_player.pyi +2 -0
- homeassistant-stubs/components/canary/__init__.pyi +1 -5
- homeassistant-stubs/components/canary/config_flow.pyi +0 -1
- homeassistant-stubs/components/cloud/const.pyi +1 -0
- homeassistant-stubs/components/cloud/http_api.pyi +1 -1
- homeassistant-stubs/components/cloud/onboarding.pyi +35 -0
- homeassistant-stubs/components/cloud/tts.pyi +4 -1
- homeassistant-stubs/components/comelit/__init__.pyi +1 -0
- homeassistant-stubs/components/comelit/alarm_control_panel.pyi +0 -1
- homeassistant-stubs/components/comelit/binary_sensor.pyi +0 -1
- homeassistant-stubs/components/comelit/climate.pyi +2 -7
- homeassistant-stubs/components/comelit/config_flow.pyi +1 -0
- homeassistant-stubs/components/comelit/coordinator.pyi +3 -2
- homeassistant-stubs/components/comelit/cover.pyi +2 -7
- homeassistant-stubs/components/comelit/entity.pyi +11 -0
- homeassistant-stubs/components/comelit/humidifier.pyi +2 -6
- homeassistant-stubs/components/comelit/light.pyi +2 -9
- homeassistant-stubs/components/comelit/sensor.pyi +2 -7
- homeassistant-stubs/components/comelit/switch.pyi +2 -6
- homeassistant-stubs/components/comelit/utils.pyi +5 -0
- homeassistant-stubs/components/command_line/__init__.pyi +1 -1
- homeassistant-stubs/components/command_line/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/command_line/cover.pyi +2 -2
- homeassistant-stubs/components/command_line/sensor.pyi +2 -2
- homeassistant-stubs/components/command_line/switch.pyi +2 -2
- homeassistant-stubs/components/config/config_entries.pyi +3 -1
- homeassistant-stubs/components/demo/light.pyi +3 -2
- homeassistant-stubs/components/demo/media_player.pyi +4 -0
- homeassistant-stubs/components/device_tracker/config_entry.pyi +2 -2
- homeassistant-stubs/components/devolo_home_control/__init__.pyi +2 -2
- homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +1 -2
- homeassistant-stubs/components/dhcp/__init__.pyi +6 -13
- homeassistant-stubs/components/dhcp/const.pyi +5 -0
- homeassistant-stubs/components/dhcp/helpers.pyi +8 -0
- homeassistant-stubs/components/dhcp/models.pyi +25 -0
- homeassistant-stubs/components/dhcp/websocket_api.pyi +13 -0
- homeassistant-stubs/components/ecovacs/image.pyi +1 -0
- homeassistant-stubs/components/eheimdigital/number.pyi +38 -0
- homeassistant-stubs/components/eheimdigital/sensor.pyi +32 -0
- homeassistant-stubs/components/eheimdigital/switch.pyi +26 -0
- homeassistant-stubs/components/eheimdigital/time.pyi +37 -0
- homeassistant-stubs/components/elevenlabs/tts.pyi +2 -2
- homeassistant-stubs/components/energy/sensor.pyi +5 -0
- homeassistant-stubs/components/enphase_envoy/config_flow.pyi +3 -1
- homeassistant-stubs/components/enphase_envoy/coordinator.pyi +12 -1
- homeassistant-stubs/components/esphome/__init__.pyi +5 -4
- homeassistant-stubs/components/esphome/alarm_control_panel.pyi +1 -0
- homeassistant-stubs/components/esphome/assist_satellite.pyi +7 -6
- homeassistant-stubs/components/esphome/binary_sensor.pyi +5 -13
- homeassistant-stubs/components/esphome/button.pyi +2 -0
- homeassistant-stubs/components/esphome/camera.pyi +2 -0
- homeassistant-stubs/components/esphome/climate.pyi +1 -0
- homeassistant-stubs/components/esphome/config_flow.pyi +26 -5
- homeassistant-stubs/components/esphome/const.pyi +2 -1
- homeassistant-stubs/components/esphome/coordinator.pyi +4 -3
- homeassistant-stubs/components/esphome/cover.pyi +2 -0
- homeassistant-stubs/components/esphome/dashboard.pyi +1 -1
- homeassistant-stubs/components/esphome/date.pyi +2 -0
- homeassistant-stubs/components/esphome/datetime.pyi +2 -0
- homeassistant-stubs/components/esphome/diagnostics.pyi +2 -0
- homeassistant-stubs/components/esphome/entity.pyi +12 -9
- homeassistant-stubs/components/esphome/event.pyi +2 -0
- homeassistant-stubs/components/esphome/fan.pyi +4 -3
- homeassistant-stubs/components/esphome/ffmpeg_proxy.pyi +10 -2
- homeassistant-stubs/components/esphome/light.pyi +8 -7
- homeassistant-stubs/components/esphome/lock.pyi +6 -4
- homeassistant-stubs/components/esphome/manager.pyi +7 -3
- homeassistant-stubs/components/esphome/media_player.pyi +2 -1
- homeassistant-stubs/components/esphome/number.pyi +1 -0
- homeassistant-stubs/components/esphome/repairs.pyi +21 -2
- homeassistant-stubs/components/esphome/select.pyi +3 -2
- homeassistant-stubs/components/esphome/sensor.pyi +4 -2
- homeassistant-stubs/components/esphome/switch.pyi +3 -1
- homeassistant-stubs/components/esphome/text.pyi +1 -0
- homeassistant-stubs/components/esphome/time.pyi +2 -0
- homeassistant-stubs/components/esphome/update.pyi +8 -9
- homeassistant-stubs/components/esphome/valve.pyi +3 -1
- homeassistant-stubs/components/fritz/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/fritz/button.pyi +1 -0
- homeassistant-stubs/components/fritz/coordinator.pyi +3 -4
- homeassistant-stubs/components/fritz/device_tracker.pyi +1 -0
- homeassistant-stubs/components/fritz/image.pyi +1 -0
- homeassistant-stubs/components/fritz/sensor.pyi +1 -0
- homeassistant-stubs/components/fritz/switch.pyi +1 -0
- homeassistant-stubs/components/fritz/update.pyi +1 -0
- homeassistant-stubs/components/fritzbox/binary_sensor.pyi +2 -5
- homeassistant-stubs/components/fritzbox/climate.pyi +4 -3
- homeassistant-stubs/components/fritzbox/coordinator.pyi +1 -1
- homeassistant-stubs/components/fritzbox/sensor.pyi +3 -6
- homeassistant-stubs/components/heos/const.pyi +4 -0
- homeassistant-stubs/components/heos/media_player.pyi +5 -4
- homeassistant-stubs/components/heos/services.pyi +22 -2
- homeassistant-stubs/components/history/websocket_api.pyi +1 -1
- homeassistant-stubs/components/history_stats/data.pyi +2 -1
- homeassistant-stubs/components/home_connect/__init__.pyi +0 -1
- homeassistant-stubs/components/home_connect/binary_sensor.pyi +2 -13
- homeassistant-stubs/components/home_connect/coordinator.pyi +5 -0
- homeassistant-stubs/components/home_connect/repairs.pyi +10 -0
- homeassistant-stubs/components/home_connect/select.pyi +7 -3
- homeassistant-stubs/components/home_connect/sensor.pyi +5 -3
- homeassistant-stubs/components/homee/climate.pyi +47 -0
- homeassistant-stubs/components/homee/const.pyi +1 -0
- homeassistant-stubs/components/homee/number.pyi +12 -4
- homeassistant-stubs/components/homekit/__init__.pyi +5 -3
- homeassistant-stubs/components/homekit/accessories.pyi +2 -1
- homeassistant-stubs/components/homekit/const.pyi +13 -0
- homeassistant-stubs/components/homekit/type_air_purifiers.pyi +69 -0
- homeassistant-stubs/components/homekit/type_fans.pyi +7 -4
- homeassistant-stubs/components/homekit/type_media_players.pyi +2 -1
- homeassistant-stubs/components/homekit/type_switches.pyi +1 -1
- homeassistant-stubs/components/homekit/type_triggers.pyi +1 -1
- homeassistant-stubs/components/homekit/util.pyi +2 -1
- homeassistant-stubs/components/http/headers.pyi +6 -0
- homeassistant-stubs/components/huawei_lte/binary_sensor.pyi +3 -1
- homeassistant-stubs/components/huawei_lte/config_flow.pyi +1 -1
- homeassistant-stubs/components/huawei_lte/entity.pyi +0 -3
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/sensor.pyi +2 -1
- homeassistant-stubs/components/hyperion/__init__.pyi +12 -5
- homeassistant-stubs/components/hyperion/camera.pyi +3 -4
- homeassistant-stubs/components/hyperion/const.pyi +0 -3
- homeassistant-stubs/components/hyperion/light.pyi +4 -6
- homeassistant-stubs/components/hyperion/sensor.pyi +3 -4
- homeassistant-stubs/components/hyperion/switch.pyi +3 -4
- homeassistant-stubs/components/incomfort/climate.pyi +1 -2
- homeassistant-stubs/components/iron_os/__init__.pyi +1 -3
- homeassistant-stubs/components/iron_os/config_flow.pyi +3 -0
- homeassistant-stubs/components/iron_os/coordinator.pyi +4 -2
- homeassistant-stubs/components/iron_os/entity.pyi +2 -0
- homeassistant-stubs/components/iron_os/update.pyi +4 -2
- homeassistant-stubs/components/isy994/entity.pyi +1 -0
- homeassistant-stubs/components/isy994/services.pyi +1 -0
- homeassistant-stubs/components/isy994/switch.pyi +1 -1
- homeassistant-stubs/components/jewish_calendar/config_flow.pyi +1 -2
- homeassistant-stubs/components/jewish_calendar/const.pyi +1 -0
- homeassistant-stubs/components/jewish_calendar/entity.pyi +0 -1
- homeassistant-stubs/components/jewish_calendar/sensor.pyi +1 -0
- homeassistant-stubs/components/jewish_calendar/service.pyi +4 -3
- homeassistant-stubs/components/kulersky/__init__.pyi +14 -0
- homeassistant-stubs/components/kulersky/config_flow.pyi +17 -0
- homeassistant-stubs/components/kulersky/const.pyi +4 -0
- homeassistant-stubs/components/kulersky/light.pyi +34 -0
- homeassistant-stubs/components/lamarzocco/__init__.pyi +5 -3
- homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +3 -7
- homeassistant-stubs/components/lamarzocco/calendar.pyi +3 -4
- homeassistant-stubs/components/lamarzocco/config_flow.pyi +5 -4
- homeassistant-stubs/components/lamarzocco/coordinator.pyi +16 -16
- homeassistant-stubs/components/lamarzocco/diagnostics.pyi +3 -8
- homeassistant-stubs/components/lamarzocco/entity.pyi +1 -6
- homeassistant-stubs/components/lamarzocco/number.pyi +4 -29
- homeassistant-stubs/components/lamarzocco/select.pyi +3 -8
- homeassistant-stubs/components/lamarzocco/sensor.pyi +11 -24
- homeassistant-stubs/components/lamarzocco/switch.pyi +6 -5
- homeassistant-stubs/components/lamarzocco/update.pyi +4 -1
- homeassistant-stubs/components/lcn/__init__.pyi +4 -3
- homeassistant-stubs/components/lcn/entity.pyi +3 -3
- homeassistant-stubs/components/lcn/helpers.pyi +2 -2
- homeassistant-stubs/components/lcn/websocket.pyi +1 -1
- homeassistant-stubs/components/linkplay/__init__.pyi +1 -1
- homeassistant-stubs/components/linkplay/const.pyi +8 -2
- homeassistant-stubs/components/linkplay/media_player.pyi +8 -4
- homeassistant-stubs/components/logbook/websocket_api.pyi +1 -1
- homeassistant-stubs/components/logger/__init__.pyi +1 -1
- homeassistant-stubs/components/logger/helpers.pyi +4 -2
- homeassistant-stubs/components/logger/websocket_api.pyi +1 -1
- homeassistant-stubs/components/matter/entity.pyi +1 -0
- homeassistant-stubs/components/matter/select.pyi +1 -1
- homeassistant-stubs/components/matter/sensor.pyi +3 -1
- homeassistant-stubs/components/matter/switch.pyi +20 -0
- homeassistant-stubs/components/matter/water_heater.pyi +39 -0
- homeassistant-stubs/components/mcp/application_credentials.pyi +12 -0
- homeassistant-stubs/components/mcp/config_flow.pyi +27 -6
- homeassistant-stubs/components/mcp/const.pyi +3 -0
- homeassistant-stubs/components/mcp/coordinator.pyi +8 -5
- homeassistant-stubs/components/media_player/__init__.pyi +7 -3
- homeassistant-stubs/components/media_player/browse_media.pyi +16 -1
- homeassistant-stubs/components/media_player/const.pyi +4 -0
- homeassistant-stubs/components/media_player/errors.pyi +1 -0
- homeassistant-stubs/components/media_source/error.pyi +1 -0
- homeassistant-stubs/components/met_eireann/__init__.pyi +2 -2
- homeassistant-stubs/components/met_eireann/weather.pyi +3 -3
- homeassistant-stubs/components/mjpeg/config_flow.pyi +2 -2
- homeassistant-stubs/components/motionmount/select.pyi +1 -1
- homeassistant-stubs/components/mqtt/config_flow.pyi +18 -4
- homeassistant-stubs/components/mqtt/const.pyi +3 -0
- homeassistant-stubs/components/mqtt/device_tracker.pyi +11 -14
- homeassistant-stubs/components/mqtt/entity.pyi +3 -0
- homeassistant-stubs/components/mqtt/light/schema_basic.pyi +1 -2
- homeassistant-stubs/components/mqtt/light/schema_json.pyi +3 -2
- homeassistant-stubs/components/music_assistant/media_browser.pyi +17 -2
- homeassistant-stubs/components/music_assistant/media_player.pyi +3 -2
- homeassistant-stubs/components/network/__init__.pyi +2 -0
- homeassistant-stubs/components/ntfy/__init__.pyi +16 -0
- homeassistant-stubs/components/ntfy/config_flow.pyi +29 -0
- homeassistant-stubs/components/ntfy/const.pyi +6 -0
- homeassistant-stubs/components/ntfy/diagnostics.pyi +7 -0
- homeassistant-stubs/components/ntfy/notify.pyi +25 -0
- homeassistant-stubs/components/nut/__init__.pyi +7 -3
- homeassistant-stubs/components/nut/config_flow.pyi +11 -14
- homeassistant-stubs/components/nut/const.pyi +0 -1
- homeassistant-stubs/components/nut/device_action.pyi +5 -1
- homeassistant-stubs/components/nut/sensor.pyi +6 -3
- homeassistant-stubs/components/ohme/__init__.pyi +15 -0
- homeassistant-stubs/components/ohme/button.pyi +26 -0
- homeassistant-stubs/components/ohme/config_flow.pyi +17 -0
- homeassistant-stubs/components/ohme/const.pyi +5 -0
- homeassistant-stubs/components/ohme/coordinator.pyi +44 -0
- homeassistant-stubs/components/ohme/diagnostics.pyi +5 -0
- homeassistant-stubs/components/ohme/entity.pyi +23 -0
- homeassistant-stubs/components/ohme/number.pyi +30 -0
- homeassistant-stubs/components/ohme/select.pyi +33 -0
- homeassistant-stubs/components/ohme/sensor.pyi +26 -0
- homeassistant-stubs/components/ohme/services.pyi +19 -0
- homeassistant-stubs/components/ohme/switch.pyi +45 -0
- homeassistant-stubs/components/ohme/time.pyi +30 -0
- homeassistant-stubs/components/onboarding/__init__.pyi +1 -0
- homeassistant-stubs/components/onboarding/views.pyi +29 -43
- homeassistant-stubs/components/oncue/__init__.pyi +5 -11
- homeassistant-stubs/components/oncue/config_flow.pyi +2 -13
- homeassistant-stubs/components/onewire/sensor.pyi +1 -2
- homeassistant-stubs/components/onkyo/config_flow.pyi +2 -3
- homeassistant-stubs/components/onkyo/const.pyi +0 -2
- homeassistant-stubs/components/onkyo/media_player.pyi +3 -14
- homeassistant-stubs/components/openai_conversation/config_flow.pyi +3 -3
- homeassistant-stubs/components/openai_conversation/const.pyi +1 -0
- homeassistant-stubs/components/openai_conversation/conversation.pyi +1 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.pyi +4 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_electrical_towel_dryer.pyi +2 -1
- homeassistant-stubs/components/overkiz/config_flow.pyi +1 -7
- homeassistant-stubs/components/overkiz/entity.pyi +2 -1
- homeassistant-stubs/components/overkiz/number.pyi +1 -1
- homeassistant-stubs/components/overkiz/sensor.pyi +1 -1
- homeassistant-stubs/components/pegel_online/__init__.pyi +13 -0
- homeassistant-stubs/components/pegel_online/config_flow.pyi +15 -0
- homeassistant-stubs/components/pegel_online/const.pyi +6 -0
- homeassistant-stubs/components/pegel_online/coordinator.pyi +16 -0
- homeassistant-stubs/components/pegel_online/diagnostics.pyi +5 -0
- homeassistant-stubs/components/pegel_online/entity.pyi +12 -0
- homeassistant-stubs/components/pegel_online/sensor.pyi +28 -0
- homeassistant-stubs/components/powerwall/sensor.pyi +0 -1
- homeassistant-stubs/components/recorder/core.pyi +2 -0
- homeassistant-stubs/components/recorder/entity_registry.pyi +2 -1
- homeassistant-stubs/components/recorder/tasks.pyi +2 -1
- homeassistant-stubs/components/remote_calendar/calendar.pyi +2 -0
- homeassistant-stubs/components/remote_calendar/config_flow.pyi +1 -0
- homeassistant-stubs/components/remote_calendar/coordinator.pyi +1 -0
- homeassistant-stubs/components/remote_calendar/ics.pyi +10 -0
- homeassistant-stubs/components/renault/binary_sensor.pyi +8 -2
- homeassistant-stubs/components/renault/config_flow.pyi +2 -1
- homeassistant-stubs/components/renault/const.pyi +2 -1
- homeassistant-stubs/components/renault/coordinator.pyi +4 -1
- homeassistant-stubs/components/renault/entity.pyi +2 -0
- homeassistant-stubs/components/renault/renault_hub.pyi +5 -2
- homeassistant-stubs/components/renault/renault_vehicle.pyi +5 -2
- homeassistant-stubs/components/renault/services.pyi +5 -0
- homeassistant-stubs/components/rest/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/rest/schema.pyi +1 -1
- homeassistant-stubs/components/rest/sensor.pyi +2 -2
- homeassistant-stubs/components/rest/switch.pyi +4 -3
- homeassistant-stubs/components/roborock/__init__.pyi +1 -0
- homeassistant-stubs/components/roborock/config_flow.pyi +1 -0
- homeassistant-stubs/components/samsungtv/__init__.pyi +6 -7
- homeassistant-stubs/components/samsungtv/config_flow.pyi +1 -1
- homeassistant-stubs/components/samsungtv/entity.pyi +3 -2
- homeassistant-stubs/components/samsungtv/media_player.pyi +1 -2
- homeassistant-stubs/components/samsungtv/remote.pyi +2 -2
- homeassistant-stubs/components/scrape/__init__.pyi +1 -1
- homeassistant-stubs/components/scrape/sensor.pyi +4 -5
- homeassistant-stubs/components/shelly/__init__.pyi +1 -0
- homeassistant-stubs/components/shelly/climate.pyi +2 -1
- homeassistant-stubs/components/shelly/const.pyi +2 -0
- homeassistant-stubs/components/shelly/coordinator.pyi +1 -0
- homeassistant-stubs/components/shelly/entity.pyi +5 -2
- homeassistant-stubs/components/shelly/number.pyi +4 -3
- homeassistant-stubs/components/shelly/repairs.pyi +19 -0
- homeassistant-stubs/components/shelly/select.pyi +3 -1
- homeassistant-stubs/components/shelly/text.pyi +4 -1
- homeassistant-stubs/components/shelly/utils.pyi +2 -3
- homeassistant-stubs/components/smlight/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/smlight/button.pyi +1 -0
- homeassistant-stubs/components/smlight/sensor.pyi +2 -0
- homeassistant-stubs/components/smlight/switch.pyi +1 -0
- homeassistant-stubs/components/smlight/update.pyi +3 -1
- homeassistant-stubs/components/smtp/__init__.pyi +0 -0
- homeassistant-stubs/components/smtp/const.pyi +17 -0
- homeassistant-stubs/components/smtp/notify.pyi +47 -0
- homeassistant-stubs/components/sql/__init__.pyi +1 -1
- homeassistant-stubs/components/sql/sensor.pyi +4 -4
- homeassistant-stubs/components/ssdp/__init__.pyi +6 -96
- homeassistant-stubs/components/ssdp/common.pyi +5 -0
- homeassistant-stubs/components/ssdp/const.pyi +3 -0
- homeassistant-stubs/components/ssdp/scanner.pyi +75 -0
- homeassistant-stubs/components/ssdp/server.pyi +30 -0
- homeassistant-stubs/components/ssdp/websocket_api.pyi +16 -0
- homeassistant-stubs/components/switcher_kis/button.pyi +2 -1
- homeassistant-stubs/components/switcher_kis/climate.pyi +2 -4
- homeassistant-stubs/components/switcher_kis/config_flow.pyi +3 -2
- homeassistant-stubs/components/switcher_kis/cover.pyi +0 -2
- homeassistant-stubs/components/switcher_kis/entity.pyi +4 -0
- homeassistant-stubs/components/switcher_kis/light.pyi +3 -8
- homeassistant-stubs/components/switcher_kis/sensor.pyi +13 -6
- homeassistant-stubs/components/switcher_kis/switch.pyi +9 -15
- homeassistant-stubs/components/switcher_kis/utils.pyi +1 -1
- homeassistant-stubs/components/synology_dsm/common.pyi +3 -0
- homeassistant-stubs/components/synology_dsm/sensor.pyi +9 -1
- homeassistant-stubs/components/todo/__init__.pyi +1 -0
- homeassistant-stubs/components/tplink_omada/config_flow.pyi +1 -2
- homeassistant-stubs/components/tractive/__init__.pyi +1 -1
- homeassistant-stubs/components/tractive/binary_sensor.pyi +9 -3
- homeassistant-stubs/components/tractive/const.pyi +1 -0
- homeassistant-stubs/components/tractive/device_tracker.pyi +1 -1
- homeassistant-stubs/components/tts/__init__.pyi +22 -13
- homeassistant-stubs/components/tts/legacy.pyi +1 -0
- homeassistant-stubs/components/tts/media_source.pyi +5 -2
- homeassistant-stubs/components/unifi/hub/api.pyi +2 -2
- homeassistant-stubs/components/uptimerobot/__init__.pyi +4 -5
- homeassistant-stubs/components/uptimerobot/binary_sensor.pyi +4 -4
- homeassistant-stubs/components/uptimerobot/coordinator.pyi +3 -2
- homeassistant-stubs/components/uptimerobot/diagnostics.pyi +2 -4
- homeassistant-stubs/components/uptimerobot/entity.pyi +0 -2
- homeassistant-stubs/components/uptimerobot/sensor.pyi +3 -4
- homeassistant-stubs/components/uptimerobot/switch.pyi +5 -4
- homeassistant-stubs/components/vodafone_station/__init__.pyi +1 -1
- homeassistant-stubs/components/vodafone_station/config_flow.pyi +1 -0
- homeassistant-stubs/components/vodafone_station/coordinator.pyi +2 -1
- homeassistant-stubs/components/vodafone_station/utils.pyi +5 -0
- homeassistant-stubs/components/websocket_api/commands.pyi +3 -1
- homeassistant-stubs/components/websocket_api/http.pyi +4 -1
- homeassistant-stubs/components/wemo/__init__.pyi +1 -1
- homeassistant-stubs/components/wemo/coordinator.pyi +1 -1
- homeassistant-stubs/components/wemo/models.pyi +3 -4
- homeassistant-stubs/components/workday/config_flow.pyi +1 -1
- homeassistant-stubs/components/xiaomi_ble/const.pyi +2 -0
- homeassistant-stubs/components/xiaomi_ble/device_trigger.pyi +1 -1
- homeassistant-stubs/components/xiaomi_ble/sensor.pyi +2 -2
- homeassistant-stubs/components/zeroconf/__init__.pyi +6 -49
- homeassistant-stubs/components/zeroconf/const.pyi +3 -0
- homeassistant-stubs/components/zeroconf/discovery.pyi +63 -0
- homeassistant-stubs/components/zeroconf/websocket_api.pyi +40 -0
- homeassistant-stubs/components/zone/__init__.pyi +4 -1
- homeassistant-stubs/components/zwave_js/__init__.pyi +2 -2
- homeassistant-stubs/components/zwave_js/api.pyi +9 -3
- homeassistant-stubs/components/zwave_js/config_flow.pyi +42 -59
- homeassistant-stubs/components/zwave_js/helpers.pyi +2 -1
- homeassistant-stubs/config_entries.pyi +13 -9
- homeassistant-stubs/const.pyi +5 -0
- homeassistant-stubs/core.pyi +1 -3
- homeassistant-stubs/core_config.pyi +1 -1
- homeassistant-stubs/data_entry_flow.pyi +5 -1
- homeassistant-stubs/helpers/aiohttp_client.pyi +9 -1
- homeassistant-stubs/helpers/area_registry.pyi +5 -1
- homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +1 -1
- homeassistant-stubs/helpers/config_validation.pyi +1 -0
- homeassistant-stubs/helpers/device_registry.pyi +1 -3
- homeassistant-stubs/helpers/entity.pyi +1 -1
- homeassistant-stubs/helpers/entity_platform.pyi +3 -3
- homeassistant-stubs/helpers/entity_registry.pyi +6 -6
- homeassistant-stubs/helpers/event.pyi +2 -0
- homeassistant-stubs/helpers/floor_registry.pyi +12 -3
- homeassistant-stubs/helpers/llm.pyi +24 -1
- homeassistant-stubs/helpers/network.pyi +1 -1
- homeassistant-stubs/helpers/script.pyi +2 -1
- homeassistant-stubs/helpers/template.pyi +1 -0
- homeassistant-stubs/helpers/trigger_template_entity.pyi +17 -2
- homeassistant-stubs/loader.pyi +2 -11
- homeassistant-stubs/setup.pyi +7 -6
- homeassistant-stubs/util/ssl.pyi +2 -0
- {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/METADATA +3 -3
- {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/RECORD +397 -339
- homeassistant-stubs/components/oncue/binary_sensor.pyi +0 -16
- homeassistant-stubs/components/oncue/const.pyi +0 -6
- homeassistant-stubs/components/oncue/entity.pyi +0 -20
- homeassistant-stubs/components/oncue/sensor.pyi +0 -21
- homeassistant-stubs/components/oncue/types.pyi +0 -5
- {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,12 +1,14 @@
|
|
1
1
|
from .const import DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from homeassistant.components import media_source as media_source
|
4
|
-
from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass, MediaType as MediaType
|
4
|
+
from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass, MediaType as MediaType, SearchError as SearchError, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
6
|
from music_assistant_client import MusicAssistantClient as MusicAssistantClient
|
7
|
-
from music_assistant_models.
|
7
|
+
from music_assistant_models.enums import MediaType as MASSMediaType
|
8
|
+
from music_assistant_models.media_items import MediaItemType, SearchResults as SearchResults
|
8
9
|
from typing import Any
|
9
10
|
|
11
|
+
MEDIA_TYPE_AUDIOBOOK: str
|
10
12
|
MEDIA_TYPE_RADIO: str
|
11
13
|
PLAYABLE_MEDIA_TYPES: Incomplete
|
12
14
|
LIBRARY_ARTISTS: str
|
@@ -14,10 +16,14 @@ LIBRARY_ALBUMS: str
|
|
14
16
|
LIBRARY_TRACKS: str
|
15
17
|
LIBRARY_PLAYLISTS: str
|
16
18
|
LIBRARY_RADIO: str
|
19
|
+
LIBRARY_PODCASTS: str
|
20
|
+
LIBRARY_AUDIOBOOKS: str
|
17
21
|
LIBRARY_TITLE_MAP: Incomplete
|
18
22
|
LIBRARY_MEDIA_CLASS_MAP: Incomplete
|
19
23
|
MEDIA_CONTENT_TYPE_FLAC: str
|
20
24
|
THUMB_SIZE: int
|
25
|
+
SORT_NAME_DESC: str
|
26
|
+
LOGGER: Incomplete
|
21
27
|
|
22
28
|
def media_source_filter(item: BrowseMedia) -> bool: ...
|
23
29
|
async def async_browse_media(hass: HomeAssistant, mass: MusicAssistantClient, media_content_id: str | None, media_content_type: str | None) -> BrowseMedia: ...
|
@@ -29,5 +35,14 @@ async def build_artist_items_listing(mass: MusicAssistantClient, identifier: str
|
|
29
35
|
async def build_albums_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
30
36
|
async def build_album_items_listing(mass: MusicAssistantClient, identifier: str) -> BrowseMedia: ...
|
31
37
|
async def build_tracks_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
38
|
+
async def build_podcasts_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
39
|
+
async def build_audiobooks_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
32
40
|
async def build_radio_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
33
41
|
def build_item(mass: MusicAssistantClient, item: MediaItemType, can_expand: bool = True, media_class: Any = None) -> BrowseMedia: ...
|
42
|
+
async def _search_within_album(mass: MusicAssistantClient, album_uri: str, search_query: str, limit: int) -> SearchMedia: ...
|
43
|
+
async def _search_within_artist(mass: MusicAssistantClient, artist_uri: str, search_query: str, limit: int) -> SearchResults: ...
|
44
|
+
def _get_media_types_from_query(query: SearchMediaQuery) -> list[MASSMediaType]: ...
|
45
|
+
def _process_search_results(mass: MusicAssistantClient, search_results: SearchResults, media_types: list[MASSMediaType]) -> list[BrowseMedia]: ...
|
46
|
+
def _should_expand_media_type(media_type: str) -> bool: ...
|
47
|
+
def _get_media_class_for_type(media_type: str) -> MediaClass | None: ...
|
48
|
+
async def async_search_media(mass: MusicAssistantClient, query: SearchMediaQuery) -> SearchMedia: ...
|
@@ -1,12 +1,12 @@
|
|
1
1
|
from . import MusicAssistantConfigEntry as MusicAssistantConfigEntry
|
2
2
|
from .const import ATTR_ACTIVE as ATTR_ACTIVE, ATTR_ACTIVE_QUEUE as ATTR_ACTIVE_QUEUE, ATTR_ALBUM as ATTR_ALBUM, ATTR_ANNOUNCE_VOLUME as ATTR_ANNOUNCE_VOLUME, ATTR_ARTIST as ATTR_ARTIST, ATTR_AUTO_PLAY as ATTR_AUTO_PLAY, ATTR_CURRENT_INDEX as ATTR_CURRENT_INDEX, ATTR_CURRENT_ITEM as ATTR_CURRENT_ITEM, ATTR_ELAPSED_TIME as ATTR_ELAPSED_TIME, ATTR_ITEMS as ATTR_ITEMS, ATTR_MASS_PLAYER_TYPE as ATTR_MASS_PLAYER_TYPE, ATTR_MEDIA_ID as ATTR_MEDIA_ID, ATTR_MEDIA_TYPE as ATTR_MEDIA_TYPE, ATTR_NEXT_ITEM as ATTR_NEXT_ITEM, ATTR_QUEUE_ID as ATTR_QUEUE_ID, ATTR_RADIO_MODE as ATTR_RADIO_MODE, ATTR_REPEAT_MODE as ATTR_REPEAT_MODE, ATTR_SHUFFLE_ENABLED as ATTR_SHUFFLE_ENABLED, ATTR_SOURCE_PLAYER as ATTR_SOURCE_PLAYER, ATTR_URL as ATTR_URL, ATTR_USE_PRE_ANNOUNCE as ATTR_USE_PRE_ANNOUNCE, DOMAIN as DOMAIN
|
3
3
|
from .entity import MusicAssistantEntity as MusicAssistantEntity
|
4
|
-
from .media_browser import async_browse_media as async_browse_media
|
4
|
+
from .media_browser import async_browse_media as async_browse_media, async_search_media as async_search_media
|
5
5
|
from .schemas import QUEUE_DETAILS_SCHEMA as QUEUE_DETAILS_SCHEMA, queue_item_dict_from_mass_item as queue_item_dict_from_mass_item
|
6
6
|
from _typeshed import Incomplete
|
7
7
|
from collections.abc import Callable as Callable, Coroutine, Mapping
|
8
8
|
from homeassistant.components import media_source as media_source
|
9
|
-
from homeassistant.components.media_player import ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEnqueue as MediaPlayerEnqueue, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, RepeatMode as RepeatMode, async_process_play_media_url as async_process_play_media_url
|
9
|
+
from homeassistant.components.media_player import ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEnqueue as MediaPlayerEnqueue, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, RepeatMode as RepeatMode, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery, async_process_play_media_url as async_process_play_media_url
|
10
10
|
from homeassistant.const import ATTR_NAME as ATTR_NAME, STATE_OFF as STATE_OFF
|
11
11
|
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
|
12
12
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
@@ -92,6 +92,7 @@ class MusicAssistantPlayer(MusicAssistantEntity, MediaPlayerEntity):
|
|
92
92
|
@catch_musicassistant_error
|
93
93
|
async def _async_handle_get_queue(self) -> ServiceResponse: ...
|
94
94
|
async def async_browse_media(self, media_content_type: MediaType | str | None = None, media_content_id: str | None = None) -> BrowseMedia: ...
|
95
|
+
async def async_search_media(self, query: SearchMediaQuery) -> SearchMedia: ...
|
95
96
|
_attr_media_image_url: Incomplete
|
96
97
|
def _update_media_image_url(self, player: Player, queue: PlayerQueue | None) -> None: ...
|
97
98
|
_attr_media_artist: Incomplete
|
@@ -7,11 +7,13 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
|
|
7
7
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
8
8
|
from homeassistant.helpers.typing import ConfigType as ConfigType, UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
|
9
9
|
from homeassistant.loader import bind_hass as bind_hass
|
10
|
+
from homeassistant.util import package as package
|
10
11
|
from ipaddress import IPv4Address, IPv6Address
|
11
12
|
|
12
13
|
_LOGGER: Incomplete
|
13
14
|
CONFIG_SCHEMA: Incomplete
|
14
15
|
|
16
|
+
def _check_docker_without_host_networking() -> bool: ...
|
15
17
|
@bind_hass
|
16
18
|
async def async_get_adapters(hass: HomeAssistant) -> list[Adapter]: ...
|
17
19
|
@callback
|
@@ -0,0 +1,16 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from aiontfy import Ntfy
|
4
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
5
|
+
from homeassistant.const import CONF_TOKEN as CONF_TOKEN, CONF_URL as CONF_URL, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
|
6
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
7
|
+
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
8
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
9
|
+
|
10
|
+
_LOGGER: Incomplete
|
11
|
+
PLATFORMS: list[Platform]
|
12
|
+
type NtfyConfigEntry = ConfigEntry[Ntfy]
|
13
|
+
|
14
|
+
async def async_setup_entry(hass: HomeAssistant, entry: NtfyConfigEntry) -> bool: ...
|
15
|
+
async def _async_update_listener(hass: HomeAssistant, entry: NtfyConfigEntry) -> None: ...
|
16
|
+
async def async_unload_entry(hass: HomeAssistant, entry: NtfyConfigEntry) -> bool: ...
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from .const import CONF_TOPIC as CONF_TOPIC, DEFAULT_URL as DEFAULT_URL, DOMAIN as DOMAIN, SECTION_AUTH as SECTION_AUTH
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from collections.abc import Mapping
|
4
|
+
from homeassistant import data_entry_flow as data_entry_flow
|
5
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, ConfigSubentryFlow as ConfigSubentryFlow, SubentryFlowResult as SubentryFlowResult
|
6
|
+
from homeassistant.const import ATTR_CREDENTIALS as ATTR_CREDENTIALS, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_TOKEN as CONF_TOKEN, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL
|
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.selector import TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
|
10
|
+
from typing import Any
|
11
|
+
|
12
|
+
_LOGGER: Incomplete
|
13
|
+
STEP_USER_DATA_SCHEMA: Incomplete
|
14
|
+
STEP_REAUTH_DATA_SCHEMA: Incomplete
|
15
|
+
STEP_USER_TOPIC_SCHEMA: Incomplete
|
16
|
+
RE_TOPIC: Incomplete
|
17
|
+
|
18
|
+
class NtfyConfigFlow(ConfigFlow, domain=DOMAIN):
|
19
|
+
@classmethod
|
20
|
+
@callback
|
21
|
+
def async_get_supported_subentry_types(cls, config_entry: ConfigEntry) -> dict[str, type[ConfigSubentryFlow]]: ...
|
22
|
+
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
23
|
+
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
24
|
+
async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
25
|
+
|
26
|
+
class TopicSubentryFlowHandler(ConfigSubentryFlow):
|
27
|
+
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
28
|
+
async def async_step_generate_topic(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
29
|
+
async def async_step_add_topic(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
@@ -0,0 +1,7 @@
|
|
1
|
+
from . import NtfyConfigEntry as NtfyConfigEntry
|
2
|
+
from homeassistant.components.diagnostics import REDACTED as REDACTED
|
3
|
+
from homeassistant.const import CONF_URL as CONF_URL
|
4
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
5
|
+
from typing import Any
|
6
|
+
|
7
|
+
async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: NtfyConfigEntry) -> dict[str, Any]: ...
|
@@ -0,0 +1,25 @@
|
|
1
|
+
from . import NtfyConfigEntry as NtfyConfigEntry
|
2
|
+
from .const import CONF_TOPIC as CONF_TOPIC, DOMAIN as DOMAIN
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from homeassistant.components.notify import NotifyEntity as NotifyEntity, NotifyEntityDescription as NotifyEntityDescription, NotifyEntityFeature as NotifyEntityFeature
|
5
|
+
from homeassistant.config_entries import ConfigSubentry as ConfigSubentry
|
6
|
+
from homeassistant.const import CONF_NAME as CONF_NAME, CONF_URL as CONF_URL
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
9
|
+
from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
|
10
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
11
|
+
|
12
|
+
PARALLEL_UPDATES: int
|
13
|
+
|
14
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: NtfyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
15
|
+
|
16
|
+
class NtfyNotifyEntity(NotifyEntity):
|
17
|
+
entity_description: Incomplete
|
18
|
+
_attr_supported_features: Incomplete
|
19
|
+
_attr_unique_id: Incomplete
|
20
|
+
topic: Incomplete
|
21
|
+
_attr_device_info: Incomplete
|
22
|
+
config_entry: Incomplete
|
23
|
+
ntfy: Incomplete
|
24
|
+
def __init__(self, config_entry: NtfyConfigEntry, subentry: ConfigSubentry) -> None: ...
|
25
|
+
async def async_send_message(self, message: str, title: str | None = None) -> None: ...
|
@@ -1,10 +1,12 @@
|
|
1
|
-
from .const import
|
1
|
+
from .const import DOMAIN as DOMAIN, INTEGRATION_SUPPORTED_COMMANDS as INTEGRATION_SUPPORTED_COMMANDS, PLATFORMS as PLATFORMS
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from dataclasses import dataclass
|
4
4
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
5
5
|
from homeassistant.const import CONF_ALIAS as CONF_ALIAS, CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_RESOURCES as CONF_RESOURCES, CONF_SCAN_INTERVAL as CONF_SCAN_INTERVAL, CONF_USERNAME as CONF_USERNAME, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
|
6
6
|
from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant, callback as callback
|
7
7
|
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, HomeAssistantError as HomeAssistantError
|
8
|
+
from homeassistant.helpers import device_registry as dr
|
9
|
+
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, format_mac as format_mac
|
8
10
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
9
11
|
|
10
12
|
NUT_FAKE_SERIAL: Incomplete
|
@@ -19,8 +21,9 @@ class NutRuntimeData:
|
|
19
21
|
user_available_commands: set[str]
|
20
22
|
|
21
23
|
async def async_setup_entry(hass: HomeAssistant, entry: NutConfigEntry) -> bool: ...
|
22
|
-
async def async_unload_entry(hass: HomeAssistant, entry:
|
23
|
-
async def
|
24
|
+
async def async_unload_entry(hass: HomeAssistant, entry: NutConfigEntry) -> bool: ...
|
25
|
+
async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry) -> bool: ...
|
26
|
+
async def _async_update_listener(hass: HomeAssistant, entry: NutConfigEntry) -> None: ...
|
24
27
|
def _manufacturer_from_status(status: dict[str, str]) -> str | None: ...
|
25
28
|
def _model_from_status(status: dict[str, str]) -> str | None: ...
|
26
29
|
def _firmware_from_status(status: dict[str, str]) -> str | None: ...
|
@@ -34,6 +37,7 @@ class NUTDeviceInfo:
|
|
34
37
|
model_id: str | None = ...
|
35
38
|
firmware: str | None = ...
|
36
39
|
serial: str | None = ...
|
40
|
+
mac_address: str | None = ...
|
37
41
|
device_location: str | None = ...
|
38
42
|
|
39
43
|
class PyNUTData:
|
@@ -1,21 +1,22 @@
|
|
1
1
|
import voluptuous as vol
|
2
|
-
from . import PyNUTData as PyNUTData
|
3
|
-
from .const import DEFAULT_HOST as DEFAULT_HOST, DEFAULT_PORT as DEFAULT_PORT,
|
2
|
+
from . import PyNUTData as PyNUTData, _unique_id_from_status as _unique_id_from_status
|
3
|
+
from .const import DEFAULT_HOST as DEFAULT_HOST, DEFAULT_PORT as DEFAULT_PORT, DOMAIN as DOMAIN
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from collections.abc import Mapping
|
6
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
7
|
-
from homeassistant.const import CONF_ALIAS as CONF_ALIAS, CONF_BASE as CONF_BASE, CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT,
|
8
|
-
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
6
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
7
|
+
from homeassistant.const import CONF_ALIAS as CONF_ALIAS, CONF_BASE as CONF_BASE, CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_USERNAME as CONF_USERNAME
|
9
8
|
from homeassistant.data_entry_flow import AbortFlow as AbortFlow
|
10
9
|
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
11
10
|
from typing import Any
|
12
11
|
|
13
12
|
_LOGGER: Incomplete
|
14
|
-
|
13
|
+
REAUTH_SCHEMA: Incomplete
|
14
|
+
PASSWORD_NOT_CHANGED: str
|
15
15
|
|
16
|
-
def _base_schema(nut_config:
|
16
|
+
def _base_schema(nut_config: Mapping[str, Any], use_password_not_changed: bool = False) -> vol.Schema: ...
|
17
17
|
def _ups_schema(ups_list: dict[str, str]) -> vol.Schema: ...
|
18
|
-
async def validate_input(
|
18
|
+
async def validate_input(data: dict[str, Any]) -> dict[str, Any]: ...
|
19
|
+
def _check_host_port_alias_match(first: Mapping[str, Any], second: Mapping[str, Any]) -> bool: ...
|
19
20
|
def _format_host_port_alias(user_input: Mapping[str, Any]) -> str: ...
|
20
21
|
|
21
22
|
class NutConfigFlow(ConfigFlow, domain=DOMAIN):
|
@@ -28,13 +29,9 @@ class NutConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
28
29
|
async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
|
29
30
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
30
31
|
async def async_step_ups(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
32
|
+
async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
33
|
+
async def async_step_reconfigure_ups(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
31
34
|
def _host_port_alias_already_configured(self, user_input: dict[str, Any]) -> bool: ...
|
32
35
|
async def _async_validate_or_error(self, config: dict[str, Any]) -> tuple[dict[str, Any], dict[str, str], dict[str, str]]: ...
|
33
36
|
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
34
37
|
async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
35
|
-
@staticmethod
|
36
|
-
@callback
|
37
|
-
def async_get_options_flow(config_entry: ConfigEntry) -> OptionsFlow: ...
|
38
|
-
|
39
|
-
class OptionsFlowHandler(OptionsFlow):
|
40
|
-
async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
@@ -1,9 +1,11 @@
|
|
1
|
-
from . import NutRuntimeData as NutRuntimeData
|
1
|
+
from . import NutConfigEntry as NutConfigEntry, NutRuntimeData as NutRuntimeData
|
2
2
|
from .const import DOMAIN as DOMAIN, INTEGRATION_SUPPORTED_COMMANDS as INTEGRATION_SUPPORTED_COMMANDS
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from homeassistant.components.device_automation import InvalidDeviceAutomationConfig as InvalidDeviceAutomationConfig
|
5
|
+
from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
|
5
6
|
from homeassistant.const import CONF_DEVICE_ID as CONF_DEVICE_ID, CONF_DOMAIN as CONF_DOMAIN, CONF_TYPE as CONF_TYPE
|
6
7
|
from homeassistant.core import Context as Context, HomeAssistant as HomeAssistant
|
8
|
+
from homeassistant.helpers import device_registry as dr
|
7
9
|
from homeassistant.helpers.typing import ConfigType as ConfigType, TemplateVarsType as TemplateVarsType
|
8
10
|
|
9
11
|
ACTION_TYPES: Incomplete
|
@@ -14,3 +16,5 @@ async def async_call_action_from_config(hass: HomeAssistant, config: ConfigType,
|
|
14
16
|
def _get_device_action_name(command_name: str) -> str: ...
|
15
17
|
def _get_command_name(device_action_name: str) -> str: ...
|
16
18
|
def _get_runtime_data_from_device_id(hass: HomeAssistant, device_id: str) -> NutRuntimeData | None: ...
|
19
|
+
def _get_runtime_data_for_device(hass: HomeAssistant, device: dr.DeviceEntry) -> NutRuntimeData | None: ...
|
20
|
+
def _get_runtime_data_from_device_id_exception_on_failure(hass: HomeAssistant, device_id: str) -> NutRuntimeData | None: ...
|
@@ -3,7 +3,7 @@ from .const import KEY_STATUS as KEY_STATUS, KEY_STATUS_DISPLAY as KEY_STATUS_DI
|
|
3
3
|
from .entity import NUTBaseEntity as NUTBaseEntity
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
6
|
-
from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE,
|
6
|
+
from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfApparentPower as UnitOfApparentPower, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfFrequency as UnitOfFrequency, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime
|
7
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
8
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
9
9
|
from typing import Final
|
@@ -11,7 +11,10 @@ from typing import Final
|
|
11
11
|
PARALLEL_UPDATES: int
|
12
12
|
AMBIENT_PRESENT: str
|
13
13
|
AMBIENT_SENSORS: Incomplete
|
14
|
-
|
14
|
+
BATTERY_CHARGER_STATUS_OPTIONS: Incomplete
|
15
|
+
FREQUENCY_STATUS_OPTIONS: Incomplete
|
16
|
+
THRESHOLD_STATUS_OPTIONS: Incomplete
|
17
|
+
UPS_BEEPER_STATUS_OPTIONS: Incomplete
|
15
18
|
_LOGGER: Incomplete
|
16
19
|
SENSOR_TYPES: Final[dict[str, SensorEntityDescription]]
|
17
20
|
|
@@ -21,4 +24,4 @@ class NUTSensor(NUTBaseEntity, SensorEntity):
|
|
21
24
|
@property
|
22
25
|
def native_value(self) -> str | None: ...
|
23
26
|
|
24
|
-
def _format_display_state(status: dict[str, str]) -> str: ...
|
27
|
+
def _format_display_state(status: dict[str, str]) -> str | None: ...
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN, PLATFORMS as PLATFORMS
|
2
|
+
from .coordinator import OhmeAdvancedSettingsCoordinator as OhmeAdvancedSettingsCoordinator, OhmeChargeSessionCoordinator as OhmeChargeSessionCoordinator, OhmeConfigEntry as OhmeConfigEntry, OhmeDeviceInfoCoordinator as OhmeDeviceInfoCoordinator, OhmeRuntimeData as OhmeRuntimeData
|
3
|
+
from .services import async_setup_services as async_setup_services
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD
|
6
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
7
|
+
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
8
|
+
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
9
|
+
from homeassistant.helpers.typing import ConfigType as ConfigType
|
10
|
+
|
11
|
+
CONFIG_SCHEMA: Incomplete
|
12
|
+
|
13
|
+
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
|
14
|
+
async def async_setup_entry(hass: HomeAssistant, entry: OhmeConfigEntry) -> bool: ...
|
15
|
+
async def async_unload_entry(hass: HomeAssistant, entry: OhmeConfigEntry) -> bool: ...
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import OhmeConfigEntry as OhmeConfigEntry
|
3
|
+
from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from collections.abc import Callable as Callable, Coroutine
|
6
|
+
from dataclasses import dataclass
|
7
|
+
from homeassistant.components.button import ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
|
8
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
10
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
11
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
12
|
+
from typing import Any
|
13
|
+
|
14
|
+
PARALLEL_UPDATES: int
|
15
|
+
|
16
|
+
@dataclass(frozen=True, kw_only=True)
|
17
|
+
class OhmeButtonDescription(OhmeEntityDescription, ButtonEntityDescription):
|
18
|
+
press_fn: Callable[[OhmeApiClient], Coroutine[Any, Any, bool]]
|
19
|
+
|
20
|
+
BUTTON_DESCRIPTIONS: Incomplete
|
21
|
+
|
22
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
23
|
+
|
24
|
+
class OhmeButton(OhmeEntity, ButtonEntity):
|
25
|
+
entity_description: OhmeButtonDescription
|
26
|
+
async def async_press(self) -> None: ...
|
@@ -0,0 +1,17 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from _typeshed import Incomplete
|
3
|
+
from collections.abc import Mapping
|
4
|
+
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
5
|
+
from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD
|
6
|
+
from homeassistant.helpers.selector import TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
|
7
|
+
from typing import Any
|
8
|
+
|
9
|
+
USER_SCHEMA: Incomplete
|
10
|
+
REAUTH_SCHEMA: Incomplete
|
11
|
+
|
12
|
+
class OhmeConfigFlow(ConfigFlow, domain=DOMAIN):
|
13
|
+
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
14
|
+
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
15
|
+
async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
16
|
+
async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
17
|
+
async def _validate_account(self, email: str, password: str) -> dict[str, str]: ...
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import abc
|
2
|
+
from .const import DOMAIN as DOMAIN
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from abc import abstractmethod
|
5
|
+
from dataclasses import dataclass
|
6
|
+
from datetime import timedelta
|
7
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
8
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
|
+
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
10
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
11
|
+
|
12
|
+
_LOGGER: Incomplete
|
13
|
+
|
14
|
+
@dataclass()
|
15
|
+
class OhmeRuntimeData:
|
16
|
+
charge_session_coordinator: OhmeChargeSessionCoordinator
|
17
|
+
advanced_settings_coordinator: OhmeAdvancedSettingsCoordinator
|
18
|
+
device_info_coordinator: OhmeDeviceInfoCoordinator
|
19
|
+
type OhmeConfigEntry = ConfigEntry[OhmeRuntimeData]
|
20
|
+
|
21
|
+
class OhmeBaseCoordinator(DataUpdateCoordinator[None], metaclass=abc.ABCMeta):
|
22
|
+
config_entry: OhmeConfigEntry
|
23
|
+
client: OhmeApiClient
|
24
|
+
_default_update_interval: timedelta | None
|
25
|
+
coordinator_name: str
|
26
|
+
name: Incomplete
|
27
|
+
def __init__(self, hass: HomeAssistant, config_entry: OhmeConfigEntry, client: OhmeApiClient) -> None: ...
|
28
|
+
async def _async_update_data(self) -> None: ...
|
29
|
+
@abstractmethod
|
30
|
+
async def _internal_update_data(self) -> None: ...
|
31
|
+
|
32
|
+
class OhmeChargeSessionCoordinator(OhmeBaseCoordinator):
|
33
|
+
coordinator_name: str
|
34
|
+
_default_update_interval: Incomplete
|
35
|
+
async def _internal_update_data(self) -> None: ...
|
36
|
+
|
37
|
+
class OhmeAdvancedSettingsCoordinator(OhmeBaseCoordinator):
|
38
|
+
coordinator_name: str
|
39
|
+
async def _internal_update_data(self) -> None: ...
|
40
|
+
|
41
|
+
class OhmeDeviceInfoCoordinator(OhmeBaseCoordinator):
|
42
|
+
coordinator_name: str
|
43
|
+
_default_update_interval: Incomplete
|
44
|
+
async def _internal_update_data(self) -> None: ...
|
@@ -0,0 +1,5 @@
|
|
1
|
+
from .coordinator import OhmeConfigEntry as OhmeConfigEntry
|
2
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
3
|
+
from typing import Any
|
4
|
+
|
5
|
+
async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: OhmeConfigEntry) -> dict[str, Any]: ...
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import OhmeBaseCoordinator as OhmeBaseCoordinator
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from collections.abc import Callable as Callable
|
5
|
+
from dataclasses import dataclass
|
6
|
+
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
7
|
+
from homeassistant.helpers.entity import EntityDescription as EntityDescription
|
8
|
+
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
9
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
10
|
+
|
11
|
+
@dataclass(frozen=True)
|
12
|
+
class OhmeEntityDescription(EntityDescription):
|
13
|
+
is_supported_fn: Callable[[OhmeApiClient], bool] = ...
|
14
|
+
available_fn: Callable[[OhmeApiClient], bool] = ...
|
15
|
+
|
16
|
+
class OhmeEntity(CoordinatorEntity[OhmeBaseCoordinator]):
|
17
|
+
_attr_has_entity_name: bool
|
18
|
+
entity_description: OhmeEntityDescription
|
19
|
+
_attr_unique_id: Incomplete
|
20
|
+
_attr_device_info: Incomplete
|
21
|
+
def __init__(self, coordinator: OhmeBaseCoordinator, entity_description: OhmeEntityDescription) -> None: ...
|
22
|
+
@property
|
23
|
+
def available(self) -> bool: ...
|
@@ -0,0 +1,30 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import OhmeConfigEntry as OhmeConfigEntry
|
3
|
+
from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from collections.abc import Callable as Callable, Coroutine
|
6
|
+
from dataclasses import dataclass
|
7
|
+
from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription
|
8
|
+
from homeassistant.const import PERCENTAGE as PERCENTAGE, UnitOfTime as UnitOfTime
|
9
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
10
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
11
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
12
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
13
|
+
from typing import Any
|
14
|
+
|
15
|
+
PARALLEL_UPDATES: int
|
16
|
+
|
17
|
+
@dataclass(frozen=True, kw_only=True)
|
18
|
+
class OhmeNumberDescription(OhmeEntityDescription, NumberEntityDescription):
|
19
|
+
set_fn: Callable[[OhmeApiClient, float], Coroutine[Any, Any, bool]]
|
20
|
+
value_fn: Callable[[OhmeApiClient], float]
|
21
|
+
|
22
|
+
NUMBER_DESCRIPTION: Incomplete
|
23
|
+
|
24
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
25
|
+
|
26
|
+
class OhmeNumber(OhmeEntity, NumberEntity):
|
27
|
+
entity_description: OhmeNumberDescription
|
28
|
+
@property
|
29
|
+
def native_value(self) -> float: ...
|
30
|
+
async def async_set_native_value(self, value: float) -> None: ...
|
@@ -0,0 +1,33 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import OhmeConfigEntry as OhmeConfigEntry
|
3
|
+
from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
|
4
|
+
from collections.abc import Callable as Callable, Coroutine
|
5
|
+
from dataclasses import dataclass
|
6
|
+
from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
9
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
10
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
11
|
+
from typing import Any, Final
|
12
|
+
|
13
|
+
PARALLEL_UPDATES: int
|
14
|
+
|
15
|
+
@dataclass(frozen=True, kw_only=True)
|
16
|
+
class OhmeSelectDescription(OhmeEntityDescription, SelectEntityDescription):
|
17
|
+
select_fn: Callable[[OhmeApiClient, Any], Coroutine[Any, Any, bool | None]]
|
18
|
+
options: list[str] | None = ...
|
19
|
+
options_fn: Callable[[OhmeApiClient], list[str]] | None = ...
|
20
|
+
current_option_fn: Callable[[OhmeApiClient], str | None]
|
21
|
+
|
22
|
+
MODE_SELECT_DESCRIPTION: Final[OhmeSelectDescription]
|
23
|
+
VEHICLE_SELECT_DESCRIPTION: Final[OhmeSelectDescription]
|
24
|
+
|
25
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
26
|
+
|
27
|
+
class OhmeSelect(OhmeEntity, SelectEntity):
|
28
|
+
entity_description: OhmeSelectDescription
|
29
|
+
async def async_select_option(self, option: str) -> None: ...
|
30
|
+
@property
|
31
|
+
def options(self) -> list[str]: ...
|
32
|
+
@property
|
33
|
+
def current_option(self) -> str | None: ...
|
@@ -0,0 +1,26 @@
|
|
1
|
+
from .coordinator import OhmeConfigEntry as OhmeConfigEntry
|
2
|
+
from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from collections.abc import Callable as Callable
|
5
|
+
from dataclasses import dataclass
|
6
|
+
from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
7
|
+
from homeassistant.const import PERCENTAGE as PERCENTAGE, STATE_UNKNOWN as STATE_UNKNOWN, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower
|
8
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
10
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
11
|
+
|
12
|
+
PARALLEL_UPDATES: int
|
13
|
+
|
14
|
+
@dataclass(frozen=True, kw_only=True)
|
15
|
+
class OhmeSensorDescription(OhmeEntityDescription, SensorEntityDescription):
|
16
|
+
value_fn: Callable[[OhmeApiClient], str | int | float | None]
|
17
|
+
|
18
|
+
SENSOR_CHARGE_SESSION: Incomplete
|
19
|
+
SENSOR_ADVANCED_SETTINGS: Incomplete
|
20
|
+
|
21
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
22
|
+
|
23
|
+
class OhmeSensor(OhmeEntity, SensorEntity):
|
24
|
+
entity_description: OhmeSensorDescription
|
25
|
+
@property
|
26
|
+
def native_value(self) -> str | int | float | None: ...
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import OhmeConfigEntry as OhmeConfigEntry
|
3
|
+
from _typeshed import Incomplete
|
4
|
+
from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
|
6
|
+
from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
|
7
|
+
from homeassistant.helpers import selector as selector
|
8
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
9
|
+
from typing import Final
|
10
|
+
|
11
|
+
ATTR_CONFIG_ENTRY: Final[str]
|
12
|
+
ATTR_PRICE_CAP: Final[str]
|
13
|
+
SERVICE_LIST_CHARGE_SLOTS: str
|
14
|
+
SERVICE_LIST_CHARGE_SLOTS_SCHEMA: Final[Incomplete]
|
15
|
+
SERVICE_SET_PRICE_CAP: str
|
16
|
+
SERVICE_SET_PRICE_CAP_SCHEMA: Final[Incomplete]
|
17
|
+
|
18
|
+
def __get_client(call: ServiceCall) -> OhmeApiClient: ...
|
19
|
+
def async_setup_services(hass: HomeAssistant) -> None: ...
|
@@ -0,0 +1,45 @@
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import OhmeConfigEntry as OhmeConfigEntry
|
3
|
+
from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from collections.abc import Awaitable, Callable as Callable
|
6
|
+
from dataclasses import dataclass
|
7
|
+
from homeassistant.components.switch import SwitchEntity as SwitchEntity, SwitchEntityDescription as SwitchEntityDescription
|
8
|
+
from homeassistant.const import EntityCategory as EntityCategory
|
9
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
10
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
11
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
12
|
+
from ohme import OhmeApiClient as OhmeApiClient
|
13
|
+
from typing import Any
|
14
|
+
|
15
|
+
PARALLEL_UPDATES: int
|
16
|
+
|
17
|
+
@dataclass(frozen=True, kw_only=True)
|
18
|
+
class OhmeConfigSwitchDescription(OhmeEntityDescription, SwitchEntityDescription):
|
19
|
+
configuration_key: str
|
20
|
+
|
21
|
+
@dataclass(frozen=True, kw_only=True)
|
22
|
+
class OhmeSwitchDescription(OhmeEntityDescription, SwitchEntityDescription):
|
23
|
+
is_on_fn: Callable[[OhmeApiClient], bool]
|
24
|
+
off_fn: Callable[[OhmeApiClient], Awaitable]
|
25
|
+
on_fn: Callable[[OhmeApiClient], Awaitable]
|
26
|
+
|
27
|
+
SWITCH_CONFIG: Incomplete
|
28
|
+
SWITCH_DESCRIPTION: Incomplete
|
29
|
+
|
30
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
31
|
+
|
32
|
+
class OhmeSwitch(OhmeEntity, SwitchEntity):
|
33
|
+
entity_description: OhmeSwitchDescription
|
34
|
+
@property
|
35
|
+
def is_on(self) -> bool: ...
|
36
|
+
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
37
|
+
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
38
|
+
|
39
|
+
class OhmeConfigSwitch(OhmeEntity, SwitchEntity):
|
40
|
+
entity_description: OhmeConfigSwitchDescription
|
41
|
+
@property
|
42
|
+
def is_on(self) -> bool: ...
|
43
|
+
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
44
|
+
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
45
|
+
async def _toggle(self, on: bool) -> None: ...
|