homeassistant-stubs 2025.8.2__py3-none-any.whl → 2025.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of homeassistant-stubs might be problematic. Click here for more details.
- 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/alexa_devices/sensor.pyi +1 -1
- homeassistant-stubs/components/alexa_devices/services.pyi +0 -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 +12 -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/deconz/hub/hub.pyi +0 -1
- homeassistant-stubs/components/deconz/services.pyi +0 -1
- 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/config_flow.pyi +2 -2
- homeassistant-stubs/components/mastodon/const.pyi +0 -1
- homeassistant-stubs/components/mastodon/diagnostics.pyi +2 -2
- 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/climate.pyi +3 -1
- 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 +7 -16
- 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/music_assistant/media_browser.pyi +1 -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/websocket_api/http.pyi +1 -0
- 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/yalexs_ble/__init__.pyi +3 -1
- homeassistant-stubs/components/yalexs_ble/config_cache.pyi +10 -0
- homeassistant-stubs/components/yalexs_ble/config_flow.pyi +4 -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 +18 -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 +2 -2
- homeassistant-stubs/helpers/entity_registry.pyi +4 -3
- 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.0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.8.2.dist-info → homeassistant_stubs-2025.9.0.dist-info}/RECORD +241 -215
- 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.0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.8.2.dist-info → homeassistant_stubs-2025.9.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import abc
|
|
2
|
+
from .const import ALLOWED_DAYS as ALLOWED_DAYS, DOMAIN as DOMAIN
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from abc import abstractmethod
|
|
5
|
+
from datetime import date, datetime
|
|
6
|
+
from holidays import HolidayBase as HolidayBase
|
|
7
|
+
from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, ServiceResponse as ServiceResponse, callback as callback
|
|
8
|
+
from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
|
|
9
|
+
from homeassistant.helpers.entity import Entity as Entity
|
|
10
|
+
from homeassistant.helpers.event import async_track_point_in_utc_time as async_track_point_in_utc_time
|
|
11
|
+
|
|
12
|
+
class BaseWorkdayEntity(Entity, metaclass=abc.ABCMeta):
|
|
13
|
+
_attr_has_entity_name: bool
|
|
14
|
+
_attr_translation_key = DOMAIN
|
|
15
|
+
_attr_should_poll: bool
|
|
16
|
+
unsub: CALLBACK_TYPE | None
|
|
17
|
+
_obj_holidays: Incomplete
|
|
18
|
+
_workdays: Incomplete
|
|
19
|
+
_excludes: Incomplete
|
|
20
|
+
_days_offset: Incomplete
|
|
21
|
+
_attr_unique_id: Incomplete
|
|
22
|
+
_attr_device_info: Incomplete
|
|
23
|
+
def __init__(self, obj_holidays: HolidayBase, workdays: list[str], excludes: list[str], days_offset: int, name: str, entry_id: str) -> None: ...
|
|
24
|
+
def is_include(self, day: str, now: date) -> bool: ...
|
|
25
|
+
def is_exclude(self, day: str, now: date) -> bool: ...
|
|
26
|
+
def get_next_interval(self, now: datetime) -> datetime: ...
|
|
27
|
+
def _update_state_and_setup_listener(self) -> None: ...
|
|
28
|
+
@callback
|
|
29
|
+
def point_in_time_listener(self, time_date: datetime) -> None: ...
|
|
30
|
+
async def async_added_to_hass(self) -> None: ...
|
|
31
|
+
@abstractmethod
|
|
32
|
+
def update_data(self, now: datetime) -> None: ...
|
|
33
|
+
def check_date(self, check_date: date) -> ServiceResponse: ...
|
|
34
|
+
def date_is_workday(self, check_date: date) -> bool: ...
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from . import WorkdayConfigEntry as WorkdayConfigEntry
|
|
2
|
+
from .const import CONF_REMOVE_HOLIDAYS as CONF_REMOVE_HOLIDAYS, DOMAIN as DOMAIN, LOGGER as LOGGER
|
|
3
|
+
from holidays import DateLike as DateLike, HolidayBase
|
|
4
|
+
from homeassistant.const import CONF_COUNTRY as CONF_COUNTRY
|
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
|
6
|
+
from homeassistant.exceptions import ConfigEntryError as ConfigEntryError
|
|
7
|
+
from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue
|
|
8
|
+
from homeassistant.setup import SetupPhases as SetupPhases, async_pause_setup as async_pause_setup
|
|
9
|
+
from homeassistant.util import slugify as slugify
|
|
10
|
+
|
|
11
|
+
async def async_validate_country_and_province(hass: HomeAssistant, entry: WorkdayConfigEntry, country: str | None, province: str | None) -> None: ...
|
|
12
|
+
def validate_dates(holiday_list: list[str]) -> list[str]: ...
|
|
13
|
+
def get_holidays_object(country: str | None, province: str | None, year: int, language: str | None, categories: list[str] | None) -> HolidayBase: ...
|
|
14
|
+
def add_remove_custom_holidays(hass: HomeAssistant, entry: WorkdayConfigEntry, country: str | None, calc_add_holidays: list[DateLike], calc_remove_holidays: list[str]) -> None: ...
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from .config_cache import async_get_validated_config as async_get_validated_config
|
|
1
2
|
from .const import CONF_ALWAYS_CONNECTED as CONF_ALWAYS_CONNECTED, CONF_KEY as CONF_KEY, CONF_LOCAL_NAME as CONF_LOCAL_NAME, CONF_SLOT as CONF_SLOT, DEVICE_TIMEOUT as DEVICE_TIMEOUT
|
|
2
3
|
from .models import YaleXSBLEData as YaleXSBLEData
|
|
3
4
|
from .util import async_find_existing_service_info as async_find_existing_service_info, bluetooth_callback_matcher as bluetooth_callback_matcher
|
|
@@ -6,11 +7,12 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
|
6
7
|
from homeassistant.const import CONF_ADDRESS as CONF_ADDRESS, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, Platform as Platform
|
|
7
8
|
from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, CoreState as CoreState, Event as Event, HomeAssistant as HomeAssistant, callback as callback
|
|
8
9
|
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
|
|
9
|
-
from yalexs_ble import ConnectionInfo as ConnectionInfo, LockInfo as LockInfo, LockState as LockState
|
|
10
|
+
from yalexs_ble import ConnectionInfo as ConnectionInfo, LockInfo as LockInfo, LockState as LockState, PushLock
|
|
10
11
|
|
|
11
12
|
type YALEXSBLEConfigEntry = ConfigEntry[YaleXSBLEData]
|
|
12
13
|
PLATFORMS: list[Platform]
|
|
13
14
|
|
|
14
15
|
async def async_setup_entry(hass: HomeAssistant, entry: YALEXSBLEConfigEntry) -> bool: ...
|
|
15
16
|
async def _async_update_listener(hass: HomeAssistant, entry: YALEXSBLEConfigEntry) -> None: ...
|
|
17
|
+
async def _async_wait_for_first_update(push_lock: PushLock, local_name: str) -> None: ...
|
|
16
18
|
async def async_unload_entry(hass: HomeAssistant, entry: YALEXSBLEConfigEntry) -> bool: ...
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
|
2
|
+
from homeassistant.util.hass_dict import HassKey as HassKey
|
|
3
|
+
from yalexs_ble import ValidatedLockConfig as ValidatedLockConfig
|
|
4
|
+
|
|
5
|
+
CONFIG_CACHE: HassKey[dict[str, ValidatedLockConfig]]
|
|
6
|
+
|
|
7
|
+
@callback
|
|
8
|
+
def async_add_validated_config(hass: HomeAssistant, address: str, config: ValidatedLockConfig) -> None: ...
|
|
9
|
+
@callback
|
|
10
|
+
def async_get_validated_config(hass: HomeAssistant, address: str) -> ValidatedLockConfig | None: ...
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from .config_cache import async_add_validated_config as async_add_validated_config, async_get_validated_config as async_get_validated_config
|
|
1
2
|
from .const import CONF_ALWAYS_CONNECTED as CONF_ALWAYS_CONNECTED, CONF_KEY as CONF_KEY, CONF_LOCAL_NAME as CONF_LOCAL_NAME, CONF_SLOT as CONF_SLOT, DOMAIN as DOMAIN
|
|
2
3
|
from .util import async_find_existing_service_info as async_find_existing_service_info, human_readable_name as human_readable_name
|
|
3
4
|
from _typeshed import Incomplete
|
|
@@ -32,7 +33,10 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
|
32
33
|
async def async_step_integration_discovery_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
33
34
|
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
|
34
35
|
async def async_step_reauth_validate(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
36
|
+
async def async_step_key_slot(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
35
37
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
|
38
|
+
@callback
|
|
39
|
+
def _async_get_name_from_address(self, address: str) -> str: ...
|
|
36
40
|
@staticmethod
|
|
37
41
|
@callback
|
|
38
42
|
def async_get_options_flow(config_entry: ConfigEntry) -> YaleXSBLEOptionsFlowHandler: ...
|
|
@@ -14,8 +14,8 @@ class ZoneCondition(Condition):
|
|
|
14
14
|
_config: Incomplete
|
|
15
15
|
def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
|
|
16
16
|
@classmethod
|
|
17
|
-
async def
|
|
18
|
-
async def
|
|
17
|
+
async def async_validate_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
|
|
18
|
+
async def async_get_checker(self) -> ConditionCheckerType: ...
|
|
19
19
|
|
|
20
20
|
CONDITIONS: dict[str, type[Condition]]
|
|
21
21
|
|
|
@@ -2,10 +2,10 @@ import asyncio
|
|
|
2
2
|
from .addon import get_addon_manager as get_addon_manager
|
|
3
3
|
from .api import async_register_api as async_register_api
|
|
4
4
|
from .const import ATTR_ACKNOWLEDGED_FRAMES as ATTR_ACKNOWLEDGED_FRAMES, ATTR_COMMAND_CLASS as ATTR_COMMAND_CLASS, ATTR_COMMAND_CLASS_NAME as ATTR_COMMAND_CLASS_NAME, ATTR_DATA_TYPE as ATTR_DATA_TYPE, ATTR_DATA_TYPE_LABEL as ATTR_DATA_TYPE_LABEL, ATTR_DIRECTION as ATTR_DIRECTION, ATTR_ENDPOINT as ATTR_ENDPOINT, ATTR_EVENT as ATTR_EVENT, ATTR_EVENT_DATA as ATTR_EVENT_DATA, ATTR_EVENT_LABEL as ATTR_EVENT_LABEL, ATTR_EVENT_TYPE as ATTR_EVENT_TYPE, ATTR_EVENT_TYPE_LABEL as ATTR_EVENT_TYPE_LABEL, ATTR_HOME_ID as ATTR_HOME_ID, ATTR_LABEL as ATTR_LABEL, ATTR_NODE_ID as ATTR_NODE_ID, ATTR_PARAMETERS as ATTR_PARAMETERS, ATTR_PROPERTY as ATTR_PROPERTY, ATTR_PROPERTY_KEY as ATTR_PROPERTY_KEY, ATTR_PROPERTY_KEY_NAME as ATTR_PROPERTY_KEY_NAME, ATTR_PROPERTY_NAME as ATTR_PROPERTY_NAME, ATTR_STATUS as ATTR_STATUS, ATTR_TEST_NODE_ID as ATTR_TEST_NODE_ID, ATTR_TYPE as ATTR_TYPE, ATTR_VALUE as ATTR_VALUE, ATTR_VALUE_RAW as ATTR_VALUE_RAW, CONF_ADDON_DEVICE as CONF_ADDON_DEVICE, CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY as CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY, CONF_ADDON_LR_S2_AUTHENTICATED_KEY as CONF_ADDON_LR_S2_AUTHENTICATED_KEY, CONF_ADDON_NETWORK_KEY as CONF_ADDON_NETWORK_KEY, CONF_ADDON_S0_LEGACY_KEY as CONF_ADDON_S0_LEGACY_KEY, CONF_ADDON_S2_ACCESS_CONTROL_KEY as CONF_ADDON_S2_ACCESS_CONTROL_KEY, CONF_ADDON_S2_AUTHENTICATED_KEY as CONF_ADDON_S2_AUTHENTICATED_KEY, CONF_ADDON_S2_UNAUTHENTICATED_KEY as CONF_ADDON_S2_UNAUTHENTICATED_KEY, CONF_DATA_COLLECTION_OPTED_IN as CONF_DATA_COLLECTION_OPTED_IN, CONF_INSTALLER_MODE as CONF_INSTALLER_MODE, CONF_INTEGRATION_CREATED_ADDON as CONF_INTEGRATION_CREATED_ADDON, CONF_KEEP_OLD_DEVICES as CONF_KEEP_OLD_DEVICES, CONF_LR_S2_ACCESS_CONTROL_KEY as CONF_LR_S2_ACCESS_CONTROL_KEY, CONF_LR_S2_AUTHENTICATED_KEY as CONF_LR_S2_AUTHENTICATED_KEY, CONF_NETWORK_KEY as CONF_NETWORK_KEY, CONF_S0_LEGACY_KEY as CONF_S0_LEGACY_KEY, CONF_S2_ACCESS_CONTROL_KEY as CONF_S2_ACCESS_CONTROL_KEY, CONF_S2_AUTHENTICATED_KEY as CONF_S2_AUTHENTICATED_KEY, CONF_S2_UNAUTHENTICATED_KEY as CONF_S2_UNAUTHENTICATED_KEY, CONF_USB_PATH as CONF_USB_PATH, CONF_USE_ADDON as CONF_USE_ADDON, DOMAIN as DOMAIN, EVENT_DEVICE_ADDED_TO_REGISTRY as EVENT_DEVICE_ADDED_TO_REGISTRY, EVENT_VALUE_UPDATED as EVENT_VALUE_UPDATED, LIB_LOGGER as LIB_LOGGER, LOGGER as LOGGER, LR_ADDON_VERSION as LR_ADDON_VERSION, USER_AGENT as USER_AGENT, ZWAVE_JS_NOTIFICATION_EVENT as ZWAVE_JS_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_NOTIFICATION_EVENT as ZWAVE_JS_VALUE_NOTIFICATION_EVENT, ZWAVE_JS_VALUE_UPDATED_EVENT as ZWAVE_JS_VALUE_UPDATED_EVENT
|
|
5
|
-
from .discovery import
|
|
5
|
+
from .discovery import async_discover_node_values as async_discover_node_values, async_discover_single_value as async_discover_single_value
|
|
6
6
|
from .helpers import async_disable_server_logging_if_needed as async_disable_server_logging_if_needed, async_enable_server_logging_if_needed as async_enable_server_logging_if_needed, async_enable_statistics as async_enable_statistics, get_device_id as get_device_id, get_device_id_ext as get_device_id_ext, get_network_identifier_for_notification as get_network_identifier_for_notification, get_unique_id as get_unique_id, get_valueless_base_unique_id as get_valueless_base_unique_id
|
|
7
7
|
from .migrate import async_migrate_discovered_value as async_migrate_discovered_value
|
|
8
|
-
from .models import ZwaveJSConfigEntry as ZwaveJSConfigEntry, ZwaveJSData as ZwaveJSData
|
|
8
|
+
from .models import PlatformZwaveDiscoveryInfo as PlatformZwaveDiscoveryInfo, ZwaveJSConfigEntry as ZwaveJSConfigEntry, ZwaveJSData as ZwaveJSData
|
|
9
9
|
from .services import async_setup_services as async_setup_services
|
|
10
10
|
from _typeshed import Incomplete
|
|
11
11
|
from homeassistant.components.hassio import AddonError as AddonError, AddonManager as AddonManager, AddonState as AddonState
|
|
@@ -71,14 +71,14 @@ class NodeEvents:
|
|
|
71
71
|
hass: Incomplete
|
|
72
72
|
def __init__(self, hass: HomeAssistant, controller_events: ControllerEvents) -> None: ...
|
|
73
73
|
async def async_on_node_ready(self, node: ZwaveNode) -> None: ...
|
|
74
|
-
async def async_handle_discovery_info(self, device: dr.DeviceEntry, disc_info:
|
|
75
|
-
async def async_on_value_added(self, value_updates_disc_info: dict[str,
|
|
74
|
+
async def async_handle_discovery_info(self, device: dr.DeviceEntry, disc_info: PlatformZwaveDiscoveryInfo, value_updates_disc_info: dict[str, PlatformZwaveDiscoveryInfo]) -> None: ...
|
|
75
|
+
async def async_on_value_added(self, value_updates_disc_info: dict[str, PlatformZwaveDiscoveryInfo], value: Value) -> None: ...
|
|
76
76
|
@callback
|
|
77
77
|
def async_on_value_notification(self, notification: ValueNotification) -> None: ...
|
|
78
78
|
@callback
|
|
79
79
|
def async_on_notification(self, event: dict[str, Any]) -> None: ...
|
|
80
80
|
@callback
|
|
81
|
-
def async_on_value_updated_fire_event(self, value_updates_disc_info: dict[str,
|
|
81
|
+
def async_on_value_updated_fire_event(self, value_updates_disc_info: dict[str, PlatformZwaveDiscoveryInfo], value: Value) -> None: ...
|
|
82
82
|
|
|
83
83
|
async def client_listen(hass: HomeAssistant, entry: ZwaveJSConfigEntry, client: ZwaveClient, driver_ready: asyncio.Event) -> None: ...
|
|
84
84
|
async def async_unload_entry(hass: HomeAssistant, entry: ZwaveJSConfigEntry) -> bool: ...
|
|
@@ -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,26 @@ 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
|
+
|
|
48
|
+
MIGRATED_NOTIFICATION_TYPES: Incomplete
|
|
43
49
|
NOTIFICATION_SENSOR_MAPPINGS: tuple[NotificationZWaveJSEntityDescription, ...]
|
|
44
50
|
PROPERTY_SENSOR_MAPPINGS: dict[str, PropertyZWaveJSEntityDescription]
|
|
45
51
|
BOOLEAN_SENSOR_MAPPINGS: dict[tuple[int, int | str], BinarySensorEntityDescription]
|
|
46
52
|
|
|
47
53
|
@callback
|
|
48
|
-
def is_valid_notification_binary_sensor(info: ZwaveDiscoveryInfo) -> bool | NotificationZWaveJSEntityDescription: ...
|
|
54
|
+
def is_valid_notification_binary_sensor(info: ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo) -> bool | NotificationZWaveJSEntityDescription: ...
|
|
49
55
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ZwaveJSConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
|
50
56
|
|
|
51
57
|
class ZWaveBooleanBinarySensor(ZWaveBaseEntity, BinarySensorEntity):
|
|
@@ -60,7 +66,7 @@ class ZWaveNotificationBinarySensor(ZWaveBaseEntity, BinarySensorEntity):
|
|
|
60
66
|
entity_description: Incomplete
|
|
61
67
|
_attr_name: Incomplete
|
|
62
68
|
_attr_unique_id: Incomplete
|
|
63
|
-
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo, state_key: str, description: NotificationZWaveJSEntityDescription | None = None) -> None: ...
|
|
69
|
+
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo | NewZwaveDiscoveryInfo, state_key: str, description: NotificationZWaveJSEntityDescription | None = None) -> None: ...
|
|
64
70
|
@property
|
|
65
71
|
def is_on(self) -> bool | None: ...
|
|
66
72
|
|
|
@@ -75,3 +81,5 @@ class ZWaveConfigParameterBinarySensor(ZWaveBooleanBinarySensor):
|
|
|
75
81
|
_attr_entity_category: Incomplete
|
|
76
82
|
_attr_name: Incomplete
|
|
77
83
|
def __init__(self, config_entry: ZwaveJSConfigEntry, driver: Driver, info: ZwaveDiscoveryInfo) -> None: ...
|
|
84
|
+
|
|
85
|
+
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
|
|