homeassistant-stubs 2025.8.2__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 +3 -2
- homeassistant-stubs/components/alexa_devices/config_flow.pyi +5 -2
- homeassistant-stubs/components/alexa_devices/const.pyi +2 -0
- homeassistant-stubs/components/alexa_devices/coordinator.pyi +1 -1
- homeassistant-stubs/components/amberelectric/config_flow.pyi +1 -1
- homeassistant-stubs/components/amberelectric/const.pyi +1 -1
- homeassistant-stubs/components/amberelectric/coordinator.pyi +1 -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/nanoleaf/config_flow.pyi +1 -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 +8 -1
- 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/withings/diagnostics.pyi +4 -0
- 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/config_flow.pyi +6 -0
- 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/sensor.pyi +7 -4
- 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.2.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.8.2.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/RECORD +228 -203
- 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.2.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.8.2.dist-info → homeassistant_stubs-2025.9.0b0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN
|
|
2
|
-
from .
|
|
3
|
-
from .
|
|
4
|
-
from .models import ZwaveJSConfigEntry as ZwaveJSConfigEntry
|
|
2
|
+
from .entity import NewZwaveDiscoveryInfo as NewZwaveDiscoveryInfo, ZWaveBaseEntity as ZWaveBaseEntity
|
|
3
|
+
from .models import NewZWaveDiscoverySchema as NewZWaveDiscoverySchema, ValueType as ValueType, ZWaveValueDiscoverySchema as ZWaveValueDiscoverySchema, ZwaveDiscoveryInfo as ZwaveDiscoveryInfo, ZwaveJSConfigEntry as ZwaveJSConfigEntry
|
|
5
4
|
from _typeshed import Incomplete
|
|
6
|
-
from dataclasses import dataclass
|
|
5
|
+
from dataclasses import dataclass, field
|
|
7
6
|
from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
|
|
8
|
-
from homeassistant.const import EntityCategory as EntityCategory
|
|
7
|
+
from homeassistant.const import EntityCategory as EntityCategory, Platform as Platform
|
|
9
8
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
10
9
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
|
10
|
+
from homeassistant.helpers.entity import Entity as Entity
|
|
11
11
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
|
12
|
+
from zwave_js_server.const.command_class.notification import NotificationEvent as NotificationEvent
|
|
12
13
|
from zwave_js_server.model.driver import Driver as Driver
|
|
13
14
|
|
|
14
15
|
PARALLEL_UPDATES: int
|
|
@@ -31,21 +32,25 @@ NOTIFICATION_WEATHER: str
|
|
|
31
32
|
NOTIFICATION_IRRIGATION: str
|
|
32
33
|
NOTIFICATION_GAS: str
|
|
33
34
|
|
|
34
|
-
@dataclass(frozen=True)
|
|
35
|
+
@dataclass(frozen=True, kw_only=True)
|
|
35
36
|
class NotificationZWaveJSEntityDescription(BinarySensorEntityDescription):
|
|
36
|
-
|
|
37
|
-
states:
|
|
37
|
+
not_states: set[NotificationEvent | int] = field(default_factory=Incomplete)
|
|
38
|
+
states: set[NotificationEvent | int] | None = ...
|
|
38
39
|
|
|
39
40
|
@dataclass(frozen=True, kw_only=True)
|
|
40
41
|
class PropertyZWaveJSEntityDescription(BinarySensorEntityDescription):
|
|
41
42
|
on_states: tuple[str, ...]
|
|
42
43
|
|
|
44
|
+
@dataclass(frozen=True, kw_only=True)
|
|
45
|
+
class NewNotificationZWaveJSEntityDescription(BinarySensorEntityDescription):
|
|
46
|
+
state_key: str
|
|
47
|
+
|
|
43
48
|
NOTIFICATION_SENSOR_MAPPINGS: tuple[NotificationZWaveJSEntityDescription, ...]
|
|
44
49
|
PROPERTY_SENSOR_MAPPINGS: dict[str, PropertyZWaveJSEntityDescription]
|
|
45
50
|
BOOLEAN_SENSOR_MAPPINGS: dict[tuple[int, int | str], BinarySensorEntityDescription]
|
|
46
51
|
|
|
47
52
|
@callback
|
|
48
|
-
def is_valid_notification_binary_sensor(info: ZwaveDiscoveryInfo) -> bool | NotificationZWaveJSEntityDescription: ...
|
|
53
|
+
def is_valid_notification_binary_sensor(info: ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo) -> bool | NotificationZWaveJSEntityDescription: ...
|
|
49
54
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ZwaveJSConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
50
55
|
|
|
51
56
|
class ZWaveBooleanBinarySensor(ZWaveBaseEntity, BinarySensorEntity):
|
|
@@ -60,7 +65,7 @@ class ZWaveNotificationBinarySensor(ZWaveBaseEntity, BinarySensorEntity):
|
|
|
60
65
|
entity_description: Incomplete
|
|
61
66
|
_attr_name: Incomplete
|
|
62
67
|
_attr_unique_id: Incomplete
|
|
63
|
-
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo, state_key: str, description: NotificationZWaveJSEntityDescription | None = None) -> None: ...
|
|
68
|
+
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo, state_key: str, description: NotificationZWaveJSEntityDescription | None = None) -> None: ...
|
|
64
69
|
@property
|
|
65
70
|
def is_on(self) -> bool | None: ...
|
|
66
71
|
|
|
@@ -75,3 +80,5 @@ class ZWaveConfigParameterBinarySensor(ZWaveBooleanBinarySensor):
|
|
|
75
80
|
_attr_entity_category: Incomplete
|
|
76
81
|
_attr_name: Incomplete
|
|
77
82
|
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo) -> None: ...
|
|
83
|
+
|
|
84
|
+
DISCOVERY_SCHEMAS: list[NewZWaveDiscoverySchema]
|
|
@@ -12,6 +12,7 @@ from homeassistant.const import CONF_NAME as CONF_NAME, CONF_URL as CONF_URL
|
|
|
12
12
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
13
13
|
from homeassistant.data_entry_flow import AbortFlow as AbortFlow
|
|
14
14
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
15
|
+
from homeassistant.helpers import selector as selector
|
|
15
16
|
from homeassistant.helpers.hassio import is_hassio as is_hassio
|
|
16
17
|
from homeassistant.helpers.service_info.hassio import HassioServiceInfo as HassioServiceInfo
|
|
17
18
|
from homeassistant.helpers.service_info.usb import UsbServiceInfo as UsbServiceInfo
|
|
@@ -28,6 +29,7 @@ TITLE: str
|
|
|
28
29
|
ADDON_SETUP_TIMEOUT: int
|
|
29
30
|
ADDON_SETUP_TIMEOUT_ROUNDS: int
|
|
30
31
|
ADDON_USER_INPUT_MAP: Incomplete
|
|
32
|
+
CONF_ADDON_RF_REGION: str
|
|
31
33
|
EXAMPLE_SERVER_URL: str
|
|
32
34
|
ON_SUPERVISOR_SCHEMA: Incomplete
|
|
33
35
|
MIN_MIGRATION_SDK_VERSION: Incomplete
|
|
@@ -35,6 +37,7 @@ NETWORK_TYPE_NEW: str
|
|
|
35
37
|
NETWORK_TYPE_EXISTING: str
|
|
36
38
|
ZWAVE_JS_SERVER_INSTRUCTIONS: str
|
|
37
39
|
ZWAVE_JS_UI_MIGRATION_INSTRUCTIONS: str
|
|
40
|
+
RF_REGIONS: Incomplete
|
|
38
41
|
|
|
39
42
|
def get_manual_schema(user_input: dict[str, Any]) -> vol.Schema: ...
|
|
40
43
|
def get_on_supervisor_schema(user_input: dict[str, Any]) -> vol.Schema: ...
|
|
@@ -64,10 +67,12 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
64
67
|
backup_data: bytes | None
|
|
65
68
|
backup_filepath: Path | None
|
|
66
69
|
use_addon: bool
|
|
70
|
+
_addon_config_updates: dict[str, Any]
|
|
67
71
|
_migrating: bool
|
|
68
72
|
_reconfigure_config_entry: ZwaveJSConfigEntry | None
|
|
69
73
|
_usb_discovery: bool
|
|
70
74
|
_recommended_install: bool
|
|
75
|
+
_rf_region: str | None
|
|
71
76
|
def __init__(self) -> None: ...
|
|
72
77
|
async def async_step_install_addon(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
73
78
|
async def async_step_install_failed(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
@@ -92,6 +97,7 @@ class ZWaveJSConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
92
97
|
async def async_step_hassio_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
93
98
|
async def async_step_intent_recommended(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
94
99
|
async def async_step_intent_custom(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
100
|
+
async def async_step_rf_region(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
95
101
|
async def async_step_on_supervisor(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
96
102
|
async def async_step_configure_addon_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
97
103
|
async def async_step_network_type(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
@@ -1,62 +1,18 @@
|
|
|
1
1
|
from .const import COVER_POSITION_PROPERTY_KEYS as COVER_POSITION_PROPERTY_KEYS, COVER_TILT_PROPERTY_KEYS as COVER_TILT_PROPERTY_KEYS, LOGGER as LOGGER
|
|
2
2
|
from .discovery_data_template import BaseDiscoverySchemaDataTemplate as BaseDiscoverySchemaDataTemplate, ConfigurableFanValueMappingDataTemplate as ConfigurableFanValueMappingDataTemplate, CoverTiltDataTemplate as CoverTiltDataTemplate, DynamicCurrentTempClimateDataTemplate as DynamicCurrentTempClimateDataTemplate, FanValueMapping as FanValueMapping, FixedFanValueMappingDataTemplate as FixedFanValueMappingDataTemplate, NumericSensorDataTemplate as NumericSensorDataTemplate
|
|
3
|
-
from .
|
|
3
|
+
from .entity import NewZwaveDiscoveryInfo as NewZwaveDiscoveryInfo
|
|
4
|
+
from .models import FirmwareVersionRange as FirmwareVersionRange, NewZWaveDiscoverySchema as NewZWaveDiscoverySchema, ValueType as ValueType, ZWaveValueDiscoverySchema as ZWaveValueDiscoverySchema, ZwaveDiscoveryInfo as ZwaveDiscoveryInfo, ZwaveValueID as ZwaveValueID
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
|
-
from awesomeversion import AwesomeVersion
|
|
6
6
|
from collections.abc import Generator
|
|
7
|
-
from dataclasses import dataclass
|
|
8
|
-
from enum import StrEnum
|
|
7
|
+
from dataclasses import dataclass
|
|
9
8
|
from homeassistant.const import EntityCategory as EntityCategory, Platform as Platform
|
|
10
9
|
from homeassistant.core import callback as callback
|
|
11
10
|
from homeassistant.helpers.device_registry import DeviceEntry as DeviceEntry
|
|
12
|
-
from typing import Any
|
|
13
11
|
from zwave_js_server.model.node import Node as ZwaveNode
|
|
14
12
|
from zwave_js_server.model.value import ConfigurationValue, Value as ZwaveValue
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
BOOLEAN = 'boolean'
|
|
19
|
-
NUMBER = 'number'
|
|
20
|
-
STRING = 'string'
|
|
21
|
-
|
|
22
|
-
class DataclassMustHaveAtLeastOne:
|
|
23
|
-
def __post_init__(self) -> None: ...
|
|
24
|
-
|
|
25
|
-
@dataclass
|
|
26
|
-
class FirmwareVersionRange(DataclassMustHaveAtLeastOne):
|
|
27
|
-
min: str | None = ...
|
|
28
|
-
max: str | None = ...
|
|
29
|
-
min_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
30
|
-
max_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
31
|
-
def __post_init__(self) -> None: ...
|
|
32
|
-
|
|
33
|
-
@dataclass
|
|
34
|
-
class ZwaveDiscoveryInfo:
|
|
35
|
-
node: ZwaveNode
|
|
36
|
-
primary_value: ZwaveValue
|
|
37
|
-
assumed_state: bool
|
|
38
|
-
platform: Platform
|
|
39
|
-
platform_data: Any
|
|
40
|
-
additional_value_ids_to_watch: set[str]
|
|
41
|
-
platform_hint: str | None = ...
|
|
42
|
-
platform_data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
43
|
-
entity_registry_enabled_default: bool = ...
|
|
44
|
-
entity_category: EntityCategory | None = ...
|
|
45
|
-
|
|
46
|
-
@dataclass
|
|
47
|
-
class ZWaveValueDiscoverySchema(DataclassMustHaveAtLeastOne):
|
|
48
|
-
command_class: set[int] | None = ...
|
|
49
|
-
endpoint: set[int] | None = ...
|
|
50
|
-
property: set[str | int] | None = ...
|
|
51
|
-
property_name: set[str] | None = ...
|
|
52
|
-
property_key: set[str | int | None] | None = ...
|
|
53
|
-
not_property_key: set[str | int | None] | None = ...
|
|
54
|
-
type: set[str] | None = ...
|
|
55
|
-
readable: bool | None = ...
|
|
56
|
-
writeable: bool | None = ...
|
|
57
|
-
any_available_states: set[tuple[int, str]] | None = ...
|
|
58
|
-
value: Any | None = ...
|
|
59
|
-
stateful: bool | None = ...
|
|
14
|
+
NEW_DISCOVERY_SCHEMAS: dict[Platform, list[NewZWaveDiscoverySchema]]
|
|
15
|
+
SUPPORTED_PLATFORMS: Incomplete
|
|
60
16
|
|
|
61
17
|
@dataclass
|
|
62
18
|
class ZWaveDiscoverySchema:
|
|
@@ -88,9 +44,9 @@ WINDOW_COVERING_SLAT_CURRENT_VALUE_SCHEMA: Incomplete
|
|
|
88
44
|
DISCOVERY_SCHEMAS: Incomplete
|
|
89
45
|
|
|
90
46
|
@callback
|
|
91
|
-
def async_discover_node_values(node: ZwaveNode, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo]: ...
|
|
47
|
+
def async_discover_node_values(node: ZwaveNode, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo]: ...
|
|
92
48
|
@callback
|
|
93
|
-
def async_discover_single_value(value: ZwaveValue, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo]: ...
|
|
49
|
+
def async_discover_single_value(value: ZwaveValue, device: DeviceEntry, discovered_value_ids: dict[str, set[str]]) -> Generator[ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo]: ...
|
|
94
50
|
@callback
|
|
95
51
|
def async_discover_single_configuration_value(value: ConfigurationValue) -> Generator[ZwaveDiscoveryInfo]: ...
|
|
96
52
|
@callback
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .const import ENTITY_DESC_KEY_BATTERY_LEVEL as ENTITY_DESC_KEY_BATTERY_LEVEL, ENTITY_DESC_KEY_BATTERY_LIST_STATE as ENTITY_DESC_KEY_BATTERY_LIST_STATE, ENTITY_DESC_KEY_BATTERY_MAXIMUM_CAPACITY as ENTITY_DESC_KEY_BATTERY_MAXIMUM_CAPACITY, ENTITY_DESC_KEY_BATTERY_TEMPERATURE as ENTITY_DESC_KEY_BATTERY_TEMPERATURE, ENTITY_DESC_KEY_CO as ENTITY_DESC_KEY_CO, ENTITY_DESC_KEY_CO2 as ENTITY_DESC_KEY_CO2, ENTITY_DESC_KEY_CURRENT as ENTITY_DESC_KEY_CURRENT, ENTITY_DESC_KEY_ENERGY_MEASUREMENT as ENTITY_DESC_KEY_ENERGY_MEASUREMENT, ENTITY_DESC_KEY_ENERGY_PRODUCTION_POWER as ENTITY_DESC_KEY_ENERGY_PRODUCTION_POWER, ENTITY_DESC_KEY_ENERGY_PRODUCTION_TIME as ENTITY_DESC_KEY_ENERGY_PRODUCTION_TIME, ENTITY_DESC_KEY_ENERGY_PRODUCTION_TODAY as ENTITY_DESC_KEY_ENERGY_PRODUCTION_TODAY, ENTITY_DESC_KEY_ENERGY_PRODUCTION_TOTAL as ENTITY_DESC_KEY_ENERGY_PRODUCTION_TOTAL, ENTITY_DESC_KEY_ENERGY_TOTAL_INCREASING as ENTITY_DESC_KEY_ENERGY_TOTAL_INCREASING, ENTITY_DESC_KEY_HUMIDITY as ENTITY_DESC_KEY_HUMIDITY, ENTITY_DESC_KEY_ILLUMINANCE as ENTITY_DESC_KEY_ILLUMINANCE, ENTITY_DESC_KEY_MEASUREMENT as ENTITY_DESC_KEY_MEASUREMENT, ENTITY_DESC_KEY_POWER as ENTITY_DESC_KEY_POWER, ENTITY_DESC_KEY_POWER_FACTOR as ENTITY_DESC_KEY_POWER_FACTOR, ENTITY_DESC_KEY_PRESSURE as ENTITY_DESC_KEY_PRESSURE, ENTITY_DESC_KEY_SIGNAL_STRENGTH as ENTITY_DESC_KEY_SIGNAL_STRENGTH, ENTITY_DESC_KEY_TARGET_TEMPERATURE as ENTITY_DESC_KEY_TARGET_TEMPERATURE, ENTITY_DESC_KEY_TEMPERATURE as ENTITY_DESC_KEY_TEMPERATURE, ENTITY_DESC_KEY_TOTAL_INCREASING as ENTITY_DESC_KEY_TOTAL_INCREASING, ENTITY_DESC_KEY_UV_INDEX as ENTITY_DESC_KEY_UV_INDEX, ENTITY_DESC_KEY_VOLTAGE as ENTITY_DESC_KEY_VOLTAGE
|
|
2
|
-
from .
|
|
2
|
+
from .models import BaseDiscoverySchemaDataTemplate as BaseDiscoverySchemaDataTemplate, ZwaveValueID as ZwaveValueID
|
|
3
3
|
from _typeshed import Incomplete
|
|
4
4
|
from collections.abc import Iterable, Mapping
|
|
5
5
|
from dataclasses import dataclass, field
|
|
@@ -9,7 +9,6 @@ from typing import Any
|
|
|
9
9
|
from zwave_js_server.const.command_class.energy_production import EnergyProductionParameter, EnergyProductionScaleType as EnergyProductionScaleType
|
|
10
10
|
from zwave_js_server.const.command_class.meter import MeterScaleType as MeterScaleType
|
|
11
11
|
from zwave_js_server.const.command_class.multilevel_sensor import MultilevelSensorScaleType as MultilevelSensorScaleType, MultilevelSensorType
|
|
12
|
-
from zwave_js_server.model.node import Node as ZwaveNode
|
|
13
12
|
from zwave_js_server.model.value import ConfigurationValue as ZwaveConfigurationValue, Value as ZwaveValue
|
|
14
13
|
|
|
15
14
|
ENERGY_PRODUCTION_DEVICE_CLASS_MAP: dict[str, list[EnergyProductionParameter]]
|
|
@@ -20,15 +19,6 @@ METER_UNIT_MAP: dict[str, list[MeterScaleType]]
|
|
|
20
19
|
MULTILEVEL_SENSOR_UNIT_MAP: dict[str, list[MultilevelSensorScaleType]]
|
|
21
20
|
_LOGGER: Incomplete
|
|
22
21
|
|
|
23
|
-
@dataclass
|
|
24
|
-
class BaseDiscoverySchemaDataTemplate:
|
|
25
|
-
static_data: Any | None = ...
|
|
26
|
-
def resolve_data(self, value: ZwaveValue) -> Any: ...
|
|
27
|
-
def values_to_watch(self, resolved_data: Any) -> Iterable[ZwaveValue | None]: ...
|
|
28
|
-
def value_ids_to_watch(self, resolved_data: Any) -> set[str]: ...
|
|
29
|
-
@staticmethod
|
|
30
|
-
def _get_value_from_id(node: ZwaveNode, value_id_obj: ZwaveValueID) -> ZwaveValue | ZwaveConfigurationValue | None: ...
|
|
31
|
-
|
|
32
22
|
@dataclass
|
|
33
23
|
class DynamicCurrentTempClimateDataTemplate(BaseDiscoverySchemaDataTemplate):
|
|
34
24
|
lookup_table: dict[str | int, ZwaveValueID] = field(default_factory=dict)
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN, EVENT_VALUE_UPDATED as EVENT_VALUE_UPDATED, LOGGER as LOGGER
|
|
2
|
-
from .
|
|
2
|
+
from .discovery_data_template import BaseDiscoverySchemaDataTemplate as BaseDiscoverySchemaDataTemplate
|
|
3
3
|
from .helpers import get_device_id as get_device_id, get_unique_id as get_unique_id, get_valueless_base_unique_id as get_valueless_base_unique_id
|
|
4
|
+
from .models import PlatformZwaveDiscoveryInfo as PlatformZwaveDiscoveryInfo, ZwaveDiscoveryInfo as ZwaveDiscoveryInfo
|
|
4
5
|
from _typeshed import Incomplete
|
|
5
6
|
from collections.abc import Sequence
|
|
7
|
+
from dataclasses import dataclass
|
|
6
8
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
7
9
|
from homeassistant.core import callback as callback
|
|
8
10
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
|
9
11
|
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
|
10
12
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
|
11
|
-
from homeassistant.helpers.entity import Entity as Entity
|
|
13
|
+
from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
|
|
12
14
|
from homeassistant.helpers.typing import UNDEFINED as UNDEFINED
|
|
13
15
|
from typing import Any
|
|
14
16
|
from zwave_js_server.model.driver import Driver as Driver
|
|
@@ -16,6 +18,13 @@ from zwave_js_server.model.value import SetValueResult as SetValueResult, Value
|
|
|
16
18
|
|
|
17
19
|
EVENT_VALUE_REMOVED: str
|
|
18
20
|
|
|
21
|
+
@dataclass(kw_only=True)
|
|
22
|
+
class NewZwaveDiscoveryInfo(PlatformZwaveDiscoveryInfo):
|
|
23
|
+
entity_class: type[ZWaveBaseEntity]
|
|
24
|
+
entity_description: EntityDescription
|
|
25
|
+
platform_data: Any = ...
|
|
26
|
+
platform_data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
27
|
+
|
|
19
28
|
class ZWaveBaseEntity(Entity):
|
|
20
29
|
_attr_should_poll: bool
|
|
21
30
|
_attr_has_entity_name: bool
|
|
@@ -25,11 +34,12 @@ class ZWaveBaseEntity(Entity):
|
|
|
25
34
|
watched_value_ids: Incomplete
|
|
26
35
|
_attr_name: Incomplete
|
|
27
36
|
_attr_unique_id: Incomplete
|
|
28
|
-
|
|
37
|
+
entity_description: Incomplete
|
|
38
|
+
_attr_entity_registry_enabled_default: Incomplete
|
|
29
39
|
_attr_entity_category: Incomplete
|
|
30
|
-
_attr_assumed_state:
|
|
40
|
+
_attr_assumed_state: Incomplete
|
|
31
41
|
_attr_device_info: Incomplete
|
|
32
|
-
def __init__(self, config_entry: ConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo) -> None: ...
|
|
42
|
+
def __init__(self, config_entry: ConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo) -> None: ...
|
|
33
43
|
@callback
|
|
34
44
|
def on_value_update(self) -> None: ...
|
|
35
45
|
async def _async_poll_value(self, value_or_id: str | ZwaveValue) -> None: ...
|
|
@@ -23,13 +23,6 @@ from zwave_js_server.version import VersionInfo as VersionInfo
|
|
|
23
23
|
DRIVER_READY_EVENT_TIMEOUT: int
|
|
24
24
|
SERVER_VERSION_TIMEOUT: int
|
|
25
25
|
|
|
26
|
-
@dataclass
|
|
27
|
-
class ZwaveValueID:
|
|
28
|
-
property_: str | int
|
|
29
|
-
command_class: int
|
|
30
|
-
endpoint: int | None = ...
|
|
31
|
-
property_key: str | int | None = ...
|
|
32
|
-
|
|
33
26
|
@dataclass
|
|
34
27
|
class ZwaveValueMatcher:
|
|
35
28
|
property_: str | int | None = ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from .const import DOMAIN as DOMAIN
|
|
2
|
-
from .discovery import ZwaveDiscoveryInfo as ZwaveDiscoveryInfo
|
|
3
2
|
from .helpers import get_unique_id as get_unique_id, get_valueless_base_unique_id as get_valueless_base_unique_id
|
|
3
|
+
from .models import PlatformZwaveDiscoveryInfo as PlatformZwaveDiscoveryInfo
|
|
4
4
|
from _typeshed import Incomplete
|
|
5
5
|
from dataclasses import dataclass
|
|
6
6
|
from homeassistant.const import Platform as Platform, STATE_UNAVAILABLE as STATE_UNAVAILABLE
|
|
@@ -29,7 +29,7 @@ def async_migrate_old_entity(hass: HomeAssistant, ent_reg: er.EntityRegistry, re
|
|
|
29
29
|
@callback
|
|
30
30
|
def async_migrate_unique_id(ent_reg: er.EntityRegistry, platform: Platform, old_unique_id: str, new_unique_id: str) -> None: ...
|
|
31
31
|
@callback
|
|
32
|
-
def async_migrate_discovered_value(hass: HomeAssistant, ent_reg: er.EntityRegistry, registered_unique_ids: set[str], device: dr.DeviceEntry, driver: Driver, disc_info:
|
|
32
|
+
def async_migrate_discovered_value(hass: HomeAssistant, ent_reg: er.EntityRegistry, registered_unique_ids: set[str], device: dr.DeviceEntry, driver: Driver, disc_info: PlatformZwaveDiscoveryInfo) -> None: ...
|
|
33
33
|
@callback
|
|
34
34
|
def async_migrate_statistics_sensors(hass: HomeAssistant, driver: Driver, node: Node, key_map: dict[str, str]) -> None: ...
|
|
35
35
|
@callback
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
from . import DriverEvents as DriverEvents
|
|
2
|
-
from
|
|
2
|
+
from awesomeversion import AwesomeVersion
|
|
3
|
+
from collections.abc import Iterable
|
|
4
|
+
from dataclasses import dataclass, field
|
|
5
|
+
from enum import StrEnum
|
|
3
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
7
|
+
from homeassistant.const import EntityCategory as EntityCategory, Platform as Platform
|
|
8
|
+
from homeassistant.helpers.entity import EntityDescription as EntityDescription
|
|
9
|
+
from typing import Any
|
|
4
10
|
from zwave_js_server.client import Client as ZwaveClient
|
|
5
11
|
from zwave_js_server.const import LogLevel as LogLevel
|
|
12
|
+
from zwave_js_server.model.node import Node as ZwaveNode
|
|
13
|
+
from zwave_js_server.model.value import ConfigurationValue as ZwaveConfigurationValue, Value as ZwaveValue
|
|
6
14
|
|
|
7
15
|
@dataclass
|
|
8
16
|
class ZwaveJSData:
|
|
@@ -10,3 +18,89 @@ class ZwaveJSData:
|
|
|
10
18
|
driver_events: DriverEvents
|
|
11
19
|
old_server_log_level: LogLevel | None = ...
|
|
12
20
|
type ZwaveJSConfigEntry = ConfigEntry[ZwaveJSData]
|
|
21
|
+
|
|
22
|
+
@dataclass
|
|
23
|
+
class ZwaveValueID:
|
|
24
|
+
property_: str | int
|
|
25
|
+
command_class: int
|
|
26
|
+
endpoint: int | None = ...
|
|
27
|
+
property_key: str | int | None = ...
|
|
28
|
+
|
|
29
|
+
class ValueType(StrEnum):
|
|
30
|
+
ANY = 'any'
|
|
31
|
+
BOOLEAN = 'boolean'
|
|
32
|
+
NUMBER = 'number'
|
|
33
|
+
STRING = 'string'
|
|
34
|
+
|
|
35
|
+
class DataclassMustHaveAtLeastOne:
|
|
36
|
+
def __post_init__(self) -> None: ...
|
|
37
|
+
|
|
38
|
+
@dataclass
|
|
39
|
+
class FirmwareVersionRange(DataclassMustHaveAtLeastOne):
|
|
40
|
+
min: str | None = ...
|
|
41
|
+
max: str | None = ...
|
|
42
|
+
min_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
43
|
+
max_ver: AwesomeVersion | None = field(default=None, init=False)
|
|
44
|
+
def __post_init__(self) -> None: ...
|
|
45
|
+
|
|
46
|
+
@dataclass
|
|
47
|
+
class PlatformZwaveDiscoveryInfo:
|
|
48
|
+
node: ZwaveNode
|
|
49
|
+
primary_value: ZwaveValue
|
|
50
|
+
assumed_state: bool
|
|
51
|
+
platform: Platform
|
|
52
|
+
additional_value_ids_to_watch: set[str]
|
|
53
|
+
|
|
54
|
+
@dataclass
|
|
55
|
+
class ZwaveDiscoveryInfo(PlatformZwaveDiscoveryInfo):
|
|
56
|
+
platform_data: Any = ...
|
|
57
|
+
platform_data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
58
|
+
platform_hint: str | None = ...
|
|
59
|
+
entity_registry_enabled_default: bool = ...
|
|
60
|
+
entity_category: EntityCategory | None = ...
|
|
61
|
+
|
|
62
|
+
@dataclass
|
|
63
|
+
class ZWaveValueDiscoverySchema(DataclassMustHaveAtLeastOne):
|
|
64
|
+
command_class: set[int] | None = ...
|
|
65
|
+
endpoint: set[int] | None = ...
|
|
66
|
+
property: set[str | int] | None = ...
|
|
67
|
+
property_name: set[str] | None = ...
|
|
68
|
+
property_key: set[str | int | None] | None = ...
|
|
69
|
+
not_property_key: set[str | int | None] | None = ...
|
|
70
|
+
type: set[str] | None = ...
|
|
71
|
+
readable: bool | None = ...
|
|
72
|
+
writeable: bool | None = ...
|
|
73
|
+
any_available_states: set[tuple[int, str]] | None = ...
|
|
74
|
+
any_available_states_keys: set[int] | None = ...
|
|
75
|
+
any_available_cc_specific: set[tuple[Any, Any]] | None = ...
|
|
76
|
+
value: Any | None = ...
|
|
77
|
+
stateful: bool | None = ...
|
|
78
|
+
|
|
79
|
+
@dataclass
|
|
80
|
+
class NewZWaveDiscoverySchema:
|
|
81
|
+
platform: Platform
|
|
82
|
+
entity_description: EntityDescription
|
|
83
|
+
entity_class: type
|
|
84
|
+
primary_value: ZWaveValueDiscoverySchema
|
|
85
|
+
data_template: BaseDiscoverySchemaDataTemplate | None = ...
|
|
86
|
+
manufacturer_id: set[int] | None = ...
|
|
87
|
+
product_id: set[int] | None = ...
|
|
88
|
+
product_type: set[int] | None = ...
|
|
89
|
+
firmware_version_range: FirmwareVersionRange | None = ...
|
|
90
|
+
firmware_version: set[str] | None = ...
|
|
91
|
+
device_class_basic: set[str | int] | None = ...
|
|
92
|
+
device_class_generic: set[str | int] | None = ...
|
|
93
|
+
device_class_specific: set[str | int] | None = ...
|
|
94
|
+
required_values: list[ZWaveValueDiscoverySchema] | None = ...
|
|
95
|
+
absent_values: list[ZWaveValueDiscoverySchema] | None = ...
|
|
96
|
+
allow_multi: bool = ...
|
|
97
|
+
assumed_state: bool = ...
|
|
98
|
+
|
|
99
|
+
@dataclass
|
|
100
|
+
class BaseDiscoverySchemaDataTemplate:
|
|
101
|
+
static_data: Any | None = ...
|
|
102
|
+
def resolve_data(self, value: ZwaveValue) -> Any: ...
|
|
103
|
+
def values_to_watch(self, resolved_data: Any) -> Iterable[ZwaveValue | None]: ...
|
|
104
|
+
def value_ids_to_watch(self, resolved_data: Any) -> set[str]: ...
|
|
105
|
+
@staticmethod
|
|
106
|
+
def _get_value_from_id(node: ZwaveNode, value_id_obj: ZwaveValueID) -> ZwaveValue | ZwaveConfigurationValue | None: ...
|
|
@@ -19,10 +19,10 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|
|
19
19
|
from homeassistant.helpers.typing import StateType as StateType, UNDEFINED as UNDEFINED
|
|
20
20
|
from typing import Any
|
|
21
21
|
from zwave_js_server.model.controller import Controller
|
|
22
|
-
from zwave_js_server.model.controller.statistics import ControllerStatistics
|
|
22
|
+
from zwave_js_server.model.controller.statistics import ControllerStatistics
|
|
23
23
|
from zwave_js_server.model.driver import Driver as Driver
|
|
24
24
|
from zwave_js_server.model.node import Node as ZwaveNode
|
|
25
|
-
from zwave_js_server.model.node.statistics import NodeStatistics
|
|
25
|
+
from zwave_js_server.model.node.statistics import NodeStatistics
|
|
26
26
|
|
|
27
27
|
PARALLEL_UPDATES: int
|
|
28
28
|
ENTITY_DESCRIPTION_KEY_UNIT_MAP: dict[tuple[str, str], SensorEntityDescription]
|
|
@@ -128,9 +128,12 @@ class ZWaveStatisticsSensor(SensorEntity):
|
|
|
128
128
|
_base_unique_id: Incomplete
|
|
129
129
|
_attr_unique_id: Incomplete
|
|
130
130
|
_attr_device_info: Incomplete
|
|
131
|
-
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, statistics_src:
|
|
131
|
+
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, statistics_src: Controller | ZwaveNode, description: ZWaveJSStatisticsSensorEntityDescription) -> None: ...
|
|
132
132
|
async def async_poll_value(self, _: bool) -> None: ...
|
|
133
|
+
@callback
|
|
134
|
+
def _statistics_updated(self, event_data: dict) -> None: ...
|
|
133
135
|
_attr_native_value: Incomplete
|
|
136
|
+
_attr_available: bool
|
|
134
137
|
@callback
|
|
135
|
-
def
|
|
138
|
+
def _set_statistics(self, statistics: ControllerStatistics | NodeStatistics) -> None: ...
|
|
136
139
|
async def async_added_to_hass(self) -> None: ...
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
from ..const import
|
|
1
|
+
from ..const import ATTR_EVENT as ATTR_EVENT, ATTR_EVENT_DATA as ATTR_EVENT_DATA, ATTR_EVENT_SOURCE as ATTR_EVENT_SOURCE, ATTR_NODE_ID as ATTR_NODE_ID, ATTR_PARTIAL_DICT_MATCH as ATTR_PARTIAL_DICT_MATCH, DOMAIN as DOMAIN
|
|
2
2
|
from ..helpers import async_get_nodes_from_targets as async_get_nodes_from_targets, get_device_id as get_device_id, get_home_and_node_id_from_device_entry as get_home_and_node_id_from_device_entry
|
|
3
3
|
from .trigger_helpers import async_bypass_dynamic_config_validation as async_bypass_dynamic_config_validation
|
|
4
4
|
from _typeshed import Incomplete
|
|
5
5
|
from collections.abc import Callable as Callable
|
|
6
|
-
from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID, CONF_PLATFORM as CONF_PLATFORM
|
|
6
|
+
from homeassistant.const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID, CONF_PLATFORM as CONF_PLATFORM
|
|
7
7
|
from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, HassJob as HassJob, HomeAssistant as HomeAssistant, callback as callback
|
|
8
8
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
|
9
9
|
from homeassistant.helpers.trigger import Trigger as Trigger, TriggerActionType as TriggerActionType, TriggerInfo as TriggerInfo
|
|
10
10
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
11
11
|
from zwave_js_server.model.driver import Driver as Driver
|
|
12
12
|
|
|
13
|
+
RELATIVE_PLATFORM_TYPE: Incomplete
|
|
13
14
|
PLATFORM_TYPE: Incomplete
|
|
14
15
|
|
|
15
16
|
def validate_non_node_event_source(obj: dict) -> dict: ...
|
|
@@ -26,5 +27,5 @@ class EventTrigger(Trigger):
|
|
|
26
27
|
_hass: Incomplete
|
|
27
28
|
def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
|
|
28
29
|
@classmethod
|
|
29
|
-
async def
|
|
30
|
-
async def
|
|
30
|
+
async def async_validate_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
|
|
31
|
+
async def async_attach(self, action: TriggerActionType, trigger_info: TriggerInfo) -> CALLBACK_TYPE: ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from ..const import
|
|
1
|
+
from ..const import DOMAIN as DOMAIN
|
|
2
2
|
from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
|
|
3
|
-
from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID
|
|
3
|
+
from homeassistant.const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_ENTITY_ID as ATTR_ENTITY_ID
|
|
4
4
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
5
5
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
6
6
|
|
|
@@ -12,6 +12,7 @@ from homeassistant.helpers.typing import ConfigType as ConfigType
|
|
|
12
12
|
from zwave_js_server.model.driver import Driver as Driver
|
|
13
13
|
from zwave_js_server.model.value import Value as Value
|
|
14
14
|
|
|
15
|
+
RELATIVE_PLATFORM_TYPE: Incomplete
|
|
15
16
|
PLATFORM_TYPE: Incomplete
|
|
16
17
|
ATTR_FROM: str
|
|
17
18
|
ATTR_TO: str
|
|
@@ -25,5 +26,5 @@ class ValueUpdatedTrigger(Trigger):
|
|
|
25
26
|
_hass: Incomplete
|
|
26
27
|
def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
|
|
27
28
|
@classmethod
|
|
28
|
-
async def
|
|
29
|
-
async def
|
|
29
|
+
async def async_validate_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
|
|
30
|
+
async def async_attach(self, action: TriggerActionType, trigger_info: TriggerInfo) -> CALLBACK_TYPE: ...
|
|
@@ -51,7 +51,6 @@ class ZWaveFirmwareUpdateEntity(UpdateEntity):
|
|
|
51
51
|
_attr_has_entity_name: bool
|
|
52
52
|
_attr_should_poll: bool
|
|
53
53
|
_latest_version_firmware: FirmwareUpdateInfo | None
|
|
54
|
-
_status_unsub: Callable[[], None] | None
|
|
55
54
|
_poll_unsub: Callable[[], None] | None
|
|
56
55
|
_progress_unsub: Callable[[], None] | None
|
|
57
56
|
_finished_unsub: Callable[[], None] | None
|
|
@@ -66,8 +65,6 @@ class ZWaveFirmwareUpdateEntity(UpdateEntity):
|
|
|
66
65
|
def __init__(self, driver: Driver, node: ZwaveNode, delay: timedelta, entity_description: ZWaveUpdateEntityDescription) -> None: ...
|
|
67
66
|
@property
|
|
68
67
|
def extra_restore_state_data(self) -> ZWaveFirmwareUpdateExtraStoredData: ...
|
|
69
|
-
@callback
|
|
70
|
-
def _update_on_status_change(self, _: dict[str, Any]) -> None: ...
|
|
71
68
|
_attr_in_progress: bool
|
|
72
69
|
_attr_update_percentage: Incomplete
|
|
73
70
|
@callback
|
|
@@ -129,6 +129,7 @@ class ConfigFlowContext(FlowContext, total=False):
|
|
|
129
129
|
class ConfigFlowResult(FlowResult[ConfigFlowContext, str], total=False):
|
|
130
130
|
minor_version: int
|
|
131
131
|
options: Mapping[str, Any]
|
|
132
|
+
result: ConfigEntry
|
|
132
133
|
subentries: Iterable[ConfigSubentryData]
|
|
133
134
|
version: int
|
|
134
135
|
|
|
@@ -444,7 +445,11 @@ class ConfigSubentryFlow(data_entry_flow.FlowHandler[SubentryFlowContext, Subent
|
|
|
444
445
|
@callback
|
|
445
446
|
def async_create_entry(self, *, title: str | None = None, data: Mapping[str, Any], description: str | None = None, description_placeholders: Mapping[str, str] | None = None, unique_id: str | None = None) -> SubentryFlowResult: ...
|
|
446
447
|
@callback
|
|
448
|
+
def _async_update(self, entry: ConfigEntry, subentry: ConfigSubentry, *, unique_id: str | None | UndefinedType = ..., title: str | UndefinedType = ..., data: Mapping[str, Any] | UndefinedType = ..., data_updates: Mapping[str, Any] | UndefinedType = ...) -> bool: ...
|
|
449
|
+
@callback
|
|
447
450
|
def async_update_and_abort(self, entry: ConfigEntry, subentry: ConfigSubentry, *, unique_id: str | None | UndefinedType = ..., title: str | UndefinedType = ..., data: Mapping[str, Any] | UndefinedType = ..., data_updates: Mapping[str, Any] | UndefinedType = ...) -> SubentryFlowResult: ...
|
|
451
|
+
@callback
|
|
452
|
+
def async_update_reload_and_abort(self, entry: ConfigEntry, subentry: ConfigSubentry, *, unique_id: str | None | UndefinedType = ..., title: str | UndefinedType = ..., data: Mapping[str, Any] | UndefinedType = ..., data_updates: Mapping[str, Any] | UndefinedType = ..., reload_even_if_entry_is_unchanged: bool = True) -> SubentryFlowResult: ...
|
|
448
453
|
@property
|
|
449
454
|
def _entry_id(self) -> str: ...
|
|
450
455
|
@property
|
homeassistant-stubs/const.pyi
CHANGED
|
@@ -341,6 +341,7 @@ ATTR_SERVICE_DATA: Final[str]
|
|
|
341
341
|
ATTR_ID: Final[str]
|
|
342
342
|
ATTR_NAME: Final[str]
|
|
343
343
|
ATTR_ENTITY_ID: Final[str]
|
|
344
|
+
ATTR_CONFIG_ENTRY_ID: Final[str]
|
|
344
345
|
ATTR_AREA_ID: Final[str]
|
|
345
346
|
ATTR_DEVICE_ID: Final[str]
|
|
346
347
|
ATTR_FLOOR_ID: Final[str]
|
|
@@ -392,6 +393,7 @@ ATTR_TEMPERATURE: Final[str]
|
|
|
392
393
|
ATTR_PERSONS: Final[str]
|
|
393
394
|
|
|
394
395
|
class UnitOfApparentPower(StrEnum):
|
|
396
|
+
MILLIVOLT_AMPERE = 'mVA'
|
|
395
397
|
VOLT_AMPERE = 'VA'
|
|
396
398
|
|
|
397
399
|
class UnitOfPower(StrEnum):
|
|
@@ -404,6 +406,7 @@ class UnitOfPower(StrEnum):
|
|
|
404
406
|
BTU_PER_HOUR = 'BTU/h'
|
|
405
407
|
|
|
406
408
|
class UnitOfReactivePower(StrEnum):
|
|
409
|
+
MILLIVOLT_AMPERE_REACTIVE = 'mvar'
|
|
407
410
|
VOLT_AMPERE_REACTIVE = 'var'
|
|
408
411
|
KILO_VOLT_AMPERE_REACTIVE = 'kvar'
|
|
409
412
|
|
|
@@ -440,7 +443,7 @@ class UnitOfElectricCurrent(StrEnum):
|
|
|
440
443
|
AMPERE = 'A'
|
|
441
444
|
|
|
442
445
|
class UnitOfElectricPotential(StrEnum):
|
|
443
|
-
MICROVOLT = '
|
|
446
|
+
MICROVOLT = 'μV'
|
|
444
447
|
MILLIVOLT = 'mV'
|
|
445
448
|
VOLT = 'V'
|
|
446
449
|
KILOVOLT = 'kV'
|
|
@@ -510,6 +513,7 @@ class UnitOfVolume(StrEnum):
|
|
|
510
513
|
|
|
511
514
|
class UnitOfVolumeFlowRate(StrEnum):
|
|
512
515
|
CUBIC_METERS_PER_HOUR = 'm³/h'
|
|
516
|
+
CUBIC_METERS_PER_MINUTE = 'm³/min'
|
|
513
517
|
CUBIC_METERS_PER_SECOND = 'm³/s'
|
|
514
518
|
CUBIC_FEET_PER_MINUTE = 'ft³/min'
|
|
515
519
|
LITERS_PER_HOUR = 'L/h'
|
|
@@ -536,17 +540,17 @@ class UnitOfMass(StrEnum):
|
|
|
536
540
|
GRAMS = 'g'
|
|
537
541
|
KILOGRAMS = 'kg'
|
|
538
542
|
MILLIGRAMS = 'mg'
|
|
539
|
-
MICROGRAMS = '
|
|
543
|
+
MICROGRAMS = 'μg'
|
|
540
544
|
OUNCES = 'oz'
|
|
541
545
|
POUNDS = 'lb'
|
|
542
546
|
STONES = 'st'
|
|
543
547
|
|
|
544
548
|
class UnitOfConductivity(StrEnum, deprecated={'SIEMENS': ('UnitOfConductivity.SIEMENS_PER_CM', '2025.11.0'), 'MICROSIEMENS': ('UnitOfConductivity.MICROSIEMENS_PER_CM', '2025.11.0'), 'MILLISIEMENS': ('UnitOfConductivity.MILLISIEMENS_PER_CM', '2025.11.0')}, metaclass=EnumWithDeprecatedMembers):
|
|
545
549
|
SIEMENS_PER_CM = 'S/cm'
|
|
546
|
-
MICROSIEMENS_PER_CM = '
|
|
550
|
+
MICROSIEMENS_PER_CM = 'μS/cm'
|
|
547
551
|
MILLISIEMENS_PER_CM = 'mS/cm'
|
|
548
552
|
SIEMENS = 'S/cm'
|
|
549
|
-
MICROSIEMENS = '
|
|
553
|
+
MICROSIEMENS = 'μS/cm'
|
|
550
554
|
MILLISIEMENS = 'mS/cm'
|
|
551
555
|
|
|
552
556
|
_DEPRECATED_CONDUCTIVITY: Final[Incomplete]
|
|
@@ -571,8 +575,8 @@ class UnitOfPrecipitationDepth(StrEnum):
|
|
|
571
575
|
CENTIMETERS = 'cm'
|
|
572
576
|
|
|
573
577
|
CONCENTRATION_GRAMS_PER_CUBIC_METER: Final[str]
|
|
574
|
-
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final[str]
|
|
575
578
|
CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER: Final[str]
|
|
579
|
+
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER: Final[str]
|
|
576
580
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT: Final[str]
|
|
577
581
|
CONCENTRATION_PARTS_PER_CUBIC_METER: Final[str]
|
|
578
582
|
CONCENTRATION_PARTS_PER_MILLION: Final[str]
|