homeassistant-stubs 2025.8.3__py3-none-any.whl → 2025.9.0b0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant-stubs/auth/models.pyi +3 -1
- homeassistant-stubs/components/airos/binary_sensor.pyi +27 -0
- homeassistant-stubs/components/airos/sensor.pyi +4 -2
- homeassistant-stubs/components/airq/number.pyi +31 -0
- homeassistant-stubs/components/aladdin_connect/__init__.pyi +10 -5
- homeassistant-stubs/components/aladdin_connect/api.pyi +12 -0
- homeassistant-stubs/components/aladdin_connect/application_credentials.pyi +5 -0
- homeassistant-stubs/components/aladdin_connect/config_flow.pyi +15 -4
- homeassistant-stubs/components/aladdin_connect/const.pyi +10 -0
- homeassistant-stubs/components/aladdin_connect/coordinator.pyi +16 -0
- homeassistant-stubs/components/aladdin_connect/cover.pyi +25 -0
- homeassistant-stubs/components/aladdin_connect/entity.pyi +15 -0
- homeassistant-stubs/components/aladdin_connect/sensor.pyi +25 -0
- homeassistant-stubs/components/alexa_devices/__init__.pyi +1 -1
- homeassistant-stubs/components/alexa_devices/config_flow.pyi +2 -0
- homeassistant-stubs/components/amberelectric/const.pyi +0 -1
- homeassistant-stubs/components/amberelectric/services.pyi +2 -1
- homeassistant-stubs/components/ambient_station/entity.pyi +1 -1
- homeassistant-stubs/components/android_ip_webcam/coordinator.pyi +0 -1
- homeassistant-stubs/components/apcupsd/binary_sensor.pyi +2 -6
- homeassistant-stubs/components/apcupsd/entity.pyi +11 -0
- homeassistant-stubs/components/apcupsd/sensor.pyi +2 -6
- homeassistant-stubs/components/asuswrt/bridge.pyi +10 -8
- homeassistant-stubs/components/asuswrt/helpers.pyi +8 -0
- homeassistant-stubs/components/auth/login_flow.pyi +1 -1
- homeassistant-stubs/components/auth/mfa_setup_flow.pyi +1 -1
- homeassistant-stubs/components/awair/const.pyi +1 -0
- homeassistant-stubs/components/awair/sensor.pyi +2 -2
- homeassistant-stubs/components/backup/config.pyi +0 -14
- homeassistant-stubs/components/bayesian/__init__.pyi +6 -4
- homeassistant-stubs/components/bayesian/binary_sensor.pyi +6 -5
- homeassistant-stubs/components/bayesian/config_flow.pyi +69 -0
- homeassistant-stubs/components/bayesian/const.pyi +5 -0
- homeassistant-stubs/components/bayesian/issues.pyi +1 -1
- homeassistant-stubs/components/bosch_alarm/const.pyi +0 -1
- homeassistant-stubs/components/bosch_alarm/services.pyi +2 -1
- homeassistant-stubs/components/braviatv/button.pyi +1 -1
- homeassistant-stubs/components/braviatv/coordinator.pyi +1 -0
- homeassistant-stubs/components/braviatv/entity.pyi +1 -1
- homeassistant-stubs/components/climate/__init__.pyi +1 -1
- homeassistant-stubs/components/cloud/alexa_config.pyi +2 -1
- homeassistant-stubs/components/cloud/subscription.pyi +2 -4
- homeassistant-stubs/components/co2signal/coordinator.pyi +3 -3
- homeassistant-stubs/components/co2signal/helpers.pyi +2 -3
- homeassistant-stubs/components/co2signal/sensor.pyi +3 -3
- homeassistant-stubs/components/config/config_entries.pyi +6 -3
- homeassistant-stubs/components/demo/media_player.pyi +2 -0
- homeassistant-stubs/components/device_automation/condition.pyi +2 -2
- homeassistant-stubs/components/enphase_envoy/binary_sensor.pyi +29 -1
- homeassistant-stubs/components/enphase_envoy/sensor.pyi +30 -1
- homeassistant-stubs/components/esphome/manager.pyi +1 -2
- homeassistant-stubs/components/esphome/media_player.pyi +5 -0
- homeassistant-stubs/components/fan/intent.pyi +7 -0
- homeassistant-stubs/components/fritz/coordinator.pyi +0 -1
- homeassistant-stubs/components/fyta/const.pyi +4 -0
- homeassistant-stubs/components/fyta/sensor.pyi +11 -0
- homeassistant-stubs/components/glances/coordinator.pyi +0 -1
- homeassistant-stubs/components/group/config_flow.pyi +2 -0
- homeassistant-stubs/components/habitica/__init__.pyi +6 -2
- homeassistant-stubs/components/habitica/binary_sensor.pyi +13 -4
- homeassistant-stubs/components/habitica/coordinator.pyi +18 -4
- homeassistant-stubs/components/habitica/entity.pyi +10 -1
- homeassistant-stubs/components/habitica/image.pyi +19 -4
- homeassistant-stubs/components/habitica/sensor.pyi +27 -3
- homeassistant-stubs/components/habitica/util.pyi +5 -2
- homeassistant-stubs/components/home_connect/const.pyi +0 -7
- homeassistant-stubs/components/home_connect/services.pyi +1 -14
- homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +0 -1
- homeassistant-stubs/components/homee/config_flow.pyi +8 -2
- homeassistant-stubs/components/homee/const.pyi +3 -0
- homeassistant-stubs/components/homekit/accessories.pyi +1 -1
- homeassistant-stubs/components/homekit/const.pyi +4 -0
- homeassistant-stubs/components/homekit/type_switches.pyi +11 -1
- homeassistant-stubs/components/homekit/util.pyi +3 -2
- homeassistant-stubs/components/huawei_lte/__init__.pyi +2 -2
- homeassistant-stubs/components/huawei_lte/const.pyi +0 -1
- homeassistant-stubs/components/huawei_lte/notify.pyi +2 -2
- homeassistant-stubs/components/husqvarna_automower/button.pyi +4 -0
- homeassistant-stubs/components/husqvarna_automower/const.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +10 -0
- homeassistant-stubs/components/husqvarna_automower/event.pyi +35 -0
- homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -2
- homeassistant-stubs/components/idasen_desk/__init__.pyi +0 -1
- homeassistant-stubs/components/jewish_calendar/__init__.pyi +2 -1
- homeassistant-stubs/components/jewish_calendar/coordinator.pyi +41 -0
- homeassistant-stubs/components/jewish_calendar/entity.pyi +5 -26
- homeassistant-stubs/components/jewish_calendar/sensor.pyi +1 -1
- homeassistant-stubs/components/knx/scene.pyi +5 -4
- homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +5 -11
- homeassistant-stubs/components/knx/storage/knx_selector.pyi +57 -6
- homeassistant-stubs/components/knx/storage/serialize.pyi +10 -0
- homeassistant-stubs/components/knx/storage/util.pyi +2 -0
- homeassistant-stubs/components/knx/websocket.pyi +7 -3
- homeassistant-stubs/components/letpot/select.pyi +39 -0
- homeassistant-stubs/components/mastodon/__init__.pyi +1 -2
- homeassistant-stubs/components/mastodon/const.pyi +0 -1
- homeassistant-stubs/components/mastodon/services.pyi +2 -1
- homeassistant-stubs/components/matter/lock.pyi +6 -0
- homeassistant-stubs/components/matter/sensor.pyi +2 -1
- homeassistant-stubs/components/mealie/const.pyi +0 -1
- homeassistant-stubs/components/mealie/services.pyi +2 -2
- homeassistant-stubs/components/media_player/__init__.pyi +4 -0
- homeassistant-stubs/components/media_player/intent.pyi +13 -3
- homeassistant-stubs/components/met_eireann/const.pyi +1 -1
- homeassistant-stubs/components/met_eireann/weather.pyi +4 -0
- homeassistant-stubs/components/miele/const.pyi +1 -0
- homeassistant-stubs/components/miele/coordinator.pyi +2 -3
- homeassistant-stubs/components/miele/entity.pyi +2 -3
- homeassistant-stubs/components/miele/sensor.pyi +25 -6
- homeassistant-stubs/components/modbus/binary_sensor.pyi +1 -2
- homeassistant-stubs/components/modbus/climate.pyi +1 -2
- homeassistant-stubs/components/modbus/const.pyi +2 -0
- homeassistant-stubs/components/modbus/entity.pyi +8 -10
- homeassistant-stubs/components/modbus/light.pyi +0 -1
- homeassistant-stubs/components/modbus/modbus.pyi +9 -11
- homeassistant-stubs/components/modbus/sensor.pyi +1 -3
- homeassistant-stubs/components/mqtt/alarm_control_panel.pyi +2 -23
- homeassistant-stubs/components/mqtt/config_flow.pyi +8 -2
- homeassistant-stubs/components/mqtt/const.pyi +40 -1
- homeassistant-stubs/components/mqtt/lock.pyi +1 -21
- homeassistant-stubs/components/mqtt/number.pyi +1 -0
- homeassistant-stubs/components/mqtt/sensor.pyi +1 -1
- homeassistant-stubs/components/music_assistant/actions.pyi +2 -1
- homeassistant-stubs/components/music_assistant/const.pyi +0 -1
- homeassistant-stubs/components/number/__init__.pyi +3 -0
- homeassistant-stubs/components/number/const.pyi +2 -1
- homeassistant-stubs/components/open_router/entity.pyi +2 -2
- homeassistant-stubs/components/openai_conversation/entity.pyi +3 -3
- homeassistant-stubs/components/opower/__init__.pyi +1 -0
- homeassistant-stubs/components/opower/repairs.pyi +13 -0
- homeassistant-stubs/components/overseerr/const.pyi +0 -1
- homeassistant-stubs/components/overseerr/services.pyi +2 -1
- homeassistant-stubs/components/person/__init__.pyi +2 -1
- homeassistant-stubs/components/qbus/binary_sensor.pyi +43 -0
- homeassistant-stubs/components/qbus/climate.pyi +1 -1
- homeassistant-stubs/components/qbus/coordinator.pyi +4 -3
- homeassistant-stubs/components/qbus/cover.pyi +1 -1
- homeassistant-stubs/components/qbus/entity.pyi +6 -5
- homeassistant-stubs/components/qbus/light.pyi +1 -1
- homeassistant-stubs/components/qbus/scene.pyi +4 -6
- homeassistant-stubs/components/qbus/sensor.pyi +67 -0
- homeassistant-stubs/components/qbus/switch.pyi +1 -1
- homeassistant-stubs/components/recorder/statistics.pyi +1 -1
- homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
- homeassistant-stubs/components/rest_command/__init__.pyi +1 -1
- homeassistant-stubs/components/romy/coordinator.pyi +0 -1
- homeassistant-stubs/components/russound_rio/media_browser.pyi +8 -0
- homeassistant-stubs/components/russound_rio/media_player.pyi +3 -2
- homeassistant-stubs/components/ruuvitag_ble/sensor.pyi +2 -2
- homeassistant-stubs/components/scene/__init__.pyi +13 -4
- homeassistant-stubs/components/sensibo/select.pyi +0 -5
- homeassistant-stubs/components/sensor/__init__.pyi +3 -0
- homeassistant-stubs/components/sensor/const.pyi +3 -2
- homeassistant-stubs/components/sensor/recorder.pyi +1 -1
- homeassistant-stubs/components/sleep_as_android/__init__.pyi +16 -0
- homeassistant-stubs/components/sleep_as_android/config_flow.pyi +2 -0
- homeassistant-stubs/components/sleep_as_android/const.pyi +9 -0
- homeassistant-stubs/components/sleep_as_android/diagnostics.pyi +5 -0
- homeassistant-stubs/components/sleep_as_android/entity.pyi +20 -0
- homeassistant-stubs/components/sleep_as_android/event.pyi +33 -0
- homeassistant-stubs/components/sleep_as_android/sensor.pyi +25 -0
- homeassistant-stubs/components/solarlog/sensor.pyi +11 -1
- homeassistant-stubs/components/speedtestdotnet/coordinator.pyi +0 -1
- homeassistant-stubs/components/stookwijzer/const.pyi +0 -1
- homeassistant-stubs/components/stookwijzer/services.pyi +2 -1
- homeassistant-stubs/components/sun/condition.pyi +2 -2
- homeassistant-stubs/components/switchbot_cloud/__init__.pyi +1 -0
- homeassistant-stubs/components/switchbot_cloud/const.pyi +10 -0
- homeassistant-stubs/components/switchbot_cloud/cover.pyi +57 -0
- homeassistant-stubs/components/switchbot_cloud/fan.pyi +22 -1
- homeassistant-stubs/components/telegram_bot/__init__.pyi +2 -1
- homeassistant-stubs/components/telegram_bot/bot.pyi +4 -1
- homeassistant-stubs/components/telegram_bot/notify.pyi +21 -0
- homeassistant-stubs/components/unifi/switch.pyi +3 -0
- homeassistant-stubs/components/volvo/__init__.pyi +1 -1
- homeassistant-stubs/components/volvo/binary_sensor.pyi +42 -0
- homeassistant-stubs/components/volvo/const.pyi +1 -1
- homeassistant-stubs/components/volvo/coordinator.pyi +5 -0
- homeassistant-stubs/components/volvo/sensor.pyi +2 -2
- homeassistant-stubs/components/webostv/__init__.pyi +2 -2
- homeassistant-stubs/components/webostv/const.pyi +0 -1
- homeassistant-stubs/components/webostv/notify.pyi +2 -2
- homeassistant-stubs/components/wemo/coordinator.pyi +0 -1
- homeassistant-stubs/components/workday/__init__.pyi +6 -8
- homeassistant-stubs/components/workday/binary_sensor.pyi +9 -33
- homeassistant-stubs/components/workday/entity.pyi +34 -0
- homeassistant-stubs/components/workday/util.pyi +14 -0
- homeassistant-stubs/components/zone/condition.pyi +2 -2
- homeassistant-stubs/components/zwave_js/__init__.pyi +5 -5
- homeassistant-stubs/components/zwave_js/binary_sensor.pyi +17 -10
- homeassistant-stubs/components/zwave_js/const.pyi +0 -1
- homeassistant-stubs/components/zwave_js/discovery.pyi +7 -51
- homeassistant-stubs/components/zwave_js/discovery_data_template.pyi +1 -11
- homeassistant-stubs/components/zwave_js/entity.pyi +15 -5
- homeassistant-stubs/components/zwave_js/helpers.pyi +0 -7
- homeassistant-stubs/components/zwave_js/migrate.pyi +2 -2
- homeassistant-stubs/components/zwave_js/models.pyi +95 -1
- homeassistant-stubs/components/zwave_js/triggers/event.pyi +5 -4
- homeassistant-stubs/components/zwave_js/triggers/trigger_helpers.pyi +2 -2
- homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +3 -2
- homeassistant-stubs/components/zwave_js/update.pyi +0 -3
- homeassistant-stubs/config_entries.pyi +5 -0
- homeassistant-stubs/const.pyi +9 -5
- homeassistant-stubs/data_entry_flow.pyi +0 -1
- homeassistant-stubs/helpers/automation.pyi +2 -0
- homeassistant-stubs/helpers/condition.pyi +6 -6
- homeassistant-stubs/helpers/config_validation.pyi +3 -0
- homeassistant-stubs/helpers/data_entry_flow.pyi +1 -1
- homeassistant-stubs/helpers/device_registry.pyi +1 -1
- homeassistant-stubs/helpers/json.pyi +0 -7
- homeassistant-stubs/helpers/llm.pyi +1 -0
- homeassistant-stubs/helpers/schema_config_entry_flow.pyi +2 -1
- homeassistant-stubs/helpers/selector.pyi +2 -1
- homeassistant-stubs/helpers/target.pyi +3 -2
- homeassistant-stubs/helpers/trigger.pyi +6 -6
- homeassistant-stubs/util/unit_conversion.pyi +11 -1
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/RECORD +220 -195
- homeassistant-stubs/components/linear_garage_door/__init__.pyi +0 -10
- homeassistant-stubs/components/linear_garage_door/config_flow.pyi +0 -25
- homeassistant-stubs/components/linear_garage_door/const.pyi +0 -1
- homeassistant-stubs/components/linear_garage_door/coordinator.pyi +0 -26
- homeassistant-stubs/components/linear_garage_door/cover.pyi +0 -28
- homeassistant-stubs/components/linear_garage_door/diagnostics.pyi +0 -10
- homeassistant-stubs/components/linear_garage_door/entity.pyi +0 -17
- homeassistant-stubs/components/linear_garage_door/light.pyi +0 -23
- homeassistant-stubs/components/mastodon/notify.pyi +0 -24
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.8.3.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from .const import DOMAIN as DOMAIN
|
|
2
|
+
from .coordinator import QbusConfigEntry as QbusConfigEntry
|
|
3
|
+
from .entity import QbusEntity as QbusEntity, create_device_identifier as create_device_identifier, create_unique_id as create_unique_id, determine_new_outputs as determine_new_outputs
|
|
4
|
+
from _typeshed import Incomplete
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
|
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
8
|
+
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
9
|
+
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
|
10
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
11
|
+
from qbusmqttapi.discovery import QbusMqttDevice as QbusMqttDevice, QbusMqttOutput as QbusMqttOutput
|
|
12
|
+
from qbusmqttapi.state import QbusMqttDeviceState as QbusMqttDeviceState, QbusMqttWeatherState
|
|
13
|
+
|
|
14
|
+
PARALLEL_UPDATES: int
|
|
15
|
+
|
|
16
|
+
@dataclass(frozen=True, kw_only=True)
|
|
17
|
+
class QbusWeatherDescription(BinarySensorEntityDescription):
|
|
18
|
+
property: str
|
|
19
|
+
|
|
20
|
+
_WEATHER_DESCRIPTIONS: Incomplete
|
|
21
|
+
|
|
22
|
+
async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
23
|
+
|
|
24
|
+
class QbusWeatherBinarySensor(QbusEntity, BinarySensorEntity):
|
|
25
|
+
_state_cls = QbusMqttWeatherState
|
|
26
|
+
entity_description: QbusWeatherDescription
|
|
27
|
+
def __init__(self, mqtt_output: QbusMqttOutput, description: QbusWeatherDescription) -> None: ...
|
|
28
|
+
_attr_is_on: Incomplete
|
|
29
|
+
async def _handle_state_received(self, state: QbusMqttWeatherState) -> None: ...
|
|
30
|
+
|
|
31
|
+
class QbusControllerConnectedBinarySensor(BinarySensorEntity):
|
|
32
|
+
_attr_has_entity_name: bool
|
|
33
|
+
_attr_name: Incomplete
|
|
34
|
+
_attr_should_poll: bool
|
|
35
|
+
_attr_device_class: Incomplete
|
|
36
|
+
_controller: Incomplete
|
|
37
|
+
_attr_unique_id: Incomplete
|
|
38
|
+
_attr_device_info: Incomplete
|
|
39
|
+
def __init__(self, controller: QbusMqttDevice) -> None: ...
|
|
40
|
+
async def async_added_to_hass(self) -> None: ...
|
|
41
|
+
_attr_is_on: Incomplete
|
|
42
|
+
@callback
|
|
43
|
+
def _state_received(self, state: QbusMqttDeviceState) -> None: ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN
|
|
2
2
|
from .coordinator import QbusConfigEntry as QbusConfigEntry
|
|
3
|
-
from .entity import QbusEntity as QbusEntity,
|
|
3
|
+
from .entity import QbusEntity as QbusEntity, create_new_entities as create_new_entities
|
|
4
4
|
from _typeshed import Incomplete
|
|
5
5
|
from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACAction as HVACAction, HVACMode as HVACMode
|
|
6
6
|
from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, UnitOfTemperature as UnitOfTemperature
|
|
@@ -5,16 +5,17 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
|
5
5
|
from homeassistant.const import EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
|
|
6
6
|
from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, Event as Event, HomeAssistant as HomeAssistant
|
|
7
7
|
from homeassistant.helpers.device_registry import format_mac as format_mac
|
|
8
|
+
from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
|
|
8
9
|
from homeassistant.helpers.event import async_call_later as async_call_later
|
|
9
10
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
|
|
10
11
|
from homeassistant.util.hass_dict import HassKey as HassKey
|
|
11
|
-
from qbusmqttapi.discovery import QbusDiscovery as QbusDiscovery, QbusMqttDevice
|
|
12
|
+
from qbusmqttapi.discovery import QbusDiscovery as QbusDiscovery, QbusMqttDevice
|
|
12
13
|
|
|
13
14
|
_LOGGER: Incomplete
|
|
14
15
|
type QbusConfigEntry = ConfigEntry[QbusControllerCoordinator]
|
|
15
16
|
QBUS_KEY: HassKey[QbusConfigCoordinator]
|
|
16
17
|
|
|
17
|
-
class QbusControllerCoordinator(DataUpdateCoordinator[
|
|
18
|
+
class QbusControllerCoordinator(DataUpdateCoordinator[QbusMqttDevice | None]):
|
|
18
19
|
_STATE_REQUEST_DELAY: int
|
|
19
20
|
config_entry: QbusConfigEntry
|
|
20
21
|
_message_factory: Incomplete
|
|
@@ -23,7 +24,7 @@ class QbusControllerCoordinator(DataUpdateCoordinator[list[QbusMqttOutput]]):
|
|
|
23
24
|
_subscribed_to_controller_state: bool
|
|
24
25
|
_controller: QbusMqttDevice | None
|
|
25
26
|
def __init__(self, hass: HomeAssistant, entry: QbusConfigEntry) -> None: ...
|
|
26
|
-
async def _async_update_data(self) ->
|
|
27
|
+
async def _async_update_data(self) -> QbusMqttDevice | None: ...
|
|
27
28
|
def shutdown(self, event: Event | None = None) -> None: ...
|
|
28
29
|
async def async_update_controller_config(self, config: QbusDiscovery) -> None: ...
|
|
29
30
|
def _update_device_info(self) -> None: ...
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .coordinator import QbusConfigEntry as QbusConfigEntry
|
|
2
|
-
from .entity import QbusEntity as QbusEntity,
|
|
2
|
+
from .entity import QbusEntity as QbusEntity, create_new_entities as create_new_entities
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from homeassistant.components.cover import ATTR_POSITION as ATTR_POSITION, ATTR_TILT_POSITION as ATTR_TILT_POSITION, CoverDeviceClass as CoverDeviceClass, CoverEntity as CoverEntity, CoverEntityFeature as CoverEntityFeature
|
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
@@ -7,17 +7,18 @@ from collections.abc import Callable as Callable
|
|
|
7
7
|
from homeassistant.components.mqtt import ReceiveMessage as ReceiveMessage
|
|
8
8
|
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo, format_mac as format_mac
|
|
9
9
|
from homeassistant.helpers.entity import Entity as Entity
|
|
10
|
-
from
|
|
11
|
-
from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
|
|
10
|
+
from qbusmqttapi.discovery import QbusMqttDevice as QbusMqttDevice, QbusMqttOutput as QbusMqttOutput
|
|
12
11
|
from qbusmqttapi.state import QbusMqttState
|
|
13
12
|
from typing import Generic, TypeVar
|
|
14
13
|
|
|
15
14
|
_REFID_REGEX: Incomplete
|
|
16
15
|
StateT = TypeVar('StateT', bound=QbusMqttState)
|
|
17
16
|
|
|
18
|
-
def
|
|
17
|
+
def create_new_entities(coordinator: QbusControllerCoordinator, added_outputs: list[QbusMqttOutput], filter_fn: Callable[[QbusMqttOutput], bool], entity_type: type[QbusEntity]) -> list[QbusEntity]: ...
|
|
18
|
+
def determine_new_outputs(coordinator: QbusControllerCoordinator, added_outputs: list[QbusMqttOutput], filter_fn: Callable[[QbusMqttOutput], bool]) -> list[QbusMqttOutput]: ...
|
|
19
19
|
def format_ref_id(ref_id: str) -> str | None: ...
|
|
20
|
-
def
|
|
20
|
+
def create_device_identifier(mqtt_device: QbusMqttDevice) -> tuple[str, str]: ...
|
|
21
|
+
def create_unique_id(serial_number: str, suffix: str) -> str: ...
|
|
21
22
|
|
|
22
23
|
class QbusEntity(Entity, ABC, Generic[StateT], metaclass=abc.ABCMeta):
|
|
23
24
|
_state_cls: type[StateT]
|
|
@@ -29,7 +30,7 @@ class QbusEntity(Entity, ABC, Generic[StateT], metaclass=abc.ABCMeta):
|
|
|
29
30
|
_state_topic: Incomplete
|
|
30
31
|
_attr_unique_id: Incomplete
|
|
31
32
|
_attr_device_info: Incomplete
|
|
32
|
-
def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
|
|
33
|
+
def __init__(self, mqtt_output: QbusMqttOutput, *, id_suffix: str = '', link_to_main_device: bool = False) -> None: ...
|
|
33
34
|
async def async_added_to_hass(self) -> None: ...
|
|
34
35
|
async def _state_received(self, msg: ReceiveMessage) -> None: ...
|
|
35
36
|
@abstractmethod
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .coordinator import QbusConfigEntry as QbusConfigEntry
|
|
2
|
-
from .entity import QbusEntity as QbusEntity,
|
|
2
|
+
from .entity import QbusEntity as QbusEntity, create_new_entities as create_new_entities
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from homeassistant.components.light import ATTR_BRIGHTNESS as ATTR_BRIGHTNESS, ColorMode as ColorMode, LightEntity as LightEntity
|
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
from .coordinator import QbusConfigEntry as QbusConfigEntry
|
|
2
|
-
from .entity import QbusEntity as QbusEntity,
|
|
2
|
+
from .entity import QbusEntity as QbusEntity, create_new_entities as create_new_entities
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
|
-
from homeassistant.components.scene import
|
|
4
|
+
from homeassistant.components.scene import BaseScene as BaseScene
|
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
6
|
-
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
7
6
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
8
7
|
from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
|
|
9
8
|
from qbusmqttapi.state import QbusMqttState
|
|
@@ -13,9 +12,8 @@ PARALLEL_UPDATES: int
|
|
|
13
12
|
|
|
14
13
|
async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
15
14
|
|
|
16
|
-
class QbusScene(QbusEntity,
|
|
17
|
-
_attr_device_info: Incomplete
|
|
15
|
+
class QbusScene(QbusEntity, BaseScene):
|
|
18
16
|
_attr_name: Incomplete
|
|
19
17
|
def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
|
|
20
|
-
async def
|
|
18
|
+
async def _async_activate(self, **kwargs: Any) -> None: ...
|
|
21
19
|
async def _handle_state_received(self, state: QbusMqttState) -> None: ...
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from .coordinator import QbusConfigEntry as QbusConfigEntry
|
|
2
|
+
from .entity import QbusEntity as QbusEntity, create_new_entities as create_new_entities, determine_new_outputs as determine_new_outputs
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
|
6
|
+
from homeassistant.const import CONCENTRATION_PARTS_PER_MILLION as CONCENTRATION_PARTS_PER_MILLION, LIGHT_LUX as LIGHT_LUX, PERCENTAGE as PERCENTAGE, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfLength as UnitOfLength, UnitOfPower as UnitOfPower, UnitOfPressure as UnitOfPressure, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfVolume as UnitOfVolume, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate
|
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
8
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
9
|
+
from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
|
|
10
|
+
from qbusmqttapi.state import QbusMqttGaugeState, QbusMqttHumidityState, QbusMqttThermoState, QbusMqttVentilationState, QbusMqttWeatherState
|
|
11
|
+
|
|
12
|
+
PARALLEL_UPDATES: int
|
|
13
|
+
|
|
14
|
+
@dataclass(frozen=True, kw_only=True)
|
|
15
|
+
class QbusWeatherDescription(SensorEntityDescription):
|
|
16
|
+
property: str
|
|
17
|
+
|
|
18
|
+
_WEATHER_DESCRIPTIONS: Incomplete
|
|
19
|
+
_GAUGE_VARIANT_DESCRIPTIONS: Incomplete
|
|
20
|
+
|
|
21
|
+
def _is_gauge_with_variant(output: QbusMqttOutput) -> bool: ...
|
|
22
|
+
def _is_ventilation_with_co2(output: QbusMqttOutput) -> bool: ...
|
|
23
|
+
async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
24
|
+
|
|
25
|
+
class QbusGaugeVariantSensor(QbusEntity, SensorEntity):
|
|
26
|
+
_state_cls = QbusMqttGaugeState
|
|
27
|
+
_attr_name: Incomplete
|
|
28
|
+
_attr_suggested_display_precision: int
|
|
29
|
+
entity_description: Incomplete
|
|
30
|
+
def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
|
|
31
|
+
_attr_native_value: Incomplete
|
|
32
|
+
async def _handle_state_received(self, state: QbusMqttGaugeState) -> None: ...
|
|
33
|
+
|
|
34
|
+
class QbusHumiditySensor(QbusEntity, SensorEntity):
|
|
35
|
+
_state_cls = QbusMqttHumidityState
|
|
36
|
+
_attr_device_class: Incomplete
|
|
37
|
+
_attr_name: Incomplete
|
|
38
|
+
_attr_native_unit_of_measurement = PERCENTAGE
|
|
39
|
+
_attr_state_class: Incomplete
|
|
40
|
+
_attr_native_value: Incomplete
|
|
41
|
+
async def _handle_state_received(self, state: QbusMqttHumidityState) -> None: ...
|
|
42
|
+
|
|
43
|
+
class QbusThermoSensor(QbusEntity, SensorEntity):
|
|
44
|
+
_state_cls = QbusMqttThermoState
|
|
45
|
+
_attr_device_class: Incomplete
|
|
46
|
+
_attr_native_unit_of_measurement: Incomplete
|
|
47
|
+
_attr_state_class: Incomplete
|
|
48
|
+
_attr_native_value: Incomplete
|
|
49
|
+
async def _handle_state_received(self, state: QbusMqttThermoState) -> None: ...
|
|
50
|
+
|
|
51
|
+
class QbusVentilationSensor(QbusEntity, SensorEntity):
|
|
52
|
+
_state_cls = QbusMqttVentilationState
|
|
53
|
+
_attr_device_class: Incomplete
|
|
54
|
+
_attr_name: Incomplete
|
|
55
|
+
_attr_native_unit_of_measurement = CONCENTRATION_PARTS_PER_MILLION
|
|
56
|
+
_attr_state_class: Incomplete
|
|
57
|
+
_attr_suggested_display_precision: int
|
|
58
|
+
_attr_native_value: Incomplete
|
|
59
|
+
async def _handle_state_received(self, state: QbusMqttVentilationState) -> None: ...
|
|
60
|
+
|
|
61
|
+
class QbusWeatherSensor(QbusEntity, SensorEntity):
|
|
62
|
+
_state_cls = QbusMqttWeatherState
|
|
63
|
+
entity_description: QbusWeatherDescription
|
|
64
|
+
_attr_name: Incomplete
|
|
65
|
+
def __init__(self, mqtt_output: QbusMqttOutput, description: QbusWeatherDescription) -> None: ...
|
|
66
|
+
native_value: Incomplete
|
|
67
|
+
async def _handle_state_received(self, state: QbusMqttWeatherState) -> None: ...
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .coordinator import QbusConfigEntry as QbusConfigEntry
|
|
2
|
-
from .entity import QbusEntity as QbusEntity,
|
|
2
|
+
from .entity import QbusEntity as QbusEntity, create_new_entities as create_new_entities
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from homeassistant.components.switch import SwitchDeviceClass as SwitchDeviceClass, SwitchEntity as SwitchEntity
|
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
@@ -15,7 +15,7 @@ from homeassistant.helpers.singleton import singleton as singleton
|
|
|
15
15
|
from homeassistant.helpers.typing import UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
|
|
16
16
|
from homeassistant.util.collection import chunked_or_all as chunked_or_all
|
|
17
17
|
from homeassistant.util.enum import try_parse_enum as try_parse_enum
|
|
18
|
-
from homeassistant.util.unit_conversion import AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
18
|
+
from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
19
19
|
from sqlalchemy import Label as Label, Select as Select
|
|
20
20
|
from sqlalchemy.engine.row import Row
|
|
21
21
|
from sqlalchemy.orm.session import Session as Session
|
|
@@ -8,7 +8,7 @@ from homeassistant.components.websocket_api import messages as messages
|
|
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback, valid_entity_id as valid_entity_id
|
|
9
9
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
10
10
|
from homeassistant.helpers.json import json_bytes as json_bytes
|
|
11
|
-
from homeassistant.util.unit_conversion import AreaConverter as AreaConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
11
|
+
from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
12
12
|
from typing import Any, Literal
|
|
13
13
|
|
|
14
14
|
CLEAR_STATISTICS_TIME_OUT: int
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from _typeshed import Incomplete
|
|
2
|
-
from homeassistant.const import CONF_HEADERS as CONF_HEADERS, CONF_METHOD as CONF_METHOD, CONF_PASSWORD as CONF_PASSWORD, CONF_PAYLOAD as CONF_PAYLOAD, CONF_TIMEOUT as CONF_TIMEOUT, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, SERVICE_RELOAD as SERVICE_RELOAD
|
|
2
|
+
from homeassistant.const import CONF_AUTHENTICATION as CONF_AUTHENTICATION, CONF_HEADERS as CONF_HEADERS, CONF_METHOD as CONF_METHOD, CONF_PASSWORD as CONF_PASSWORD, CONF_PAYLOAD as CONF_PAYLOAD, CONF_TIMEOUT as CONF_TIMEOUT, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, HTTP_BASIC_AUTHENTICATION as HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION as HTTP_DIGEST_AUTHENTICATION, SERVICE_RELOAD as SERVICE_RELOAD
|
|
3
3
|
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse, callback as callback
|
|
4
4
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
5
5
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
|
@@ -7,7 +7,6 @@ from romy import RomyRobot as RomyRobot
|
|
|
7
7
|
|
|
8
8
|
class RomyVacuumCoordinator(DataUpdateCoordinator[None]):
|
|
9
9
|
config_entry: ConfigEntry
|
|
10
|
-
hass: Incomplete
|
|
11
10
|
romy: Incomplete
|
|
12
11
|
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, romy: RomyRobot) -> None: ...
|
|
13
12
|
async def _async_update_data(self) -> None: ...
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from aiorussound import RussoundClient as RussoundClient, Zone as Zone
|
|
2
|
+
from homeassistant.components.media_player import BrowseMedia as BrowseMedia, MediaClass as MediaClass
|
|
3
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
4
|
+
|
|
5
|
+
async def async_browse_media(hass: HomeAssistant, client: RussoundClient, media_content_id: str | None, media_content_type: str | None, zone: Zone) -> BrowseMedia: ...
|
|
6
|
+
async def _root_payload(hass: HomeAssistant, presets_by_zone: dict[int, dict[int, str]]) -> BrowseMedia: ...
|
|
7
|
+
async def _presets_payload(presets_by_zone: dict[int, dict[int, str]]) -> BrowseMedia: ...
|
|
8
|
+
def _find_presets_by_zone(client: RussoundClient, zone: Zone) -> dict[int, dict[int, str]]: ...
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import datetime as dt
|
|
2
|
-
from . import RussoundConfigEntry as RussoundConfigEntry
|
|
2
|
+
from . import RussoundConfigEntry as RussoundConfigEntry, media_browser as media_browser
|
|
3
3
|
from .const import DOMAIN as DOMAIN, RUSSOUND_MEDIA_TYPE_PRESET as RUSSOUND_MEDIA_TYPE_PRESET, SELECT_SOURCE_DELAY as SELECT_SOURCE_DELAY
|
|
4
4
|
from .entity import RussoundBaseEntity as RussoundBaseEntity, command as command
|
|
5
5
|
from _typeshed import Incomplete
|
|
6
6
|
from aiorussound import Controller as Controller
|
|
7
7
|
from aiorussound.models import Source as Source
|
|
8
|
-
from homeassistant.components.media_player import MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType
|
|
8
|
+
from homeassistant.components.media_player import BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType
|
|
9
9
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
10
10
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
|
|
11
11
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
@@ -69,3 +69,4 @@ class RussoundZoneDevice(RussoundBaseEntity, MediaPlayerEntity):
|
|
|
69
69
|
async def async_media_seek(self, position: float) -> None: ...
|
|
70
70
|
@command
|
|
71
71
|
async def async_play_media(self, media_type: MediaType | str, media_id: str, **kwargs: Any) -> None: ...
|
|
72
|
+
async def async_browse_media(self, media_content_type: MediaType | str | None = None, media_content_id: str | None = None) -> BrowseMedia: ...
|
|
@@ -5,14 +5,14 @@ from homeassistant.components.bluetooth.passive_update_processor import PassiveB
|
|
|
5
5
|
from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
|
|
6
6
|
from homeassistant.const import PERCENTAGE as PERCENTAGE, SIGNAL_STRENGTH_DECIBELS_MILLIWATT as SIGNAL_STRENGTH_DECIBELS_MILLIWATT, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfPressure as UnitOfPressure, UnitOfTemperature as UnitOfTemperature
|
|
7
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
8
|
+
from homeassistant.helpers.entity import EntityDescription as EntityDescription
|
|
8
9
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
9
10
|
from homeassistant.helpers.sensor import sensor_device_info_to_hass_device_info as sensor_device_info_to_hass_device_info
|
|
10
|
-
from sensor_state_data import DeviceKey as DeviceKey,
|
|
11
|
+
from sensor_state_data import DeviceKey as DeviceKey, SensorUpdate
|
|
11
12
|
|
|
12
13
|
SENSOR_DESCRIPTIONS: Incomplete
|
|
13
14
|
|
|
14
15
|
def _device_key_to_bluetooth_entity_key(device_key: DeviceKey) -> PassiveBluetoothEntityKey: ...
|
|
15
|
-
def _to_sensor_key(description: SensorDescription) -> tuple[SSDSensorDeviceClass, Units | None]: ...
|
|
16
16
|
def sensor_update_to_bluetooth_data_update(sensor_update: SensorUpdate) -> PassiveBluetoothDataUpdate: ...
|
|
17
17
|
async def async_setup_entry(hass: HomeAssistant, entry: config_entries.ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
18
18
|
|
|
@@ -2,15 +2,16 @@ from _typeshed import Incomplete
|
|
|
2
2
|
from homeassistant.components.light import ATTR_TRANSITION as ATTR_TRANSITION
|
|
3
3
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
4
4
|
from homeassistant.const import CONF_PLATFORM as CONF_PLATFORM, SERVICE_TURN_ON as SERVICE_TURN_ON, STATE_UNAVAILABLE as STATE_UNAVAILABLE
|
|
5
|
-
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
6
6
|
from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
|
|
7
7
|
from homeassistant.helpers.restore_state import RestoreEntity as RestoreEntity
|
|
8
8
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
9
|
+
from homeassistant.util.async_ import run_callback_threadsafe as run_callback_threadsafe
|
|
9
10
|
from homeassistant.util.hass_dict import HassKey as HassKey
|
|
10
11
|
from typing import Any, Final, final
|
|
11
12
|
|
|
12
13
|
DOMAIN: Final[str]
|
|
13
|
-
DATA_COMPONENT: HassKey[EntityComponent[
|
|
14
|
+
DATA_COMPONENT: HassKey[EntityComponent[BaseScene]]
|
|
14
15
|
STATES: Final[str]
|
|
15
16
|
|
|
16
17
|
def _hass_domain_validator(config: dict[str, Any]) -> dict[str, Any]: ...
|
|
@@ -22,14 +23,22 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
|
|
|
22
23
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
|
23
24
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
|
|
24
25
|
|
|
25
|
-
class
|
|
26
|
+
class BaseScene(RestoreEntity):
|
|
26
27
|
_attr_should_poll: bool
|
|
27
28
|
__last_activated: str | None
|
|
28
29
|
@property
|
|
29
30
|
@final
|
|
30
31
|
def state(self) -> str | None: ...
|
|
31
32
|
@final
|
|
32
|
-
|
|
33
|
+
def _record_activation(self) -> None: ...
|
|
34
|
+
@final
|
|
35
|
+
@callback
|
|
36
|
+
def _async_record_activation(self) -> None: ...
|
|
33
37
|
async def async_internal_added_to_hass(self) -> None: ...
|
|
38
|
+
async def _async_activate(self, **kwargs: Any) -> None: ...
|
|
34
39
|
def activate(self, **kwargs: Any) -> None: ...
|
|
35
40
|
async def async_activate(self, **kwargs: Any) -> None: ...
|
|
41
|
+
|
|
42
|
+
class Scene(BaseScene):
|
|
43
|
+
@final
|
|
44
|
+
async def _async_activate(self, **kwargs: Any) -> None: ...
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
from . import SensiboConfigEntry as SensiboConfigEntry
|
|
2
|
-
from .const import DOMAIN as DOMAIN
|
|
3
2
|
from .coordinator import SensiboDataUpdateCoordinator as SensiboDataUpdateCoordinator
|
|
4
3
|
from .entity import SensiboDeviceBaseEntity as SensiboDeviceBaseEntity, async_handle_api_call as async_handle_api_call
|
|
5
4
|
from _typeshed import Incomplete
|
|
6
5
|
from collections.abc import Callable as Callable
|
|
7
6
|
from dataclasses import dataclass
|
|
8
|
-
from homeassistant.components.automation import automations_with_entity as automations_with_entity
|
|
9
|
-
from homeassistant.components.script import scripts_with_entity as scripts_with_entity
|
|
10
7
|
from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
|
|
11
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
12
9
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
13
|
-
from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue, async_delete_issue as async_delete_issue
|
|
14
10
|
from pysensibo.model import SensiboDevice as SensiboDevice
|
|
15
11
|
from typing import Any
|
|
16
12
|
|
|
@@ -23,7 +19,6 @@ class SensiboSelectEntityDescription(SelectEntityDescription):
|
|
|
23
19
|
options_fn: Callable[[SensiboDevice], list[str] | None]
|
|
24
20
|
transformation: Callable[[SensiboDevice], dict | None]
|
|
25
21
|
|
|
26
|
-
HORIZONTAL_SWING_MODE_TYPE: Incomplete
|
|
27
22
|
DEVICE_SELECT_TYPES: Incomplete
|
|
28
23
|
|
|
29
24
|
async def async_setup_entry(hass: HomeAssistant, entry: SensiboConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
@@ -80,6 +80,9 @@ class SensorEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|
|
80
80
|
def suggested_display_precision(self) -> int | None: ...
|
|
81
81
|
@cached_property
|
|
82
82
|
def native_unit_of_measurement(self) -> str | None: ...
|
|
83
|
+
@final
|
|
84
|
+
@property
|
|
85
|
+
def __native_unit_of_measurement_compat(self) -> str | None: ...
|
|
83
86
|
@cached_property
|
|
84
87
|
def suggested_unit_of_measurement(self) -> str | None: ...
|
|
85
88
|
@final
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from _typeshed import Incomplete
|
|
2
2
|
from enum import StrEnum
|
|
3
|
-
from homeassistant.const import CONCENTRATION_GRAMS_PER_CUBIC_METER as CONCENTRATION_GRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER as CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER as CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER, CONCENTRATION_PARTS_PER_BILLION as CONCENTRATION_PARTS_PER_BILLION, CONCENTRATION_PARTS_PER_MILLION as CONCENTRATION_PARTS_PER_MILLION, DEGREE as DEGREE, LIGHT_LUX as LIGHT_LUX, PERCENTAGE as PERCENTAGE, SIGNAL_STRENGTH_DECIBELS as SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS_MILLIWATT as SIGNAL_STRENGTH_DECIBELS_MILLIWATT, UnitOfApparentPower as UnitOfApparentPower, UnitOfArea as UnitOfArea, UnitOfBloodGlucoseConcentration as UnitOfBloodGlucoseConcentration, UnitOfConductivity as UnitOfConductivity, UnitOfDataRate as UnitOfDataRate, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfEnergyDistance as UnitOfEnergyDistance, UnitOfFrequency as UnitOfFrequency, UnitOfInformation as UnitOfInformation, UnitOfIrradiance as UnitOfIrradiance, UnitOfLength as UnitOfLength, UnitOfMass as UnitOfMass, UnitOfPower as UnitOfPower, UnitOfPrecipitationDepth as UnitOfPrecipitationDepth, UnitOfPressure as UnitOfPressure, UnitOfReactiveEnergy as UnitOfReactiveEnergy, UnitOfReactivePower as UnitOfReactivePower, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate, UnitOfVolumetricFlux as UnitOfVolumetricFlux
|
|
4
|
-
from homeassistant.util.unit_conversion import AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
3
|
+
from homeassistant.const import CONCENTRATION_GRAMS_PER_CUBIC_METER as CONCENTRATION_GRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT as CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER as CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER as CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER, CONCENTRATION_PARTS_PER_BILLION as CONCENTRATION_PARTS_PER_BILLION, CONCENTRATION_PARTS_PER_MILLION as CONCENTRATION_PARTS_PER_MILLION, DEGREE as DEGREE, LIGHT_LUX as LIGHT_LUX, PERCENTAGE as PERCENTAGE, SIGNAL_STRENGTH_DECIBELS as SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS_MILLIWATT as SIGNAL_STRENGTH_DECIBELS_MILLIWATT, UnitOfApparentPower as UnitOfApparentPower, UnitOfArea as UnitOfArea, UnitOfBloodGlucoseConcentration as UnitOfBloodGlucoseConcentration, UnitOfConductivity as UnitOfConductivity, UnitOfDataRate as UnitOfDataRate, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfEnergyDistance as UnitOfEnergyDistance, UnitOfFrequency as UnitOfFrequency, UnitOfInformation as UnitOfInformation, UnitOfIrradiance as UnitOfIrradiance, UnitOfLength as UnitOfLength, UnitOfMass as UnitOfMass, UnitOfPower as UnitOfPower, UnitOfPrecipitationDepth as UnitOfPrecipitationDepth, UnitOfPressure as UnitOfPressure, UnitOfReactiveEnergy as UnitOfReactiveEnergy, UnitOfReactivePower as UnitOfReactivePower, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate, UnitOfVolumetricFlux as UnitOfVolumetricFlux
|
|
4
|
+
from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
|
|
5
5
|
from typing import Final
|
|
6
6
|
|
|
7
7
|
DOMAIN: Final[str]
|
|
@@ -88,3 +88,4 @@ DEFAULT_PRECISION_LIMIT: int
|
|
|
88
88
|
UNITS_PRECISION: Incomplete
|
|
89
89
|
DEVICE_CLASS_STATE_CLASSES: dict[SensorDeviceClass, set[SensorStateClass]]
|
|
90
90
|
STATE_CLASS_UNITS: dict[SensorStateClass | str, set[type[StrEnum] | str | None]]
|
|
91
|
+
AMBIGUOUS_UNITS: dict[str | None, str]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import datetime
|
|
2
|
-
from .const import ATTR_LAST_RESET as ATTR_LAST_RESET, ATTR_STATE_CLASS as ATTR_STATE_CLASS, DOMAIN as DOMAIN, SensorStateClass as SensorStateClass, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate
|
|
2
|
+
from .const import AMBIGUOUS_UNITS as AMBIGUOUS_UNITS, ATTR_LAST_RESET as ATTR_LAST_RESET, ATTR_STATE_CLASS as ATTR_STATE_CLASS, DOMAIN as DOMAIN, SensorStateClass as SensorStateClass, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from collections.abc import Callable as Callable, Iterable
|
|
5
5
|
from dataclasses import dataclass
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from .const import ATTR_EVENT as ATTR_EVENT, ATTR_VALUE1 as ATTR_VALUE1, ATTR_VALUE2 as ATTR_VALUE2, ATTR_VALUE3 as ATTR_VALUE3, DOMAIN as DOMAIN
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from aiohttp.web import Request as Request, Response
|
|
4
|
+
from homeassistant.components import webhook as webhook
|
|
5
|
+
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
6
|
+
from homeassistant.const import CONF_WEBHOOK_ID as CONF_WEBHOOK_ID, Platform as Platform
|
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
8
|
+
from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
|
|
9
|
+
|
|
10
|
+
PLATFORMS: list[Platform]
|
|
11
|
+
type SleepAsAndroidConfigEntry = ConfigEntry
|
|
12
|
+
WEBHOOK_SCHEMA: Incomplete
|
|
13
|
+
|
|
14
|
+
async def handle_webhook(hass: HomeAssistant, webhook_id: str, request: Request) -> Response: ...
|
|
15
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SleepAsAndroidConfigEntry) -> bool: ...
|
|
16
|
+
async def async_unload_entry(hass: HomeAssistant, entry: SleepAsAndroidConfigEntry) -> bool: ...
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from . import SleepAsAndroidConfigEntry as SleepAsAndroidConfigEntry
|
|
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: SleepAsAndroidConfigEntry) -> dict[str, Any]: ...
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import abc
|
|
2
|
+
from . import SleepAsAndroidConfigEntry as SleepAsAndroidConfigEntry
|
|
3
|
+
from .const import DOMAIN as DOMAIN
|
|
4
|
+
from _typeshed import Incomplete
|
|
5
|
+
from abc import abstractmethod
|
|
6
|
+
from homeassistant.const import CONF_WEBHOOK_ID as CONF_WEBHOOK_ID
|
|
7
|
+
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
8
|
+
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
|
9
|
+
from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
|
|
10
|
+
|
|
11
|
+
class SleepAsAndroidEntity(Entity, metaclass=abc.ABCMeta):
|
|
12
|
+
_attr_has_entity_name: bool
|
|
13
|
+
_attr_unique_id: Incomplete
|
|
14
|
+
entity_description: Incomplete
|
|
15
|
+
webhook_id: Incomplete
|
|
16
|
+
_attr_device_info: Incomplete
|
|
17
|
+
def __init__(self, config_entry: SleepAsAndroidConfigEntry, entity_description: EntityDescription) -> None: ...
|
|
18
|
+
@abstractmethod
|
|
19
|
+
def _async_handle_event(self, webhook_id: str, data: dict[str, str]) -> None: ...
|
|
20
|
+
async def async_added_to_hass(self) -> None: ...
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from . import SleepAsAndroidConfigEntry as SleepAsAndroidConfigEntry
|
|
2
|
+
from .const import ATTR_EVENT as ATTR_EVENT, MAP_EVENTS as MAP_EVENTS
|
|
3
|
+
from .entity import SleepAsAndroidEntity as SleepAsAndroidEntity
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from enum import StrEnum
|
|
6
|
+
from homeassistant.components.event import EventDeviceClass as EventDeviceClass, EventEntity as EventEntity, EventEntityDescription as EventEntityDescription
|
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
8
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
9
|
+
|
|
10
|
+
PARALLEL_UPDATES: int
|
|
11
|
+
|
|
12
|
+
@dataclass(kw_only=True, frozen=True)
|
|
13
|
+
class SleepAsAndroidEventEntityDescription(EventEntityDescription):
|
|
14
|
+
event_types: list[str]
|
|
15
|
+
|
|
16
|
+
class SleepAsAndroidEvent(StrEnum):
|
|
17
|
+
ALARM_CLOCK = 'alarm_clock'
|
|
18
|
+
USER_NOTIFICATION = 'user_notification'
|
|
19
|
+
SMART_WAKEUP = 'smart_wakeup'
|
|
20
|
+
SLEEP_HEALTH = 'sleep_health'
|
|
21
|
+
LULLABY = 'lullaby'
|
|
22
|
+
SLEEP_PHASE = 'sleep_phase'
|
|
23
|
+
SLEEP_TRACKING = 'sleep_tracking'
|
|
24
|
+
SOUND_EVENT = 'sound_event'
|
|
25
|
+
|
|
26
|
+
EVENT_DESCRIPTIONS: tuple[SleepAsAndroidEventEntityDescription, ...]
|
|
27
|
+
|
|
28
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: SleepAsAndroidConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
29
|
+
|
|
30
|
+
class SleepAsAndroidEventEntity(SleepAsAndroidEntity, EventEntity):
|
|
31
|
+
entity_description: SleepAsAndroidEventEntityDescription
|
|
32
|
+
@callback
|
|
33
|
+
def _async_handle_event(self, webhook_id: str, data: dict[str, str]) -> None: ...
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from . import SleepAsAndroidConfigEntry as SleepAsAndroidConfigEntry
|
|
2
|
+
from .const import ALARM_LABEL_DEFAULT as ALARM_LABEL_DEFAULT, ATTR_EVENT as ATTR_EVENT, ATTR_VALUE1 as ATTR_VALUE1, ATTR_VALUE2 as ATTR_VALUE2
|
|
3
|
+
from .entity import SleepAsAndroidEntity as SleepAsAndroidEntity
|
|
4
|
+
from _typeshed import Incomplete
|
|
5
|
+
from enum import StrEnum
|
|
6
|
+
from homeassistant.components.sensor import RestoreSensor as RestoreSensor, SensorDeviceClass as SensorDeviceClass, SensorEntityDescription as SensorEntityDescription
|
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
8
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
9
|
+
|
|
10
|
+
PARALLEL_UPDATES: int
|
|
11
|
+
|
|
12
|
+
class SleepAsAndroidSensor(StrEnum):
|
|
13
|
+
NEXT_ALARM = 'next_alarm'
|
|
14
|
+
ALARM_LABEL = 'alarm_label'
|
|
15
|
+
|
|
16
|
+
SENSOR_DESCRIPTIONS: tuple[SensorEntityDescription, ...]
|
|
17
|
+
|
|
18
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: SleepAsAndroidConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
19
|
+
|
|
20
|
+
class SleepAsAndroidSensorEntity(SleepAsAndroidEntity, RestoreSensor):
|
|
21
|
+
entity_description: SensorEntityDescription
|
|
22
|
+
_attr_native_value: Incomplete
|
|
23
|
+
@callback
|
|
24
|
+
def _async_handle_event(self, webhook_id: str, data: dict[str, str]) -> None: ...
|
|
25
|
+
async def async_added_to_hass(self) -> None: ...
|
|
@@ -8,17 +8,22 @@ from homeassistant.const import PERCENTAGE as PERCENTAGE, UnitOfElectricPotentia
|
|
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
9
9
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
10
10
|
from homeassistant.helpers.typing import StateType as StateType
|
|
11
|
-
from solarlog_cli.solarlog_models import InverterData as InverterData, SolarlogData as SolarlogData
|
|
11
|
+
from solarlog_cli.solarlog_models import BatteryData as BatteryData, InverterData as InverterData, SolarlogData as SolarlogData
|
|
12
12
|
|
|
13
13
|
@dataclass(frozen=True, kw_only=True)
|
|
14
14
|
class SolarLogCoordinatorSensorEntityDescription(SensorEntityDescription):
|
|
15
15
|
value_fn: Callable[[SolarlogData], StateType | datetime | None]
|
|
16
16
|
|
|
17
|
+
@dataclass(frozen=True, kw_only=True)
|
|
18
|
+
class SolarLogBatterySensorEntityDescription(SensorEntityDescription):
|
|
19
|
+
value_fn: Callable[[BatteryData], float | int | None]
|
|
20
|
+
|
|
17
21
|
@dataclass(frozen=True, kw_only=True)
|
|
18
22
|
class SolarLogInverterSensorEntityDescription(SensorEntityDescription):
|
|
19
23
|
value_fn: Callable[[InverterData], float | None]
|
|
20
24
|
|
|
21
25
|
SOLARLOG_SENSOR_TYPES: tuple[SolarLogCoordinatorSensorEntityDescription, ...]
|
|
26
|
+
BATTERY_SENSOR_TYPES: tuple[SolarLogBatterySensorEntityDescription, ...]
|
|
22
27
|
INVERTER_SENSOR_TYPES: tuple[SolarLogInverterSensorEntityDescription, ...]
|
|
23
28
|
|
|
24
29
|
async def async_setup_entry(hass: HomeAssistant, entry: SolarlogConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
@@ -28,6 +33,11 @@ class SolarLogCoordinatorSensor(SolarLogCoordinatorEntity, SensorEntity):
|
|
|
28
33
|
@property
|
|
29
34
|
def native_value(self) -> StateType | datetime: ...
|
|
30
35
|
|
|
36
|
+
class SolarLogBatterySensor(SolarLogCoordinatorEntity, SensorEntity):
|
|
37
|
+
entity_description: SolarLogBatterySensorEntityDescription
|
|
38
|
+
@property
|
|
39
|
+
def native_value(self) -> StateType: ...
|
|
40
|
+
|
|
31
41
|
class SolarLogInverterSensor(SolarLogInverterEntity, SensorEntity):
|
|
32
42
|
entity_description: SolarLogInverterSensorEntityDescription
|
|
33
43
|
@property
|
|
@@ -11,7 +11,6 @@ type SpeedTestConfigEntry = ConfigEntry[SpeedTestDataCoordinator]
|
|
|
11
11
|
|
|
12
12
|
class SpeedTestDataCoordinator(DataUpdateCoordinator[dict[str, Any]]):
|
|
13
13
|
config_entry: SpeedTestConfigEntry
|
|
14
|
-
hass: Incomplete
|
|
15
14
|
api: Incomplete
|
|
16
15
|
servers: dict[str, dict]
|
|
17
16
|
def __init__(self, hass: HomeAssistant, config_entry: SpeedTestConfigEntry, api: speedtest.Speedtest) -> None: ...
|