Bump plugwise to v0.31.9 (#97203)
Co-authored-by: Franck Nijhof <frenck@frenck.nl> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Co-authored-by: Bouwe <bouwe.s.westerdijk@gmail.com>
This commit is contained in:
parent
a224b668d7
commit
4a4523c249
30 changed files with 1415 additions and 1052 deletions
|
@ -1,11 +1,11 @@
|
||||||
"""Plugwise Binary Sensor component for Home Assistant."""
|
"""Plugwise Binary Sensor component for Home Assistant."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Callable, Mapping
|
from collections.abc import Mapping
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from plugwise import SmileBinarySensors
|
from plugwise.constants import BinarySensorType
|
||||||
|
|
||||||
from homeassistant.components.binary_sensor import (
|
from homeassistant.components.binary_sensor import (
|
||||||
BinarySensorEntity,
|
BinarySensorEntity,
|
||||||
|
@ -24,18 +24,10 @@ SEVERITIES = ["other", "info", "warning", "error"]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class PlugwiseBinarySensorMixin:
|
class PlugwiseBinarySensorEntityDescription(BinarySensorEntityDescription):
|
||||||
"""Mixin for required Plugwise binary sensor base description keys."""
|
|
||||||
|
|
||||||
value_fn: Callable[[SmileBinarySensors], bool]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class PlugwiseBinarySensorEntityDescription(
|
|
||||||
BinarySensorEntityDescription, PlugwiseBinarySensorMixin
|
|
||||||
):
|
|
||||||
"""Describes a Plugwise binary sensor entity."""
|
"""Describes a Plugwise binary sensor entity."""
|
||||||
|
|
||||||
|
key: BinarySensorType
|
||||||
icon_off: str | None = None
|
icon_off: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,14 +38,12 @@ BINARY_SENSORS: tuple[PlugwiseBinarySensorEntityDescription, ...] = (
|
||||||
icon="mdi:hvac",
|
icon="mdi:hvac",
|
||||||
icon_off="mdi:hvac-off",
|
icon_off="mdi:hvac-off",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["compressor_state"],
|
|
||||||
),
|
),
|
||||||
PlugwiseBinarySensorEntityDescription(
|
PlugwiseBinarySensorEntityDescription(
|
||||||
key="cooling_enabled",
|
key="cooling_enabled",
|
||||||
translation_key="cooling_enabled",
|
translation_key="cooling_enabled",
|
||||||
icon="mdi:snowflake-thermometer",
|
icon="mdi:snowflake-thermometer",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["cooling_enabled"],
|
|
||||||
),
|
),
|
||||||
PlugwiseBinarySensorEntityDescription(
|
PlugwiseBinarySensorEntityDescription(
|
||||||
key="dhw_state",
|
key="dhw_state",
|
||||||
|
@ -61,7 +51,6 @@ BINARY_SENSORS: tuple[PlugwiseBinarySensorEntityDescription, ...] = (
|
||||||
icon="mdi:water-pump",
|
icon="mdi:water-pump",
|
||||||
icon_off="mdi:water-pump-off",
|
icon_off="mdi:water-pump-off",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["dhw_state"],
|
|
||||||
),
|
),
|
||||||
PlugwiseBinarySensorEntityDescription(
|
PlugwiseBinarySensorEntityDescription(
|
||||||
key="flame_state",
|
key="flame_state",
|
||||||
|
@ -70,7 +59,6 @@ BINARY_SENSORS: tuple[PlugwiseBinarySensorEntityDescription, ...] = (
|
||||||
icon="mdi:fire",
|
icon="mdi:fire",
|
||||||
icon_off="mdi:fire-off",
|
icon_off="mdi:fire-off",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["flame_state"],
|
|
||||||
),
|
),
|
||||||
PlugwiseBinarySensorEntityDescription(
|
PlugwiseBinarySensorEntityDescription(
|
||||||
key="heating_state",
|
key="heating_state",
|
||||||
|
@ -78,7 +66,6 @@ BINARY_SENSORS: tuple[PlugwiseBinarySensorEntityDescription, ...] = (
|
||||||
icon="mdi:radiator",
|
icon="mdi:radiator",
|
||||||
icon_off="mdi:radiator-off",
|
icon_off="mdi:radiator-off",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["heating_state"],
|
|
||||||
),
|
),
|
||||||
PlugwiseBinarySensorEntityDescription(
|
PlugwiseBinarySensorEntityDescription(
|
||||||
key="cooling_state",
|
key="cooling_state",
|
||||||
|
@ -86,7 +73,6 @@ BINARY_SENSORS: tuple[PlugwiseBinarySensorEntityDescription, ...] = (
|
||||||
icon="mdi:snowflake",
|
icon="mdi:snowflake",
|
||||||
icon_off="mdi:snowflake-off",
|
icon_off="mdi:snowflake-off",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["cooling_state"],
|
|
||||||
),
|
),
|
||||||
PlugwiseBinarySensorEntityDescription(
|
PlugwiseBinarySensorEntityDescription(
|
||||||
key="slave_boiler_state",
|
key="slave_boiler_state",
|
||||||
|
@ -94,7 +80,6 @@ BINARY_SENSORS: tuple[PlugwiseBinarySensorEntityDescription, ...] = (
|
||||||
icon="mdi:fire",
|
icon="mdi:fire",
|
||||||
icon_off="mdi:circle-off-outline",
|
icon_off="mdi:circle-off-outline",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["slave_boiler_state"],
|
|
||||||
),
|
),
|
||||||
PlugwiseBinarySensorEntityDescription(
|
PlugwiseBinarySensorEntityDescription(
|
||||||
key="plugwise_notification",
|
key="plugwise_notification",
|
||||||
|
@ -102,7 +87,6 @@ BINARY_SENSORS: tuple[PlugwiseBinarySensorEntityDescription, ...] = (
|
||||||
icon="mdi:mailbox-up-outline",
|
icon="mdi:mailbox-up-outline",
|
||||||
icon_off="mdi:mailbox-outline",
|
icon_off="mdi:mailbox-outline",
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
value_fn=lambda data: data["plugwise_notification"],
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -154,7 +138,7 @@ class PlugwiseBinarySensorEntity(PlugwiseEntity, BinarySensorEntity):
|
||||||
@property
|
@property
|
||||||
def is_on(self) -> bool:
|
def is_on(self) -> bool:
|
||||||
"""Return true if the binary sensor is on."""
|
"""Return true if the binary sensor is on."""
|
||||||
return self.entity_description.value_fn(self.device["binary_sensors"])
|
return self.device["binary_sensors"][self.entity_description.key]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def icon(self) -> str | None:
|
def icon(self) -> str | None:
|
||||||
|
|
|
@ -130,13 +130,13 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
||||||
if control_state == "off":
|
if control_state == "off":
|
||||||
return HVACAction.IDLE
|
return HVACAction.IDLE
|
||||||
|
|
||||||
hc_data = self.coordinator.data.devices[
|
heater: str | None = self.coordinator.data.gateway["heater_id"]
|
||||||
self.coordinator.data.gateway["heater_id"]
|
if heater:
|
||||||
]
|
heater_data = self.coordinator.data.devices[heater]
|
||||||
if hc_data["binary_sensors"]["heating_state"]:
|
if heater_data["binary_sensors"]["heating_state"]:
|
||||||
return HVACAction.HEATING
|
return HVACAction.HEATING
|
||||||
if hc_data["binary_sensors"].get("cooling_state"):
|
if heater_data["binary_sensors"].get("cooling_state"):
|
||||||
return HVACAction.COOLING
|
return HVACAction.COOLING
|
||||||
|
|
||||||
return HVACAction.IDLE
|
return HVACAction.IDLE
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
|
||||||
"""Return entity specific state attributes."""
|
"""Return entity specific state attributes."""
|
||||||
return {
|
return {
|
||||||
"available_schemas": self.device["available_schedules"],
|
"available_schemas": self.device["available_schedules"],
|
||||||
"selected_schema": self.device["selected_schedule"],
|
"selected_schema": self.device["select_schedule"],
|
||||||
}
|
}
|
||||||
|
|
||||||
@plugwise_command
|
@plugwise_command
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
"""DataUpdateCoordinator for Plugwise."""
|
"""DataUpdateCoordinator for Plugwise."""
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from typing import NamedTuple, cast
|
|
||||||
|
|
||||||
from plugwise import Smile
|
from plugwise import PlugwiseData, Smile
|
||||||
from plugwise.constants import DeviceData, GatewayData
|
|
||||||
from plugwise.exceptions import (
|
from plugwise.exceptions import (
|
||||||
ConnectionFailedError,
|
ConnectionFailedError,
|
||||||
InvalidAuthentication,
|
InvalidAuthentication,
|
||||||
|
@ -23,13 +21,6 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
|
||||||
from .const import DEFAULT_PORT, DEFAULT_SCAN_INTERVAL, DEFAULT_USERNAME, DOMAIN, LOGGER
|
from .const import DEFAULT_PORT, DEFAULT_SCAN_INTERVAL, DEFAULT_USERNAME, DOMAIN, LOGGER
|
||||||
|
|
||||||
|
|
||||||
class PlugwiseData(NamedTuple):
|
|
||||||
"""Plugwise data stored in the DataUpdateCoordinator."""
|
|
||||||
|
|
||||||
gateway: GatewayData
|
|
||||||
devices: dict[str, DeviceData]
|
|
||||||
|
|
||||||
|
|
||||||
class PlugwiseDataUpdateCoordinator(DataUpdateCoordinator[PlugwiseData]):
|
class PlugwiseDataUpdateCoordinator(DataUpdateCoordinator[PlugwiseData]):
|
||||||
"""Class to manage fetching Plugwise data from single endpoint."""
|
"""Class to manage fetching Plugwise data from single endpoint."""
|
||||||
|
|
||||||
|
@ -65,13 +56,13 @@ class PlugwiseDataUpdateCoordinator(DataUpdateCoordinator[PlugwiseData]):
|
||||||
"""Connect to the Plugwise Smile."""
|
"""Connect to the Plugwise Smile."""
|
||||||
self._connected = await self.api.connect()
|
self._connected = await self.api.connect()
|
||||||
self.api.get_all_devices()
|
self.api.get_all_devices()
|
||||||
self.name = self.api.smile_name
|
|
||||||
self.update_interval = DEFAULT_SCAN_INTERVAL.get(
|
self.update_interval = DEFAULT_SCAN_INTERVAL.get(
|
||||||
str(self.api.smile_type), timedelta(seconds=60)
|
str(self.api.smile_type), timedelta(seconds=60)
|
||||||
)
|
)
|
||||||
|
|
||||||
async def _async_update_data(self) -> PlugwiseData:
|
async def _async_update_data(self) -> PlugwiseData:
|
||||||
"""Fetch data from Plugwise."""
|
"""Fetch data from Plugwise."""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if not self._connected:
|
if not self._connected:
|
||||||
await self._connect()
|
await self._connect()
|
||||||
|
@ -87,7 +78,4 @@ class PlugwiseDataUpdateCoordinator(DataUpdateCoordinator[PlugwiseData]):
|
||||||
raise ConfigEntryError("Device with unsupported firmware") from err
|
raise ConfigEntryError("Device with unsupported firmware") from err
|
||||||
except ConnectionFailedError as err:
|
except ConnectionFailedError as err:
|
||||||
raise UpdateFailed("Failed to connect to the Plugwise Smile") from err
|
raise UpdateFailed("Failed to connect to the Plugwise Smile") from err
|
||||||
return PlugwiseData(
|
return data
|
||||||
gateway=cast(GatewayData, data[0]),
|
|
||||||
devices=cast(dict[str, DeviceData], data[1]),
|
|
||||||
)
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ class PlugwiseEntity(CoordinatorEntity[PlugwiseDataUpdateCoordinator]):
|
||||||
"""Return if entity is available."""
|
"""Return if entity is available."""
|
||||||
return (
|
return (
|
||||||
self._dev_id in self.coordinator.data.devices
|
self._dev_id in self.coordinator.data.devices
|
||||||
and ("available" not in self.device or self.device["available"])
|
and ("available" not in self.device or self.device["available"] is True)
|
||||||
and super().available
|
and super().available
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,6 @@
|
||||||
"integration_type": "hub",
|
"integration_type": "hub",
|
||||||
"iot_class": "local_polling",
|
"iot_class": "local_polling",
|
||||||
"loggers": ["crcmod", "plugwise"],
|
"loggers": ["crcmod", "plugwise"],
|
||||||
"requirements": ["plugwise==0.31.1"],
|
"requirements": ["plugwise==0.31.9"],
|
||||||
"zeroconf": ["_plugwise._tcp.local."]
|
"zeroconf": ["_plugwise._tcp.local."]
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,8 @@ from __future__ import annotations
|
||||||
from collections.abc import Awaitable, Callable
|
from collections.abc import Awaitable, Callable
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
from plugwise import ActuatorData, Smile
|
from plugwise import Smile
|
||||||
|
from plugwise.constants import NumberType
|
||||||
|
|
||||||
from homeassistant.components.number import (
|
from homeassistant.components.number import (
|
||||||
NumberDeviceClass,
|
NumberDeviceClass,
|
||||||
|
@ -27,10 +28,6 @@ class PlugwiseEntityDescriptionMixin:
|
||||||
"""Mixin values for Plugwise entities."""
|
"""Mixin values for Plugwise entities."""
|
||||||
|
|
||||||
command: Callable[[Smile, str, float], Awaitable[None]]
|
command: Callable[[Smile, str, float], Awaitable[None]]
|
||||||
native_max_value_fn: Callable[[ActuatorData], float]
|
|
||||||
native_min_value_fn: Callable[[ActuatorData], float]
|
|
||||||
native_step_fn: Callable[[ActuatorData], float]
|
|
||||||
native_value_fn: Callable[[ActuatorData], float]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -39,6 +36,8 @@ class PlugwiseNumberEntityDescription(
|
||||||
):
|
):
|
||||||
"""Class describing Plugwise Number entities."""
|
"""Class describing Plugwise Number entities."""
|
||||||
|
|
||||||
|
key: NumberType
|
||||||
|
|
||||||
|
|
||||||
NUMBER_TYPES = (
|
NUMBER_TYPES = (
|
||||||
PlugwiseNumberEntityDescription(
|
PlugwiseNumberEntityDescription(
|
||||||
|
@ -48,10 +47,6 @@ NUMBER_TYPES = (
|
||||||
device_class=NumberDeviceClass.TEMPERATURE,
|
device_class=NumberDeviceClass.TEMPERATURE,
|
||||||
entity_category=EntityCategory.CONFIG,
|
entity_category=EntityCategory.CONFIG,
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
native_max_value_fn=lambda data: data["upper_bound"],
|
|
||||||
native_min_value_fn=lambda data: data["lower_bound"],
|
|
||||||
native_step_fn=lambda data: data["resolution"],
|
|
||||||
native_value_fn=lambda data: data["setpoint"],
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -70,7 +65,7 @@ async def async_setup_entry(
|
||||||
entities: list[PlugwiseNumberEntity] = []
|
entities: list[PlugwiseNumberEntity] = []
|
||||||
for device_id, device in coordinator.data.devices.items():
|
for device_id, device in coordinator.data.devices.items():
|
||||||
for description in NUMBER_TYPES:
|
for description in NUMBER_TYPES:
|
||||||
if (actuator := device.get(description.key)) and "setpoint" in actuator:
|
if description.key in device:
|
||||||
entities.append(
|
entities.append(
|
||||||
PlugwiseNumberEntity(coordinator, device_id, description)
|
PlugwiseNumberEntity(coordinator, device_id, description)
|
||||||
)
|
)
|
||||||
|
@ -91,30 +86,18 @@ class PlugwiseNumberEntity(PlugwiseEntity, NumberEntity):
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initiate Plugwise Number."""
|
"""Initiate Plugwise Number."""
|
||||||
super().__init__(coordinator, device_id)
|
super().__init__(coordinator, device_id)
|
||||||
self.actuator = self.device[description.key]
|
|
||||||
self.entity_description = description
|
self.entity_description = description
|
||||||
self._attr_unique_id = f"{device_id}-{description.key}"
|
self._attr_unique_id = f"{device_id}-{description.key}"
|
||||||
self._attr_mode = NumberMode.BOX
|
self._attr_mode = NumberMode.BOX
|
||||||
|
|
||||||
@property
|
self._attr_native_max_value = self.device[description.key]["upper_bound"]
|
||||||
def native_max_value(self) -> float:
|
self._attr_native_min_value = self.device[description.key]["lower_bound"]
|
||||||
"""Return the setpoint max. value."""
|
self._attr_native_step = max(self.device[description.key]["resolution"], 0.5)
|
||||||
return self.entity_description.native_max_value_fn(self.actuator)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def native_min_value(self) -> float:
|
|
||||||
"""Return the setpoint min. value."""
|
|
||||||
return self.entity_description.native_min_value_fn(self.actuator)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def native_step(self) -> float:
|
|
||||||
"""Return the setpoint step value."""
|
|
||||||
return max(self.entity_description.native_step_fn(self.actuator), 1)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def native_value(self) -> float:
|
def native_value(self) -> float:
|
||||||
"""Return the present setpoint value."""
|
"""Return the present setpoint value."""
|
||||||
return self.entity_description.native_value_fn(self.actuator)
|
return self.device[self.entity_description.key]["setpoint"]
|
||||||
|
|
||||||
async def async_set_native_value(self, value: float) -> None:
|
async def async_set_native_value(self, value: float) -> None:
|
||||||
"""Change to the new setpoint value."""
|
"""Change to the new setpoint value."""
|
||||||
|
|
|
@ -3,9 +3,9 @@ from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Awaitable, Callable
|
from collections.abc import Awaitable, Callable
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from plugwise import DeviceData, Smile
|
from plugwise import Smile
|
||||||
|
from plugwise.constants import SelectOptionsType, SelectType
|
||||||
|
|
||||||
from homeassistant.components.select import SelectEntity, SelectEntityDescription
|
from homeassistant.components.select import SelectEntity, SelectEntityDescription
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
@ -22,16 +22,17 @@ from .entity import PlugwiseEntity
|
||||||
class PlugwiseSelectDescriptionMixin:
|
class PlugwiseSelectDescriptionMixin:
|
||||||
"""Mixin values for Plugwise Select entities."""
|
"""Mixin values for Plugwise Select entities."""
|
||||||
|
|
||||||
command: Callable[[Smile, str, str], Awaitable[Any]]
|
command: Callable[[Smile, str, str], Awaitable[None]]
|
||||||
value_fn: Callable[[DeviceData], str]
|
options_key: SelectOptionsType
|
||||||
options_fn: Callable[[DeviceData], list[str]]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class PlugwiseSelectEntityDescription(
|
class PlugwiseSelectEntityDescription(
|
||||||
SelectEntityDescription, PlugwiseSelectDescriptionMixin
|
SelectEntityDescription, PlugwiseSelectDescriptionMixin
|
||||||
):
|
):
|
||||||
"""Class describing Plugwise Number entities."""
|
"""Class describing Plugwise Select entities."""
|
||||||
|
|
||||||
|
key: SelectType
|
||||||
|
|
||||||
|
|
||||||
SELECT_TYPES = (
|
SELECT_TYPES = (
|
||||||
|
@ -40,8 +41,7 @@ SELECT_TYPES = (
|
||||||
translation_key="select_schedule",
|
translation_key="select_schedule",
|
||||||
icon="mdi:calendar-clock",
|
icon="mdi:calendar-clock",
|
||||||
command=lambda api, loc, opt: api.set_schedule_state(loc, opt, STATE_ON),
|
command=lambda api, loc, opt: api.set_schedule_state(loc, opt, STATE_ON),
|
||||||
value_fn=lambda data: data["selected_schedule"],
|
options_key="available_schedules",
|
||||||
options_fn=lambda data: data.get("available_schedules"),
|
|
||||||
),
|
),
|
||||||
PlugwiseSelectEntityDescription(
|
PlugwiseSelectEntityDescription(
|
||||||
key="select_regulation_mode",
|
key="select_regulation_mode",
|
||||||
|
@ -49,8 +49,7 @@ SELECT_TYPES = (
|
||||||
icon="mdi:hvac",
|
icon="mdi:hvac",
|
||||||
entity_category=EntityCategory.CONFIG,
|
entity_category=EntityCategory.CONFIG,
|
||||||
command=lambda api, loc, opt: api.set_regulation_mode(opt),
|
command=lambda api, loc, opt: api.set_regulation_mode(opt),
|
||||||
value_fn=lambda data: data["regulation_mode"],
|
options_key="regulation_modes",
|
||||||
options_fn=lambda data: data.get("regulation_modes"),
|
|
||||||
),
|
),
|
||||||
PlugwiseSelectEntityDescription(
|
PlugwiseSelectEntityDescription(
|
||||||
key="select_dhw_mode",
|
key="select_dhw_mode",
|
||||||
|
@ -58,8 +57,7 @@ SELECT_TYPES = (
|
||||||
icon="mdi:shower",
|
icon="mdi:shower",
|
||||||
entity_category=EntityCategory.CONFIG,
|
entity_category=EntityCategory.CONFIG,
|
||||||
command=lambda api, loc, opt: api.set_dhw_mode(opt),
|
command=lambda api, loc, opt: api.set_dhw_mode(opt),
|
||||||
value_fn=lambda data: data["dhw_mode"],
|
options_key="dhw_modes",
|
||||||
options_fn=lambda data: data.get("dhw_modes"),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -77,7 +75,7 @@ async def async_setup_entry(
|
||||||
entities: list[PlugwiseSelectEntity] = []
|
entities: list[PlugwiseSelectEntity] = []
|
||||||
for device_id, device in coordinator.data.devices.items():
|
for device_id, device in coordinator.data.devices.items():
|
||||||
for description in SELECT_TYPES:
|
for description in SELECT_TYPES:
|
||||||
if (options := description.options_fn(device)) and len(options) > 1:
|
if description.options_key in device:
|
||||||
entities.append(
|
entities.append(
|
||||||
PlugwiseSelectEntity(coordinator, device_id, description)
|
PlugwiseSelectEntity(coordinator, device_id, description)
|
||||||
)
|
)
|
||||||
|
@ -100,16 +98,12 @@ class PlugwiseSelectEntity(PlugwiseEntity, SelectEntity):
|
||||||
super().__init__(coordinator, device_id)
|
super().__init__(coordinator, device_id)
|
||||||
self.entity_description = entity_description
|
self.entity_description = entity_description
|
||||||
self._attr_unique_id = f"{device_id}-{entity_description.key}"
|
self._attr_unique_id = f"{device_id}-{entity_description.key}"
|
||||||
|
self._attr_options = self.device[entity_description.options_key]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def current_option(self) -> str:
|
def current_option(self) -> str:
|
||||||
"""Return the selected entity option to represent the entity state."""
|
"""Return the selected entity option to represent the entity state."""
|
||||||
return self.entity_description.value_fn(self.device)
|
return self.device[self.entity_description.key]
|
||||||
|
|
||||||
@property
|
|
||||||
def options(self) -> list[str]:
|
|
||||||
"""Return the selectable entity options."""
|
|
||||||
return self.entity_description.options_fn(self.device)
|
|
||||||
|
|
||||||
async def async_select_option(self, option: str) -> None:
|
async def async_select_option(self, option: str) -> None:
|
||||||
"""Change to the selected entity option."""
|
"""Change to the selected entity option."""
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
"""Plugwise Sensor component for Home Assistant."""
|
"""Plugwise Sensor component for Home Assistant."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
from plugwise.constants import SensorType
|
||||||
|
|
||||||
from homeassistant.components.sensor import (
|
from homeassistant.components.sensor import (
|
||||||
SensorDeviceClass,
|
SensorDeviceClass,
|
||||||
SensorEntity,
|
SensorEntity,
|
||||||
|
@ -27,8 +31,16 @@ from .const import DOMAIN
|
||||||
from .coordinator import PlugwiseDataUpdateCoordinator
|
from .coordinator import PlugwiseDataUpdateCoordinator
|
||||||
from .entity import PlugwiseEntity
|
from .entity import PlugwiseEntity
|
||||||
|
|
||||||
SENSORS: tuple[SensorEntityDescription, ...] = (
|
|
||||||
SensorEntityDescription(
|
@dataclass
|
||||||
|
class PlugwiseSensorEntityDescription(SensorEntityDescription):
|
||||||
|
"""Describes Plugwise sensor entity."""
|
||||||
|
|
||||||
|
key: SensorType
|
||||||
|
|
||||||
|
|
||||||
|
SENSORS: tuple[PlugwiseSensorEntityDescription, ...] = (
|
||||||
|
PlugwiseSensorEntityDescription(
|
||||||
key="setpoint",
|
key="setpoint",
|
||||||
translation_key="setpoint",
|
translation_key="setpoint",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -36,7 +48,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="setpoint_high",
|
key="setpoint_high",
|
||||||
translation_key="cooling_setpoint",
|
translation_key="cooling_setpoint",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -44,7 +56,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="setpoint_low",
|
key="setpoint_low",
|
||||||
translation_key="heating_setpoint",
|
translation_key="heating_setpoint",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -52,14 +64,14 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="temperature",
|
key="temperature",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
device_class=SensorDeviceClass.TEMPERATURE,
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="intended_boiler_temperature",
|
key="intended_boiler_temperature",
|
||||||
translation_key="intended_boiler_temperature",
|
translation_key="intended_boiler_temperature",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -67,7 +79,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="temperature_difference",
|
key="temperature_difference",
|
||||||
translation_key="temperature_difference",
|
translation_key="temperature_difference",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -75,14 +87,14 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="outdoor_temperature",
|
key="outdoor_temperature",
|
||||||
translation_key="outdoor_temperature",
|
translation_key="outdoor_temperature",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
device_class=SensorDeviceClass.TEMPERATURE,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="outdoor_air_temperature",
|
key="outdoor_air_temperature",
|
||||||
translation_key="outdoor_air_temperature",
|
translation_key="outdoor_air_temperature",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -90,7 +102,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="water_temperature",
|
key="water_temperature",
|
||||||
translation_key="water_temperature",
|
translation_key="water_temperature",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -98,7 +110,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="return_temperature",
|
key="return_temperature",
|
||||||
translation_key="return_temperature",
|
translation_key="return_temperature",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -106,14 +118,14 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed",
|
key="electricity_consumed",
|
||||||
translation_key="electricity_consumed",
|
translation_key="electricity_consumed",
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced",
|
key="electricity_produced",
|
||||||
translation_key="electricity_produced",
|
translation_key="electricity_produced",
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
|
@ -121,28 +133,28 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_interval",
|
key="electricity_consumed_interval",
|
||||||
translation_key="electricity_consumed_interval",
|
translation_key="electricity_consumed_interval",
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_peak_interval",
|
key="electricity_consumed_peak_interval",
|
||||||
translation_key="electricity_consumed_peak_interval",
|
translation_key="electricity_consumed_peak_interval",
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_off_peak_interval",
|
key="electricity_consumed_off_peak_interval",
|
||||||
translation_key="electricity_consumed_off_peak_interval",
|
translation_key="electricity_consumed_off_peak_interval",
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_interval",
|
key="electricity_produced_interval",
|
||||||
translation_key="electricity_produced_interval",
|
translation_key="electricity_produced_interval",
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
|
@ -150,133 +162,133 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_peak_interval",
|
key="electricity_produced_peak_interval",
|
||||||
translation_key="electricity_produced_peak_interval",
|
translation_key="electricity_produced_peak_interval",
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_off_peak_interval",
|
key="electricity_produced_off_peak_interval",
|
||||||
translation_key="electricity_produced_off_peak_interval",
|
translation_key="electricity_produced_off_peak_interval",
|
||||||
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_point",
|
key="electricity_consumed_point",
|
||||||
translation_key="electricity_consumed_point",
|
translation_key="electricity_consumed_point",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_off_peak_point",
|
key="electricity_consumed_off_peak_point",
|
||||||
translation_key="electricity_consumed_off_peak_point",
|
translation_key="electricity_consumed_off_peak_point",
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_peak_point",
|
key="electricity_consumed_peak_point",
|
||||||
translation_key="electricity_consumed_peak_point",
|
translation_key="electricity_consumed_peak_point",
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_off_peak_cumulative",
|
key="electricity_consumed_off_peak_cumulative",
|
||||||
translation_key="electricity_consumed_off_peak_cumulative",
|
translation_key="electricity_consumed_off_peak_cumulative",
|
||||||
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_consumed_peak_cumulative",
|
key="electricity_consumed_peak_cumulative",
|
||||||
translation_key="electricity_consumed_peak_cumulative",
|
translation_key="electricity_consumed_peak_cumulative",
|
||||||
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_point",
|
key="electricity_produced_point",
|
||||||
translation_key="electricity_produced_point",
|
translation_key="electricity_produced_point",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_off_peak_point",
|
key="electricity_produced_off_peak_point",
|
||||||
translation_key="electricity_produced_off_peak_point",
|
translation_key="electricity_produced_off_peak_point",
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_peak_point",
|
key="electricity_produced_peak_point",
|
||||||
translation_key="electricity_produced_peak_point",
|
translation_key="electricity_produced_peak_point",
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_off_peak_cumulative",
|
key="electricity_produced_off_peak_cumulative",
|
||||||
translation_key="electricity_produced_off_peak_cumulative",
|
translation_key="electricity_produced_off_peak_cumulative",
|
||||||
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_produced_peak_cumulative",
|
key="electricity_produced_peak_cumulative",
|
||||||
translation_key="electricity_produced_peak_cumulative",
|
translation_key="electricity_produced_peak_cumulative",
|
||||||
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL_INCREASING,
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_phase_one_consumed",
|
key="electricity_phase_one_consumed",
|
||||||
translation_key="electricity_phase_one_consumed",
|
translation_key="electricity_phase_one_consumed",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_phase_two_consumed",
|
key="electricity_phase_two_consumed",
|
||||||
translation_key="electricity_phase_two_consumed",
|
translation_key="electricity_phase_two_consumed",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_phase_three_consumed",
|
key="electricity_phase_three_consumed",
|
||||||
translation_key="electricity_phase_three_consumed",
|
translation_key="electricity_phase_three_consumed",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_phase_one_produced",
|
key="electricity_phase_one_produced",
|
||||||
translation_key="electricity_phase_one_produced",
|
translation_key="electricity_phase_one_produced",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_phase_two_produced",
|
key="electricity_phase_two_produced",
|
||||||
translation_key="electricity_phase_two_produced",
|
translation_key="electricity_phase_two_produced",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="electricity_phase_three_produced",
|
key="electricity_phase_three_produced",
|
||||||
translation_key="electricity_phase_three_produced",
|
translation_key="electricity_phase_three_produced",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="voltage_phase_one",
|
key="voltage_phase_one",
|
||||||
translation_key="voltage_phase_one",
|
translation_key="voltage_phase_one",
|
||||||
device_class=SensorDeviceClass.VOLTAGE,
|
device_class=SensorDeviceClass.VOLTAGE,
|
||||||
|
@ -284,7 +296,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="voltage_phase_two",
|
key="voltage_phase_two",
|
||||||
translation_key="voltage_phase_two",
|
translation_key="voltage_phase_two",
|
||||||
device_class=SensorDeviceClass.VOLTAGE,
|
device_class=SensorDeviceClass.VOLTAGE,
|
||||||
|
@ -292,7 +304,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="voltage_phase_three",
|
key="voltage_phase_three",
|
||||||
translation_key="voltage_phase_three",
|
translation_key="voltage_phase_three",
|
||||||
device_class=SensorDeviceClass.VOLTAGE,
|
device_class=SensorDeviceClass.VOLTAGE,
|
||||||
|
@ -300,49 +312,49 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="gas_consumed_interval",
|
key="gas_consumed_interval",
|
||||||
translation_key="gas_consumed_interval",
|
translation_key="gas_consumed_interval",
|
||||||
icon="mdi:meter-gas",
|
icon="mdi:meter-gas",
|
||||||
native_unit_of_measurement=UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR,
|
native_unit_of_measurement=UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="gas_consumed_cumulative",
|
key="gas_consumed_cumulative",
|
||||||
translation_key="gas_consumed_cumulative",
|
translation_key="gas_consumed_cumulative",
|
||||||
native_unit_of_measurement=UnitOfVolume.CUBIC_METERS,
|
native_unit_of_measurement=UnitOfVolume.CUBIC_METERS,
|
||||||
device_class=SensorDeviceClass.GAS,
|
device_class=SensorDeviceClass.GAS,
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="net_electricity_point",
|
key="net_electricity_point",
|
||||||
translation_key="net_electricity_point",
|
translation_key="net_electricity_point",
|
||||||
native_unit_of_measurement=UnitOfPower.WATT,
|
native_unit_of_measurement=UnitOfPower.WATT,
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=SensorDeviceClass.POWER,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="net_electricity_cumulative",
|
key="net_electricity_cumulative",
|
||||||
translation_key="net_electricity_cumulative",
|
translation_key="net_electricity_cumulative",
|
||||||
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
||||||
device_class=SensorDeviceClass.ENERGY,
|
device_class=SensorDeviceClass.ENERGY,
|
||||||
state_class=SensorStateClass.TOTAL,
|
state_class=SensorStateClass.TOTAL,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="battery",
|
key="battery",
|
||||||
native_unit_of_measurement=PERCENTAGE,
|
native_unit_of_measurement=PERCENTAGE,
|
||||||
device_class=SensorDeviceClass.BATTERY,
|
device_class=SensorDeviceClass.BATTERY,
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="illuminance",
|
key="illuminance",
|
||||||
native_unit_of_measurement=LIGHT_LUX,
|
native_unit_of_measurement=LIGHT_LUX,
|
||||||
device_class=SensorDeviceClass.ILLUMINANCE,
|
device_class=SensorDeviceClass.ILLUMINANCE,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="modulation_level",
|
key="modulation_level",
|
||||||
translation_key="modulation_level",
|
translation_key="modulation_level",
|
||||||
icon="mdi:percent",
|
icon="mdi:percent",
|
||||||
|
@ -350,7 +362,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="valve_position",
|
key="valve_position",
|
||||||
translation_key="valve_position",
|
translation_key="valve_position",
|
||||||
icon="mdi:valve",
|
icon="mdi:valve",
|
||||||
|
@ -358,7 +370,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
native_unit_of_measurement=PERCENTAGE,
|
native_unit_of_measurement=PERCENTAGE,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="water_pressure",
|
key="water_pressure",
|
||||||
translation_key="water_pressure",
|
translation_key="water_pressure",
|
||||||
native_unit_of_measurement=UnitOfPressure.BAR,
|
native_unit_of_measurement=UnitOfPressure.BAR,
|
||||||
|
@ -366,13 +378,13 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="humidity",
|
key="humidity",
|
||||||
native_unit_of_measurement=PERCENTAGE,
|
native_unit_of_measurement=PERCENTAGE,
|
||||||
device_class=SensorDeviceClass.HUMIDITY,
|
device_class=SensorDeviceClass.HUMIDITY,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="dhw_temperature",
|
key="dhw_temperature",
|
||||||
translation_key="dhw_temperature",
|
translation_key="dhw_temperature",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -380,7 +392,7 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
PlugwiseSensorEntityDescription(
|
||||||
key="domestic_hot_water_setpoint",
|
key="domestic_hot_water_setpoint",
|
||||||
translation_key="domestic_hot_water_setpoint",
|
translation_key="domestic_hot_water_setpoint",
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||||
|
@ -388,14 +400,6 @@ SENSORS: tuple[SensorEntityDescription, ...] = (
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
entity_category=EntityCategory.DIAGNOSTIC,
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
),
|
),
|
||||||
SensorEntityDescription(
|
|
||||||
key="maximum_boiler_temperature",
|
|
||||||
translation_key="maximum_boiler_temperature",
|
|
||||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
||||||
device_class=SensorDeviceClass.TEMPERATURE,
|
|
||||||
entity_category=EntityCategory.DIAGNOSTIC,
|
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -409,11 +413,10 @@ async def async_setup_entry(
|
||||||
|
|
||||||
entities: list[PlugwiseSensorEntity] = []
|
entities: list[PlugwiseSensorEntity] = []
|
||||||
for device_id, device in coordinator.data.devices.items():
|
for device_id, device in coordinator.data.devices.items():
|
||||||
|
if not (sensors := device.get("sensors")):
|
||||||
|
continue
|
||||||
for description in SENSORS:
|
for description in SENSORS:
|
||||||
if (
|
if description.key not in sensors:
|
||||||
"sensors" not in device
|
|
||||||
or device["sensors"].get(description.key) is None
|
|
||||||
):
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
entities.append(
|
entities.append(
|
||||||
|
@ -430,11 +433,13 @@ async def async_setup_entry(
|
||||||
class PlugwiseSensorEntity(PlugwiseEntity, SensorEntity):
|
class PlugwiseSensorEntity(PlugwiseEntity, SensorEntity):
|
||||||
"""Represent Plugwise Sensors."""
|
"""Represent Plugwise Sensors."""
|
||||||
|
|
||||||
|
entity_description: PlugwiseSensorEntityDescription
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
coordinator: PlugwiseDataUpdateCoordinator,
|
coordinator: PlugwiseDataUpdateCoordinator,
|
||||||
device_id: str,
|
device_id: str,
|
||||||
description: SensorEntityDescription,
|
description: PlugwiseSensorEntityDescription,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialise the sensor."""
|
"""Initialise the sensor."""
|
||||||
super().__init__(coordinator, device_id)
|
super().__init__(coordinator, device_id)
|
||||||
|
@ -442,6 +447,6 @@ class PlugwiseSensorEntity(PlugwiseEntity, SensorEntity):
|
||||||
self._attr_unique_id = f"{device_id}-{description.key}"
|
self._attr_unique_id = f"{device_id}-{description.key}"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def native_value(self) -> int | float | None:
|
def native_value(self) -> int | float:
|
||||||
"""Return the value reported by the sensor."""
|
"""Return the value reported by the sensor."""
|
||||||
return self.device["sensors"].get(self.entity_description.key)
|
return self.device["sensors"][self.entity_description.key]
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
"""Plugwise Switch component for HomeAssistant."""
|
"""Plugwise Switch component for HomeAssistant."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Callable
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from plugwise import SmileSwitches
|
from plugwise.constants import SwitchType
|
||||||
|
|
||||||
from homeassistant.components.switch import (
|
from homeassistant.components.switch import (
|
||||||
SwitchDeviceClass,
|
SwitchDeviceClass,
|
||||||
|
@ -24,16 +23,11 @@ from .util import plugwise_command
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class PlugwiseSwitchBaseMixin:
|
class PlugwiseSwitchEntityDescription(SwitchEntityDescription):
|
||||||
"""Mixin for required Plugwise switch description keys."""
|
|
||||||
|
|
||||||
value_fn: Callable[[SmileSwitches], bool]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class PlugwiseSwitchEntityDescription(SwitchEntityDescription, PlugwiseSwitchBaseMixin):
|
|
||||||
"""Describes Plugwise switch entity."""
|
"""Describes Plugwise switch entity."""
|
||||||
|
|
||||||
|
key: SwitchType
|
||||||
|
|
||||||
|
|
||||||
SWITCHES: tuple[PlugwiseSwitchEntityDescription, ...] = (
|
SWITCHES: tuple[PlugwiseSwitchEntityDescription, ...] = (
|
||||||
PlugwiseSwitchEntityDescription(
|
PlugwiseSwitchEntityDescription(
|
||||||
|
@ -41,27 +35,24 @@ SWITCHES: tuple[PlugwiseSwitchEntityDescription, ...] = (
|
||||||
translation_key="dhw_cm_switch",
|
translation_key="dhw_cm_switch",
|
||||||
icon="mdi:water-plus",
|
icon="mdi:water-plus",
|
||||||
entity_category=EntityCategory.CONFIG,
|
entity_category=EntityCategory.CONFIG,
|
||||||
value_fn=lambda data: data["dhw_cm_switch"],
|
|
||||||
),
|
),
|
||||||
PlugwiseSwitchEntityDescription(
|
PlugwiseSwitchEntityDescription(
|
||||||
key="lock",
|
key="lock",
|
||||||
translation_key="lock",
|
translation_key="lock",
|
||||||
icon="mdi:lock",
|
icon="mdi:lock",
|
||||||
entity_category=EntityCategory.CONFIG,
|
entity_category=EntityCategory.CONFIG,
|
||||||
value_fn=lambda data: data["lock"],
|
|
||||||
),
|
),
|
||||||
PlugwiseSwitchEntityDescription(
|
PlugwiseSwitchEntityDescription(
|
||||||
key="relay",
|
key="relay",
|
||||||
translation_key="relay",
|
translation_key="relay",
|
||||||
device_class=SwitchDeviceClass.SWITCH,
|
device_class=SwitchDeviceClass.SWITCH,
|
||||||
value_fn=lambda data: data["relay"],
|
|
||||||
),
|
),
|
||||||
PlugwiseSwitchEntityDescription(
|
PlugwiseSwitchEntityDescription(
|
||||||
key="cooling_ena_switch",
|
key="cooling_ena_switch",
|
||||||
|
translation_key="cooling_ena_switch",
|
||||||
name="Cooling",
|
name="Cooling",
|
||||||
icon="mdi:snowflake-thermometer",
|
icon="mdi:snowflake-thermometer",
|
||||||
entity_category=EntityCategory.CONFIG,
|
entity_category=EntityCategory.CONFIG,
|
||||||
value_fn=lambda data: data["cooling_ena_switch"],
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -103,7 +94,7 @@ class PlugwiseSwitchEntity(PlugwiseEntity, SwitchEntity):
|
||||||
@property
|
@property
|
||||||
def is_on(self) -> bool:
|
def is_on(self) -> bool:
|
||||||
"""Return True if entity is on."""
|
"""Return True if entity is on."""
|
||||||
return self.entity_description.value_fn(self.device["switches"])
|
return self.device["switches"][self.entity_description.key]
|
||||||
|
|
||||||
@plugwise_command
|
@plugwise_command
|
||||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
async def async_turn_on(self, **kwargs: Any) -> None:
|
||||||
|
|
|
@ -1429,7 +1429,7 @@ plexauth==0.0.6
|
||||||
plexwebsocket==0.0.13
|
plexwebsocket==0.0.13
|
||||||
|
|
||||||
# homeassistant.components.plugwise
|
# homeassistant.components.plugwise
|
||||||
plugwise==0.31.1
|
plugwise==0.31.9
|
||||||
|
|
||||||
# homeassistant.components.plum_lightpad
|
# homeassistant.components.plum_lightpad
|
||||||
plumlightpad==0.0.11
|
plumlightpad==0.0.11
|
||||||
|
|
|
@ -1080,7 +1080,7 @@ plexauth==0.0.6
|
||||||
plexwebsocket==0.0.13
|
plexwebsocket==0.0.13
|
||||||
|
|
||||||
# homeassistant.components.plugwise
|
# homeassistant.components.plugwise
|
||||||
plugwise==0.31.1
|
plugwise==0.31.9
|
||||||
|
|
||||||
# homeassistant.components.plum_lightpad
|
# homeassistant.components.plum_lightpad
|
||||||
plumlightpad==0.0.11
|
plumlightpad==0.0.11
|
||||||
|
|
|
@ -6,9 +6,10 @@ import json
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from unittest.mock import AsyncMock, MagicMock, patch
|
from unittest.mock import AsyncMock, MagicMock, patch
|
||||||
|
|
||||||
|
from plugwise import PlugwiseData
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.plugwise.const import API, DOMAIN, PW_TYPE
|
from homeassistant.components.plugwise.const import DOMAIN
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_MAC,
|
CONF_MAC,
|
||||||
|
@ -39,7 +40,6 @@ def mock_config_entry() -> MockConfigEntry:
|
||||||
CONF_PASSWORD: "test-password",
|
CONF_PASSWORD: "test-password",
|
||||||
CONF_PORT: 80,
|
CONF_PORT: 80,
|
||||||
CONF_USERNAME: "smile",
|
CONF_USERNAME: "smile",
|
||||||
PW_TYPE: API,
|
|
||||||
},
|
},
|
||||||
unique_id="smile98765",
|
unique_id="smile98765",
|
||||||
)
|
)
|
||||||
|
@ -90,7 +90,10 @@ def mock_smile_adam() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -116,7 +119,10 @@ def mock_smile_adam_2() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -142,7 +148,39 @@ def mock_smile_adam_3() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
|
yield smile
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_smile_adam_4() -> Generator[None, MagicMock, None]:
|
||||||
|
"""Create a 4th Mock Adam environment for testing exceptions."""
|
||||||
|
chosen_env = "adam_jip"
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
|
||||||
|
) as smile_mock:
|
||||||
|
smile = smile_mock.return_value
|
||||||
|
|
||||||
|
smile.gateway_id = "b5c2386c6f6342669e50fe49dd05b188"
|
||||||
|
smile.heater_id = "e4684553153b44afbef2200885f379dc"
|
||||||
|
smile.smile_version = "3.2.8"
|
||||||
|
smile.smile_type = "thermostat"
|
||||||
|
smile.smile_hostname = "smile98765"
|
||||||
|
smile.smile_model = "Gateway"
|
||||||
|
smile.smile_name = "Adam"
|
||||||
|
|
||||||
|
smile.connect.return_value = True
|
||||||
|
|
||||||
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -167,7 +205,10 @@ def mock_smile_anna() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -192,7 +233,10 @@ def mock_smile_anna_2() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -217,7 +261,10 @@ def mock_smile_anna_3() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -242,7 +289,10 @@ def mock_smile_p1() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -250,7 +300,7 @@ def mock_smile_p1() -> Generator[None, MagicMock, None]:
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_smile_p1_2() -> Generator[None, MagicMock, None]:
|
def mock_smile_p1_2() -> Generator[None, MagicMock, None]:
|
||||||
"""Create a Mock P1 3-phase DSMR environment for testing exceptions."""
|
"""Create a Mock P1 3-phase DSMR environment for testing exceptions."""
|
||||||
chosen_env = "p1v4_3ph"
|
chosen_env = "p1v4_442_triple"
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
|
"homeassistant.components.plugwise.coordinator.Smile", autospec=True
|
||||||
) as smile_mock:
|
) as smile_mock:
|
||||||
|
@ -267,7 +317,10 @@ def mock_smile_p1_2() -> Generator[None, MagicMock, None]:
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
|
|
||||||
smile.notifications = _read_json(chosen_env, "notifications")
|
smile.notifications = _read_json(chosen_env, "notifications")
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
@ -290,7 +343,10 @@ def mock_stretch() -> Generator[None, MagicMock, None]:
|
||||||
smile.smile_name = "Stretch"
|
smile.smile_name = "Stretch"
|
||||||
|
|
||||||
smile.connect.return_value = True
|
smile.connect.return_value = True
|
||||||
smile.async_update.return_value = _read_json(chosen_env, "all_data")
|
all_data = _read_json(chosen_env, "all_data")
|
||||||
|
smile.async_update.return_value = PlugwiseData(
|
||||||
|
all_data["gateway"], all_data["devices"]
|
||||||
|
)
|
||||||
|
|
||||||
yield smile
|
yield smile
|
||||||
|
|
||||||
|
|
266
tests/components/plugwise/fixtures/adam_jip/all_data.json
Normal file
266
tests/components/plugwise/fixtures/adam_jip/all_data.json
Normal file
|
@ -0,0 +1,266 @@
|
||||||
|
{
|
||||||
|
"devices": {
|
||||||
|
"1346fbd8498d4dbcab7e18d51b771f3d": {
|
||||||
|
"active_preset": "no_frost",
|
||||||
|
"available": true,
|
||||||
|
"available_schedules": ["None"],
|
||||||
|
"control_state": "off",
|
||||||
|
"dev_class": "zone_thermostat",
|
||||||
|
"firmware": "2016-10-27T02:00:00+02:00",
|
||||||
|
"hardware": "255",
|
||||||
|
"last_used": null,
|
||||||
|
"location": "06aecb3d00354375924f50c47af36bd2",
|
||||||
|
"mode": "heat",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Slaapkamer",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "None",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 92,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"temperature": 24.2
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A03"
|
||||||
|
},
|
||||||
|
"1da4d325838e4ad8aac12177214505c9": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "thermo_sensor",
|
||||||
|
"firmware": "2020-11-04T01:00:00+01:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"location": "d58fec52899f4f1c92e4f8fad6d8c48c",
|
||||||
|
"model": "Tom/Floor",
|
||||||
|
"name": "Tom Logeerkamer",
|
||||||
|
"sensors": {
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"temperature": 28.8,
|
||||||
|
"temperature_difference": 2.0,
|
||||||
|
"valve_position": 0.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A07"
|
||||||
|
},
|
||||||
|
"356b65335e274d769c338223e7af9c33": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "thermo_sensor",
|
||||||
|
"firmware": "2020-11-04T01:00:00+01:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"location": "06aecb3d00354375924f50c47af36bd2",
|
||||||
|
"model": "Tom/Floor",
|
||||||
|
"name": "Tom Slaapkamer",
|
||||||
|
"sensors": {
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"temperature": 24.3,
|
||||||
|
"temperature_difference": 1.7,
|
||||||
|
"valve_position": 0.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A05"
|
||||||
|
},
|
||||||
|
"457ce8414de24596a2d5e7dbc9c7682f": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "zz_misc",
|
||||||
|
"location": "9e4433a9d69f40b3aefd15e74395eaec",
|
||||||
|
"model": "lumi.plug.maeu01",
|
||||||
|
"name": "Plug",
|
||||||
|
"sensors": {
|
||||||
|
"electricity_consumed_interval": 0.0
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"lock": true,
|
||||||
|
"relay": false
|
||||||
|
},
|
||||||
|
"vendor": "LUMI",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A06"
|
||||||
|
},
|
||||||
|
"6f3e9d7084214c21b9dfa46f6eeb8700": {
|
||||||
|
"active_preset": "home",
|
||||||
|
"available": true,
|
||||||
|
"available_schedules": ["None"],
|
||||||
|
"control_state": "off",
|
||||||
|
"dev_class": "zone_thermostat",
|
||||||
|
"firmware": "2016-10-27T02:00:00+02:00",
|
||||||
|
"hardware": "255",
|
||||||
|
"last_used": null,
|
||||||
|
"location": "d27aede973b54be484f6842d1b2802ad",
|
||||||
|
"mode": "heat",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Kinderkamer",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "None",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 79,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"temperature": 30.0
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A02"
|
||||||
|
},
|
||||||
|
"833de10f269c4deab58fb9df69901b4e": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "thermo_sensor",
|
||||||
|
"firmware": "2020-11-04T01:00:00+01:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"location": "13228dab8ce04617af318a2888b3c548",
|
||||||
|
"model": "Tom/Floor",
|
||||||
|
"name": "Tom Woonkamer",
|
||||||
|
"sensors": {
|
||||||
|
"setpoint": 9.0,
|
||||||
|
"temperature": 24.0,
|
||||||
|
"temperature_difference": 1.8,
|
||||||
|
"valve_position": 100
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A09"
|
||||||
|
},
|
||||||
|
"a6abc6a129ee499c88a4d420cc413b47": {
|
||||||
|
"active_preset": "home",
|
||||||
|
"available": true,
|
||||||
|
"available_schedules": ["None"],
|
||||||
|
"control_state": "off",
|
||||||
|
"dev_class": "zone_thermostat",
|
||||||
|
"firmware": "2016-10-27T02:00:00+02:00",
|
||||||
|
"hardware": "255",
|
||||||
|
"last_used": null,
|
||||||
|
"location": "d58fec52899f4f1c92e4f8fad6d8c48c",
|
||||||
|
"mode": "heat",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Logeerkamer",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "None",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 80,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"temperature": 30.0
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A01"
|
||||||
|
},
|
||||||
|
"b5c2386c6f6342669e50fe49dd05b188": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
|
"dev_class": "gateway",
|
||||||
|
"firmware": "3.2.8",
|
||||||
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
"location": "9e4433a9d69f40b3aefd15e74395eaec",
|
||||||
|
"mac_address": "012345670001",
|
||||||
|
"model": "Gateway",
|
||||||
|
"name": "Adam",
|
||||||
|
"regulation_modes": ["heating", "off", "bleeding_cold", "bleeding_hot"],
|
||||||
|
"select_regulation_mode": "heating",
|
||||||
|
"sensors": {
|
||||||
|
"outdoor_temperature": 24.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670101"
|
||||||
|
},
|
||||||
|
"d4496250d0e942cfa7aea3476e9070d5": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "thermo_sensor",
|
||||||
|
"firmware": "2020-11-04T01:00:00+01:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"location": "d27aede973b54be484f6842d1b2802ad",
|
||||||
|
"model": "Tom/Floor",
|
||||||
|
"name": "Tom Kinderkamer",
|
||||||
|
"sensors": {
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"temperature": 28.7,
|
||||||
|
"temperature_difference": 1.9,
|
||||||
|
"valve_position": 0.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A04"
|
||||||
|
},
|
||||||
|
"e4684553153b44afbef2200885f379dc": {
|
||||||
|
"available": true,
|
||||||
|
"binary_sensors": {
|
||||||
|
"dhw_state": false,
|
||||||
|
"flame_state": false,
|
||||||
|
"heating_state": false
|
||||||
|
},
|
||||||
|
"dev_class": "heater_central",
|
||||||
|
"location": "9e4433a9d69f40b3aefd15e74395eaec",
|
||||||
|
"max_dhw_temperature": {
|
||||||
|
"lower_bound": 40.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 60.0,
|
||||||
|
"upper_bound": 60.0
|
||||||
|
},
|
||||||
|
"maximum_boiler_temperature": {
|
||||||
|
"lower_bound": 20.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 90.0,
|
||||||
|
"upper_bound": 90.0
|
||||||
|
},
|
||||||
|
"model": "10.20",
|
||||||
|
"name": "OpenTherm",
|
||||||
|
"sensors": {
|
||||||
|
"intended_boiler_temperature": 0.0,
|
||||||
|
"modulation_level": 0.0,
|
||||||
|
"return_temperature": 37.1,
|
||||||
|
"water_pressure": 1.4,
|
||||||
|
"water_temperature": 37.3
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"dhw_cm_switch": false
|
||||||
|
},
|
||||||
|
"vendor": "Remeha B.V."
|
||||||
|
},
|
||||||
|
"f61f1a2535f54f52ad006a3d18e459ca": {
|
||||||
|
"active_preset": "home",
|
||||||
|
"available": true,
|
||||||
|
"available_schedules": ["None"],
|
||||||
|
"control_state": "off",
|
||||||
|
"dev_class": "zone_thermometer",
|
||||||
|
"firmware": "2020-09-01T02:00:00+02:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"last_used": null,
|
||||||
|
"location": "13228dab8ce04617af318a2888b3c548",
|
||||||
|
"mode": "heat",
|
||||||
|
"model": "Jip",
|
||||||
|
"name": "Woonkamer",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "None",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 100,
|
||||||
|
"humidity": 56.2,
|
||||||
|
"setpoint": 9.0,
|
||||||
|
"temperature": 27.4
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 4.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 9.0,
|
||||||
|
"upper_bound": 30.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A08"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"cooling_present": false,
|
||||||
|
"gateway_id": "b5c2386c6f6342669e50fe49dd05b188",
|
||||||
|
"heater_id": "e4684553153b44afbef2200885f379dc",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Adam"
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,164 +1,32 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Adam",
|
"02cf28bfec924855854c544690a609ef": {
|
||||||
"gateway_id": "fe799307f1624099878210aa0b9f1475",
|
"available": true,
|
||||||
"heater_id": "90986d591dcd426cae3ec3e8111ff730",
|
"dev_class": "vcr",
|
||||||
"cooling_present": false,
|
"firmware": "2019-06-21T02:00:00+02:00",
|
||||||
"notifications": {
|
"location": "cd143c07248f491493cea0533bc3d669",
|
||||||
"af82e4ccf9c548528166d38e560662a4": {
|
"model": "Plug",
|
||||||
"warning": "Node Plug (with MAC address 000D6F000D13CB01, in room 'n.a.') has been unreachable since 23:03 2020-01-18. Please check the connection and restart the device."
|
"name": "NVR",
|
||||||
}
|
"sensors": {
|
||||||
}
|
"electricity_consumed": 34.0,
|
||||||
},
|
"electricity_consumed_interval": 9.15,
|
||||||
{
|
"electricity_produced": 0.0,
|
||||||
"df4a4a8169904cdb9c03d61a21f42140": {
|
"electricity_produced_interval": 0.0
|
||||||
"dev_class": "zone_thermostat",
|
|
||||||
"firmware": "2016-10-27T02:00:00+02:00",
|
|
||||||
"hardware": "255",
|
|
||||||
"location": "12493538af164a409c6a1c79e38afe1c",
|
|
||||||
"model": "Lisa",
|
|
||||||
"name": "Zone Lisa Bios",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A06",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint": 13.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 99.9,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
},
|
||||||
"available": true,
|
"switches": {
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
"lock": true,
|
||||||
"active_preset": "away",
|
"relay": true
|
||||||
"available_schedules": [
|
|
||||||
"CV Roan",
|
|
||||||
"Bios Schema met Film Avond",
|
|
||||||
"GF7 Woonkamer",
|
|
||||||
"Badkamer Schema",
|
|
||||||
"CV Jessie"
|
|
||||||
],
|
|
||||||
"selected_schedule": "None",
|
|
||||||
"last_used": "Badkamer Schema",
|
|
||||||
"mode": "heat",
|
|
||||||
"sensors": {
|
|
||||||
"temperature": 16.5,
|
|
||||||
"setpoint": 13.0,
|
|
||||||
"battery": 67
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"b310b72a0e354bfab43089919b9a88bf": {
|
|
||||||
"dev_class": "thermo_sensor",
|
|
||||||
"firmware": "2019-03-27T01:00:00+01:00",
|
|
||||||
"hardware": "1",
|
|
||||||
"location": "c50f167537524366a5af7aa3942feb1e",
|
|
||||||
"model": "Tom/Floor",
|
|
||||||
"name": "Floor kraan",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A02",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
|
||||||
"temperature": 26.0,
|
|
||||||
"setpoint": 21.5,
|
|
||||||
"temperature_difference": 3.5,
|
|
||||||
"valve_position": 100
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"a2c3583e0a6349358998b760cea82d2a": {
|
|
||||||
"dev_class": "thermo_sensor",
|
|
||||||
"firmware": "2019-03-27T01:00:00+01:00",
|
|
||||||
"hardware": "1",
|
|
||||||
"location": "12493538af164a409c6a1c79e38afe1c",
|
|
||||||
"model": "Tom/Floor",
|
|
||||||
"name": "Bios Cv Thermostatic Radiator ",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A09",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
|
||||||
"temperature": 17.2,
|
|
||||||
"setpoint": 13.0,
|
|
||||||
"battery": 62,
|
|
||||||
"temperature_difference": -0.2,
|
|
||||||
"valve_position": 0.0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"b59bcebaf94b499ea7d46e4a66fb62d8": {
|
|
||||||
"dev_class": "zone_thermostat",
|
|
||||||
"firmware": "2016-08-02T02:00:00+02:00",
|
|
||||||
"hardware": "255",
|
|
||||||
"location": "c50f167537524366a5af7aa3942feb1e",
|
|
||||||
"model": "Lisa",
|
|
||||||
"name": "Zone Lisa WK",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A07",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint": 21.5,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 99.9,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
},
|
||||||
"available": true,
|
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
|
||||||
"active_preset": "home",
|
|
||||||
"available_schedules": [
|
|
||||||
"CV Roan",
|
|
||||||
"Bios Schema met Film Avond",
|
|
||||||
"GF7 Woonkamer",
|
|
||||||
"Badkamer Schema",
|
|
||||||
"CV Jessie"
|
|
||||||
],
|
|
||||||
"selected_schedule": "GF7 Woonkamer",
|
|
||||||
"last_used": "GF7 Woonkamer",
|
|
||||||
"mode": "auto",
|
|
||||||
"sensors": {
|
|
||||||
"temperature": 20.9,
|
|
||||||
"setpoint": 21.5,
|
|
||||||
"battery": 34
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fe799307f1624099878210aa0b9f1475": {
|
|
||||||
"dev_class": "gateway",
|
|
||||||
"firmware": "3.0.15",
|
|
||||||
"hardware": "AME Smile 2.0 board",
|
|
||||||
"location": "1f9dcf83fd4e4b66b72ff787957bfe5d",
|
|
||||||
"mac_address": "012345670001",
|
|
||||||
"model": "Gateway",
|
|
||||||
"name": "Adam",
|
|
||||||
"zigbee_mac_address": "ABCD012345670101",
|
|
||||||
"vendor": "Plugwise",
|
"vendor": "Plugwise",
|
||||||
"regulation_mode": "heating",
|
"zigbee_mac_address": "ABCD012345670A15"
|
||||||
"binary_sensors": {
|
|
||||||
"plugwise_notification": true
|
|
||||||
},
|
|
||||||
"sensors": {
|
|
||||||
"outdoor_temperature": 7.81
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"d3da73bde12a47d5a6b8f9dad971f2ec": {
|
|
||||||
"dev_class": "thermo_sensor",
|
|
||||||
"firmware": "2019-03-27T01:00:00+01:00",
|
|
||||||
"hardware": "1",
|
|
||||||
"location": "82fa13f017d240daa0d0ea1775420f24",
|
|
||||||
"model": "Tom/Floor",
|
|
||||||
"name": "Thermostatic Radiator Jessie",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A10",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
|
||||||
"temperature": 17.1,
|
|
||||||
"setpoint": 15.0,
|
|
||||||
"battery": 62,
|
|
||||||
"temperature_difference": 0.1,
|
|
||||||
"valve_position": 0.0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"21f2b542c49845e6bb416884c55778d6": {
|
"21f2b542c49845e6bb416884c55778d6": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "game_console",
|
"dev_class": "game_console",
|
||||||
"firmware": "2019-06-21T02:00:00+02:00",
|
"firmware": "2019-06-21T02:00:00+02:00",
|
||||||
"location": "cd143c07248f491493cea0533bc3d669",
|
"location": "cd143c07248f491493cea0533bc3d669",
|
||||||
"model": "Plug",
|
"model": "Plug",
|
||||||
"name": "Playstation Smart Plug",
|
"name": "Playstation Smart Plug",
|
||||||
"zigbee_mac_address": "ABCD012345670A12",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"electricity_consumed": 82.6,
|
"electricity_consumed": 82.6,
|
||||||
"electricity_consumed_interval": 8.6,
|
"electricity_consumed_interval": 8.6,
|
||||||
|
@ -166,19 +34,111 @@
|
||||||
"electricity_produced_interval": 0.0
|
"electricity_produced_interval": 0.0
|
||||||
},
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true,
|
"lock": false,
|
||||||
"lock": false
|
"relay": true
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A12"
|
||||||
|
},
|
||||||
|
"4a810418d5394b3f82727340b91ba740": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "router",
|
||||||
|
"firmware": "2019-06-21T02:00:00+02:00",
|
||||||
|
"location": "cd143c07248f491493cea0533bc3d669",
|
||||||
|
"model": "Plug",
|
||||||
|
"name": "USG Smart Plug",
|
||||||
|
"sensors": {
|
||||||
|
"electricity_consumed": 8.5,
|
||||||
|
"electricity_consumed_interval": 0.0,
|
||||||
|
"electricity_produced": 0.0,
|
||||||
|
"electricity_produced_interval": 0.0
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"lock": true,
|
||||||
|
"relay": true
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A16"
|
||||||
|
},
|
||||||
|
"675416a629f343c495449970e2ca37b5": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "router",
|
||||||
|
"firmware": "2019-06-21T02:00:00+02:00",
|
||||||
|
"location": "cd143c07248f491493cea0533bc3d669",
|
||||||
|
"model": "Plug",
|
||||||
|
"name": "Ziggo Modem",
|
||||||
|
"sensors": {
|
||||||
|
"electricity_consumed": 12.2,
|
||||||
|
"electricity_consumed_interval": 2.97,
|
||||||
|
"electricity_produced": 0.0,
|
||||||
|
"electricity_produced_interval": 0.0
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"lock": true,
|
||||||
|
"relay": true
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A01"
|
||||||
|
},
|
||||||
|
"680423ff840043738f42cc7f1ff97a36": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "thermo_sensor",
|
||||||
|
"firmware": "2019-03-27T01:00:00+01:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"location": "08963fec7c53423ca5680aa4cb502c63",
|
||||||
|
"model": "Tom/Floor",
|
||||||
|
"name": "Thermostatic Radiator Badkamer",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 51,
|
||||||
|
"setpoint": 14.0,
|
||||||
|
"temperature": 19.1,
|
||||||
|
"temperature_difference": -0.4,
|
||||||
|
"valve_position": 0.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A17"
|
||||||
|
},
|
||||||
|
"6a3bf693d05e48e0b460c815a4fdd09d": {
|
||||||
|
"active_preset": "asleep",
|
||||||
|
"available": true,
|
||||||
|
"available_schedules": [
|
||||||
|
"CV Roan",
|
||||||
|
"Bios Schema met Film Avond",
|
||||||
|
"GF7 Woonkamer",
|
||||||
|
"Badkamer Schema",
|
||||||
|
"CV Jessie"
|
||||||
|
],
|
||||||
|
"dev_class": "zone_thermostat",
|
||||||
|
"firmware": "2016-10-27T02:00:00+02:00",
|
||||||
|
"hardware": "255",
|
||||||
|
"last_used": "CV Jessie",
|
||||||
|
"location": "82fa13f017d240daa0d0ea1775420f24",
|
||||||
|
"mode": "auto",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Zone Thermostat Jessie",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "CV Jessie",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 37,
|
||||||
|
"setpoint": 15.0,
|
||||||
|
"temperature": 17.2
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 15.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A03"
|
||||||
},
|
},
|
||||||
"78d1126fc4c743db81b61c20e88342a7": {
|
"78d1126fc4c743db81b61c20e88342a7": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "central_heating_pump",
|
"dev_class": "central_heating_pump",
|
||||||
"firmware": "2019-06-21T02:00:00+02:00",
|
"firmware": "2019-06-21T02:00:00+02:00",
|
||||||
"location": "c50f167537524366a5af7aa3942feb1e",
|
"location": "c50f167537524366a5af7aa3942feb1e",
|
||||||
"model": "Plug",
|
"model": "Plug",
|
||||||
"name": "CV Pomp",
|
"name": "CV Pomp",
|
||||||
"zigbee_mac_address": "ABCD012345670A05",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"electricity_consumed": 35.6,
|
"electricity_consumed": 35.6,
|
||||||
"electricity_consumed_interval": 7.37,
|
"electricity_consumed_interval": 7.37,
|
||||||
|
@ -187,91 +147,31 @@
|
||||||
},
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true
|
"relay": true
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A05"
|
||||||
},
|
},
|
||||||
"90986d591dcd426cae3ec3e8111ff730": {
|
"90986d591dcd426cae3ec3e8111ff730": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"heating_state": true
|
||||||
|
},
|
||||||
"dev_class": "heater_central",
|
"dev_class": "heater_central",
|
||||||
"location": "1f9dcf83fd4e4b66b72ff787957bfe5d",
|
"location": "1f9dcf83fd4e4b66b72ff787957bfe5d",
|
||||||
"model": "Unknown",
|
"model": "Unknown",
|
||||||
"name": "OnOff",
|
"name": "OnOff",
|
||||||
"binary_sensors": {
|
|
||||||
"heating_state": true
|
|
||||||
},
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"water_temperature": 70.0,
|
|
||||||
"intended_boiler_temperature": 70.0,
|
"intended_boiler_temperature": 70.0,
|
||||||
"modulation_level": 1
|
"modulation_level": 1,
|
||||||
}
|
"water_temperature": 70.0
|
||||||
},
|
|
||||||
"cd0ddb54ef694e11ac18ed1cbce5dbbd": {
|
|
||||||
"dev_class": "vcr",
|
|
||||||
"firmware": "2019-06-21T02:00:00+02:00",
|
|
||||||
"location": "cd143c07248f491493cea0533bc3d669",
|
|
||||||
"model": "Plug",
|
|
||||||
"name": "NAS",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A14",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
|
||||||
"electricity_consumed": 16.5,
|
|
||||||
"electricity_consumed_interval": 0.5,
|
|
||||||
"electricity_produced": 0.0,
|
|
||||||
"electricity_produced_interval": 0.0
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"relay": true,
|
|
||||||
"lock": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"4a810418d5394b3f82727340b91ba740": {
|
|
||||||
"dev_class": "router",
|
|
||||||
"firmware": "2019-06-21T02:00:00+02:00",
|
|
||||||
"location": "cd143c07248f491493cea0533bc3d669",
|
|
||||||
"model": "Plug",
|
|
||||||
"name": "USG Smart Plug",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A16",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
|
||||||
"electricity_consumed": 8.5,
|
|
||||||
"electricity_consumed_interval": 0.0,
|
|
||||||
"electricity_produced": 0.0,
|
|
||||||
"electricity_produced_interval": 0.0
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"relay": true,
|
|
||||||
"lock": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"02cf28bfec924855854c544690a609ef": {
|
|
||||||
"dev_class": "vcr",
|
|
||||||
"firmware": "2019-06-21T02:00:00+02:00",
|
|
||||||
"location": "cd143c07248f491493cea0533bc3d669",
|
|
||||||
"model": "Plug",
|
|
||||||
"name": "NVR",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A15",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
|
||||||
"electricity_consumed": 34.0,
|
|
||||||
"electricity_consumed_interval": 9.15,
|
|
||||||
"electricity_produced": 0.0,
|
|
||||||
"electricity_produced_interval": 0.0
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"relay": true,
|
|
||||||
"lock": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"a28f588dc4a049a483fd03a30361ad3a": {
|
"a28f588dc4a049a483fd03a30361ad3a": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "settop",
|
"dev_class": "settop",
|
||||||
"firmware": "2019-06-21T02:00:00+02:00",
|
"firmware": "2019-06-21T02:00:00+02:00",
|
||||||
"location": "cd143c07248f491493cea0533bc3d669",
|
"location": "cd143c07248f491493cea0533bc3d669",
|
||||||
"model": "Plug",
|
"model": "Plug",
|
||||||
"name": "Fibaro HC2",
|
"name": "Fibaro HC2",
|
||||||
"zigbee_mac_address": "ABCD012345670A13",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"electricity_consumed": 12.5,
|
"electricity_consumed": 12.5,
|
||||||
"electricity_consumed_interval": 3.8,
|
"electricity_consumed_interval": 3.8,
|
||||||
|
@ -279,80 +179,50 @@
|
||||||
"electricity_produced_interval": 0.0
|
"electricity_produced_interval": 0.0
|
||||||
},
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true,
|
"lock": true,
|
||||||
"lock": true
|
"relay": true
|
||||||
}
|
|
||||||
},
|
|
||||||
"6a3bf693d05e48e0b460c815a4fdd09d": {
|
|
||||||
"dev_class": "zone_thermostat",
|
|
||||||
"firmware": "2016-10-27T02:00:00+02:00",
|
|
||||||
"hardware": "255",
|
|
||||||
"location": "82fa13f017d240daa0d0ea1775420f24",
|
|
||||||
"model": "Lisa",
|
|
||||||
"name": "Zone Thermostat Jessie",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A03",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint": 15.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 99.9,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
},
|
||||||
"available": true,
|
"vendor": "Plugwise",
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
"zigbee_mac_address": "ABCD012345670A13"
|
||||||
"active_preset": "asleep",
|
|
||||||
"available_schedules": [
|
|
||||||
"CV Roan",
|
|
||||||
"Bios Schema met Film Avond",
|
|
||||||
"GF7 Woonkamer",
|
|
||||||
"Badkamer Schema",
|
|
||||||
"CV Jessie"
|
|
||||||
],
|
|
||||||
"selected_schedule": "CV Jessie",
|
|
||||||
"last_used": "CV Jessie",
|
|
||||||
"mode": "auto",
|
|
||||||
"sensors": {
|
|
||||||
"temperature": 17.2,
|
|
||||||
"setpoint": 15.0,
|
|
||||||
"battery": 37
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"680423ff840043738f42cc7f1ff97a36": {
|
"a2c3583e0a6349358998b760cea82d2a": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "thermo_sensor",
|
"dev_class": "thermo_sensor",
|
||||||
"firmware": "2019-03-27T01:00:00+01:00",
|
"firmware": "2019-03-27T01:00:00+01:00",
|
||||||
"hardware": "1",
|
"hardware": "1",
|
||||||
"location": "08963fec7c53423ca5680aa4cb502c63",
|
"location": "12493538af164a409c6a1c79e38afe1c",
|
||||||
"model": "Tom/Floor",
|
"model": "Tom/Floor",
|
||||||
"name": "Thermostatic Radiator Badkamer",
|
"name": "Bios Cv Thermostatic Radiator ",
|
||||||
"zigbee_mac_address": "ABCD012345670A17",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 19.1,
|
"battery": 62,
|
||||||
"setpoint": 14.0,
|
"setpoint": 13.0,
|
||||||
"battery": 51,
|
"temperature": 17.2,
|
||||||
"temperature_difference": -0.4,
|
"temperature_difference": -0.2,
|
||||||
"valve_position": 0.0
|
"valve_position": 0.0
|
||||||
}
|
|
||||||
},
|
|
||||||
"f1fee6043d3642a9b0a65297455f008e": {
|
|
||||||
"dev_class": "zone_thermostat",
|
|
||||||
"firmware": "2016-10-27T02:00:00+02:00",
|
|
||||||
"hardware": "255",
|
|
||||||
"location": "08963fec7c53423ca5680aa4cb502c63",
|
|
||||||
"model": "Lisa",
|
|
||||||
"name": "Zone Thermostat Badkamer",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A08",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint": 14.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 99.9,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A09"
|
||||||
|
},
|
||||||
|
"b310b72a0e354bfab43089919b9a88bf": {
|
||||||
|
"available": true,
|
||||||
|
"dev_class": "thermo_sensor",
|
||||||
|
"firmware": "2019-03-27T01:00:00+01:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"location": "c50f167537524366a5af7aa3942feb1e",
|
||||||
|
"model": "Tom/Floor",
|
||||||
|
"name": "Floor kraan",
|
||||||
|
"sensors": {
|
||||||
|
"setpoint": 21.5,
|
||||||
|
"temperature": 26.0,
|
||||||
|
"temperature_difference": 3.5,
|
||||||
|
"valve_position": 100
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A02"
|
||||||
|
},
|
||||||
|
"b59bcebaf94b499ea7d46e4a66fb62d8": {
|
||||||
|
"active_preset": "home",
|
||||||
"available": true,
|
"available": true,
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
|
||||||
"active_preset": "away",
|
|
||||||
"available_schedules": [
|
"available_schedules": [
|
||||||
"CV Roan",
|
"CV Roan",
|
||||||
"Bios Schema met Film Avond",
|
"Bios Schema met Film Avond",
|
||||||
|
@ -360,53 +230,71 @@
|
||||||
"Badkamer Schema",
|
"Badkamer Schema",
|
||||||
"CV Jessie"
|
"CV Jessie"
|
||||||
],
|
],
|
||||||
"selected_schedule": "Badkamer Schema",
|
"dev_class": "zone_thermostat",
|
||||||
"last_used": "Badkamer Schema",
|
"firmware": "2016-08-02T02:00:00+02:00",
|
||||||
|
"hardware": "255",
|
||||||
|
"last_used": "GF7 Woonkamer",
|
||||||
|
"location": "c50f167537524366a5af7aa3942feb1e",
|
||||||
"mode": "auto",
|
"mode": "auto",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Zone Lisa WK",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "GF7 Woonkamer",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 18.9,
|
"battery": 34,
|
||||||
"setpoint": 14.0,
|
"setpoint": 21.5,
|
||||||
"battery": 92
|
"temperature": 20.9
|
||||||
}
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 21.5,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A07"
|
||||||
},
|
},
|
||||||
"675416a629f343c495449970e2ca37b5": {
|
"cd0ddb54ef694e11ac18ed1cbce5dbbd": {
|
||||||
"dev_class": "router",
|
"available": true,
|
||||||
|
"dev_class": "vcr",
|
||||||
"firmware": "2019-06-21T02:00:00+02:00",
|
"firmware": "2019-06-21T02:00:00+02:00",
|
||||||
"location": "cd143c07248f491493cea0533bc3d669",
|
"location": "cd143c07248f491493cea0533bc3d669",
|
||||||
"model": "Plug",
|
"model": "Plug",
|
||||||
"name": "Ziggo Modem",
|
"name": "NAS",
|
||||||
"zigbee_mac_address": "ABCD012345670A01",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"electricity_consumed": 12.2,
|
"electricity_consumed": 16.5,
|
||||||
"electricity_consumed_interval": 2.97,
|
"electricity_consumed_interval": 0.5,
|
||||||
"electricity_produced": 0.0,
|
"electricity_produced": 0.0,
|
||||||
"electricity_produced_interval": 0.0
|
"electricity_produced_interval": 0.0
|
||||||
},
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true,
|
"lock": true,
|
||||||
"lock": true
|
"relay": true
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A14"
|
||||||
},
|
},
|
||||||
"e7693eb9582644e5b865dba8d4447cf1": {
|
"d3da73bde12a47d5a6b8f9dad971f2ec": {
|
||||||
"dev_class": "thermostatic_radiator_valve",
|
"available": true,
|
||||||
|
"dev_class": "thermo_sensor",
|
||||||
"firmware": "2019-03-27T01:00:00+01:00",
|
"firmware": "2019-03-27T01:00:00+01:00",
|
||||||
"hardware": "1",
|
"hardware": "1",
|
||||||
"location": "446ac08dd04d4eff8ac57489757b7314",
|
"location": "82fa13f017d240daa0d0ea1775420f24",
|
||||||
"model": "Tom/Floor",
|
"model": "Tom/Floor",
|
||||||
"name": "CV Kraan Garage",
|
"name": "Thermostatic Radiator Jessie",
|
||||||
"zigbee_mac_address": "ABCD012345670A11",
|
"sensors": {
|
||||||
"vendor": "Plugwise",
|
"battery": 62,
|
||||||
"thermostat": {
|
"setpoint": 15.0,
|
||||||
"setpoint": 5.5,
|
"temperature": 17.1,
|
||||||
"lower_bound": 0.0,
|
"temperature_difference": 0.1,
|
||||||
"upper_bound": 100.0,
|
"valve_position": 0.0
|
||||||
"resolution": 0.01
|
|
||||||
},
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A10"
|
||||||
|
},
|
||||||
|
"df4a4a8169904cdb9c03d61a21f42140": {
|
||||||
|
"active_preset": "away",
|
||||||
"available": true,
|
"available": true,
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
|
||||||
"active_preset": "no_frost",
|
|
||||||
"available_schedules": [
|
"available_schedules": [
|
||||||
"CV Roan",
|
"CV Roan",
|
||||||
"Bios Schema met Film Avond",
|
"Bios Schema met Film Avond",
|
||||||
|
@ -414,16 +302,128 @@
|
||||||
"Badkamer Schema",
|
"Badkamer Schema",
|
||||||
"CV Jessie"
|
"CV Jessie"
|
||||||
],
|
],
|
||||||
"selected_schedule": "None",
|
"dev_class": "zone_thermostat",
|
||||||
|
"firmware": "2016-10-27T02:00:00+02:00",
|
||||||
|
"hardware": "255",
|
||||||
"last_used": "Badkamer Schema",
|
"last_used": "Badkamer Schema",
|
||||||
|
"location": "12493538af164a409c6a1c79e38afe1c",
|
||||||
"mode": "heat",
|
"mode": "heat",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Zone Lisa Bios",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "None",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 67,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"temperature": 16.5
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 13.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A06"
|
||||||
|
},
|
||||||
|
"e7693eb9582644e5b865dba8d4447cf1": {
|
||||||
|
"active_preset": "no_frost",
|
||||||
|
"available": true,
|
||||||
|
"available_schedules": [
|
||||||
|
"CV Roan",
|
||||||
|
"Bios Schema met Film Avond",
|
||||||
|
"GF7 Woonkamer",
|
||||||
|
"Badkamer Schema",
|
||||||
|
"CV Jessie"
|
||||||
|
],
|
||||||
|
"dev_class": "thermostatic_radiator_valve",
|
||||||
|
"firmware": "2019-03-27T01:00:00+01:00",
|
||||||
|
"hardware": "1",
|
||||||
|
"last_used": "Badkamer Schema",
|
||||||
|
"location": "446ac08dd04d4eff8ac57489757b7314",
|
||||||
|
"mode": "heat",
|
||||||
|
"model": "Tom/Floor",
|
||||||
|
"name": "CV Kraan Garage",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "None",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 15.6,
|
|
||||||
"setpoint": 5.5,
|
|
||||||
"battery": 68,
|
"battery": 68,
|
||||||
|
"setpoint": 5.5,
|
||||||
|
"temperature": 15.6,
|
||||||
"temperature_difference": 0.0,
|
"temperature_difference": 0.0,
|
||||||
"valve_position": 0.0
|
"valve_position": 0.0
|
||||||
}
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 5.5,
|
||||||
|
"upper_bound": 100.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A11"
|
||||||
|
},
|
||||||
|
"f1fee6043d3642a9b0a65297455f008e": {
|
||||||
|
"active_preset": "away",
|
||||||
|
"available": true,
|
||||||
|
"available_schedules": [
|
||||||
|
"CV Roan",
|
||||||
|
"Bios Schema met Film Avond",
|
||||||
|
"GF7 Woonkamer",
|
||||||
|
"Badkamer Schema",
|
||||||
|
"CV Jessie"
|
||||||
|
],
|
||||||
|
"dev_class": "zone_thermostat",
|
||||||
|
"firmware": "2016-10-27T02:00:00+02:00",
|
||||||
|
"hardware": "255",
|
||||||
|
"last_used": "Badkamer Schema",
|
||||||
|
"location": "08963fec7c53423ca5680aa4cb502c63",
|
||||||
|
"mode": "auto",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Zone Thermostat Badkamer",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "Badkamer Schema",
|
||||||
|
"sensors": {
|
||||||
|
"battery": 92,
|
||||||
|
"setpoint": 14.0,
|
||||||
|
"temperature": 18.9
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 14.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A08"
|
||||||
|
},
|
||||||
|
"fe799307f1624099878210aa0b9f1475": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": true
|
||||||
|
},
|
||||||
|
"dev_class": "gateway",
|
||||||
|
"firmware": "3.0.15",
|
||||||
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
"location": "1f9dcf83fd4e4b66b72ff787957bfe5d",
|
||||||
|
"mac_address": "012345670001",
|
||||||
|
"model": "Gateway",
|
||||||
|
"name": "Adam",
|
||||||
|
"select_regulation_mode": "heating",
|
||||||
|
"sensors": {
|
||||||
|
"outdoor_temperature": 7.81
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670101"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"cooling_present": false,
|
||||||
|
"gateway_id": "fe799307f1624099878210aa0b9f1475",
|
||||||
|
"heater_id": "90986d591dcd426cae3ec3e8111ff730",
|
||||||
|
"notifications": {
|
||||||
|
"af82e4ccf9c548528166d38e560662a4": {
|
||||||
|
"warning": "Node Plug (with MAC address 000D6F000D13CB01, in room 'n.a.') has been unreachable since 23:03 2020-01-18. Please check the connection and restart the device."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"smile_name": "Adam"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -1,48 +1,9 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Smile Anna",
|
|
||||||
"gateway_id": "015ae9ea3f964e668e490fa39da3870b",
|
|
||||||
"heater_id": "1cbf783bb11e4a7c8a6843dee3a86927",
|
|
||||||
"cooling_present": false,
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"1cbf783bb11e4a7c8a6843dee3a86927": {
|
|
||||||
"dev_class": "heater_central",
|
|
||||||
"location": "a57efe5f145f498c9be62a9b63626fbf",
|
|
||||||
"model": "Generic heater/cooler",
|
|
||||||
"name": "OpenTherm",
|
|
||||||
"vendor": "Techneco",
|
|
||||||
"maximum_boiler_temperature": {
|
|
||||||
"setpoint": 60.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 100.0,
|
|
||||||
"resolution": 1.0
|
|
||||||
},
|
|
||||||
"available": true,
|
|
||||||
"binary_sensors": {
|
|
||||||
"cooling_enabled": false,
|
|
||||||
"dhw_state": false,
|
|
||||||
"heating_state": true,
|
|
||||||
"compressor_state": true,
|
|
||||||
"slave_boiler_state": false,
|
|
||||||
"flame_state": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
|
||||||
"water_temperature": 29.1,
|
|
||||||
"domestic_hot_water_setpoint": 60.0,
|
|
||||||
"dhw_temperature": 46.3,
|
|
||||||
"intended_boiler_temperature": 35.0,
|
|
||||||
"modulation_level": 52,
|
|
||||||
"return_temperature": 25.1,
|
|
||||||
"water_pressure": 1.57,
|
|
||||||
"outdoor_air_temperature": 3.0
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"dhw_cm_switch": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"015ae9ea3f964e668e490fa39da3870b": {
|
"015ae9ea3f964e668e490fa39da3870b": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "4.0.15",
|
"firmware": "4.0.15",
|
||||||
"hardware": "AME Smile 2.0 board",
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
@ -50,41 +11,85 @@
|
||||||
"mac_address": "012345670001",
|
"mac_address": "012345670001",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Smile Anna",
|
"name": "Smile Anna",
|
||||||
"vendor": "Plugwise",
|
|
||||||
"binary_sensors": {
|
|
||||||
"plugwise_notification": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"outdoor_temperature": 20.2
|
"outdoor_temperature": 20.2
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
|
},
|
||||||
|
"1cbf783bb11e4a7c8a6843dee3a86927": {
|
||||||
|
"available": true,
|
||||||
|
"binary_sensors": {
|
||||||
|
"compressor_state": true,
|
||||||
|
"cooling_enabled": false,
|
||||||
|
"dhw_state": false,
|
||||||
|
"flame_state": false,
|
||||||
|
"heating_state": true,
|
||||||
|
"slave_boiler_state": false
|
||||||
|
},
|
||||||
|
"dev_class": "heater_central",
|
||||||
|
"location": "a57efe5f145f498c9be62a9b63626fbf",
|
||||||
|
"max_dhw_temperature": {
|
||||||
|
"lower_bound": 35.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 53.0,
|
||||||
|
"upper_bound": 60.0
|
||||||
|
},
|
||||||
|
"maximum_boiler_temperature": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 1.0,
|
||||||
|
"setpoint": 60.0,
|
||||||
|
"upper_bound": 100.0
|
||||||
|
},
|
||||||
|
"model": "Generic heater",
|
||||||
|
"name": "OpenTherm",
|
||||||
|
"sensors": {
|
||||||
|
"dhw_temperature": 46.3,
|
||||||
|
"intended_boiler_temperature": 35.0,
|
||||||
|
"modulation_level": 52,
|
||||||
|
"outdoor_air_temperature": 3.0,
|
||||||
|
"return_temperature": 25.1,
|
||||||
|
"water_pressure": 1.57,
|
||||||
|
"water_temperature": 29.1
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"dhw_cm_switch": false
|
||||||
|
},
|
||||||
|
"vendor": "Techneco"
|
||||||
},
|
},
|
||||||
"3cb70739631c4d17a86b8b12e8a5161b": {
|
"3cb70739631c4d17a86b8b12e8a5161b": {
|
||||||
|
"active_preset": "home",
|
||||||
|
"available_schedules": ["standaard"],
|
||||||
"dev_class": "thermostat",
|
"dev_class": "thermostat",
|
||||||
"firmware": "2018-02-08T11:15:53+01:00",
|
"firmware": "2018-02-08T11:15:53+01:00",
|
||||||
"hardware": "6539-1301-5002",
|
"hardware": "6539-1301-5002",
|
||||||
|
"last_used": "standaard",
|
||||||
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
|
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
|
||||||
|
"mode": "auto",
|
||||||
"model": "ThermoTouch",
|
"model": "ThermoTouch",
|
||||||
"name": "Anna",
|
"name": "Anna",
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint": 20.5,
|
|
||||||
"lower_bound": 4.0,
|
|
||||||
"upper_bound": 30.0,
|
|
||||||
"resolution": 0.1
|
|
||||||
},
|
|
||||||
"preset_modes": ["no_frost", "home", "away", "asleep", "vacation"],
|
"preset_modes": ["no_frost", "home", "away", "asleep", "vacation"],
|
||||||
"active_preset": "home",
|
"select_schedule": "standaard",
|
||||||
"available_schedules": ["standaard"],
|
|
||||||
"selected_schedule": "standaard",
|
|
||||||
"last_used": "standaard",
|
|
||||||
"mode": "auto",
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 19.3,
|
|
||||||
"setpoint": 20.5,
|
|
||||||
"illuminance": 86.0,
|
|
||||||
"cooling_activation_outdoor_temperature": 21.0,
|
"cooling_activation_outdoor_temperature": 21.0,
|
||||||
"cooling_deactivation_threshold": 4.0
|
"cooling_deactivation_threshold": 4.0,
|
||||||
}
|
"illuminance": 86.0,
|
||||||
|
"setpoint": 20.5,
|
||||||
|
"temperature": 19.3
|
||||||
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 4.0,
|
||||||
|
"resolution": 0.1,
|
||||||
|
"setpoint": 20.5,
|
||||||
|
"upper_bound": 30.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"cooling_present": false,
|
||||||
|
"gateway_id": "015ae9ea3f964e668e490fa39da3870b",
|
||||||
|
"heater_id": "1cbf783bb11e4a7c8a6843dee3a86927",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Smile Anna"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -1,88 +1,80 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Adam",
|
"056ee145a816487eaa69243c3280f8bf": {
|
||||||
"gateway_id": "da224107914542988a88561b4452b0f6",
|
|
||||||
"heater_id": "056ee145a816487eaa69243c3280f8bf",
|
|
||||||
"cooling_present": true,
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ad4838d7d35c4d6ea796ee12ae5aedf8": {
|
|
||||||
"dev_class": "thermostat",
|
|
||||||
"location": "f2bf9048bef64cc5b6d5110154e33c81",
|
|
||||||
"model": "ThermoTouch",
|
|
||||||
"name": "Anna",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint_low": 4.0,
|
|
||||||
"setpoint_high": 23.5,
|
|
||||||
"lower_bound": 1.0,
|
|
||||||
"upper_bound": 35.0,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
|
||||||
"available": true,
|
"available": true,
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
"binary_sensors": {
|
||||||
"active_preset": "asleep",
|
"cooling_state": true,
|
||||||
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
"dhw_state": false,
|
||||||
"selected_schedule": "None",
|
"flame_state": false,
|
||||||
"last_used": "Weekschema",
|
"heating_state": false
|
||||||
"control_state": "cooling",
|
},
|
||||||
"mode": "heat_cool",
|
"dev_class": "heater_central",
|
||||||
|
"location": "bc93488efab249e5bc54fd7e175a6f91",
|
||||||
|
"maximum_boiler_temperature": {
|
||||||
|
"lower_bound": 25.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 60.0,
|
||||||
|
"upper_bound": 95.0
|
||||||
|
},
|
||||||
|
"model": "Generic heater",
|
||||||
|
"name": "OpenTherm",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 25.8,
|
"intended_boiler_temperature": 17.5,
|
||||||
"setpoint_low": 4.0,
|
"water_temperature": 19.0
|
||||||
"setpoint_high": 23.5
|
},
|
||||||
|
"switches": {
|
||||||
|
"dhw_cm_switch": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"1772a4ea304041adb83f357b751341ff": {
|
"1772a4ea304041adb83f357b751341ff": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "thermo_sensor",
|
"dev_class": "thermo_sensor",
|
||||||
"firmware": "2020-11-04T01:00:00+01:00",
|
"firmware": "2020-11-04T01:00:00+01:00",
|
||||||
"hardware": "1",
|
"hardware": "1",
|
||||||
"location": "f871b8c4d63549319221e294e4f88074",
|
"location": "f871b8c4d63549319221e294e4f88074",
|
||||||
"model": "Tom/Floor",
|
"model": "Tom/Floor",
|
||||||
"name": "Tom Badkamer",
|
"name": "Tom Badkamer",
|
||||||
"zigbee_mac_address": "ABCD012345670A01",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 21.6,
|
|
||||||
"battery": 99,
|
"battery": 99,
|
||||||
|
"temperature": 21.6,
|
||||||
"temperature_difference": 2.3,
|
"temperature_difference": 2.3,
|
||||||
"valve_position": 0.0
|
"valve_position": 0.0
|
||||||
}
|
|
||||||
},
|
|
||||||
"e2f4322d57924fa090fbbc48b3a140dc": {
|
|
||||||
"dev_class": "zone_thermostat",
|
|
||||||
"firmware": "2016-10-10T02:00:00+02:00",
|
|
||||||
"hardware": "255",
|
|
||||||
"location": "f871b8c4d63549319221e294e4f88074",
|
|
||||||
"model": "Lisa",
|
|
||||||
"name": "Lisa Badkamer",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A04",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint_low": 19.0,
|
|
||||||
"setpoint_high": 25.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 99.9,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A01"
|
||||||
|
},
|
||||||
|
"ad4838d7d35c4d6ea796ee12ae5aedf8": {
|
||||||
|
"active_preset": "asleep",
|
||||||
"available": true,
|
"available": true,
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
|
||||||
"active_preset": "home",
|
|
||||||
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
||||||
"selected_schedule": "Badkamer",
|
"control_state": "cooling",
|
||||||
"last_used": "Badkamer",
|
"dev_class": "thermostat",
|
||||||
"control_state": "off",
|
"last_used": "Weekschema",
|
||||||
"mode": "auto",
|
"location": "f2bf9048bef64cc5b6d5110154e33c81",
|
||||||
|
"mode": "heat_cool",
|
||||||
|
"model": "ThermoTouch",
|
||||||
|
"name": "Anna",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "Weekschema",
|
||||||
|
"selected_schedule": "None",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 239,
|
"setpoint_high": 23.5,
|
||||||
"battery": 56,
|
"setpoint_low": 4.0,
|
||||||
"setpoint_low": 20.0,
|
"temperature": 25.8
|
||||||
"setpoint_high": 23.5
|
},
|
||||||
}
|
"thermostat": {
|
||||||
|
"lower_bound": 1.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint_high": 23.5,
|
||||||
|
"setpoint_low": 4.0,
|
||||||
|
"upper_bound": 35.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
},
|
},
|
||||||
"da224107914542988a88561b4452b0f6": {
|
"da224107914542988a88561b4452b0f6": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "3.6.4",
|
"firmware": "3.6.4",
|
||||||
"hardware": "AME Smile 2.0 board",
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
@ -90,60 +82,70 @@
|
||||||
"mac_address": "012345670001",
|
"mac_address": "012345670001",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Adam",
|
"name": "Adam",
|
||||||
"zigbee_mac_address": "ABCD012345670101",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"regulation_mode": "cooling",
|
"regulation_mode": "cooling",
|
||||||
"regulation_modes": [
|
"regulation_modes": [
|
||||||
"cooling",
|
|
||||||
"heating",
|
"heating",
|
||||||
"off",
|
"off",
|
||||||
"bleeding_cold",
|
"bleeding_cold",
|
||||||
"bleeding_hot"
|
"bleeding_hot",
|
||||||
|
"cooling"
|
||||||
],
|
],
|
||||||
"binary_sensors": {
|
"select_regulation_mode": "heating",
|
||||||
"plugwise_notification": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"outdoor_temperature": 29.65
|
"outdoor_temperature": 29.65
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670101"
|
||||||
},
|
},
|
||||||
"056ee145a816487eaa69243c3280f8bf": {
|
"e2f4322d57924fa090fbbc48b3a140dc": {
|
||||||
"dev_class": "heater_central",
|
"active_preset": "home",
|
||||||
"location": "bc93488efab249e5bc54fd7e175a6f91",
|
|
||||||
"model": "Generic heater",
|
|
||||||
"name": "OpenTherm",
|
|
||||||
"maximum_boiler_temperature": {
|
|
||||||
"setpoint": 60.0,
|
|
||||||
"lower_bound": 25.0,
|
|
||||||
"upper_bound": 95.0,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
|
||||||
"available": true,
|
"available": true,
|
||||||
"binary_sensors": {
|
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
||||||
"cooling_state": true,
|
"control_state": "off",
|
||||||
"dhw_state": false,
|
"dev_class": "zone_thermostat",
|
||||||
"heating_state": false,
|
"firmware": "2016-10-10T02:00:00+02:00",
|
||||||
"flame_state": false
|
"hardware": "255",
|
||||||
},
|
"last_used": "Badkamer",
|
||||||
|
"location": "f871b8c4d63549319221e294e4f88074",
|
||||||
|
"mode": "auto",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Lisa Badkamer",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "Badkamer",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"water_temperature": 19.0,
|
"battery": 56,
|
||||||
"intended_boiler_temperature": 17.5
|
"setpoint_high": 23.5,
|
||||||
|
"setpoint_low": 20.0,
|
||||||
|
"temperature": 239
|
||||||
},
|
},
|
||||||
"switches": {
|
"thermostat": {
|
||||||
"dhw_cm_switch": false
|
"lower_bound": 0.0,
|
||||||
}
|
"resolution": 0.01,
|
||||||
|
"setpoint_high": 25.0,
|
||||||
|
"setpoint_low": 19.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A04"
|
||||||
},
|
},
|
||||||
"e8ef2a01ed3b4139a53bf749204fe6b4": {
|
"e8ef2a01ed3b4139a53bf749204fe6b4": {
|
||||||
"dev_class": "switching",
|
"dev_class": "switching",
|
||||||
"model": "Switchgroup",
|
|
||||||
"name": "Test",
|
|
||||||
"members": [
|
"members": [
|
||||||
"2568cc4b9c1e401495d4741a5f89bee1",
|
"2568cc4b9c1e401495d4741a5f89bee1",
|
||||||
"29542b2b6a6a4169acecc15c72a599b8"
|
"29542b2b6a6a4169acecc15c72a599b8"
|
||||||
],
|
],
|
||||||
|
"model": "Switchgroup",
|
||||||
|
"name": "Test",
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true
|
"relay": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"cooling_present": true,
|
||||||
|
"gateway_id": "da224107914542988a88561b4452b0f6",
|
||||||
|
"heater_id": "056ee145a816487eaa69243c3280f8bf",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Adam"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -1,81 +1,83 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Adam",
|
"056ee145a816487eaa69243c3280f8bf": {
|
||||||
"gateway_id": "da224107914542988a88561b4452b0f6",
|
|
||||||
"heater_id": "056ee145a816487eaa69243c3280f8bf",
|
|
||||||
"cooling_present": false,
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"ad4838d7d35c4d6ea796ee12ae5aedf8": {
|
|
||||||
"dev_class": "thermostat",
|
|
||||||
"location": "f2bf9048bef64cc5b6d5110154e33c81",
|
|
||||||
"model": "ThermoTouch",
|
|
||||||
"name": "Anna",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint": 20.0,
|
|
||||||
"lower_bound": 1.0,
|
|
||||||
"upper_bound": 35.0,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
|
||||||
"available": true,
|
"available": true,
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
"binary_sensors": {
|
||||||
"active_preset": "asleep",
|
"dhw_state": false,
|
||||||
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
"flame_state": false,
|
||||||
"selected_schedule": "None",
|
"heating_state": true
|
||||||
"last_used": "Weekschema",
|
},
|
||||||
"control_state": "heating",
|
"dev_class": "heater_central",
|
||||||
"mode": "heat",
|
"location": "bc93488efab249e5bc54fd7e175a6f91",
|
||||||
"sensors": { "temperature": 19.1, "setpoint": 20.0 }
|
"max_dhw_temperature": {
|
||||||
|
"lower_bound": 40.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 60.0,
|
||||||
|
"upper_bound": 60.0
|
||||||
|
},
|
||||||
|
"maximum_boiler_temperature": {
|
||||||
|
"lower_bound": 25.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 60.0,
|
||||||
|
"upper_bound": 95.0
|
||||||
|
},
|
||||||
|
"model": "Generic heater",
|
||||||
|
"name": "OpenTherm",
|
||||||
|
"sensors": {
|
||||||
|
"intended_boiler_temperature": 38.1,
|
||||||
|
"water_temperature": 37.0
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"dhw_cm_switch": false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"1772a4ea304041adb83f357b751341ff": {
|
"1772a4ea304041adb83f357b751341ff": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "thermo_sensor",
|
"dev_class": "thermo_sensor",
|
||||||
"firmware": "2020-11-04T01:00:00+01:00",
|
"firmware": "2020-11-04T01:00:00+01:00",
|
||||||
"hardware": "1",
|
"hardware": "1",
|
||||||
"location": "f871b8c4d63549319221e294e4f88074",
|
"location": "f871b8c4d63549319221e294e4f88074",
|
||||||
"model": "Tom/Floor",
|
"model": "Tom/Floor",
|
||||||
"name": "Tom Badkamer",
|
"name": "Tom Badkamer",
|
||||||
"zigbee_mac_address": "ABCD012345670A01",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 18.6,
|
|
||||||
"battery": 99,
|
"battery": 99,
|
||||||
|
"temperature": 18.6,
|
||||||
"temperature_difference": 2.3,
|
"temperature_difference": 2.3,
|
||||||
"valve_position": 0.0
|
"valve_position": 0.0
|
||||||
}
|
|
||||||
},
|
|
||||||
"e2f4322d57924fa090fbbc48b3a140dc": {
|
|
||||||
"dev_class": "zone_thermostat",
|
|
||||||
"firmware": "2016-10-10T02:00:00+02:00",
|
|
||||||
"hardware": "255",
|
|
||||||
"location": "f871b8c4d63549319221e294e4f88074",
|
|
||||||
"model": "Lisa",
|
|
||||||
"name": "Lisa Badkamer",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A04",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint": 15.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 99.9,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A01"
|
||||||
|
},
|
||||||
|
"ad4838d7d35c4d6ea796ee12ae5aedf8": {
|
||||||
|
"active_preset": "asleep",
|
||||||
"available": true,
|
"available": true,
|
||||||
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
|
||||||
"active_preset": "home",
|
|
||||||
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
||||||
"selected_schedule": "Badkamer",
|
"control_state": "heating",
|
||||||
"last_used": "Badkamer",
|
"dev_class": "thermostat",
|
||||||
"control_state": "off",
|
"last_used": "Weekschema",
|
||||||
"mode": "auto",
|
"location": "f2bf9048bef64cc5b6d5110154e33c81",
|
||||||
|
"mode": "heat",
|
||||||
|
"model": "ThermoTouch",
|
||||||
|
"name": "Anna",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "Weekschema",
|
||||||
|
"selected_schedule": "None",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 17.9,
|
"setpoint": 20.0,
|
||||||
"battery": 56,
|
"temperature": 19.1
|
||||||
"setpoint": 15.0
|
},
|
||||||
}
|
"thermostat": {
|
||||||
|
"lower_bound": 1.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 20.0,
|
||||||
|
"upper_bound": 35.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
},
|
},
|
||||||
"da224107914542988a88561b4452b0f6": {
|
"da224107914542988a88561b4452b0f6": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "3.6.4",
|
"firmware": "3.6.4",
|
||||||
"hardware": "AME Smile 2.0 board",
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
@ -83,59 +85,62 @@
|
||||||
"mac_address": "012345670001",
|
"mac_address": "012345670001",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Adam",
|
"name": "Adam",
|
||||||
"zigbee_mac_address": "ABCD012345670101",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"regulation_mode": "heating",
|
"regulation_mode": "heating",
|
||||||
"regulation_modes": ["heating", "off", "bleeding_cold", "bleeding_hot"],
|
"regulation_modes": ["heating", "off", "bleeding_cold", "bleeding_hot"],
|
||||||
"binary_sensors": {
|
"select_regulation_mode": "heating",
|
||||||
"plugwise_notification": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"outdoor_temperature": -1.25
|
"outdoor_temperature": -1.25
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670101"
|
||||||
},
|
},
|
||||||
"056ee145a816487eaa69243c3280f8bf": {
|
"e2f4322d57924fa090fbbc48b3a140dc": {
|
||||||
"dev_class": "heater_central",
|
"active_preset": "home",
|
||||||
"location": "bc93488efab249e5bc54fd7e175a6f91",
|
|
||||||
"model": "Generic heater",
|
|
||||||
"name": "OpenTherm",
|
|
||||||
"maximum_boiler_temperature": {
|
|
||||||
"setpoint": 60.0,
|
|
||||||
"lower_bound": 25.0,
|
|
||||||
"upper_bound": 95.0,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
|
||||||
"domestic_hot_water_setpoint": {
|
|
||||||
"setpoint": 60.0,
|
|
||||||
"lower_bound": 40.0,
|
|
||||||
"upper_bound": 60.0,
|
|
||||||
"resolution": 0.01
|
|
||||||
},
|
|
||||||
"available": true,
|
"available": true,
|
||||||
"binary_sensors": {
|
"available_schedules": ["Weekschema", "Badkamer", "Test"],
|
||||||
"dhw_state": false,
|
"control_state": "off",
|
||||||
"heating_state": true,
|
"dev_class": "zone_thermostat",
|
||||||
"flame_state": false
|
"firmware": "2016-10-10T02:00:00+02:00",
|
||||||
},
|
"hardware": "255",
|
||||||
|
"last_used": "Badkamer",
|
||||||
|
"location": "f871b8c4d63549319221e294e4f88074",
|
||||||
|
"mode": "auto",
|
||||||
|
"model": "Lisa",
|
||||||
|
"name": "Lisa Badkamer",
|
||||||
|
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
|
||||||
|
"select_schedule": "Badkamer",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"water_temperature": 37.0,
|
"battery": 56,
|
||||||
"intended_boiler_temperature": 38.1
|
"setpoint": 15.0,
|
||||||
|
"temperature": 17.9
|
||||||
},
|
},
|
||||||
"switches": {
|
"thermostat": {
|
||||||
"dhw_cm_switch": false
|
"lower_bound": 0.0,
|
||||||
}
|
"resolution": 0.01,
|
||||||
|
"setpoint": 15.0,
|
||||||
|
"upper_bound": 99.9
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A04"
|
||||||
},
|
},
|
||||||
"e8ef2a01ed3b4139a53bf749204fe6b4": {
|
"e8ef2a01ed3b4139a53bf749204fe6b4": {
|
||||||
"dev_class": "switching",
|
"dev_class": "switching",
|
||||||
"model": "Switchgroup",
|
|
||||||
"name": "Test",
|
|
||||||
"members": [
|
"members": [
|
||||||
"2568cc4b9c1e401495d4741a5f89bee1",
|
"2568cc4b9c1e401495d4741a5f89bee1",
|
||||||
"29542b2b6a6a4169acecc15c72a599b8"
|
"29542b2b6a6a4169acecc15c72a599b8"
|
||||||
],
|
],
|
||||||
|
"model": "Switchgroup",
|
||||||
|
"name": "Test",
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true
|
"relay": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"cooling_present": false,
|
||||||
|
"gateway_id": "da224107914542988a88561b4452b0f6",
|
||||||
|
"heater_id": "056ee145a816487eaa69243c3280f8bf",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Adam"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -1,49 +1,9 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Smile Anna",
|
|
||||||
"gateway_id": "015ae9ea3f964e668e490fa39da3870b",
|
|
||||||
"heater_id": "1cbf783bb11e4a7c8a6843dee3a86927",
|
|
||||||
"cooling_present": true,
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"1cbf783bb11e4a7c8a6843dee3a86927": {
|
|
||||||
"dev_class": "heater_central",
|
|
||||||
"location": "a57efe5f145f498c9be62a9b63626fbf",
|
|
||||||
"model": "Generic heater/cooler",
|
|
||||||
"name": "OpenTherm",
|
|
||||||
"vendor": "Techneco",
|
|
||||||
"maximum_boiler_temperature": {
|
|
||||||
"setpoint": 60.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 100.0,
|
|
||||||
"resolution": 1.0
|
|
||||||
},
|
|
||||||
"available": true,
|
|
||||||
"binary_sensors": {
|
|
||||||
"cooling_enabled": true,
|
|
||||||
"dhw_state": false,
|
|
||||||
"heating_state": false,
|
|
||||||
"compressor_state": true,
|
|
||||||
"cooling_state": true,
|
|
||||||
"slave_boiler_state": false,
|
|
||||||
"flame_state": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
|
||||||
"water_temperature": 22.7,
|
|
||||||
"domestic_hot_water_setpoint": 60.0,
|
|
||||||
"dhw_temperature": 41.5,
|
|
||||||
"intended_boiler_temperature": 0.0,
|
|
||||||
"modulation_level": 40,
|
|
||||||
"return_temperature": 23.8,
|
|
||||||
"water_pressure": 1.57,
|
|
||||||
"outdoor_air_temperature": 28.0
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"dhw_cm_switch": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"015ae9ea3f964e668e490fa39da3870b": {
|
"015ae9ea3f964e668e490fa39da3870b": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "4.0.15",
|
"firmware": "4.0.15",
|
||||||
"hardware": "AME Smile 2.0 board",
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
@ -51,43 +11,88 @@
|
||||||
"mac_address": "012345670001",
|
"mac_address": "012345670001",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Smile Anna",
|
"name": "Smile Anna",
|
||||||
"vendor": "Plugwise",
|
|
||||||
"binary_sensors": {
|
|
||||||
"plugwise_notification": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"outdoor_temperature": 28.2
|
"outdoor_temperature": 28.2
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
|
},
|
||||||
|
"1cbf783bb11e4a7c8a6843dee3a86927": {
|
||||||
|
"available": true,
|
||||||
|
"binary_sensors": {
|
||||||
|
"compressor_state": true,
|
||||||
|
"cooling_enabled": true,
|
||||||
|
"cooling_state": true,
|
||||||
|
"dhw_state": false,
|
||||||
|
"flame_state": false,
|
||||||
|
"heating_state": false,
|
||||||
|
"slave_boiler_state": false
|
||||||
|
},
|
||||||
|
"dev_class": "heater_central",
|
||||||
|
"location": "a57efe5f145f498c9be62a9b63626fbf",
|
||||||
|
"max_dhw_temperature": {
|
||||||
|
"lower_bound": 35.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 53.0,
|
||||||
|
"upper_bound": 60.0
|
||||||
|
},
|
||||||
|
"maximum_boiler_temperature": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 1.0,
|
||||||
|
"setpoint": 60.0,
|
||||||
|
"upper_bound": 100.0
|
||||||
|
},
|
||||||
|
"model": "Generic heater/cooler",
|
||||||
|
"name": "OpenTherm",
|
||||||
|
"sensors": {
|
||||||
|
"dhw_temperature": 41.5,
|
||||||
|
"intended_boiler_temperature": 0.0,
|
||||||
|
"modulation_level": 40,
|
||||||
|
"outdoor_air_temperature": 28.0,
|
||||||
|
"return_temperature": 23.8,
|
||||||
|
"water_pressure": 1.57,
|
||||||
|
"water_temperature": 22.7
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"dhw_cm_switch": false
|
||||||
|
},
|
||||||
|
"vendor": "Techneco"
|
||||||
},
|
},
|
||||||
"3cb70739631c4d17a86b8b12e8a5161b": {
|
"3cb70739631c4d17a86b8b12e8a5161b": {
|
||||||
|
"active_preset": "home",
|
||||||
|
"available_schedules": ["standaard"],
|
||||||
"dev_class": "thermostat",
|
"dev_class": "thermostat",
|
||||||
"firmware": "2018-02-08T11:15:53+01:00",
|
"firmware": "2018-02-08T11:15:53+01:00",
|
||||||
"hardware": "6539-1301-5002",
|
"hardware": "6539-1301-5002",
|
||||||
|
"last_used": "standaard",
|
||||||
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
|
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
|
||||||
|
"mode": "auto",
|
||||||
"model": "ThermoTouch",
|
"model": "ThermoTouch",
|
||||||
"name": "Anna",
|
"name": "Anna",
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint_low": 20.5,
|
|
||||||
"setpoint_high": 24.0,
|
|
||||||
"lower_bound": 4.0,
|
|
||||||
"upper_bound": 30.0,
|
|
||||||
"resolution": 0.1
|
|
||||||
},
|
|
||||||
"preset_modes": ["no_frost", "home", "away", "asleep", "vacation"],
|
"preset_modes": ["no_frost", "home", "away", "asleep", "vacation"],
|
||||||
"active_preset": "home",
|
"select_schedule": "standaard",
|
||||||
"available_schedules": ["standaard"],
|
|
||||||
"selected_schedule": "standaard",
|
|
||||||
"last_used": "standaard",
|
|
||||||
"mode": "auto",
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 26.3,
|
|
||||||
"illuminance": 86.0,
|
|
||||||
"cooling_activation_outdoor_temperature": 21.0,
|
"cooling_activation_outdoor_temperature": 21.0,
|
||||||
"cooling_deactivation_threshold": 4.0,
|
"cooling_deactivation_threshold": 4.0,
|
||||||
|
"illuminance": 86.0,
|
||||||
|
"setpoint_high": 24.0,
|
||||||
"setpoint_low": 20.5,
|
"setpoint_low": 20.5,
|
||||||
"setpoint_high": 24.0
|
"temperature": 26.3
|
||||||
}
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 4.0,
|
||||||
|
"resolution": 0.1,
|
||||||
|
"setpoint_high": 24.0,
|
||||||
|
"setpoint_low": 20.5,
|
||||||
|
"upper_bound": 30.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"cooling_present": true,
|
||||||
|
"gateway_id": "015ae9ea3f964e668e490fa39da3870b",
|
||||||
|
"heater_id": "1cbf783bb11e4a7c8a6843dee3a86927",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Smile Anna"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -1,48 +1,9 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Smile Anna",
|
|
||||||
"gateway_id": "015ae9ea3f964e668e490fa39da3870b",
|
|
||||||
"heater_id": "1cbf783bb11e4a7c8a6843dee3a86927",
|
|
||||||
"cooling_present": true,
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"1cbf783bb11e4a7c8a6843dee3a86927": {
|
|
||||||
"dev_class": "heater_central",
|
|
||||||
"location": "a57efe5f145f498c9be62a9b63626fbf",
|
|
||||||
"model": "Generic heater/cooler",
|
|
||||||
"name": "OpenTherm",
|
|
||||||
"vendor": "Techneco",
|
|
||||||
"maximum_boiler_temperature": {
|
|
||||||
"setpoint": 60.0,
|
|
||||||
"lower_bound": 0.0,
|
|
||||||
"upper_bound": 100.0,
|
|
||||||
"resolution": 1.0
|
|
||||||
},
|
|
||||||
"available": true,
|
|
||||||
"binary_sensors": {
|
|
||||||
"cooling_enabled": true,
|
|
||||||
"dhw_state": false,
|
|
||||||
"heating_state": false,
|
|
||||||
"compressor_state": false,
|
|
||||||
"cooling_state": false,
|
|
||||||
"slave_boiler_state": false,
|
|
||||||
"flame_state": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
|
||||||
"water_temperature": 19.1,
|
|
||||||
"dhw_temperature": 46.3,
|
|
||||||
"intended_boiler_temperature": 18.0,
|
|
||||||
"modulation_level": 0,
|
|
||||||
"return_temperature": 22.0,
|
|
||||||
"water_pressure": 1.57,
|
|
||||||
"outdoor_air_temperature": 28.2
|
|
||||||
},
|
|
||||||
"switches": {
|
|
||||||
"dhw_cm_switch": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"015ae9ea3f964e668e490fa39da3870b": {
|
"015ae9ea3f964e668e490fa39da3870b": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "4.0.15",
|
"firmware": "4.0.15",
|
||||||
"hardware": "AME Smile 2.0 board",
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
@ -50,43 +11,88 @@
|
||||||
"mac_address": "012345670001",
|
"mac_address": "012345670001",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Smile Anna",
|
"name": "Smile Anna",
|
||||||
"vendor": "Plugwise",
|
|
||||||
"binary_sensors": {
|
|
||||||
"plugwise_notification": false
|
|
||||||
},
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"outdoor_temperature": 28.2
|
"outdoor_temperature": 28.2
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
|
},
|
||||||
|
"1cbf783bb11e4a7c8a6843dee3a86927": {
|
||||||
|
"available": true,
|
||||||
|
"binary_sensors": {
|
||||||
|
"compressor_state": false,
|
||||||
|
"cooling_enabled": true,
|
||||||
|
"cooling_state": false,
|
||||||
|
"dhw_state": false,
|
||||||
|
"flame_state": false,
|
||||||
|
"heating_state": false,
|
||||||
|
"slave_boiler_state": false
|
||||||
|
},
|
||||||
|
"dev_class": "heater_central",
|
||||||
|
"location": "a57efe5f145f498c9be62a9b63626fbf",
|
||||||
|
"max_dhw_temperature": {
|
||||||
|
"lower_bound": 35.0,
|
||||||
|
"resolution": 0.01,
|
||||||
|
"setpoint": 53.0,
|
||||||
|
"upper_bound": 60.0
|
||||||
|
},
|
||||||
|
"maximum_boiler_temperature": {
|
||||||
|
"lower_bound": 0.0,
|
||||||
|
"resolution": 1.0,
|
||||||
|
"setpoint": 60.0,
|
||||||
|
"upper_bound": 100.0
|
||||||
|
},
|
||||||
|
"model": "Generic heater/cooler",
|
||||||
|
"name": "OpenTherm",
|
||||||
|
"sensors": {
|
||||||
|
"dhw_temperature": 46.3,
|
||||||
|
"intended_boiler_temperature": 18.0,
|
||||||
|
"modulation_level": 0,
|
||||||
|
"outdoor_air_temperature": 28.2,
|
||||||
|
"return_temperature": 22.0,
|
||||||
|
"water_pressure": 1.57,
|
||||||
|
"water_temperature": 19.1
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"dhw_cm_switch": false
|
||||||
|
},
|
||||||
|
"vendor": "Techneco"
|
||||||
},
|
},
|
||||||
"3cb70739631c4d17a86b8b12e8a5161b": {
|
"3cb70739631c4d17a86b8b12e8a5161b": {
|
||||||
|
"active_preset": "home",
|
||||||
|
"available_schedules": ["standaard"],
|
||||||
"dev_class": "thermostat",
|
"dev_class": "thermostat",
|
||||||
"firmware": "2018-02-08T11:15:53+01:00",
|
"firmware": "2018-02-08T11:15:53+01:00",
|
||||||
"hardware": "6539-1301-5002",
|
"hardware": "6539-1301-5002",
|
||||||
|
"last_used": "standaard",
|
||||||
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
|
"location": "c784ee9fdab44e1395b8dee7d7a497d5",
|
||||||
|
"mode": "auto",
|
||||||
"model": "ThermoTouch",
|
"model": "ThermoTouch",
|
||||||
"name": "Anna",
|
"name": "Anna",
|
||||||
"vendor": "Plugwise",
|
|
||||||
"thermostat": {
|
|
||||||
"setpoint_low": 20.5,
|
|
||||||
"setpoint_high": 24.0,
|
|
||||||
"lower_bound": 4.0,
|
|
||||||
"upper_bound": 30.0,
|
|
||||||
"resolution": 0.1
|
|
||||||
},
|
|
||||||
"preset_modes": ["no_frost", "home", "away", "asleep", "vacation"],
|
"preset_modes": ["no_frost", "home", "away", "asleep", "vacation"],
|
||||||
"active_preset": "home",
|
"select_schedule": "standaard",
|
||||||
"available_schedules": ["standaard"],
|
|
||||||
"selected_schedule": "standaard",
|
|
||||||
"last_used": "standaard",
|
|
||||||
"mode": "auto",
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"temperature": 23.0,
|
|
||||||
"illuminance": 86.0,
|
|
||||||
"cooling_activation_outdoor_temperature": 25.0,
|
"cooling_activation_outdoor_temperature": 25.0,
|
||||||
"cooling_deactivation_threshold": 4.0,
|
"cooling_deactivation_threshold": 4.0,
|
||||||
|
"illuminance": 86.0,
|
||||||
|
"setpoint_high": 24.0,
|
||||||
"setpoint_low": 20.5,
|
"setpoint_low": 20.5,
|
||||||
"setpoint_high": 24.0
|
"temperature": 23.0
|
||||||
}
|
},
|
||||||
|
"thermostat": {
|
||||||
|
"lower_bound": 4.0,
|
||||||
|
"resolution": 0.1,
|
||||||
|
"setpoint_high": 24.0,
|
||||||
|
"setpoint_low": 20.5,
|
||||||
|
"upper_bound": 30.0
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"cooling_present": true,
|
||||||
|
"gateway_id": "015ae9ea3f964e668e490fa39da3870b",
|
||||||
|
"heater_id": "1cbf783bb11e4a7c8a6843dee3a86927",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Smile Anna"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Smile P1",
|
|
||||||
"gateway_id": "cd3e822288064775a7c4afcdd70bdda2",
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cd3e822288064775a7c4afcdd70bdda2": {
|
"cd3e822288064775a7c4afcdd70bdda2": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "3.3.9",
|
"firmware": "3.3.9",
|
||||||
"hardware": "AME Smile 2.0 board",
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
@ -13,36 +11,38 @@
|
||||||
"mac_address": "012345670001",
|
"mac_address": "012345670001",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Smile P1",
|
"name": "Smile P1",
|
||||||
"vendor": "Plugwise",
|
"vendor": "Plugwise"
|
||||||
"binary_sensors": {
|
|
||||||
"plugwise_notification": false
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"e950c7d5e1ee407a858e2a8b5016c8b3": {
|
"e950c7d5e1ee407a858e2a8b5016c8b3": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "smartmeter",
|
"dev_class": "smartmeter",
|
||||||
"location": "cd3e822288064775a7c4afcdd70bdda2",
|
"location": "cd3e822288064775a7c4afcdd70bdda2",
|
||||||
"model": "2M550E-1012",
|
"model": "2M550E-1012",
|
||||||
"name": "P1",
|
"name": "P1",
|
||||||
"vendor": "ISKRAEMECO",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"net_electricity_point": -2816,
|
|
||||||
"electricity_consumed_peak_point": 0,
|
|
||||||
"electricity_consumed_off_peak_point": 0,
|
|
||||||
"net_electricity_cumulative": 442.972,
|
|
||||||
"electricity_consumed_peak_cumulative": 442.932,
|
|
||||||
"electricity_consumed_off_peak_cumulative": 551.09,
|
"electricity_consumed_off_peak_cumulative": 551.09,
|
||||||
"electricity_consumed_peak_interval": 0,
|
|
||||||
"electricity_consumed_off_peak_interval": 0,
|
"electricity_consumed_off_peak_interval": 0,
|
||||||
"electricity_produced_peak_point": 2816,
|
"electricity_consumed_off_peak_point": 0,
|
||||||
|
"electricity_consumed_peak_cumulative": 442.932,
|
||||||
|
"electricity_consumed_peak_interval": 0,
|
||||||
|
"electricity_consumed_peak_point": 0,
|
||||||
|
"electricity_produced_off_peak_cumulative": 154.491,
|
||||||
|
"electricity_produced_off_peak_interval": 0,
|
||||||
"electricity_produced_off_peak_point": 0,
|
"electricity_produced_off_peak_point": 0,
|
||||||
"electricity_produced_peak_cumulative": 396.559,
|
"electricity_produced_peak_cumulative": 396.559,
|
||||||
"electricity_produced_off_peak_cumulative": 154.491,
|
|
||||||
"electricity_produced_peak_interval": 0,
|
"electricity_produced_peak_interval": 0,
|
||||||
"electricity_produced_off_peak_interval": 0,
|
"electricity_produced_peak_point": 2816,
|
||||||
"gas_consumed_cumulative": 584.85,
|
"gas_consumed_cumulative": 584.85,
|
||||||
"gas_consumed_interval": 0.0
|
"gas_consumed_interval": 0.0,
|
||||||
}
|
"net_electricity_cumulative": 442.972,
|
||||||
|
"net_electricity_point": -2816
|
||||||
|
},
|
||||||
|
"vendor": "ISKRAEMECO"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"gateway_id": "cd3e822288064775a7c4afcdd70bdda2",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Smile P1"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Smile P1",
|
|
||||||
"gateway_id": "03e65b16e4b247a29ae0d75a78cb492e",
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"03e65b16e4b247a29ae0d75a78cb492e": {
|
"03e65b16e4b247a29ae0d75a78cb492e": {
|
||||||
|
"binary_sensors": {
|
||||||
|
"plugwise_notification": false
|
||||||
|
},
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "4.4.2",
|
"firmware": "4.4.2",
|
||||||
"hardware": "AME Smile 2.0 board",
|
"hardware": "AME Smile 2.0 board",
|
||||||
|
@ -13,45 +11,47 @@
|
||||||
"mac_address": "012345670001",
|
"mac_address": "012345670001",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Smile P1",
|
"name": "Smile P1",
|
||||||
"vendor": "Plugwise",
|
"vendor": "Plugwise"
|
||||||
"binary_sensors": {
|
|
||||||
"plugwise_notification": false
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"b82b6b3322484f2ea4e25e0bd5f3d61f": {
|
"b82b6b3322484f2ea4e25e0bd5f3d61f": {
|
||||||
|
"available": true,
|
||||||
"dev_class": "smartmeter",
|
"dev_class": "smartmeter",
|
||||||
"location": "03e65b16e4b247a29ae0d75a78cb492e",
|
"location": "03e65b16e4b247a29ae0d75a78cb492e",
|
||||||
"model": "XMX5LGF0010453051839",
|
"model": "XMX5LGF0010453051839",
|
||||||
"name": "P1",
|
"name": "P1",
|
||||||
"vendor": "XEMEX NV",
|
|
||||||
"available": true,
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"net_electricity_point": 5553,
|
|
||||||
"electricity_consumed_peak_point": 0,
|
|
||||||
"electricity_consumed_off_peak_point": 5553,
|
|
||||||
"net_electricity_cumulative": 231866.539,
|
|
||||||
"electricity_consumed_peak_cumulative": 161328.641,
|
|
||||||
"electricity_consumed_off_peak_cumulative": 70537.898,
|
"electricity_consumed_off_peak_cumulative": 70537.898,
|
||||||
"electricity_consumed_peak_interval": 0,
|
|
||||||
"electricity_consumed_off_peak_interval": 314,
|
"electricity_consumed_off_peak_interval": 314,
|
||||||
"electricity_produced_peak_point": 0,
|
"electricity_consumed_off_peak_point": 5553,
|
||||||
|
"electricity_consumed_peak_cumulative": 161328.641,
|
||||||
|
"electricity_consumed_peak_interval": 0,
|
||||||
|
"electricity_consumed_peak_point": 0,
|
||||||
|
"electricity_phase_one_consumed": 1763,
|
||||||
|
"electricity_phase_one_produced": 0,
|
||||||
|
"electricity_phase_three_consumed": 2080,
|
||||||
|
"electricity_phase_three_produced": 0,
|
||||||
|
"electricity_phase_two_consumed": 1703,
|
||||||
|
"electricity_phase_two_produced": 0,
|
||||||
|
"electricity_produced_off_peak_cumulative": 0.0,
|
||||||
|
"electricity_produced_off_peak_interval": 0,
|
||||||
"electricity_produced_off_peak_point": 0,
|
"electricity_produced_off_peak_point": 0,
|
||||||
"electricity_produced_peak_cumulative": 0.0,
|
"electricity_produced_peak_cumulative": 0.0,
|
||||||
"electricity_produced_off_peak_cumulative": 0.0,
|
|
||||||
"electricity_produced_peak_interval": 0,
|
"electricity_produced_peak_interval": 0,
|
||||||
"electricity_produced_off_peak_interval": 0,
|
"electricity_produced_peak_point": 0,
|
||||||
"electricity_phase_one_consumed": 1763,
|
|
||||||
"electricity_phase_two_consumed": 1703,
|
|
||||||
"electricity_phase_three_consumed": 2080,
|
|
||||||
"electricity_phase_one_produced": 0,
|
|
||||||
"electricity_phase_two_produced": 0,
|
|
||||||
"electricity_phase_three_produced": 0,
|
|
||||||
"gas_consumed_cumulative": 16811.37,
|
"gas_consumed_cumulative": 16811.37,
|
||||||
"gas_consumed_interval": 0.06,
|
"gas_consumed_interval": 0.06,
|
||||||
|
"net_electricity_cumulative": 231866.539,
|
||||||
|
"net_electricity_point": 5553,
|
||||||
"voltage_phase_one": 233.2,
|
"voltage_phase_one": 233.2,
|
||||||
"voltage_phase_two": 234.4,
|
"voltage_phase_three": 234.7,
|
||||||
"voltage_phase_three": 234.7
|
"voltage_phase_two": 234.4
|
||||||
}
|
},
|
||||||
|
"vendor": "XEMEX NV"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"gateway_id": "03e65b16e4b247a29ae0d75a78cb492e",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Smile P1"
|
||||||
}
|
}
|
||||||
]
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
|
@ -1,10 +1,5 @@
|
||||||
[
|
{
|
||||||
{
|
"devices": {
|
||||||
"smile_name": "Stretch",
|
|
||||||
"gateway_id": "0000aaaa0000aaaa0000aaaa0000aa00",
|
|
||||||
"notifications": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"0000aaaa0000aaaa0000aaaa0000aa00": {
|
"0000aaaa0000aaaa0000aaaa0000aa00": {
|
||||||
"dev_class": "gateway",
|
"dev_class": "gateway",
|
||||||
"firmware": "3.1.11",
|
"firmware": "3.1.11",
|
||||||
|
@ -12,8 +7,27 @@
|
||||||
"mac_address": "01:23:45:67:89:AB",
|
"mac_address": "01:23:45:67:89:AB",
|
||||||
"model": "Gateway",
|
"model": "Gateway",
|
||||||
"name": "Stretch",
|
"name": "Stretch",
|
||||||
"zigbee_mac_address": "ABCD012345670101",
|
"vendor": "Plugwise",
|
||||||
"vendor": "Plugwise"
|
"zigbee_mac_address": "ABCD012345670101"
|
||||||
|
},
|
||||||
|
"059e4d03c7a34d278add5c7a4a781d19": {
|
||||||
|
"dev_class": "washingmachine",
|
||||||
|
"firmware": "2011-06-27T10:52:18+02:00",
|
||||||
|
"hardware": "0000-0440-0107",
|
||||||
|
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
||||||
|
"model": "Circle type F",
|
||||||
|
"name": "Wasmachine (52AC1)",
|
||||||
|
"sensors": {
|
||||||
|
"electricity_consumed": 0.0,
|
||||||
|
"electricity_consumed_interval": 0.0,
|
||||||
|
"electricity_produced": 0.0
|
||||||
|
},
|
||||||
|
"switches": {
|
||||||
|
"lock": false,
|
||||||
|
"relay": true
|
||||||
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A01"
|
||||||
},
|
},
|
||||||
"5871317346d045bc9f6b987ef25ee638": {
|
"5871317346d045bc9f6b987ef25ee638": {
|
||||||
"dev_class": "water_heater_vessel",
|
"dev_class": "water_heater_vessel",
|
||||||
|
@ -22,35 +36,25 @@
|
||||||
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
||||||
"model": "Circle type F",
|
"model": "Circle type F",
|
||||||
"name": "Boiler (1EB31)",
|
"name": "Boiler (1EB31)",
|
||||||
"zigbee_mac_address": "ABCD012345670A07",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"electricity_consumed": 1.19,
|
"electricity_consumed": 1.19,
|
||||||
"electricity_consumed_interval": 0.0,
|
"electricity_consumed_interval": 0.0,
|
||||||
"electricity_produced": 0.0
|
"electricity_produced": 0.0
|
||||||
},
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true,
|
"lock": false,
|
||||||
"lock": false
|
"relay": true
|
||||||
}
|
|
||||||
},
|
|
||||||
"e1c884e7dede431dadee09506ec4f859": {
|
|
||||||
"dev_class": "refrigerator",
|
|
||||||
"firmware": "2011-06-27T10:47:37+02:00",
|
|
||||||
"hardware": "6539-0700-7330",
|
|
||||||
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
|
||||||
"model": "Circle+ type F",
|
|
||||||
"name": "Koelkast (92C4A)",
|
|
||||||
"zigbee_mac_address": "0123456789AB",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"sensors": {
|
|
||||||
"electricity_consumed": 50.5,
|
|
||||||
"electricity_consumed_interval": 0.08,
|
|
||||||
"electricity_produced": 0.0
|
|
||||||
},
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A07"
|
||||||
|
},
|
||||||
|
"71e1944f2a944b26ad73323e399efef0": {
|
||||||
|
"dev_class": "switching",
|
||||||
|
"members": ["5ca521ac179d468e91d772eeeb8a2117"],
|
||||||
|
"model": "Switchgroup",
|
||||||
|
"name": "Test",
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true,
|
"relay": true
|
||||||
"lock": false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"aac7b735042c4832ac9ff33aae4f453b": {
|
"aac7b735042c4832ac9ff33aae4f453b": {
|
||||||
|
@ -60,17 +64,17 @@
|
||||||
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
||||||
"model": "Circle type F",
|
"model": "Circle type F",
|
||||||
"name": "Vaatwasser (2a1ab)",
|
"name": "Vaatwasser (2a1ab)",
|
||||||
"zigbee_mac_address": "ABCD012345670A02",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"electricity_consumed": 0.0,
|
"electricity_consumed": 0.0,
|
||||||
"electricity_consumed_interval": 0.71,
|
"electricity_consumed_interval": 0.71,
|
||||||
"electricity_produced": 0.0
|
"electricity_produced": 0.0
|
||||||
},
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true,
|
"lock": false,
|
||||||
"lock": false
|
"relay": true
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "ABCD012345670A02"
|
||||||
},
|
},
|
||||||
"cfe95cf3de1948c0b8955125bf754614": {
|
"cfe95cf3de1948c0b8955125bf754614": {
|
||||||
"dev_class": "dryer",
|
"dev_class": "dryer",
|
||||||
|
@ -79,50 +83,32 @@
|
||||||
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
||||||
"model": "Circle type F",
|
"model": "Circle type F",
|
||||||
"name": "Droger (52559)",
|
"name": "Droger (52559)",
|
||||||
"zigbee_mac_address": "ABCD012345670A04",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"sensors": {
|
"sensors": {
|
||||||
"electricity_consumed": 0.0,
|
"electricity_consumed": 0.0,
|
||||||
"electricity_consumed_interval": 0.0,
|
"electricity_consumed_interval": 0.0,
|
||||||
"electricity_produced": 0.0
|
"electricity_produced": 0.0
|
||||||
},
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true,
|
"lock": false,
|
||||||
"lock": false
|
"relay": true
|
||||||
}
|
|
||||||
},
|
|
||||||
"059e4d03c7a34d278add5c7a4a781d19": {
|
|
||||||
"dev_class": "washingmachine",
|
|
||||||
"firmware": "2011-06-27T10:52:18+02:00",
|
|
||||||
"hardware": "0000-0440-0107",
|
|
||||||
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
|
||||||
"model": "Circle type F",
|
|
||||||
"name": "Wasmachine (52AC1)",
|
|
||||||
"zigbee_mac_address": "ABCD012345670A01",
|
|
||||||
"vendor": "Plugwise",
|
|
||||||
"sensors": {
|
|
||||||
"electricity_consumed": 0.0,
|
|
||||||
"electricity_consumed_interval": 0.0,
|
|
||||||
"electricity_produced": 0.0
|
|
||||||
},
|
},
|
||||||
"switches": {
|
"vendor": "Plugwise",
|
||||||
"relay": true,
|
"zigbee_mac_address": "ABCD012345670A04"
|
||||||
"lock": false
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"71e1944f2a944b26ad73323e399efef0": {
|
"d03738edfcc947f7b8f4573571d90d2d": {
|
||||||
"dev_class": "switching",
|
"dev_class": "switching",
|
||||||
|
"members": [
|
||||||
|
"059e4d03c7a34d278add5c7a4a781d19",
|
||||||
|
"cfe95cf3de1948c0b8955125bf754614"
|
||||||
|
],
|
||||||
"model": "Switchgroup",
|
"model": "Switchgroup",
|
||||||
"name": "Test",
|
"name": "Schakel",
|
||||||
"members": ["5ca521ac179d468e91d772eeeb8a2117"],
|
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true
|
"relay": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"d950b314e9d8499f968e6db8d82ef78c": {
|
"d950b314e9d8499f968e6db8d82ef78c": {
|
||||||
"dev_class": "report",
|
"dev_class": "report",
|
||||||
"model": "Switchgroup",
|
|
||||||
"name": "Stroomvreters",
|
|
||||||
"members": [
|
"members": [
|
||||||
"059e4d03c7a34d278add5c7a4a781d19",
|
"059e4d03c7a34d278add5c7a4a781d19",
|
||||||
"5871317346d045bc9f6b987ef25ee638",
|
"5871317346d045bc9f6b987ef25ee638",
|
||||||
|
@ -130,21 +116,35 @@
|
||||||
"cfe95cf3de1948c0b8955125bf754614",
|
"cfe95cf3de1948c0b8955125bf754614",
|
||||||
"e1c884e7dede431dadee09506ec4f859"
|
"e1c884e7dede431dadee09506ec4f859"
|
||||||
],
|
],
|
||||||
|
"model": "Switchgroup",
|
||||||
|
"name": "Stroomvreters",
|
||||||
"switches": {
|
"switches": {
|
||||||
"relay": true
|
"relay": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"d03738edfcc947f7b8f4573571d90d2d": {
|
"e1c884e7dede431dadee09506ec4f859": {
|
||||||
"dev_class": "switching",
|
"dev_class": "refrigerator",
|
||||||
"model": "Switchgroup",
|
"firmware": "2011-06-27T10:47:37+02:00",
|
||||||
"name": "Schakel",
|
"hardware": "6539-0700-7330",
|
||||||
"members": [
|
"location": "0000aaaa0000aaaa0000aaaa0000aa00",
|
||||||
"059e4d03c7a34d278add5c7a4a781d19",
|
"model": "Circle+ type F",
|
||||||
"cfe95cf3de1948c0b8955125bf754614"
|
"name": "Koelkast (92C4A)",
|
||||||
],
|
"sensors": {
|
||||||
|
"electricity_consumed": 50.5,
|
||||||
|
"electricity_consumed_interval": 0.08,
|
||||||
|
"electricity_produced": 0.0
|
||||||
|
},
|
||||||
"switches": {
|
"switches": {
|
||||||
|
"lock": false,
|
||||||
"relay": true
|
"relay": true
|
||||||
}
|
},
|
||||||
|
"vendor": "Plugwise",
|
||||||
|
"zigbee_mac_address": "0123456789AB"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"gateway": {
|
||||||
|
"gateway_id": "0000aaaa0000aaaa0000aaaa0000aa00",
|
||||||
|
"notifications": {},
|
||||||
|
"smile_name": "Stretch"
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ from unittest.mock import MagicMock
|
||||||
|
|
||||||
from homeassistant.const import STATE_OFF, STATE_ON
|
from homeassistant.const import STATE_OFF, STATE_ON
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_component import async_update_entity
|
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
|
@ -30,6 +29,10 @@ async def test_anna_climate_binary_sensor_entities(
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_OFF
|
assert state.state == STATE_OFF
|
||||||
|
|
||||||
|
state = hass.states.get("binary_sensor.opentherm_compressor_state")
|
||||||
|
assert state
|
||||||
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_anna_climate_binary_sensor_change(
|
async def test_anna_climate_binary_sensor_change(
|
||||||
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
|
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
|
||||||
|
@ -42,7 +45,9 @@ async def test_anna_climate_binary_sensor_change(
|
||||||
assert state
|
assert state
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
await async_update_entity(hass, "binary_sensor.opentherm_dhw_state")
|
await hass.helpers.entity_component.async_update_entity(
|
||||||
|
"binary_sensor.opentherm_dhw_state"
|
||||||
|
)
|
||||||
|
|
||||||
state = hass.states.get("binary_sensor.opentherm_dhw_state")
|
state = hass.states.get("binary_sensor.opentherm_dhw_state")
|
||||||
assert state
|
assert state
|
||||||
|
|
|
@ -135,6 +135,22 @@ async def test_adam_climate_entity_climate_changes(
|
||||||
"c50f167537524366a5af7aa3942feb1e", {"setpoint": 25.0}
|
"c50f167537524366a5af7aa3942feb1e", {"setpoint": 25.0}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await hass.services.async_call(
|
||||||
|
"climate",
|
||||||
|
"set_temperature",
|
||||||
|
{
|
||||||
|
"entity_id": "climate.zone_lisa_wk",
|
||||||
|
"hvac_mode": "heat",
|
||||||
|
"temperature": 25,
|
||||||
|
},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert mock_smile_adam.set_temperature.call_count == 2
|
||||||
|
mock_smile_adam.set_temperature.assert_called_with(
|
||||||
|
"c50f167537524366a5af7aa3942feb1e", {"setpoint": 25.0}
|
||||||
|
)
|
||||||
|
|
||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
"climate",
|
"climate",
|
||||||
|
@ -162,7 +178,7 @@ async def test_adam_climate_entity_climate_changes(
|
||||||
blocking=True,
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert mock_smile_adam.set_temperature.call_count == 2
|
assert mock_smile_adam.set_temperature.call_count == 3
|
||||||
mock_smile_adam.set_temperature.assert_called_with(
|
mock_smile_adam.set_temperature.assert_called_with(
|
||||||
"82fa13f017d240daa0d0ea1775420f24", {"setpoint": 25.0}
|
"82fa13f017d240daa0d0ea1775420f24", {"setpoint": 25.0}
|
||||||
)
|
)
|
||||||
|
|
|
@ -15,6 +15,7 @@ async def test_diagnostics(
|
||||||
init_integration: MockConfigEntry,
|
init_integration: MockConfigEntry,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test diagnostics."""
|
"""Test diagnostics."""
|
||||||
|
|
||||||
assert await get_diagnostics_for_config_entry(
|
assert await get_diagnostics_for_config_entry(
|
||||||
hass, hass_client, init_integration
|
hass, hass_client, init_integration
|
||||||
) == {
|
) == {
|
||||||
|
@ -55,7 +56,7 @@ async def test_diagnostics(
|
||||||
"Badkamer Schema",
|
"Badkamer Schema",
|
||||||
"CV Jessie",
|
"CV Jessie",
|
||||||
],
|
],
|
||||||
"selected_schedule": "None",
|
"select_schedule": "None",
|
||||||
"last_used": "Badkamer Schema",
|
"last_used": "Badkamer Schema",
|
||||||
"mode": "heat",
|
"mode": "heat",
|
||||||
"sensors": {"temperature": 16.5, "setpoint": 13.0, "battery": 67},
|
"sensors": {"temperature": 16.5, "setpoint": 13.0, "battery": 67},
|
||||||
|
@ -120,7 +121,7 @@ async def test_diagnostics(
|
||||||
"Badkamer Schema",
|
"Badkamer Schema",
|
||||||
"CV Jessie",
|
"CV Jessie",
|
||||||
],
|
],
|
||||||
"selected_schedule": "GF7 Woonkamer",
|
"select_schedule": "GF7 Woonkamer",
|
||||||
"last_used": "GF7 Woonkamer",
|
"last_used": "GF7 Woonkamer",
|
||||||
"mode": "auto",
|
"mode": "auto",
|
||||||
"sensors": {"temperature": 20.9, "setpoint": 21.5, "battery": 34},
|
"sensors": {"temperature": 20.9, "setpoint": 21.5, "battery": 34},
|
||||||
|
@ -135,7 +136,7 @@ async def test_diagnostics(
|
||||||
"name": "Adam",
|
"name": "Adam",
|
||||||
"zigbee_mac_address": "ABCD012345670101",
|
"zigbee_mac_address": "ABCD012345670101",
|
||||||
"vendor": "Plugwise",
|
"vendor": "Plugwise",
|
||||||
"regulation_mode": "heating",
|
"select_regulation_mode": "heating",
|
||||||
"binary_sensors": {"plugwise_notification": True},
|
"binary_sensors": {"plugwise_notification": True},
|
||||||
"sensors": {"outdoor_temperature": 7.81},
|
"sensors": {"outdoor_temperature": 7.81},
|
||||||
},
|
},
|
||||||
|
@ -296,7 +297,7 @@ async def test_diagnostics(
|
||||||
"Badkamer Schema",
|
"Badkamer Schema",
|
||||||
"CV Jessie",
|
"CV Jessie",
|
||||||
],
|
],
|
||||||
"selected_schedule": "CV Jessie",
|
"select_schedule": "CV Jessie",
|
||||||
"last_used": "CV Jessie",
|
"last_used": "CV Jessie",
|
||||||
"mode": "auto",
|
"mode": "auto",
|
||||||
"sensors": {"temperature": 17.2, "setpoint": 15.0, "battery": 37},
|
"sensors": {"temperature": 17.2, "setpoint": 15.0, "battery": 37},
|
||||||
|
@ -344,7 +345,7 @@ async def test_diagnostics(
|
||||||
"Badkamer Schema",
|
"Badkamer Schema",
|
||||||
"CV Jessie",
|
"CV Jessie",
|
||||||
],
|
],
|
||||||
"selected_schedule": "Badkamer Schema",
|
"select_schedule": "Badkamer Schema",
|
||||||
"last_used": "Badkamer Schema",
|
"last_used": "Badkamer Schema",
|
||||||
"mode": "auto",
|
"mode": "auto",
|
||||||
"sensors": {"temperature": 18.9, "setpoint": 14.0, "battery": 92},
|
"sensors": {"temperature": 18.9, "setpoint": 14.0, "battery": 92},
|
||||||
|
@ -391,7 +392,7 @@ async def test_diagnostics(
|
||||||
"Badkamer Schema",
|
"Badkamer Schema",
|
||||||
"CV Jessie",
|
"CV Jessie",
|
||||||
],
|
],
|
||||||
"selected_schedule": "None",
|
"select_schedule": "None",
|
||||||
"last_used": "Badkamer Schema",
|
"last_used": "Badkamer Schema",
|
||||||
"mode": "heat",
|
"mode": "heat",
|
||||||
"sensors": {
|
"sensors": {
|
||||||
|
|
|
@ -99,7 +99,7 @@ async def test_migrate_unique_id_temperature(
|
||||||
mock_config_entry.add_to_hass(hass)
|
mock_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
entity_registry = er.async_get(hass)
|
entity_registry = er.async_get(hass)
|
||||||
entity: er.RegistryEntry = entity_registry.async_get_or_create(
|
entity: entity_registry.RegistryEntry = entity_registry.async_get_or_create(
|
||||||
**entitydata,
|
**entitydata,
|
||||||
config_entry=mock_config_entry,
|
config_entry=mock_config_entry,
|
||||||
)
|
)
|
||||||
|
@ -140,7 +140,7 @@ async def test_migrate_unique_id_relay(
|
||||||
mock_config_entry.add_to_hass(hass)
|
mock_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
entity_registry = er.async_get(hass)
|
entity_registry = er.async_get(hass)
|
||||||
entity: er.RegistryEntry = entity_registry.async_get_or_create(
|
entity: entity_registry.RegistryEntry = entity_registry.async_get_or_create(
|
||||||
**entitydata,
|
**entitydata,
|
||||||
config_entry=mock_config_entry,
|
config_entry=mock_config_entry,
|
||||||
)
|
)
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
|
from homeassistant.components.plugwise.const import DOMAIN
|
||||||
|
from homeassistant.components.plugwise.sensor import DOMAIN as SENSOR_DOMAIN
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_component import async_update_entity
|
from homeassistant.helpers.entity_component import async_update_entity
|
||||||
from homeassistant.helpers.entity_registry import async_get
|
from homeassistant.helpers.entity_registry import async_get
|
||||||
|
@ -36,6 +38,58 @@ async def test_adam_climate_sensor_entities(
|
||||||
assert int(state.state) == 34
|
assert int(state.state) == 34
|
||||||
|
|
||||||
|
|
||||||
|
async def test_adam_climate_sensor_entity_2(
|
||||||
|
hass: HomeAssistant, mock_smile_adam_4: MagicMock, init_integration: MockConfigEntry
|
||||||
|
) -> None:
|
||||||
|
"""Test creation of climate related sensor entities."""
|
||||||
|
state = hass.states.get("sensor.woonkamer_humidity")
|
||||||
|
assert state
|
||||||
|
assert float(state.state) == 56.2
|
||||||
|
|
||||||
|
|
||||||
|
async def test_unique_id_migration_humidity(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_smile_adam_4: MagicMock,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
|
) -> None:
|
||||||
|
"""Test unique ID migration of -relative_humidity to -humidity."""
|
||||||
|
mock_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
|
entity_registry = async_get(hass)
|
||||||
|
# Entry to migrate
|
||||||
|
entity_registry.async_get_or_create(
|
||||||
|
SENSOR_DOMAIN,
|
||||||
|
DOMAIN,
|
||||||
|
"f61f1a2535f54f52ad006a3d18e459ca-relative_humidity",
|
||||||
|
config_entry=mock_config_entry,
|
||||||
|
suggested_object_id="woonkamer_humidity",
|
||||||
|
disabled_by=None,
|
||||||
|
)
|
||||||
|
# Entry not needing migration
|
||||||
|
entity_registry.async_get_or_create(
|
||||||
|
SENSOR_DOMAIN,
|
||||||
|
DOMAIN,
|
||||||
|
"f61f1a2535f54f52ad006a3d18e459ca-battery",
|
||||||
|
config_entry=mock_config_entry,
|
||||||
|
suggested_object_id="woonkamer_battery",
|
||||||
|
disabled_by=None,
|
||||||
|
)
|
||||||
|
|
||||||
|
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert hass.states.get("sensor.woonkamer_humidity") is not None
|
||||||
|
assert hass.states.get("sensor.woonkamer_battery") is not None
|
||||||
|
|
||||||
|
entity_entry = entity_registry.async_get("sensor.woonkamer_humidity")
|
||||||
|
assert entity_entry
|
||||||
|
assert entity_entry.unique_id == "f61f1a2535f54f52ad006a3d18e459ca-humidity"
|
||||||
|
|
||||||
|
entity_entry = entity_registry.async_get("sensor.woonkamer_battery")
|
||||||
|
assert entity_entry
|
||||||
|
assert entity_entry.unique_id == "f61f1a2535f54f52ad006a3d18e459ca-battery"
|
||||||
|
|
||||||
|
|
||||||
async def test_anna_as_smt_climate_sensor_entities(
|
async def test_anna_as_smt_climate_sensor_entities(
|
||||||
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
|
hass: HomeAssistant, mock_smile_anna: MagicMock, init_integration: MockConfigEntry
|
||||||
) -> None:
|
) -> None:
|
||||||
|
@ -48,10 +102,6 @@ async def test_anna_as_smt_climate_sensor_entities(
|
||||||
assert state
|
assert state
|
||||||
assert float(state.state) == 29.1
|
assert float(state.state) == 29.1
|
||||||
|
|
||||||
state = hass.states.get("sensor.opentherm_dhw_setpoint")
|
|
||||||
assert state
|
|
||||||
assert float(state.state) == 60.0
|
|
||||||
|
|
||||||
state = hass.states.get("sensor.opentherm_dhw_temperature")
|
state = hass.states.get("sensor.opentherm_dhw_temperature")
|
||||||
assert state
|
assert state
|
||||||
assert float(state.state) == 46.3
|
assert float(state.state) == 46.3
|
||||||
|
|
|
@ -173,7 +173,7 @@ async def test_unique_id_migration_plug_relay(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
"675416a629f343c495449970e2ca37b5-relay",
|
"675416a629f343c495449970e2ca37b5-relay",
|
||||||
config_entry=mock_config_entry,
|
config_entry=mock_config_entry,
|
||||||
suggested_object_id="router",
|
suggested_object_id="ziggo_modem",
|
||||||
disabled_by=None,
|
disabled_by=None,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -181,12 +181,12 @@ async def test_unique_id_migration_plug_relay(
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert hass.states.get("switch.playstation_smart_plug") is not None
|
assert hass.states.get("switch.playstation_smart_plug") is not None
|
||||||
assert hass.states.get("switch.router") is not None
|
assert hass.states.get("switch.ziggo_modem") is not None
|
||||||
|
|
||||||
entity_entry = registry.async_get("switch.playstation_smart_plug")
|
entity_entry = registry.async_get("switch.playstation_smart_plug")
|
||||||
assert entity_entry
|
assert entity_entry
|
||||||
assert entity_entry.unique_id == "21f2b542c49845e6bb416884c55778d6-relay"
|
assert entity_entry.unique_id == "21f2b542c49845e6bb416884c55778d6-relay"
|
||||||
|
|
||||||
entity_entry = registry.async_get("switch.router")
|
entity_entry = registry.async_get("switch.ziggo_modem")
|
||||||
assert entity_entry
|
assert entity_entry
|
||||||
assert entity_entry.unique_id == "675416a629f343c495449970e2ca37b5-relay"
|
assert entity_entry.unique_id == "675416a629f343c495449970e2ca37b5-relay"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue