mirror of
https://github.com/home-assistant/core.git
synced 2026-06-01 13:14:35 +01:00
Add binary sensors to electrolux (#171698)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
committed by
GitHub
parent
675969e36b
commit
bfcbfb8725
@@ -39,6 +39,7 @@ from .coordinator import (
|
||||
_LOGGER: logging.Logger = logging.getLogger(__name__)
|
||||
|
||||
PLATFORMS = [
|
||||
Platform.BINARY_SENSOR,
|
||||
Platform.SENSOR,
|
||||
]
|
||||
|
||||
|
||||
@@ -0,0 +1,443 @@
|
||||
"""Binary sensor entity for Electrolux Integration."""
|
||||
|
||||
from collections.abc import Callable
|
||||
from dataclasses import dataclass
|
||||
import logging
|
||||
from typing import TYPE_CHECKING, Any, TypeVar
|
||||
|
||||
from electrolux_group_developer_sdk.client.appliances.ac_appliance import ACAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.ap_appliance import APAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.appliance_data import (
|
||||
ApplianceData,
|
||||
)
|
||||
from electrolux_group_developer_sdk.client.appliances.cr_appliance import CRAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.dam_ac_appliance import (
|
||||
DAMACAppliance,
|
||||
)
|
||||
from electrolux_group_developer_sdk.client.appliances.dh_appliance import DHAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.dw_appliance import DWAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.hb_appliance import HBAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.hd_appliance import HDAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.ov_appliance import OVAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.rvc_appliance import RVCAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.so_appliance import SOAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.td_appliance import TDAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.wd_appliance import WDAppliance
|
||||
from electrolux_group_developer_sdk.client.appliances.wm_appliance import WMAppliance
|
||||
from electrolux_group_developer_sdk.feature_constants import (
|
||||
DOOR_STATE,
|
||||
DRAWER_STATUS,
|
||||
HOOD_AUTO_SWITCH_OFF_EVENT,
|
||||
HOOD_FILTER_CHARC_ENABLE,
|
||||
UI_LOCK_MODE,
|
||||
ZONE_HOB_POT_DETECTED,
|
||||
)
|
||||
|
||||
from homeassistant.components.binary_sensor import (
|
||||
BinarySensorDeviceClass,
|
||||
BinarySensorEntity,
|
||||
BinarySensorEntityDescription,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .coordinator import ElectroluxConfigEntry, ElectroluxDataUpdateCoordinator
|
||||
from .entity import ElectroluxBaseEntity
|
||||
from .entity_helper import async_setup_entities_helper
|
||||
from .util import convert_to_snake_case
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
T = TypeVar("T", bound=ApplianceData)
|
||||
|
||||
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class ElectroluxBinarySensorDescription[T = ApplianceData](
|
||||
BinarySensorEntityDescription
|
||||
):
|
||||
"""Custom binary sensor description for Electrolux sensors."""
|
||||
|
||||
exists_fn: Callable[[T], bool] = lambda appliance: True
|
||||
value_fn: Callable[[T], Any]
|
||||
mapping: dict[Any, bool] | None = None
|
||||
|
||||
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
class ElectroluxSubmoduleBinarySensorDescription[T = ApplianceData](
|
||||
BinarySensorEntityDescription
|
||||
):
|
||||
"""Custom binary sensor description for Electrolux appliance submodule sensors."""
|
||||
|
||||
exists_fn: Callable[[T, str], bool] = lambda appliance, submodule: True
|
||||
value_fn: Callable[[T, str], Any]
|
||||
mapping: dict[Any, bool] | None = None
|
||||
|
||||
|
||||
def _connection_state_value_fn(appliance: ApplianceData):
|
||||
if TYPE_CHECKING:
|
||||
assert appliance.state
|
||||
|
||||
return appliance.state.connectionState
|
||||
|
||||
|
||||
GENERAL_ELECTROLUX_SENSORS: tuple[ElectroluxBinarySensorDescription, ...] = (
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="connection_state",
|
||||
translation_key="connection_state",
|
||||
device_class=BinarySensorDeviceClass.CONNECTIVITY,
|
||||
value_fn=_connection_state_value_fn,
|
||||
mapping={"connected": True, "disconnected": False},
|
||||
),
|
||||
)
|
||||
|
||||
HOB_ELECTROLUX_SENSORS: tuple[ElectroluxBinarySensorDescription[HBAppliance], ...] = (
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="ui_lock_mode",
|
||||
translation_key="ui_lock_mode",
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(UI_LOCK_MODE),
|
||||
value_fn=lambda appliance: appliance.get_current_ui_lock_mode(),
|
||||
mapping={True: False, False: True},
|
||||
),
|
||||
)
|
||||
|
||||
HOB_ZONE_ELECTROLUX_SENSORS: tuple[
|
||||
ElectroluxSubmoduleBinarySensorDescription[HBAppliance], ...
|
||||
] = (
|
||||
ElectroluxSubmoduleBinarySensorDescription[HBAppliance](
|
||||
key="pot_detected",
|
||||
translation_key="pot_detected",
|
||||
value_fn=lambda appliance, hob_zone: (
|
||||
appliance.get_current_zone_hob_pot_detected(hob_zone)
|
||||
),
|
||||
exists_fn=lambda appliance, hob_zone: appliance.is_hob_zone_feature_supported(
|
||||
hob_zone, ZONE_HOB_POT_DETECTED
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
HOOD_ELECTROLUX_SENSORS: tuple[ElectroluxBinarySensorDescription[HDAppliance], ...] = (
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="drawer_status",
|
||||
translation_key="drawer_status",
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(DRAWER_STATUS),
|
||||
value_fn=lambda appliance: appliance.get_current_drawer_status(),
|
||||
),
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="hood_auto_switch_off_event",
|
||||
translation_key="hood_auto_switch_off_event",
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(
|
||||
HOOD_AUTO_SWITCH_OFF_EVENT
|
||||
),
|
||||
value_fn=lambda appliance: appliance.get_current_hood_auto_switch_off_event(),
|
||||
),
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="hood_filter_charcoal_enabled",
|
||||
translation_key="hood_filter_charcoal_enabled",
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(
|
||||
HOOD_FILTER_CHARC_ENABLE
|
||||
),
|
||||
value_fn=lambda appliance: appliance.get_current_hood_filter_charc_enable(),
|
||||
mapping={"on": True, "off": False},
|
||||
),
|
||||
)
|
||||
|
||||
CARE_ELECTROLUX_SENSORS: tuple[
|
||||
ElectroluxBinarySensorDescription[
|
||||
DWAppliance | TDAppliance | WDAppliance | WMAppliance
|
||||
],
|
||||
...,
|
||||
] = (
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="door_state",
|
||||
translation_key="door_state",
|
||||
device_class=BinarySensorDeviceClass.DOOR,
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(DOOR_STATE),
|
||||
value_fn=lambda appliance: appliance.get_current_door_state(),
|
||||
mapping={"closed": False, "open": True},
|
||||
),
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="ui_lock_mode",
|
||||
translation_key="ui_lock_mode",
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(UI_LOCK_MODE),
|
||||
value_fn=lambda appliance: appliance.get_current_ui_lock_mode(),
|
||||
mapping={True: False, False: True},
|
||||
),
|
||||
)
|
||||
|
||||
OVEN_ELECTROLUX_SENSORS: tuple[ElectroluxBinarySensorDescription[OVAppliance], ...] = (
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="door_state",
|
||||
translation_key="door_state",
|
||||
device_class=BinarySensorDeviceClass.DOOR,
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(DOOR_STATE),
|
||||
value_fn=lambda appliance: appliance.get_current_door_state(),
|
||||
mapping={"closed": False, "open": True},
|
||||
),
|
||||
)
|
||||
|
||||
STRUCTURED_OVEN_CAVITY_ELECTROLUX_SENSORS: tuple[
|
||||
ElectroluxSubmoduleBinarySensorDescription[SOAppliance], ...
|
||||
] = (
|
||||
ElectroluxSubmoduleBinarySensorDescription[SOAppliance](
|
||||
key="door_state",
|
||||
translation_key="door_state",
|
||||
device_class=BinarySensorDeviceClass.DOOR,
|
||||
exists_fn=lambda appliance, cavity: appliance.is_cavity_feature_supported(
|
||||
cavity, DOOR_STATE
|
||||
),
|
||||
value_fn=lambda appliance, cavity: appliance.get_current_cavity_door_state(
|
||||
cavity
|
||||
),
|
||||
mapping={"closed": False, "open": True},
|
||||
),
|
||||
)
|
||||
|
||||
REFRIGERATOR_GENERIC_ELECTROLUX_SENSORS: tuple[
|
||||
ElectroluxBinarySensorDescription[CRAppliance], ...
|
||||
] = (
|
||||
ElectroluxBinarySensorDescription(
|
||||
key="ui_lock_mode",
|
||||
translation_key="ui_lock_mode",
|
||||
exists_fn=lambda appliance: appliance.is_feature_supported(UI_LOCK_MODE),
|
||||
value_fn=lambda appliance: appliance.get_current_ui_lock_mode(),
|
||||
mapping={True: False, False: True},
|
||||
),
|
||||
)
|
||||
|
||||
FREEZER_FRIDGE_ICE_MAKER_EXTRA_CAVITY_ELECTROLUX_SENSORS: tuple[
|
||||
ElectroluxSubmoduleBinarySensorDescription[CRAppliance], ...
|
||||
] = (
|
||||
ElectroluxSubmoduleBinarySensorDescription(
|
||||
key="door_state",
|
||||
translation_key="door_state",
|
||||
device_class=BinarySensorDeviceClass.DOOR,
|
||||
exists_fn=lambda appliance, cavity: appliance.is_cavity_feature_supported(
|
||||
cavity, DOOR_STATE
|
||||
),
|
||||
value_fn=lambda appliance, cavity: appliance.get_current_cavity_door_state(
|
||||
cavity
|
||||
),
|
||||
mapping={"closed": False, "open": True},
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def build_entities_for_appliance(
|
||||
appliance_data: ApplianceData,
|
||||
coordinators: dict[str, ElectroluxDataUpdateCoordinator],
|
||||
) -> list[ElectroluxBaseEntity]:
|
||||
"""Return all entities for a single appliance."""
|
||||
appliance = appliance_data.appliance
|
||||
coordinator = coordinators[appliance.applianceId]
|
||||
entities: list[ElectroluxBaseEntity] = []
|
||||
|
||||
if isinstance(
|
||||
appliance_data,
|
||||
(
|
||||
ACAppliance,
|
||||
APAppliance,
|
||||
CRAppliance,
|
||||
DAMACAppliance,
|
||||
DHAppliance,
|
||||
DWAppliance,
|
||||
HBAppliance,
|
||||
HDAppliance,
|
||||
OVAppliance,
|
||||
RVCAppliance,
|
||||
SOAppliance,
|
||||
TDAppliance,
|
||||
WDAppliance,
|
||||
WMAppliance,
|
||||
),
|
||||
):
|
||||
entities.extend(
|
||||
ElectroluxSensor(appliance_data, coordinator, description)
|
||||
for description in GENERAL_ELECTROLUX_SENSORS
|
||||
)
|
||||
|
||||
if isinstance(appliance_data, HBAppliance):
|
||||
entities.extend(
|
||||
ElectroluxSensor(appliance_data, coordinator, description)
|
||||
for description in HOB_ELECTROLUX_SENSORS
|
||||
if description.exists_fn(appliance_data)
|
||||
)
|
||||
|
||||
entities.extend(
|
||||
ElectroluxSubmoduleSensor(
|
||||
appliance_data, coordinator, hob_zone, description
|
||||
)
|
||||
for hob_zone in appliance_data.get_available_hob_zone()
|
||||
for description in HOB_ZONE_ELECTROLUX_SENSORS
|
||||
if description.exists_fn(appliance_data, hob_zone)
|
||||
)
|
||||
|
||||
if isinstance(appliance_data, HDAppliance):
|
||||
entities.extend(
|
||||
ElectroluxSensor(appliance_data, coordinator, description)
|
||||
for description in HOOD_ELECTROLUX_SENSORS
|
||||
if description.exists_fn(appliance_data)
|
||||
)
|
||||
|
||||
if isinstance(appliance_data, (DWAppliance, TDAppliance, WDAppliance, WMAppliance)):
|
||||
entities.extend(
|
||||
ElectroluxSensor(appliance_data, coordinator, description)
|
||||
for description in CARE_ELECTROLUX_SENSORS
|
||||
if description.exists_fn(appliance_data)
|
||||
)
|
||||
|
||||
if isinstance(appliance_data, OVAppliance):
|
||||
entities.extend(
|
||||
ElectroluxSensor(appliance_data, coordinator, description)
|
||||
for description in OVEN_ELECTROLUX_SENSORS
|
||||
if description.exists_fn(appliance_data)
|
||||
)
|
||||
|
||||
if isinstance(appliance_data, SOAppliance):
|
||||
entities.extend(
|
||||
ElectroluxSubmoduleSensor(appliance_data, coordinator, cavity, description)
|
||||
for description in STRUCTURED_OVEN_CAVITY_ELECTROLUX_SENSORS
|
||||
for cavity in appliance_data.get_supported_cavities()
|
||||
if description.exists_fn(appliance_data, cavity)
|
||||
)
|
||||
|
||||
if isinstance(appliance_data, CRAppliance):
|
||||
entities.extend(
|
||||
ElectroluxSensor(appliance_data, coordinator, description)
|
||||
for description in REFRIGERATOR_GENERIC_ELECTROLUX_SENSORS
|
||||
if description.exists_fn(appliance_data)
|
||||
)
|
||||
|
||||
entities.extend(
|
||||
ElectroluxSubmoduleSensor(appliance_data, coordinator, cavity, description)
|
||||
for description in FREEZER_FRIDGE_ICE_MAKER_EXTRA_CAVITY_ELECTROLUX_SENSORS
|
||||
for cavity in appliance_data.get_supported_cavities()
|
||||
if description.exists_fn(appliance_data, cavity)
|
||||
)
|
||||
|
||||
return entities
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
entry: ElectroluxConfigEntry,
|
||||
async_add_entities: AddConfigEntryEntitiesCallback,
|
||||
) -> None:
|
||||
"""Set binary sensor for Electrolux Integration."""
|
||||
await async_setup_entities_helper(
|
||||
hass, entry, async_add_entities, build_entities_for_appliance
|
||||
)
|
||||
|
||||
|
||||
class ElectroluxSensor(ElectroluxBaseEntity[T], BinarySensorEntity):
|
||||
"""Representation of a generic binary sensor for Electrolux appliances."""
|
||||
|
||||
entity_description: ElectroluxBinarySensorDescription[T]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
appliance_data: T,
|
||||
coordinator: ElectroluxDataUpdateCoordinator,
|
||||
description: ElectroluxBinarySensorDescription[T],
|
||||
) -> None:
|
||||
"""Initialize the binary sensor."""
|
||||
super().__init__(appliance_data, coordinator, description.key)
|
||||
self.entity_description = description
|
||||
|
||||
def _update_attr_state(self) -> bool:
|
||||
new_value = self._get_value()
|
||||
if self._attr_is_on != new_value:
|
||||
self._attr_is_on = new_value
|
||||
return True
|
||||
return False
|
||||
|
||||
def _get_value(self) -> bool | None:
|
||||
description = self.entity_description
|
||||
entity_key = description.key
|
||||
value = description.value_fn(self._appliance_data)
|
||||
if isinstance(value, str):
|
||||
value = convert_to_snake_case(value)
|
||||
|
||||
if description.mapping is not None:
|
||||
return _map_to_known_value(description.mapping, entity_key, value)
|
||||
|
||||
if not isinstance(value, bool):
|
||||
_LOGGER.warning(
|
||||
"A non-bool value was detected for a binary sensor of the Electrolux integration. "
|
||||
"Please report it for the integration, and include the following information: "
|
||||
'entity key="%s", reported value="%s"',
|
||||
entity_key,
|
||||
value,
|
||||
)
|
||||
return None
|
||||
return value
|
||||
|
||||
|
||||
class ElectroluxSubmoduleSensor(ElectroluxBaseEntity[T], BinarySensorEntity):
|
||||
"""Representation of a generic binary sensor for appliance submodules."""
|
||||
|
||||
entity_description: ElectroluxSubmoduleBinarySensorDescription[T]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
appliance_data: T,
|
||||
coordinator: ElectroluxDataUpdateCoordinator,
|
||||
cavity: str,
|
||||
description: ElectroluxSubmoduleBinarySensorDescription[T],
|
||||
) -> None:
|
||||
"""Initialize the sensor."""
|
||||
entity_key = f"{convert_to_snake_case(cavity)}_{description.key}"
|
||||
translation_key = (
|
||||
f"{convert_to_snake_case(cavity)}_{description.translation_key}"
|
||||
)
|
||||
super().__init__(appliance_data, coordinator, entity_key)
|
||||
|
||||
self._cavity = cavity
|
||||
self.entity_description = description
|
||||
self._attr_translation_key = translation_key
|
||||
|
||||
def _update_attr_state(self) -> bool:
|
||||
new_value = self._get_value()
|
||||
if self._attr_is_on != new_value:
|
||||
self._attr_is_on = new_value
|
||||
return True
|
||||
return False
|
||||
|
||||
def _get_value(self) -> Any:
|
||||
description = self.entity_description
|
||||
entity_key = f"{convert_to_snake_case(self._cavity)}_{description.key}"
|
||||
value = description.value_fn(self._appliance_data, self._cavity)
|
||||
if isinstance(value, str):
|
||||
value = convert_to_snake_case(value)
|
||||
|
||||
if description.mapping is not None:
|
||||
return _map_to_known_value(description.mapping, entity_key, value)
|
||||
|
||||
if not isinstance(value, bool):
|
||||
_LOGGER.warning(
|
||||
"A non-bool value was detected for a binary sensor of the Electrolux integration. "
|
||||
"Please report it for the integration, and include the following information: "
|
||||
'entity key="%s", reported value="%s"',
|
||||
entity_key,
|
||||
value,
|
||||
)
|
||||
return None
|
||||
return value
|
||||
|
||||
|
||||
_valid_type = str | float | int
|
||||
|
||||
|
||||
def _map_to_known_value(
|
||||
mapping: dict[_valid_type, bool], entity_key: str, value: _valid_type
|
||||
) -> bool | None:
|
||||
"""Map to boolean based on mapping; log warn message if value is not found in mapping."""
|
||||
if value not in mapping:
|
||||
_LOGGER.warning(
|
||||
"An unknown value %s was reported for a binary sensor of the Electrolux integration. "
|
||||
"Please report it for the integration, and include the following information: "
|
||||
'entity key="%s", reported value="%s"',
|
||||
value,
|
||||
entity_key,
|
||||
value,
|
||||
)
|
||||
return mapping.get(value)
|
||||
@@ -1,5 +1,13 @@
|
||||
{
|
||||
"entity": {
|
||||
"binary_sensor": {
|
||||
"drawer_status": {
|
||||
"default": "mdi:file-cabinet"
|
||||
},
|
||||
"hood_auto_switch_off_event": {
|
||||
"default": "mdi:power-sleep"
|
||||
}
|
||||
},
|
||||
"sensor": {
|
||||
"appliance_state": {
|
||||
"default": "mdi:information-outline"
|
||||
|
||||
@@ -35,6 +35,7 @@ from homeassistant.util.unit_conversion import TemperatureConverter
|
||||
from .coordinator import ElectroluxConfigEntry, ElectroluxDataUpdateCoordinator
|
||||
from .entity import ElectroluxBaseEntity
|
||||
from .entity_helper import async_setup_entities_helper
|
||||
from .util import convert_to_snake_case
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -193,7 +194,7 @@ class ElectroluxSensor(ElectroluxBaseEntity[ApplianceData], SensorEntity):
|
||||
snake_case_options = [
|
||||
snake_case_option
|
||||
for option in options
|
||||
if (snake_case_option := _convert_to_snake_case(option))
|
||||
if (snake_case_option := convert_to_snake_case(option))
|
||||
in description.known_values
|
||||
]
|
||||
|
||||
@@ -205,7 +206,7 @@ class ElectroluxSensor(ElectroluxBaseEntity[ApplianceData], SensorEntity):
|
||||
def _update_attr_state(self) -> bool:
|
||||
new_value = self._get_value()
|
||||
if isinstance(new_value, str):
|
||||
new_value = _convert_to_snake_case(new_value)
|
||||
new_value = convert_to_snake_case(new_value)
|
||||
|
||||
if self.entity_description.known_values:
|
||||
new_value = _map_to_known_value(
|
||||
@@ -261,18 +262,6 @@ class ElectroluxTemperatureSensor(ElectroluxSensor):
|
||||
)
|
||||
|
||||
|
||||
def _convert_to_snake_case(x: str) -> str:
|
||||
"""Converts a string to snake case."""
|
||||
lower_case = x.lower()
|
||||
return "".join([_convert_char_to_snake_case(char) for char in lower_case])
|
||||
|
||||
|
||||
def _convert_char_to_snake_case(char: str) -> str:
|
||||
if char.isspace():
|
||||
return "_"
|
||||
return char
|
||||
|
||||
|
||||
def _map_to_known_value(
|
||||
known_values: set[str], entity_key: str, value: str
|
||||
) -> str | None:
|
||||
|
||||
@@ -25,6 +25,65 @@
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"binary_sensor": {
|
||||
"bottomoven_door_state": {
|
||||
"name": "Lower door state"
|
||||
},
|
||||
"connection_state": {
|
||||
"name": "Connection state"
|
||||
},
|
||||
"door_state": {
|
||||
"name": "Door state"
|
||||
},
|
||||
"drawer_status": {
|
||||
"name": "Drawer status"
|
||||
},
|
||||
"extracavity_door_state": {
|
||||
"name": "Extra cavity door"
|
||||
},
|
||||
"freezer_door_state": {
|
||||
"name": "Freezer door"
|
||||
},
|
||||
"fridge_door_state": {
|
||||
"name": "Fridge door"
|
||||
},
|
||||
"hobzone1_pot_detected": {
|
||||
"name": "Zone 1 pot detected"
|
||||
},
|
||||
"hobzone2_pot_detected": {
|
||||
"name": "Zone 2 pot detected"
|
||||
},
|
||||
"hobzone3_pot_detected": {
|
||||
"name": "Zone 3 pot detected"
|
||||
},
|
||||
"hobzone4_pot_detected": {
|
||||
"name": "Zone 4 pot detected"
|
||||
},
|
||||
"hobzone5_pot_detected": {
|
||||
"name": "Zone 5 pot detected"
|
||||
},
|
||||
"hobzone6_pot_detected": {
|
||||
"name": "Zone 6 pot detected"
|
||||
},
|
||||
"hobzone7_pot_detected": {
|
||||
"name": "Zone 7 pot detected"
|
||||
},
|
||||
"hobzone8_pot_detected": {
|
||||
"name": "Zone 8 pot detected"
|
||||
},
|
||||
"hood_auto_switch_off_event": {
|
||||
"name": "Auto switch off event"
|
||||
},
|
||||
"hood_filter_charcoal_enabled": {
|
||||
"name": "Charcoal filter"
|
||||
},
|
||||
"ui_lock_mode": {
|
||||
"name": "UI lock mode"
|
||||
},
|
||||
"upperoven_door_state": {
|
||||
"name": "Upper door state"
|
||||
}
|
||||
},
|
||||
"sensor": {
|
||||
"appliance_state": {
|
||||
"name": "Appliance state",
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
"""Utility functions used by the Electrolux integration."""
|
||||
|
||||
|
||||
def convert_to_snake_case(x: str) -> str:
|
||||
"""Converts a string to snake case."""
|
||||
lower_case = x.lower()
|
||||
return "".join([_convert_char_to_snake_case(char) for char in lower_case])
|
||||
|
||||
|
||||
def _convert_char_to_snake_case(char: str) -> str:
|
||||
if char.isspace():
|
||||
return "_"
|
||||
return char
|
||||
@@ -11,7 +11,15 @@ from homeassistant.core import HomeAssistant
|
||||
|
||||
from tests.common import MockConfigEntry, load_fixture
|
||||
|
||||
APPLIANCE_FIXTURES = ["fenix_oven", "pux_oven"]
|
||||
APPLIANCE_FIXTURES = [
|
||||
"fenix_oven",
|
||||
"pux_oven",
|
||||
"peacock_hob",
|
||||
"tumble_dryer",
|
||||
"supex_structured_oven",
|
||||
"ayran_fridge",
|
||||
"hood",
|
||||
]
|
||||
|
||||
|
||||
async def setup_integration(
|
||||
|
||||
@@ -0,0 +1,331 @@
|
||||
{
|
||||
"applianceInfo": {
|
||||
"serialNumber": "20220412",
|
||||
"pnc": "999011403",
|
||||
"brand": "AEG",
|
||||
"deviceType": "FREESTANDING_BOTTOM_FREEZER",
|
||||
"model": "RCB732E9MX",
|
||||
"variant": "UNDEFINED",
|
||||
"colour": "GREY"
|
||||
},
|
||||
"capabilities": {
|
||||
"alerts": {
|
||||
"access": "read",
|
||||
"type": "alert",
|
||||
"values": {
|
||||
"AIR_SENSOR_BROKEN": {},
|
||||
"AIR_SENSOR_OPEN_CIRCUIT": {},
|
||||
"AIR_SENSOR_SHORT_CIRCUIT": {},
|
||||
"COMMUNICATION_ALARM": {},
|
||||
"DRINK_CHILL_EXPIRED": {},
|
||||
"HUMIDITY_SENSOR_BROKEN": {},
|
||||
"HUMIDITY_SENSOR_OPEN_CIRCUIT": {},
|
||||
"HUMIDITY_SENSOR_SHORT_CIRCUIT": {},
|
||||
"POWER_FAILURE_ALARM": {}
|
||||
}
|
||||
},
|
||||
"applianceMainBoardSwVersion": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"applianceMode": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DEMO": {},
|
||||
"DIAGNOSTIC": {},
|
||||
"NORMAL": {},
|
||||
"SERVICE": {}
|
||||
}
|
||||
},
|
||||
"applianceUiSwVersion": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"compressorState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"coolingValveState": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"defrostRoutineState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DRIP": {},
|
||||
"HEATER_ON": {},
|
||||
"POST_COOLING": {},
|
||||
"PRE_COOLING": {},
|
||||
"PRE_SOFT": {},
|
||||
"PULL_DOWN": {},
|
||||
"WAIT": {}
|
||||
}
|
||||
},
|
||||
"energySavingMode": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"fSPN_CRConnectionLost": {
|
||||
"access": "constant",
|
||||
"default": 1,
|
||||
"type": "int"
|
||||
},
|
||||
"freezer": {
|
||||
"alerts": {
|
||||
"access": "read",
|
||||
"type": "alert",
|
||||
"values": {
|
||||
"AIR_SENSOR_BROKEN": {},
|
||||
"AIR_SENSOR_OPEN_CIRCUIT": {},
|
||||
"AIR_SENSOR_SHORT_CIRCUIT": {},
|
||||
"DEFROST_SENSOR_BROKEN": {},
|
||||
"DEFROST_SENSOR_OPEN_CIRCUIT": {},
|
||||
"DEFROST_SENSOR_SHORT_CIRCUIT": {},
|
||||
"DOOR_ALARM": {},
|
||||
"TEMPERATURE_ALARM": {}
|
||||
}
|
||||
},
|
||||
"applianceState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"ALARM": {},
|
||||
"DELAYED_START": {},
|
||||
"END_OF_CYCLE": {},
|
||||
"IDLE": {},
|
||||
"OFF": {},
|
||||
"PAUSED": {},
|
||||
"READY_TO_START": {},
|
||||
"RUNNING": {}
|
||||
}
|
||||
},
|
||||
"doorState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"CLOSED": {},
|
||||
"OPEN": {}
|
||||
}
|
||||
},
|
||||
"fanState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"fastMode": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"fastModeTimeToEnd": {
|
||||
"access": "readwrite",
|
||||
"type": "number"
|
||||
},
|
||||
"sensorTemperatureC": {
|
||||
"access": "read",
|
||||
"type": "temperature"
|
||||
},
|
||||
"sensorTemperatureF": {
|
||||
"access": "read",
|
||||
"type": "temperature"
|
||||
},
|
||||
"targetTemperatureC": {
|
||||
"access": "readwrite",
|
||||
"default": -18,
|
||||
"max": -16,
|
||||
"min": -24,
|
||||
"step": 2,
|
||||
"type": "temperature"
|
||||
}
|
||||
},
|
||||
"fridge": {
|
||||
"alerts": {
|
||||
"access": "read",
|
||||
"type": "alert",
|
||||
"values": {
|
||||
"AIR_SENSOR_BROKEN": {},
|
||||
"AIR_SENSOR_OPEN_CIRCUIT": {},
|
||||
"AIR_SENSOR_SHORT_CIRCUIT": {},
|
||||
"DEFROST_SENSOR_BROKEN": {},
|
||||
"DEFROST_SENSOR_OPEN_CIRCUIT": {},
|
||||
"DEFROST_SENSOR_SHORT_CIRCUIT": {},
|
||||
"DOOR_ALARM": {},
|
||||
"TEMPERATURE_ALARM": {}
|
||||
}
|
||||
},
|
||||
"applianceState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"ALARM": {},
|
||||
"DELAYED_START": {},
|
||||
"END_OF_CYCLE": {},
|
||||
"IDLE": {},
|
||||
"OFF": {},
|
||||
"PAUSED": {},
|
||||
"READY_TO_START": {},
|
||||
"RUNNING": {}
|
||||
}
|
||||
},
|
||||
"doorState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"CLOSED": {},
|
||||
"OPEN": {}
|
||||
}
|
||||
},
|
||||
"fanState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"fastMode": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"fastModeTimeToEnd": {
|
||||
"access": "readwrite",
|
||||
"type": "number"
|
||||
},
|
||||
"sensorTemperatureC": {
|
||||
"access": "read",
|
||||
"type": "temperature"
|
||||
},
|
||||
"sensorTemperatureF": {
|
||||
"access": "read",
|
||||
"type": "temperature"
|
||||
},
|
||||
"targetTemperatureC": {
|
||||
"access": "readwrite",
|
||||
"default": 4,
|
||||
"max": 8,
|
||||
"min": 1,
|
||||
"step": 1,
|
||||
"type": "temperature"
|
||||
}
|
||||
},
|
||||
"networkInterface": {
|
||||
"command": {
|
||||
"access": "write",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"APPLIANCE_AUTHORIZE": {},
|
||||
"START": {},
|
||||
"USER_AUTHORIZE": {},
|
||||
"USER_NOT_AUTHORIZE": {}
|
||||
}
|
||||
},
|
||||
"linkQualityIndicator": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"EXCELLENT": {},
|
||||
"GOOD": {},
|
||||
"POOR": {},
|
||||
"UNDEFINED": {},
|
||||
"VERY_GOOD": {},
|
||||
"VERY_POOR": {}
|
||||
}
|
||||
},
|
||||
"niuSwUpdateCurrentDescription": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"otaState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DESCRIPTION_AVAILABLE": {},
|
||||
"DESCRIPTION_DOWNLOADING": {},
|
||||
"DESCRIPTION_READY": {},
|
||||
"FW_DOWNLOADING": {},
|
||||
"FW_DOWNLOAD_START": {},
|
||||
"FW_SIGNATURE_CHECK": {},
|
||||
"FW_UPDATE_IN_PROGRESS": {},
|
||||
"IDLE": {},
|
||||
"READY_TO_UPDATE": {},
|
||||
"UPDATE_ABORT": {},
|
||||
"UPDATE_CHECK": {},
|
||||
"UPDATE_ERROR": {},
|
||||
"UPDATE_OK": {},
|
||||
"WAITINGFORAUTHORIZATION": {}
|
||||
}
|
||||
},
|
||||
"startUpCommand": {
|
||||
"access": "write",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"UNINSTALL": {}
|
||||
}
|
||||
},
|
||||
"swAncAndRevision": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"swVersion": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"reminderTime": {
|
||||
"access": "readwrite",
|
||||
"default": 1800,
|
||||
"max": 1800,
|
||||
"min": 300,
|
||||
"step": 300,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"0": {},
|
||||
"-1": {}
|
||||
}
|
||||
},
|
||||
"sabbathMode": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"uiLockMode": {
|
||||
"access": "readwrite",
|
||||
"type": "boolean",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"vacationHolidayMode": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,389 @@
|
||||
{
|
||||
"applianceInfo": {
|
||||
"serialNumber": "99010299",
|
||||
"pnc": "999008105",
|
||||
"brand": "AEG",
|
||||
"deviceType": "CEILING HOODS",
|
||||
"model": "DDC8271W",
|
||||
"variant": "SLIMWHGLASS8000",
|
||||
"colour": "WHITE"
|
||||
},
|
||||
"capabilities": {
|
||||
"alerts": {
|
||||
"access": "read",
|
||||
"type": "alert",
|
||||
"values": {
|
||||
"ABNORMAL_TEMPERATURE_FAIL_H253": {},
|
||||
"BRUSHLESS_MOTOR_CONTROL_BOARD_ALARMS_H103": {},
|
||||
"CHUI_BOARD_NTC_OUT_OF_RANGE_ALARM_H210": {},
|
||||
"COMM_ALARM_CHC_CHUI_H125": {},
|
||||
"COMM_ALARM_CHPE_CHUI_H348": {},
|
||||
"COMM_ALARM_CHUI_CHC_H201": {},
|
||||
"COMM_ALARM_CHUI_CPE_H202": {},
|
||||
"COMM_FAIL_CHC_HOOD_MOTOR_CONTROL_H101": {},
|
||||
"COOLING_DOWN_WARNING_H252": {},
|
||||
"HUMIDITY_TEMPERATURE_SENSOR_OUT_OF_RANGE_ALARM_H351": {},
|
||||
"MISSING_CONFIGURATION_ALARM_CHPE_H354": {},
|
||||
"MISSING_CONFIG_ALARM_H135": {},
|
||||
"STUCK_KEY_ALARM_H218": {},
|
||||
"SW_COMPAT_ALARM_H127": {},
|
||||
"TVOC_ALARM_H346": {},
|
||||
"TVOC_HUMIDITY_TEMPERATURE_I2C_ALARM_H350": {},
|
||||
"TVOC_R_MOX_OUT_OF_RANGE_ALARM_H349": {},
|
||||
"WRONG_CONFIG_CHECKSUM_PHE_ALARM_H341": {},
|
||||
"WRONG_CONFIG_CRC_ALARM_H133": {},
|
||||
"WRONG_CRC_ON_CONFIG_ALARM_CHPE_H347": {},
|
||||
"WRONG_CRC_ON_CONFIG_ALARM_CHUI_H204": {},
|
||||
"WRONG_SW_COMPAT_ALARM_CHUI_H205": {}
|
||||
}
|
||||
},
|
||||
"applianceLocalTimeOffset": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"applianceMode": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DEMO": {},
|
||||
"DIAGNOSTIC": {},
|
||||
"NORMAL": {}
|
||||
}
|
||||
},
|
||||
"applianceState": {
|
||||
"access": "read",
|
||||
"triggers": [
|
||||
{
|
||||
"action": {
|
||||
"hoodFilterCharcEnable": {
|
||||
"access": "readwrite"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "OFF",
|
||||
"operator": "eq"
|
||||
},
|
||||
"operand_2": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "IDLE",
|
||||
"operator": "eq"
|
||||
},
|
||||
"operator": "or"
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": {
|
||||
"hoodFilterCharcEnable": {
|
||||
"access": "read"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "RUNNING",
|
||||
"operator": "eq"
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": {
|
||||
"humanCentricLightEventSettings": {
|
||||
"access": "readwrite"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "OFF",
|
||||
"operator": "eq"
|
||||
},
|
||||
"operand_2": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "IDLE",
|
||||
"operator": "eq"
|
||||
},
|
||||
"operator": "or"
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": {
|
||||
"humanCentricLightEventSettings": {
|
||||
"access": "read"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "RUNNING",
|
||||
"operator": "eq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"type": "string",
|
||||
"values": {
|
||||
"IDLE": {},
|
||||
"OFF": {},
|
||||
"RUNNING": {}
|
||||
}
|
||||
},
|
||||
"autosenseEnabledDisable": {
|
||||
"access": "readwrite",
|
||||
"type": "boolean"
|
||||
},
|
||||
"charcoalFilterReminderThreshold": {
|
||||
"access": "constant",
|
||||
"default": 9600,
|
||||
"type": "int"
|
||||
},
|
||||
"greaseFilterReminderThreshold": {
|
||||
"access": "constant",
|
||||
"default": 2400,
|
||||
"type": "int"
|
||||
},
|
||||
"hoodAutoSwitchOffEvent": {
|
||||
"access": "read",
|
||||
"type": "boolean"
|
||||
},
|
||||
"hoodAutosenseControl": {
|
||||
"access": "readwrite",
|
||||
"type": "boolean"
|
||||
},
|
||||
"hoodCharcFilterTimer": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hoodFanLevel": {
|
||||
"access": "readwrite",
|
||||
"triggers": [
|
||||
{
|
||||
"action": {
|
||||
"targetDuration": {
|
||||
"access": "readwrite"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "BREEZE",
|
||||
"operator": "ge"
|
||||
},
|
||||
"operand_2": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "STEP_3",
|
||||
"operator": "le"
|
||||
},
|
||||
"operator": "and"
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": {
|
||||
"targetDuration": {
|
||||
"access": "read"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "BREEZE",
|
||||
"operator": "lt"
|
||||
},
|
||||
"operand_2": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "STEP_3",
|
||||
"operator": "gt"
|
||||
},
|
||||
"operator": "or"
|
||||
}
|
||||
}
|
||||
],
|
||||
"type": "string",
|
||||
"values": {
|
||||
"BOOST": {},
|
||||
"BREEZE": {},
|
||||
"OFF": {},
|
||||
"STEP_1": {},
|
||||
"STEP_2": {},
|
||||
"STEP_3": {}
|
||||
}
|
||||
},
|
||||
"hoodFilterCharcEnable": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
},
|
||||
"hoodFilterCharcIndication": {
|
||||
"access": "readwrite",
|
||||
"type": "boolean",
|
||||
"values": {
|
||||
"FALSE": {},
|
||||
"TRUE": {}
|
||||
}
|
||||
},
|
||||
"hoodFilterGreaseIndication": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"FALSE": {},
|
||||
"TRUE": {}
|
||||
}
|
||||
},
|
||||
"hoodGreaseFilterTimer": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"humanCentricLightEventSettings": {
|
||||
"access": "readwrite",
|
||||
"type": "humanCentLightEnableSettings"
|
||||
},
|
||||
"humanCentricLightEventSettings/event": {
|
||||
"access": "readwrite",
|
||||
"type": "complex",
|
||||
"values": {}
|
||||
},
|
||||
"humanCentricLightEventSettings/number": {
|
||||
"access": "read",
|
||||
"type": "int",
|
||||
"values": {}
|
||||
},
|
||||
"lightColorTemperature": {
|
||||
"access": "readwrite",
|
||||
"max": 100,
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"NOT_AVAILABLE": {}
|
||||
}
|
||||
},
|
||||
"lightIntensity": {
|
||||
"access": "readwrite",
|
||||
"max": 100,
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"NOT_AVAILABLE": {}
|
||||
}
|
||||
},
|
||||
"localTimeAutomaticMode": {
|
||||
"access": "read",
|
||||
"default": "AUTOMATIC",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"AUTOMATIC": {}
|
||||
}
|
||||
},
|
||||
"maxTimerDuration": {
|
||||
"access": "constant",
|
||||
"default": 60,
|
||||
"type": "number"
|
||||
},
|
||||
"networkInterface": {
|
||||
"autoLocalTimeOffset": {
|
||||
"access": "read",
|
||||
"max": 50400,
|
||||
"min": -43200,
|
||||
"step": 60,
|
||||
"type": "number"
|
||||
},
|
||||
"command": {
|
||||
"access": "write",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"ABORT": {},
|
||||
"APPLIANCE_AUTHORIZE": {},
|
||||
"DOWNLOAD": {},
|
||||
"START": {},
|
||||
"USER_AUTHORIZE": {},
|
||||
"USER_NOT_AUTHORIZE": {}
|
||||
}
|
||||
},
|
||||
"linkQualityIndicator": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"EXCELLENT": {},
|
||||
"GOOD": {},
|
||||
"POOR": {},
|
||||
"UNDEFINED": {},
|
||||
"VERY_GOOD": {},
|
||||
"VERY_POOR": {}
|
||||
}
|
||||
},
|
||||
"niuSwUpdateCurrentDescription": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"otaState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DESCRIPTION_AVAILABLE": {},
|
||||
"DESCRIPTION_DOWNLOADING": {},
|
||||
"DESCRIPTION_READY": {},
|
||||
"FW_DOWNLOADING": {},
|
||||
"FW_DOWNLOAD_START": {},
|
||||
"FW_SIGNATURE_CHECK": {},
|
||||
"FW_UPDATE_IN_PROGRESS": {},
|
||||
"IDLE": {},
|
||||
"READY_TO_UPDATE": {},
|
||||
"UPDATE_ABORT": {},
|
||||
"UPDATE_CHECK": {},
|
||||
"UPDATE_ERROR": {},
|
||||
"UPDATE_OK": {},
|
||||
"WAITINGFORAUTHORIZATION": {}
|
||||
}
|
||||
},
|
||||
"startUpCommand": {
|
||||
"access": "write",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"UNINSTALL": {}
|
||||
}
|
||||
},
|
||||
"swAncAndRevision": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"swVersion": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"timeZoneDatabaseName": {
|
||||
"access": "readwrite",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"remoteControl": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DISABLED": {},
|
||||
"ENABLED": {},
|
||||
"NOT_SAFETY_RELEVANT_ENABLED": {},
|
||||
"TEMPORARY_LOCKED": {}
|
||||
}
|
||||
},
|
||||
"soundVolume": {
|
||||
"access": "readwrite",
|
||||
"type": "number",
|
||||
"values": {
|
||||
"0": {},
|
||||
"1": {}
|
||||
}
|
||||
},
|
||||
"targetDuration": {
|
||||
"access": "readwrite",
|
||||
"max": 36000,
|
||||
"min": 0,
|
||||
"step": 60,
|
||||
"type": "number"
|
||||
},
|
||||
"timeToEnd": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,672 @@
|
||||
{
|
||||
"applianceInfo": {
|
||||
"serialNumber": "99907833",
|
||||
"pnc": "999008120",
|
||||
"brand": "AEG",
|
||||
"deviceType": "BUILT IN HOB",
|
||||
"model": "TU84CF43CB",
|
||||
"variant": "N/A",
|
||||
"colour": "BLACK"
|
||||
},
|
||||
"capabilities": {
|
||||
"alerts": {
|
||||
"access": "read",
|
||||
"type": "alert",
|
||||
"values": {
|
||||
"CKG_ZONE_FAIL_E601": {},
|
||||
"CKG_ZONE_FAIL_E602": {},
|
||||
"CKG_ZONE_FAIL_E603": {},
|
||||
"CKG_ZONE_FAIL_E604": {},
|
||||
"CKG_ZONE_FAIL_E605": {},
|
||||
"CKG_ZONE_FAIL_E606": {},
|
||||
"CKG_ZONE_FAIL_E611": {},
|
||||
"CKG_ZONE_FAIL_E612": {},
|
||||
"CKG_ZONE_FAIL_E613": {},
|
||||
"CKG_ZONE_FAIL_E614": {},
|
||||
"CKG_ZONE_FAIL_E615": {},
|
||||
"CKG_ZONE_FAIL_E616": {},
|
||||
"CKG_ZONE_FAIL_E621": {},
|
||||
"CKG_ZONE_FAIL_E622": {},
|
||||
"CKG_ZONE_FAIL_E623": {},
|
||||
"CKG_ZONE_FAIL_E624": {},
|
||||
"CKG_ZONE_FAIL_E625": {},
|
||||
"CKG_ZONE_FAIL_E626": {},
|
||||
"CKG_ZONE_FAIL_E651": {},
|
||||
"CKG_ZONE_FAIL_E652": {},
|
||||
"CKG_ZONE_FAIL_E653": {},
|
||||
"CKG_ZONE_FAIL_E654": {},
|
||||
"CKG_ZONE_FAIL_E655": {},
|
||||
"CKG_ZONE_FAIL_E656": {},
|
||||
"CKG_ZONE_FAN_FAIL_E701": {},
|
||||
"CKG_ZONE_FAN_FAIL_E702": {},
|
||||
"CKG_ZONE_FAN_FAIL_E703": {},
|
||||
"CKG_ZONE_FAN_FAIL_E704": {},
|
||||
"CKG_ZONE_FAN_FAIL_E705": {},
|
||||
"CKG_ZONE_FAN_FAIL_E706": {},
|
||||
"CKG_ZONE_FAN_FAIL_E711": {},
|
||||
"CKG_ZONE_FAN_FAIL_E712": {},
|
||||
"CKG_ZONE_FAN_FAIL_E713": {},
|
||||
"CKG_ZONE_FAN_FAIL_E714": {},
|
||||
"CKG_ZONE_FAN_FAIL_E715": {},
|
||||
"CKG_ZONE_FAN_FAIL_E716": {},
|
||||
"CKG_ZONE_SW_ERROR_E011": {},
|
||||
"CKG_ZONE_SW_ERROR_E012": {},
|
||||
"CKG_ZONE_SW_ERROR_E013": {},
|
||||
"CKG_ZONE_SW_ERROR_E014": {},
|
||||
"CKG_ZONE_SW_ERROR_E015": {},
|
||||
"CKG_ZONE_SW_ERROR_E016": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E401": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E402": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E403": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E404": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E405": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E406": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E411": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E412": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E413": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E414": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E415": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E416": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E431": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E432": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E433": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E434": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E435": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E436": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E441": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E442": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E443": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E444": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E445": {},
|
||||
"CKG_ZONE_TEMP_SENS_FAIL_E446": {},
|
||||
"CKG_ZONE_TEMP_TOO_HIGH_E421": {},
|
||||
"CKG_ZONE_TEMP_TOO_HIGH_E422": {},
|
||||
"CKG_ZONE_TEMP_TOO_HIGH_E423": {},
|
||||
"CKG_ZONE_TEMP_TOO_HIGH_E424": {},
|
||||
"CKG_ZONE_TEMP_TOO_HIGH_E425": {},
|
||||
"CKG_ZONE_TEMP_TOO_HIGH_E426": {},
|
||||
"DATA_CRC_ERROR_E661": {},
|
||||
"DATA_CRC_ERROR_E662": {},
|
||||
"DATA_CRC_ERROR_E663": {},
|
||||
"DISPLAY_ELECTRONIC_FAIL_E061": {},
|
||||
"DISPLAY_ELECTRONIC_FAIL_E081": {},
|
||||
"DISPLAY_ELECTRONIC_FAIL_E091": {},
|
||||
"DISPLAY_ELECTRONIC_FAIL_E0C1": {},
|
||||
"DISPLAY_NOT_PROPER_WORK_E9F1": {},
|
||||
"DISPLAY_TEMP_TOO_HIGH_E0A1": {},
|
||||
"HOOD_FAIL_E518": {},
|
||||
"HOOD_FAIL_E527": {},
|
||||
"HOOD_FAIL_E528": {},
|
||||
"HOOD_FAIL_E8B1": {},
|
||||
"HOOD_MC_BOARD_ALARM_E537": {},
|
||||
"HOOD_SW_FAIL_E517": {},
|
||||
"HUI_PIXIE_COMM_ALARM_E8B7": {},
|
||||
"INTERNAL_COMM_FAIL_E821": {},
|
||||
"INTERNAL_COMM_FAIL_E822": {},
|
||||
"INTERNAL_COMM_FAIL_E823": {},
|
||||
"INTERNAL_COMM_FAIL_E824": {},
|
||||
"INTERNAL_COMM_FAIL_E825": {},
|
||||
"INTERNAL_COMM_FAIL_E826": {},
|
||||
"INTERNAL_COMM_FAIL_E831": {},
|
||||
"INTERNAL_COMM_FAIL_E841": {},
|
||||
"INTERNAL_COMM_FAIL_E851": {},
|
||||
"INTERNAL_COMM_FAIL_E861": {},
|
||||
"INTERNAL_COMM_FAIL_E871": {},
|
||||
"KEY_ERROR_FMEA_E9D1": {},
|
||||
"KNOB_ERROR_E951": {},
|
||||
"MAINS_CONNECTION_ERROR_E311": {},
|
||||
"MAINS_CONNECTION_ERROR_E312": {},
|
||||
"MAINS_CONNECTION_ERROR_E313": {},
|
||||
"MAINS_CONNECTION_ERROR_E314": {},
|
||||
"MAINS_CONNECTION_ERROR_E315": {},
|
||||
"MAINS_CONNECTION_ERROR_E316": {},
|
||||
"MAINS_RELAY_FAIL_E641": {},
|
||||
"MAINS_RELAY_FAIL_E642": {},
|
||||
"MAINS_RELAY_FAIL_E643": {},
|
||||
"MAINS_RELAY_FAIL_E644": {},
|
||||
"MAINS_RELAY_FAIL_E645": {},
|
||||
"MAINS_RELAY_FAIL_E646": {},
|
||||
"MAINS_VOLTAGE_TOO_LOW_E321": {},
|
||||
"MAINS_VOLTAGE_TOO_LOW_E322": {},
|
||||
"MAINS_VOLTAGE_TOO_LOW_E323": {},
|
||||
"MAINS_VOLTAGE_TOO_LOW_E324": {},
|
||||
"MAINS_VOLTAGE_TOO_LOW_E325": {},
|
||||
"MAINS_VOLTAGE_TOO_LOW_E326": {},
|
||||
"SENSEBOIL_FAIL_E272": {},
|
||||
"SENSEBOIL_FAIL_E282": {},
|
||||
"SENSEBOIL_FAIL_E8A2": {},
|
||||
"SW_ERROR_E021": {},
|
||||
"SW_ERROR_E031": {},
|
||||
"SW_ERROR_E041": {},
|
||||
"SW_ERROR_E051": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E911": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E921": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E931": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E941": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E961": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E971": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E981": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E991": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E9A1": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E9B1": {},
|
||||
"TOUCH_NOT_PROPER_WORK_E9C1": {},
|
||||
"WI-FI_FAIL_E141": {},
|
||||
"WI-FI_FAIL_E181": {},
|
||||
"ZONE_ILLUMINATION_FAIL_E201": {},
|
||||
"ZONE_ILLUMINATION_FAIL_E211": {},
|
||||
"ZONE_ILLUMINATION_FAIL_E221": {},
|
||||
"ZONE_ILLUMINATION_FAIL_E231": {},
|
||||
"ZONE_ILLUMINATION_FAIL_E241": {}
|
||||
}
|
||||
},
|
||||
"applianceMode": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DEMO": {},
|
||||
"DIAGNOSTIC": {},
|
||||
"NORMAL": {},
|
||||
"SERVICE": {}
|
||||
}
|
||||
},
|
||||
"applianceState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"ALARM": {},
|
||||
"IDLE": {},
|
||||
"OFF": {},
|
||||
"PAUSED": {},
|
||||
"RUNNING": {}
|
||||
}
|
||||
},
|
||||
"childLock": {
|
||||
"access": "readwrite",
|
||||
"triggers": [
|
||||
{
|
||||
"action": {
|
||||
"$self": {
|
||||
"access": "read"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "ENABLED",
|
||||
"operator": "eq"
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": {
|
||||
"$self": {
|
||||
"access": "readwrite"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"operand_1": "value",
|
||||
"operand_2": "DISABLED",
|
||||
"operator": "eq"
|
||||
}
|
||||
}
|
||||
],
|
||||
"type": "boolean",
|
||||
"values": {
|
||||
"DISABLED": {},
|
||||
"ENABLED": {}
|
||||
}
|
||||
},
|
||||
"cpv": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"hobHood": {
|
||||
"hobToHoodFanSpeed": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"BOOST": {},
|
||||
"BREEZE": {},
|
||||
"DRYING_CYCLE": {},
|
||||
"OFF": {},
|
||||
"STEP_1": {},
|
||||
"STEP_2": {},
|
||||
"STEP_3": {}
|
||||
}
|
||||
},
|
||||
"hobToHoodMode": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"H1": {},
|
||||
"H2": {},
|
||||
"H3": {},
|
||||
"H4": {}
|
||||
}
|
||||
},
|
||||
"hobToHoodState": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"AUTOMATIC": {},
|
||||
"AUTO_SUSPEND": {
|
||||
"disabled": true
|
||||
},
|
||||
"MANUAL": {}
|
||||
}
|
||||
},
|
||||
"hoodDryingCycle": {
|
||||
"access": "readwrite",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"KEY_ERROR": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"hoodFilterCharcIndication": {
|
||||
"access": "readwrite",
|
||||
"type": "boolean",
|
||||
"values": {
|
||||
"FALSE": {},
|
||||
"TRUE": {}
|
||||
}
|
||||
},
|
||||
"hoodFilterGreaseIndication": {
|
||||
"access": "readwrite",
|
||||
"type": "boolean",
|
||||
"values": {
|
||||
"FALSE": {},
|
||||
"TRUE": {}
|
||||
}
|
||||
},
|
||||
"targetDuration": {
|
||||
"access": "readwrite",
|
||||
"default": 0,
|
||||
"max": 5940,
|
||||
"min": 0,
|
||||
"step": 60,
|
||||
"type": "number"
|
||||
},
|
||||
"timeToEnd": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"windowNotification": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"NONE": {},
|
||||
"OPENING_REQUIRED": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"hobZone1": {
|
||||
"heatingQualitativeLevel": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"max": 9,
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"POWER_LEVEL_P": {}
|
||||
}
|
||||
},
|
||||
"hobCoil": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobMaxPowerLevel": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobPotDetected": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"NO_POT_IDLE": {},
|
||||
"NO_POT_RUNNING": {},
|
||||
"POT_IDLE": {},
|
||||
"POT_RUNNING": {}
|
||||
}
|
||||
},
|
||||
"residualHeatState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"HIGH": {},
|
||||
"LOW": {},
|
||||
"MIDDLE": {},
|
||||
"NO": {}
|
||||
}
|
||||
},
|
||||
"runningTime": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"hobZone2": {
|
||||
"heatingQualitativeLevel": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"max": 9,
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"POWER_LEVEL_P": {}
|
||||
}
|
||||
},
|
||||
"hobCoil": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobMaxPowerLevel": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobPotDetected": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"NO_POT_IDLE": {},
|
||||
"NO_POT_RUNNING": {},
|
||||
"POT_IDLE": {},
|
||||
"POT_RUNNING": {}
|
||||
}
|
||||
},
|
||||
"residualHeatState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"HIGH": {},
|
||||
"LOW": {},
|
||||
"MIDDLE": {},
|
||||
"NO": {}
|
||||
}
|
||||
},
|
||||
"runningTime": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"hobZone3": {
|
||||
"heatingQualitativeLevel": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"max": 9,
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"POWER_LEVEL_P": {}
|
||||
}
|
||||
},
|
||||
"hobCoil": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobMaxPowerLevel": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobPotDetected": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"NO_POT_IDLE": {},
|
||||
"NO_POT_RUNNING": {},
|
||||
"POT_IDLE": {},
|
||||
"POT_RUNNING": {}
|
||||
}
|
||||
},
|
||||
"residualHeatState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"HIGH": {},
|
||||
"LOW": {},
|
||||
"MIDDLE": {},
|
||||
"NO": {}
|
||||
}
|
||||
},
|
||||
"runningTime": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"hobZone4": {
|
||||
"heatingQualitativeLevel": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"max": 9,
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"POWER_LEVEL_P": {}
|
||||
}
|
||||
},
|
||||
"hobCoil": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobMaxPowerLevel": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobPotDetected": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"NO_POT_IDLE": {},
|
||||
"NO_POT_RUNNING": {},
|
||||
"POT_IDLE": {},
|
||||
"POT_RUNNING": {}
|
||||
}
|
||||
},
|
||||
"residualHeatState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"HIGH": {},
|
||||
"LOW": {},
|
||||
"MIDDLE": {},
|
||||
"NO": {}
|
||||
}
|
||||
},
|
||||
"runningTime": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"hobZone7": {
|
||||
"heatingQualitativeLevel": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"max": 9,
|
||||
"min": 0,
|
||||
"step": 1,
|
||||
"type": "number",
|
||||
"values": {
|
||||
"POWER_LEVEL_ASSISTED": {},
|
||||
"POWER_LEVEL_MELTING": {},
|
||||
"POWER_LEVEL_P": {}
|
||||
}
|
||||
},
|
||||
"hobCoil": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobMaxPowerLevel": {
|
||||
"access": "read",
|
||||
"type": "number"
|
||||
},
|
||||
"hobPotDetected": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"NO_POT_IDLE": {},
|
||||
"NO_POT_RUNNING": {},
|
||||
"POT_IDLE": {},
|
||||
"POT_RUNNING": {}
|
||||
}
|
||||
},
|
||||
"residualHeatState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"HIGH": {},
|
||||
"LOW": {},
|
||||
"MIDDLE": {},
|
||||
"NO": {}
|
||||
}
|
||||
},
|
||||
"runningTime": {
|
||||
"access": "read",
|
||||
"default": 0,
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"keyModel": {
|
||||
"access": "constant",
|
||||
"default": "285_145_030",
|
||||
"type": "string"
|
||||
},
|
||||
"networkInterface": {
|
||||
"command": {
|
||||
"access": "write",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"APPLIANCE_AUTHORIZE": {},
|
||||
"START": {},
|
||||
"USER_AUTHORIZE": {},
|
||||
"USER_NOT_AUTHORIZE": {}
|
||||
}
|
||||
},
|
||||
"linkQualityIndicator": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"EXCELLENT": {},
|
||||
"GOOD": {},
|
||||
"POOR": {},
|
||||
"UNDEFINED": {},
|
||||
"VERY_GOOD": {},
|
||||
"VERY_POOR": {}
|
||||
}
|
||||
},
|
||||
"niuSwUpdateCurrentDescription": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"oTA3CurrentVersion": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"oTA3LastResult": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"BKP_BUNDLE_CRC_ERROR": {},
|
||||
"BKP_BUNDLE_INCOMPATIBLE": {},
|
||||
"BKP_BUNDLE_MALFORMED": {},
|
||||
"BKP_BUNDLE_MISSING": {},
|
||||
"BKP_BUNDLE_PROG_ATTEMPS_OVERRUN": {},
|
||||
"ERROR_APPLIANCE_ABORTED": {},
|
||||
"ERROR_BACKUP_RESTORED": {},
|
||||
"ERROR_TIMEOUT_FINALIZATION": {},
|
||||
"ERROR_TIMEOUT_GENERIC": {},
|
||||
"ERROR_TIMEOUT_MACHINE_READY_WAIT": {},
|
||||
"ERROR_TIMEOUT_PROGRAMMING": {},
|
||||
"ERROR_TIMEOUT_SYSTEM_READY_WAIT": {},
|
||||
"NEW_BUNDLE_CRC_ERROR": {},
|
||||
"NEW_BUNDLE_INCOMPATIBLE": {},
|
||||
"NEW_BUNDLE_MALFORMED": {},
|
||||
"NEW_BUNDLE_MISSING": {},
|
||||
"NEW_BUNDLE_PROG_ATTEMPS_OVERRUN": {},
|
||||
"NONE": {},
|
||||
"PROGRAMMING_EB_NOT_IN_BOOT": {},
|
||||
"PROGRAMMING_EXECUTION": {},
|
||||
"SUCCESS": {}
|
||||
}
|
||||
},
|
||||
"oTA3State": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DOWNLOAD": {},
|
||||
"FINALIZATION": {},
|
||||
"IDLE": {},
|
||||
"PROGRAMMING": {},
|
||||
"SYSTEM_READY": {},
|
||||
"UNKNOWN": {},
|
||||
"UNSUPPORTED": {},
|
||||
"UPDATE_CHECK": {},
|
||||
"WAIT_MACHINE_READY": {},
|
||||
"WAIT_USER_AUTH": {}
|
||||
}
|
||||
},
|
||||
"oTA3TargetVersion": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"otaState": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DESCRIPTION_AVAILABLE": {},
|
||||
"DESCRIPTION_DOWNLOADING": {},
|
||||
"DESCRIPTION_READY": {},
|
||||
"FW_DOWNLOADING": {},
|
||||
"FW_DOWNLOAD_START": {},
|
||||
"FW_SIGNATURE_CHECK": {},
|
||||
"FW_UPDATE_IN_PROGRESS": {},
|
||||
"IDLE": {},
|
||||
"READY_TO_UPDATE": {},
|
||||
"UPDATE_ABORT": {},
|
||||
"UPDATE_CHECK": {},
|
||||
"UPDATE_ERROR": {},
|
||||
"UPDATE_OK": {},
|
||||
"WAITINGFORAUTHORIZATION": {}
|
||||
}
|
||||
},
|
||||
"startUpCommand": {
|
||||
"access": "write",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"UNINSTALL": {}
|
||||
}
|
||||
},
|
||||
"swAncAndRevision": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
},
|
||||
"swVersion": {
|
||||
"access": "read",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"remoteControl": {
|
||||
"access": "read",
|
||||
"type": "string",
|
||||
"values": {
|
||||
"DISABLED": {},
|
||||
"ENABLED": {},
|
||||
"NOT_SAFETY_RELEVANT_ENABLED": {},
|
||||
"TEMPORARY_LOCKED": {}
|
||||
}
|
||||
},
|
||||
"uiLockMode": {
|
||||
"access": "read",
|
||||
"type": "boolean",
|
||||
"values": {
|
||||
"OFF": {},
|
||||
"ON": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"applianceId": "999011403_00:20220412-443E07022463",
|
||||
"connectionState": "disconnected",
|
||||
"status": "enabled",
|
||||
"properties": {
|
||||
"reported": {
|
||||
"applianceInfo": {
|
||||
"applianceType": "CR",
|
||||
"capabilityHash": "bf87e5b776236bf693664d892f1eeebef672df3ab1d0a56e7479ec1ece8932c4"
|
||||
},
|
||||
"fridge": {
|
||||
"applianceState": "RUNNING",
|
||||
"fanState": "ON",
|
||||
"doorState": "CLOSED",
|
||||
"targetTemperatureF": 39.2,
|
||||
"targetTemperatureC": 4,
|
||||
"fastMode": "OFF",
|
||||
"alerts": []
|
||||
},
|
||||
"applianceUiSwVersion": "v4.0.4",
|
||||
"uiLockMode": false,
|
||||
"cpv": "00",
|
||||
"vacationHolidayMode": "OFF",
|
||||
"applianceMode": "NORMAL",
|
||||
"applianceMainBoardSwVersion": "v39.00.00",
|
||||
"coolingValveState": "1",
|
||||
"alerts": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"acknowledgeStatus": "NOT_NEEDED",
|
||||
"code": "AIR_SENSOR_BROKEN",
|
||||
"applianceCode": "6"
|
||||
}
|
||||
],
|
||||
"networkInterface": {
|
||||
"linkQualityIndicator": "VERY_GOOD",
|
||||
"otaState": "IDLE",
|
||||
"swVersion": "v1.9.2_hacl",
|
||||
"niuSwUpdateCurrentDescription": "A16323312A-S00006975A",
|
||||
"swAncAndRevision": "S00006975A"
|
||||
},
|
||||
"freezer": {
|
||||
"fastMode": "OFF",
|
||||
"applianceState": "RUNNING",
|
||||
"fanState": "OFF",
|
||||
"doorState": "CLOSED",
|
||||
"targetTemperatureF": -0.3999999999999986,
|
||||
"targetTemperatureC": -18,
|
||||
"alerts": []
|
||||
},
|
||||
"reminderTime": -1,
|
||||
"connectivityState": "disconnected",
|
||||
"energySavingMode": "OFF"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"applianceId": "999008105_00:99010299-443E074B7A6E",
|
||||
"connectionState": "connected",
|
||||
"status": "enabled",
|
||||
"properties": {
|
||||
"reported": {
|
||||
"applianceInfo": {
|
||||
"applianceType": "HD",
|
||||
"capabilityHash": "5ac0f7e099cfaa217c694cb69edd604d94c31892c11f183049e10d1eebc91a1f"
|
||||
},
|
||||
"hoodCharcFilterTimer": 457200,
|
||||
"hoodFilterCharcEnable": "ON",
|
||||
"humanCentricLightEventState": "OFF",
|
||||
"hoodFanLevel": "OFF",
|
||||
"tvocFilterTime": 918000,
|
||||
"remoteControl": "ENABLED",
|
||||
"cpv": "00",
|
||||
"humanCentricLightEventSettings": {
|
||||
"0": {
|
||||
"lightIntensityPrc": 62,
|
||||
"startTimeMinutes": 5,
|
||||
"lightColorPrc": 100,
|
||||
"startTimeHour": 10
|
||||
},
|
||||
"1": {
|
||||
"lightIntensityPrc": 100,
|
||||
"startTimeMinutes": 20,
|
||||
"lightColorPrc": 40,
|
||||
"startTimeHour": 10
|
||||
},
|
||||
"2": {
|
||||
"lightIntensityPrc": 100,
|
||||
"startTimeMinutes": 35,
|
||||
"lightColorPrc": 100,
|
||||
"startTimeHour": 10
|
||||
},
|
||||
"3": {
|
||||
"lightIntensityPrc": 50,
|
||||
"startTimeMinutes": 0,
|
||||
"lightColorPrc": 30,
|
||||
"startTimeHour": 11
|
||||
},
|
||||
"4": {
|
||||
"lightIntensityPrc": 70,
|
||||
"startTimeMinutes": 0,
|
||||
"lightColorPrc": 70,
|
||||
"startTimeHour": 13
|
||||
},
|
||||
"5": {
|
||||
"lightIntensityPrc": 69,
|
||||
"startTimeMinutes": 30,
|
||||
"lightColorPrc": 40,
|
||||
"startTimeHour": 13
|
||||
},
|
||||
"6": {
|
||||
"lightIntensityPrc": 50,
|
||||
"startTimeMinutes": 0,
|
||||
"lightColorPrc": 69,
|
||||
"startTimeHour": 14
|
||||
}
|
||||
},
|
||||
"applianceState": "IDLE",
|
||||
"applianceMode": "NORMAL",
|
||||
"applianceLocalTimeOffset": 7200,
|
||||
"hoodGreaseFilterTimer": 424800,
|
||||
"lightIntensity": 0,
|
||||
"localTimeAutomaticMode": "AUTOMATIC",
|
||||
"alerts": [],
|
||||
"lightColorTemperature": 0,
|
||||
"soundVolume": 0,
|
||||
"hoodFilterCharcIndication": false,
|
||||
"networkInterface": {
|
||||
"swVersion": "v4.0.0S_argo",
|
||||
"otaState": "IDLE",
|
||||
"autoLocalTimeOffset": 7200,
|
||||
"niuSwUpdateCurrentDescription": "A23642205A-S00008458A",
|
||||
"timeZoneDatabaseName": "Europe/Stockholm",
|
||||
"swAncAndRevision": "S00008458A",
|
||||
"linkQualityIndicator": "EXCELLENT"
|
||||
},
|
||||
"targetDuration": 0,
|
||||
"hoodFilterGreaseIndication": "TRUE",
|
||||
"connectivityState": "connected",
|
||||
"hoodAutoSwitchOffEvent": false,
|
||||
"timeToEnd": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"applianceId": "999008120_00:99907833-443E073D986E",
|
||||
"connectionState": "connected",
|
||||
"status": "enabled",
|
||||
"properties": {
|
||||
"reported": {
|
||||
"oTA3TargetVersion": "S000412012A\u0000",
|
||||
"applianceInfo": {
|
||||
"capabilityHash": "6e7da5a7b8b39c99b9b08dd5b2e0f834885fc473832414e05ef3d31da0a5440d",
|
||||
"applianceType": "HB"
|
||||
},
|
||||
"oTA3CurrentVersion": "S0004120121\u0000",
|
||||
"remoteControl": "NOT_SAFETY_RELEVANT_ENABLED",
|
||||
"oTA3State": "IDLE",
|
||||
"cpv": "00",
|
||||
"applianceState": "OFF",
|
||||
"hobHood": {
|
||||
"hoodDryingCycle": "OFF",
|
||||
"hobToHoodState": "MANUAL",
|
||||
"hoodFilterCharcIndication": false,
|
||||
"hobToHoodFanSpeed": "OFF",
|
||||
"windowNotification": "OPENING_REQUIRED",
|
||||
"hobToHoodMode": "H3",
|
||||
"hoodFilterGreaseIndication": false
|
||||
},
|
||||
"alerts": [],
|
||||
"oTA3LastResult": "NONE",
|
||||
"networkInterface": {
|
||||
"swVersion": "v4.8.06rc2_argo",
|
||||
"otaState": "IDLE",
|
||||
"autoLocalTimeOffset": 7200,
|
||||
"niuSwUpdateCurrentDescription": "A24559615A-S00031110B",
|
||||
"timeZoneDatabaseName": "Europe/Stockholm",
|
||||
"swAncAndRevision": "S00031110B",
|
||||
"linkQualityIndicator": "VERY_GOOD",
|
||||
"oTA3TargetVersion": "S000412012A\u0000",
|
||||
"oTA3LastResult": "NONE",
|
||||
"oTA3CurrentVersion": "S0004120121\u0000",
|
||||
"oTA3State": "IDLE"
|
||||
},
|
||||
"childLock": false,
|
||||
"hobZone2": {
|
||||
"residualHeatState": "NO",
|
||||
"heatingQualitativeLevel": 0,
|
||||
"hobPotDetected": "NO_POT_IDLE"
|
||||
},
|
||||
"hobZone1": {
|
||||
"residualHeatState": "NO",
|
||||
"heatingQualitativeLevel": 0,
|
||||
"hobPotDetected": "NO_POT_IDLE"
|
||||
},
|
||||
"hobZone4": {
|
||||
"residualHeatState": "NO",
|
||||
"heatingQualitativeLevel": 0,
|
||||
"hobPotDetected": "NO_POT_IDLE"
|
||||
},
|
||||
"hobZone3": {
|
||||
"residualHeatState": "NO",
|
||||
"heatingQualitativeLevel": 0,
|
||||
"hobPotDetected": "NO_POT_IDLE"
|
||||
},
|
||||
"connectivityState": "connected"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"applianceId": "944035064_00:27032025-443E073D97B2",
|
||||
"connectionState": "connected",
|
||||
"status": "enabled",
|
||||
"properties": {
|
||||
"reported": {
|
||||
"cleaningReminder": true,
|
||||
"displayLight": "DISPLAY_LIGHT_3",
|
||||
"temperatureRepresentation": "CELSIUS",
|
||||
"remoteControl": "ENABLED",
|
||||
"language": "ENGLISH",
|
||||
"clockStyle": "NOT_SELECTED",
|
||||
"localTimeAutomaticMode": "MANUAL",
|
||||
"soundVolume": 2,
|
||||
"keySoundTone": "CLICK",
|
||||
"upperOven": {
|
||||
"applianceState": "READY_TO_START",
|
||||
"doorState": "CLOSED",
|
||||
"targetTemperatureF": 356,
|
||||
"targetTemperatureC": 180,
|
||||
"runningTime": -2147483648,
|
||||
"program": "STEAMIFY",
|
||||
"executeCommand": "STOPRESET",
|
||||
"targetMicrowavePower": 0,
|
||||
"waterTankLevel": "OK",
|
||||
"foodProbeInsertionState": "NOT_INSERTED",
|
||||
"cavityLight": false,
|
||||
"targetDuration": 0,
|
||||
"startTime": -2147483648,
|
||||
"waterTrayInsertionState": "INSERTED",
|
||||
"reminderTime": -2147483648,
|
||||
"fastHeatUpFeature": "DISABLED",
|
||||
"messageQueueSync": {
|
||||
"activeMessageIndex": 0,
|
||||
"messageBehaviour": "INVALID",
|
||||
"messageQueueId": 0,
|
||||
"messageQueueType": "INVALID"
|
||||
},
|
||||
"favoriteSelect": "255",
|
||||
"processPhase": "NONE",
|
||||
"displayTemperatureC": 30,
|
||||
"displayTemperatureF": 86,
|
||||
"displayFoodProbeTemperatureC": null,
|
||||
"displayFoodProbeTemperatureF": null,
|
||||
"timeToEnd": 3599
|
||||
},
|
||||
"waterHardness": "STEP_4",
|
||||
"oTA3TargetVersion": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000",
|
||||
"applianceInfo": {
|
||||
"applianceType": "SO",
|
||||
"capabilityHash": "4d0d5929a62cb8772f346348875e59bd758a3a88e247f39fc1c607e258cbbc00"
|
||||
},
|
||||
"oTA3CurrentVersion": "S0005330604\u0000",
|
||||
"applianceUiConfigVersion": "Oven_C000000062_0.0.31",
|
||||
"cpv": "03",
|
||||
"oTA3State": "IDLE",
|
||||
"applianceState": "OFF",
|
||||
"applianceLocalTimeOffset": -417172230,
|
||||
"favoriteSelect": "255",
|
||||
"alerts": [],
|
||||
"oTA3LastResult": "NONE",
|
||||
"fastHeatUpFeature": "DISABLED",
|
||||
"networkInterface": {
|
||||
"swVersion": "v4.6.06_argo",
|
||||
"otaState": "IDLE",
|
||||
"autoLocalTimeOffset": 7200,
|
||||
"niuSwUpdateCurrentDescription": "A24559613B-S00031107A",
|
||||
"timeZoneDatabaseName": "Europe/Stockholm",
|
||||
"swAncAndRevision": "S00031107A",
|
||||
"linkQualityIndicator": "VERY_GOOD",
|
||||
"oTA3TargetVersion": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000",
|
||||
"oTA3LastResult": "NONE",
|
||||
"oTA3CurrentVersion": "S0005330604\u0000",
|
||||
"oTA3State": "IDLE"
|
||||
},
|
||||
"childLock": false,
|
||||
"descalingReminderState": false,
|
||||
"connectivityState": "connected",
|
||||
"messageQueueSync": {
|
||||
"activeMessageIndex": 0,
|
||||
"messageBehaviour": "INVALID",
|
||||
"messageQueueId": 0,
|
||||
"messageQueueType": "INVALID"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"applianceId": "999120000_00:74852244-443E0704101F",
|
||||
"connectionState": "disconnected",
|
||||
"status": "enabled",
|
||||
"properties": {
|
||||
"reported": {
|
||||
"waterHardness": "MEDIUM",
|
||||
"applianceInfo": {
|
||||
"applianceType": "TD",
|
||||
"capabilityHash": "e3f20b48d86da2cc3f492406af903a7597349e7d5777c09612efadfcac84ab9d"
|
||||
},
|
||||
"timeToEnd": 2040,
|
||||
"doorState": "OPEN",
|
||||
"miscellaneous": {},
|
||||
"applianceUiSwVersion": "UDA1MC07",
|
||||
"uiLockMode": false,
|
||||
"applianceTotalWorkingTime": 0,
|
||||
"remoteControl": "NOT_SAFETY_RELEVANT_ENABLED",
|
||||
"cpv": "00",
|
||||
"language": "ENGLISH",
|
||||
"applianceState": "OFF",
|
||||
"dryingNominalLoadWeight": 65535,
|
||||
"applianceMode": "NORMAL",
|
||||
"applianceMainBoardSwVersion": "TRB40034",
|
||||
"totalCycleCounter": 0,
|
||||
"measuredLoadWeight": 65535,
|
||||
"alerts": [],
|
||||
"cyclePhase": "UNAVAILABLE",
|
||||
"networkInterface": {
|
||||
"otaState": "IDLE",
|
||||
"swVersion": "v5.4.0",
|
||||
"linkQualityIndicator": "VERY_GOOD",
|
||||
"niuSwUpdateCurrentDescription": "A07491702B-S00006963A",
|
||||
"swAncAndRevision": "S00006963A"
|
||||
},
|
||||
"endOfCycleSound": "NO_SOUND",
|
||||
"startTime": -1,
|
||||
"userSelections": {
|
||||
"reversePlus": false,
|
||||
"tDEconomy_Eco": true,
|
||||
"humidityTarget": "CUPBOARD",
|
||||
"refresh": false,
|
||||
"drynessValue": "MINIMUM",
|
||||
"programUID": "SILK_DRY_PR_SILK",
|
||||
"antiCreaseValue": 120,
|
||||
"tDEconomy_Night": false,
|
||||
"dryingTime": 0,
|
||||
"tDEconomy_Quick": false,
|
||||
"steamValue": "STEAM_OFF"
|
||||
},
|
||||
"connectivityState": "disconnected"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"applianceId": "999011403_00:20220412-443E07022463",
|
||||
"applianceName": "Ayran",
|
||||
"applianceType": "CR",
|
||||
"created": "2025-03-06T10:00:57.477+00:00"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"applianceId": "999008105_00:99010299-443E074B7A6E",
|
||||
"applianceName": "Ceiling Hood",
|
||||
"applianceType": "HD",
|
||||
"created": "2024-11-14T03:27:20.672+00:00"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"applianceId": "999008120_00:99907833-443E073D986E",
|
||||
"applianceName": "Peacock hob",
|
||||
"applianceType": "HB",
|
||||
"created": "2025-08-12T07:29:55.249+00:00"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"applianceId": "944035064_00:27032025-443E073D97B2",
|
||||
"applianceName": "Supex oven",
|
||||
"applianceType": "SO",
|
||||
"created": "2026-03-23T08:14:42.975+00:00"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"applianceId": "999120000_00:74852244-443E0704101F",
|
||||
"applianceName": "Dryer",
|
||||
"applianceType": "TD",
|
||||
"created": "2025-12-10T15:14:32.043+00:00"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,35 @@
|
||||
# serializer version: 1
|
||||
# name: test_all_appliances[ayran_fridge]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
'config_entries': <ANY>,
|
||||
'config_entries_subentries': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': None,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'identifiers': set({
|
||||
tuple(
|
||||
'electrolux',
|
||||
'999011403_00:20220412-443E07022463',
|
||||
),
|
||||
}),
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'AEG',
|
||||
'model': 'RCB732E9MX',
|
||||
'model_id': None,
|
||||
'name': 'Ayran',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': '20220412',
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_all_appliances[fenix_oven]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
@@ -30,6 +61,68 @@
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_all_appliances[hood]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
'config_entries': <ANY>,
|
||||
'config_entries_subentries': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': None,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'identifiers': set({
|
||||
tuple(
|
||||
'electrolux',
|
||||
'999008105_00:99010299-443E074B7A6E',
|
||||
),
|
||||
}),
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'AEG',
|
||||
'model': 'DDC8271W',
|
||||
'model_id': None,
|
||||
'name': 'Ceiling Hood',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': '99010299',
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_all_appliances[peacock_hob]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
'config_entries': <ANY>,
|
||||
'config_entries_subentries': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': None,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'identifiers': set({
|
||||
tuple(
|
||||
'electrolux',
|
||||
'999008120_00:99907833-443E073D986E',
|
||||
),
|
||||
}),
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'AEG',
|
||||
'model': 'TU84CF43CB',
|
||||
'model_id': None,
|
||||
'name': 'Peacock hob',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': '99907833',
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_all_appliances[pux_oven]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
@@ -61,3 +154,65 @@
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_all_appliances[supex_structured_oven]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
'config_entries': <ANY>,
|
||||
'config_entries_subentries': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': None,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'identifiers': set({
|
||||
tuple(
|
||||
'electrolux',
|
||||
'944035064_00:27032025-443E073D97B2',
|
||||
),
|
||||
}),
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'AEG',
|
||||
'model': 'NBP9S831AB',
|
||||
'model_id': None,
|
||||
'name': 'Supex oven',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': '27032025',
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_all_appliances[tumble_dryer]
|
||||
DeviceRegistryEntrySnapshot({
|
||||
'area_id': None,
|
||||
'config_entries': <ANY>,
|
||||
'config_entries_subentries': <ANY>,
|
||||
'configuration_url': None,
|
||||
'connections': set({
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'entry_type': None,
|
||||
'hw_version': None,
|
||||
'id': <ANY>,
|
||||
'identifiers': set({
|
||||
tuple(
|
||||
'electrolux',
|
||||
'999120000_00:74852244-443E0704101F',
|
||||
),
|
||||
}),
|
||||
'labels': set({
|
||||
}),
|
||||
'manufacturer': 'ELECTROLUX',
|
||||
'model': 'EW9H778P9',
|
||||
'model_id': None,
|
||||
'name': 'Dryer',
|
||||
'name_by_user': None,
|
||||
'primary_config_entry': <ANY>,
|
||||
'serial_number': '74852244',
|
||||
'sw_version': None,
|
||||
'via_device_id': None,
|
||||
})
|
||||
# ---
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
"""Binary sensor tests of Electrolux integration."""
|
||||
|
||||
from collections.abc import Generator
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
|
||||
from . import setup_integration
|
||||
|
||||
from tests.common import MockConfigEntry, snapshot_platform
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def override_platforms() -> Generator[None]:
|
||||
"""Override PLATFORMS."""
|
||||
with patch(
|
||||
"homeassistant.components.electrolux.PLATFORMS", [Platform.BINARY_SENSOR]
|
||||
):
|
||||
yield
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("appliances")
|
||||
async def test_binary_sensor(
|
||||
hass: HomeAssistant,
|
||||
entity_registry: er.EntityRegistry,
|
||||
snapshot: SnapshotAssertion,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
) -> None:
|
||||
"""Test states of the sensor."""
|
||||
await setup_integration(hass, mock_config_entry)
|
||||
await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id)
|
||||
Reference in New Issue
Block a user