Bump plugwise to v1.6.0 and adapt (#131659)

This commit is contained in:
Bouwe Westerdijk 2024-11-27 08:34:15 +01:00 committed by GitHub
parent 81d0bcde53
commit 8bb0fab732
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 697 additions and 390 deletions

View File

@ -83,7 +83,7 @@ def migrate_sensor_entities(
# Migrating opentherm_outdoor_temperature
# to opentherm_outdoor_air_temperature sensor
for device_id, device in coordinator.data.devices.items():
if device.get("dev_class") != "heater_central":
if device["dev_class"] != "heater_central":
continue
old_unique_id = f"{device_id}-outdoor_temperature"

View File

@ -39,11 +39,19 @@ async def async_setup_entry(
if not coordinator.new_devices:
return
async_add_entities(
PlugwiseClimateEntity(coordinator, device_id)
for device_id in coordinator.new_devices
if coordinator.data.devices[device_id]["dev_class"] in MASTER_THERMOSTATS
)
if coordinator.data.gateway["smile_name"] == "Adam":
async_add_entities(
PlugwiseClimateEntity(coordinator, device_id)
for device_id in coordinator.new_devices
if coordinator.data.devices[device_id]["dev_class"] == "climate"
)
else:
async_add_entities(
PlugwiseClimateEntity(coordinator, device_id)
for device_id in coordinator.new_devices
if coordinator.data.devices[device_id]["dev_class"]
in MASTER_THERMOSTATS
)
_add_entities()
entry.async_on_unload(coordinator.async_add_listener(_add_entities))
@ -69,6 +77,11 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
super().__init__(coordinator, device_id)
self._attr_extra_state_attributes = {}
self._attr_unique_id = f"{device_id}-climate"
self._location = device_id
if (location := self.device.get("location")) is not None:
self._location = location
self.cdr_gateway = coordinator.data.gateway
gateway_id: str = coordinator.data.gateway["gateway_id"]
self.gateway_data = coordinator.data.devices[gateway_id]
@ -222,7 +235,7 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
if mode := kwargs.get(ATTR_HVAC_MODE):
await self.async_set_hvac_mode(mode)
await self.coordinator.api.set_temperature(self.device["location"], data)
await self.coordinator.api.set_temperature(self._location, data)
@plugwise_command
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
@ -237,7 +250,7 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
await self.coordinator.api.set_regulation_mode(hvac_mode)
else:
await self.coordinator.api.set_schedule_state(
self.device["location"],
self._location,
"on" if hvac_mode == HVACMode.AUTO else "off",
)
if self.hvac_mode == HVACMode.OFF:
@ -246,4 +259,4 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
@plugwise_command
async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Set the preset mode."""
await self.coordinator.api.set_preset(self.device["location"], preset_mode)
await self.coordinator.api.set_preset(self._location, preset_mode)

View File

@ -64,11 +64,11 @@ class PlugwiseDataUpdateCoordinator(DataUpdateCoordinator[PlugwiseData]):
version = await self.api.connect()
self._connected = isinstance(version, Version)
if self._connected:
self.api.get_all_devices()
self.api.get_all_gateway_entities()
async def _async_update_data(self) -> PlugwiseData:
"""Fetch data from Plugwise."""
data = PlugwiseData({}, {})
data = PlugwiseData(devices={}, gateway={})
try:
if not self._connected:
await self._connect()

View File

@ -15,6 +15,6 @@ async def async_get_config_entry_diagnostics(
"""Return diagnostics for a config entry."""
coordinator = entry.runtime_data
return {
"gateway": coordinator.data.gateway,
"devices": coordinator.data.devices,
"gateway": coordinator.data.gateway,
}

View File

@ -2,7 +2,7 @@
from __future__ import annotations
from plugwise.constants import DeviceData
from plugwise.constants import GwEntityData
from homeassistant.const import ATTR_NAME, ATTR_VIA_DEVICE, CONF_HOST
from homeassistant.helpers.device_registry import (
@ -74,7 +74,7 @@ class PlugwiseEntity(CoordinatorEntity[PlugwiseDataUpdateCoordinator]):
)
@property
def device(self) -> DeviceData:
def device(self) -> GwEntityData:
"""Return data for this device."""
return self.coordinator.data.devices[self._dev_id]

View File

@ -7,6 +7,6 @@
"integration_type": "hub",
"iot_class": "local_polling",
"loggers": ["plugwise"],
"requirements": ["plugwise==1.5.2"],
"requirements": ["plugwise==1.6.0"],
"zeroconf": ["_plugwise._tcp.local."]
}

View File

@ -91,12 +91,12 @@ class PlugwiseNumberEntity(PlugwiseEntity, NumberEntity):
) -> None:
"""Initiate Plugwise Number."""
super().__init__(coordinator, device_id)
self.device_id = device_id
self.entity_description = description
self._attr_unique_id = f"{device_id}-{description.key}"
self._attr_mode = NumberMode.BOX
self._attr_native_max_value = self.device[description.key]["upper_bound"]
self._attr_native_min_value = self.device[description.key]["lower_bound"]
self._attr_unique_id = f"{device_id}-{description.key}"
self.device_id = device_id
self.entity_description = description
native_step = self.device[description.key]["resolution"]
if description.key != "temperature_offset":

View File

@ -10,7 +10,7 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import PlugwiseConfigEntry
from .const import LOCATION, SelectOptionsType, SelectType
from .const import SelectOptionsType, SelectType
from .coordinator import PlugwiseDataUpdateCoordinator
from .entity import PlugwiseEntity
from .util import plugwise_command
@ -89,8 +89,12 @@ class PlugwiseSelectEntity(PlugwiseEntity, SelectEntity):
) -> None:
"""Initialise the selector."""
super().__init__(coordinator, device_id)
self.entity_description = entity_description
self._attr_unique_id = f"{device_id}-{entity_description.key}"
self.entity_description = entity_description
self._location = device_id
if (location := self.device.get("location")) is not None:
self._location = location
@property
def current_option(self) -> str:
@ -106,8 +110,8 @@ class PlugwiseSelectEntity(PlugwiseEntity, SelectEntity):
async def async_select_option(self, option: str) -> None:
"""Change to the selected entity option.
self.device[LOCATION] and STATE_ON are required for the thermostat-schedule select.
self._location and STATE_ON are required for the thermostat-schedule select.
"""
await self.coordinator.api.set_select(
self.entity_description.key, self.device[LOCATION], option, STATE_ON
self.entity_description.key, self._location, option, STATE_ON
)

View File

@ -439,8 +439,8 @@ class PlugwiseSensorEntity(PlugwiseEntity, SensorEntity):
) -> None:
"""Initialise the sensor."""
super().__init__(coordinator, device_id)
self.entity_description = description
self._attr_unique_id = f"{device_id}-{description.key}"
self.entity_description = description
@property
def native_value(self) -> int | float:

View File

@ -93,8 +93,8 @@ class PlugwiseSwitchEntity(PlugwiseEntity, SwitchEntity):
) -> None:
"""Set up the Plugwise API."""
super().__init__(coordinator, device_id)
self.entity_description = description
self._attr_unique_id = f"{device_id}-{description.key}"
self.entity_description = description
@property
def is_on(self) -> bool:

View File

@ -1622,7 +1622,7 @@ plexauth==0.0.6
plexwebsocket==0.0.14
# homeassistant.components.plugwise
plugwise==1.5.2
plugwise==1.6.0
# homeassistant.components.plum_lightpad
plumlightpad==0.0.11

View File

@ -1329,7 +1329,7 @@ plexauth==0.0.6
plexwebsocket==0.0.14
# homeassistant.components.plugwise
plugwise==1.5.2
plugwise==1.6.0
# homeassistant.components.plum_lightpad
plumlightpad==0.0.11

View File

@ -93,7 +93,7 @@ def mock_smile_adam() -> Generator[MagicMock]:
smile.connect.return_value = Version("3.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -120,7 +120,7 @@ def mock_smile_adam_2() -> Generator[MagicMock]:
smile.connect.return_value = Version("3.6.4")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -147,7 +147,7 @@ def mock_smile_adam_3() -> Generator[MagicMock]:
smile.connect.return_value = Version("3.6.4")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -174,7 +174,7 @@ def mock_smile_adam_4() -> Generator[MagicMock]:
smile.connect.return_value = Version("3.2.8")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -200,7 +200,7 @@ def mock_smile_anna() -> Generator[MagicMock]:
smile.connect.return_value = Version("4.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -226,7 +226,7 @@ def mock_smile_anna_2() -> Generator[MagicMock]:
smile.connect.return_value = Version("4.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -252,7 +252,7 @@ def mock_smile_anna_3() -> Generator[MagicMock]:
smile.connect.return_value = Version("4.0.15")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -278,7 +278,7 @@ def mock_smile_p1() -> Generator[MagicMock]:
smile.connect.return_value = Version("4.4.2")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -304,7 +304,7 @@ def mock_smile_p1_2() -> Generator[MagicMock]:
smile.connect.return_value = Version("4.4.2")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -330,7 +330,7 @@ def mock_smile_legacy_anna() -> Generator[MagicMock]:
smile.connect.return_value = Version("1.8.22")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile
@ -356,7 +356,7 @@ def mock_stretch() -> Generator[MagicMock]:
smile.connect.return_value = Version("3.1.11")
all_data = _read_json(chosen_env, "all_data")
smile.async_update.return_value = PlugwiseData(
all_data["gateway"], all_data["devices"]
all_data["devices"], all_data["gateway"]
)
yield smile

View File

@ -45,7 +45,7 @@
"name": "Anna",
"preset_modes": ["away", "vacation", "asleep", "home", "no_frost"],
"sensors": {
"illuminance": 151,
"illuminance": 150.8,
"setpoint": 20.5,
"temperature": 20.4
},

View File

@ -31,7 +31,7 @@
"binary_sensors": {
"low_battery": false
},
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2020-11-04T01:00:00+01:00",
"hardware": "1",
"location": "f871b8c4d63549319221e294e4f88074",
@ -40,6 +40,7 @@
"name": "Tom Badkamer",
"sensors": {
"battery": 99,
"setpoint": 18.0,
"temperature": 21.6,
"temperature_difference": -0.2,
"valve_position": 100
@ -54,34 +55,16 @@
"zigbee_mac_address": "000D6F000C8FF5EE"
},
"ad4838d7d35c4d6ea796ee12ae5aedf8": {
"active_preset": "home",
"available": true,
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"climate_mode": "cool",
"control_state": "cooling",
"dev_class": "thermostat",
"location": "f2bf9048bef64cc5b6d5110154e33c81",
"model": "ThermoTouch",
"model_id": "143.1",
"name": "Anna",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "off",
"sensors": {
"setpoint": 23.5,
"temperature": 25.8
},
"thermostat": {
"lower_bound": 1.0,
"resolution": 0.01,
"setpoint": 23.5,
"upper_bound": 35.0
},
"vendor": "Plugwise"
},
"da224107914542988a88561b4452b0f6": {
@ -113,20 +96,10 @@
"zigbee_mac_address": "000D6F000D5A168D"
},
"e2f4322d57924fa090fbbc48b3a140dc": {
"active_preset": "home",
"available": true,
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"binary_sensors": {
"low_battery": true
},
"climate_mode": "auto",
"control_state": "preheating",
"dev_class": "zone_thermostat",
"firmware": "2016-10-10T02:00:00+02:00",
"hardware": "255",
@ -134,8 +107,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Lisa Badkamer",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "Badkamer",
"sensors": {
"battery": 14,
"setpoint": 23.5,
@ -147,12 +118,6 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 25.0,
"upper_bound": 99.9
},
"vendor": "Plugwise",
"zigbee_mac_address": "000D6F000C869B61"
},
@ -166,14 +131,81 @@
"name": "Test",
"switches": {
"relay": true
}
},
"vendor": "Plugwise"
},
"f2bf9048bef64cc5b6d5110154e33c81": {
"active_preset": "home",
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"climate_mode": "cool",
"control_state": "cooling",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Living room",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "off",
"sensors": {
"electricity_consumed": 149.9,
"electricity_produced": 0.0,
"temperature": 25.8
},
"thermostat": {
"lower_bound": 1.0,
"resolution": 0.01,
"setpoint": 23.5,
"upper_bound": 35.0
},
"thermostats": {
"primary": ["ad4838d7d35c4d6ea796ee12ae5aedf8"],
"secondary": []
},
"vendor": "Plugwise"
},
"f871b8c4d63549319221e294e4f88074": {
"active_preset": "home",
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"climate_mode": "cool",
"control_state": "auto",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Bathroom",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "Badkamer",
"sensors": {
"electricity_consumed": 0.0,
"electricity_produced": 0.0,
"temperature": 23.9
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 25.0,
"upper_bound": 99.9
},
"thermostats": {
"primary": ["e2f4322d57924fa090fbbc48b3a140dc"],
"secondary": ["1772a4ea304041adb83f357b751341ff"]
},
"vendor": "Plugwise"
}
},
"gateway": {
"cooling_present": true,
"gateway_id": "da224107914542988a88561b4452b0f6",
"heater_id": "056ee145a816487eaa69243c3280f8bf",
"item_count": 157,
"item_count": 89,
"notifications": {},
"reboot": true,
"smile_name": "Adam"

View File

@ -36,7 +36,7 @@
"binary_sensors": {
"low_battery": false
},
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2020-11-04T01:00:00+01:00",
"hardware": "1",
"location": "f871b8c4d63549319221e294e4f88074",
@ -45,6 +45,7 @@
"name": "Tom Badkamer",
"sensors": {
"battery": 99,
"setpoint": 18.0,
"temperature": 18.6,
"temperature_difference": -0.2,
"valve_position": 100
@ -59,34 +60,16 @@
"zigbee_mac_address": "000D6F000C8FF5EE"
},
"ad4838d7d35c4d6ea796ee12ae5aedf8": {
"active_preset": "home",
"available": true,
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"climate_mode": "heat",
"control_state": "preheating",
"dev_class": "thermostat",
"location": "f2bf9048bef64cc5b6d5110154e33c81",
"model": "ThermoTouch",
"model_id": "143.1",
"name": "Anna",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "off",
"sensors": {
"setpoint": 20.0,
"temperature": 19.1
},
"thermostat": {
"lower_bound": 1.0,
"resolution": 0.01,
"setpoint": 20.0,
"upper_bound": 35.0
},
"vendor": "Plugwise"
},
"da224107914542988a88561b4452b0f6": {
@ -112,20 +95,10 @@
"zigbee_mac_address": "000D6F000D5A168D"
},
"e2f4322d57924fa090fbbc48b3a140dc": {
"active_preset": "home",
"available": true,
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"binary_sensors": {
"low_battery": true
},
"climate_mode": "auto",
"control_state": "off",
"dev_class": "zone_thermostat",
"firmware": "2016-10-10T02:00:00+02:00",
"hardware": "255",
@ -133,8 +106,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Lisa Badkamer",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "Badkamer",
"sensors": {
"battery": 14,
"setpoint": 15.0,
@ -146,12 +117,6 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 15.0,
"upper_bound": 99.9
},
"vendor": "Plugwise",
"zigbee_mac_address": "000D6F000C869B61"
},
@ -165,14 +130,81 @@
"name": "Test",
"switches": {
"relay": true
}
},
"vendor": "Plugwise"
},
"f2bf9048bef64cc5b6d5110154e33c81": {
"active_preset": "home",
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"climate_mode": "heat",
"control_state": "preheating",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Living room",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "off",
"sensors": {
"electricity_consumed": 149.9,
"electricity_produced": 0.0,
"temperature": 19.1
},
"thermostat": {
"lower_bound": 1.0,
"resolution": 0.01,
"setpoint": 20.0,
"upper_bound": 35.0
},
"thermostats": {
"primary": ["ad4838d7d35c4d6ea796ee12ae5aedf8"],
"secondary": []
},
"vendor": "Plugwise"
},
"f871b8c4d63549319221e294e4f88074": {
"active_preset": "home",
"available_schedules": [
"Badkamer",
"Test",
"Vakantie",
"Weekschema",
"off"
],
"climate_mode": "auto",
"control_state": "off",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Bathroom",
"preset_modes": ["no_frost", "asleep", "vacation", "home", "away"],
"select_schedule": "Badkamer",
"sensors": {
"electricity_consumed": 0.0,
"electricity_produced": 0.0,
"temperature": 17.9
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 15.0,
"upper_bound": 99.9
},
"thermostats": {
"primary": ["e2f4322d57924fa090fbbc48b3a140dc"],
"secondary": ["1772a4ea304041adb83f357b751341ff"]
},
"vendor": "Plugwise"
}
},
"gateway": {
"cooling_present": false,
"gateway_id": "da224107914542988a88561b4452b0f6",
"heater_id": "056ee145a816487eaa69243c3280f8bf",
"item_count": 157,
"item_count": 89,
"notifications": {},
"reboot": true,
"smile_name": "Adam"

View File

@ -1,13 +1,56 @@
{
"devices": {
"1346fbd8498d4dbcab7e18d51b771f3d": {
"06aecb3d00354375924f50c47af36bd2": {
"active_preset": "no_frost",
"climate_mode": "off",
"control_state": "off",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Slaapkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"temperature": 24.2
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 13.0,
"upper_bound": 99.9
},
"thermostats": {
"primary": ["1346fbd8498d4dbcab7e18d51b771f3d"],
"secondary": ["356b65335e274d769c338223e7af9c33"]
},
"vendor": "Plugwise"
},
"13228dab8ce04617af318a2888b3c548": {
"active_preset": "home",
"climate_mode": "heat",
"control_state": "off",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Woonkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"temperature": 27.4
},
"thermostat": {
"lower_bound": 4.0,
"resolution": 0.01,
"setpoint": 9.0,
"upper_bound": 30.0
},
"thermostats": {
"primary": ["f61f1a2535f54f52ad006a3d18e459ca"],
"secondary": ["833de10f269c4deab58fb9df69901b4e"]
},
"vendor": "Plugwise"
},
"1346fbd8498d4dbcab7e18d51b771f3d": {
"available": true,
"binary_sensors": {
"low_battery": false
},
"climate_mode": "off",
"control_state": "off",
"dev_class": "zone_thermostat",
"firmware": "2016-10-27T02:00:00+02:00",
"hardware": "255",
@ -15,7 +58,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Slaapkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"battery": 92,
"setpoint": 13.0,
@ -27,18 +69,12 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"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",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2020-11-04T01:00:00+01:00",
"hardware": "1",
"location": "d58fec52899f4f1c92e4f8fad6d8c48c",
@ -62,7 +98,7 @@
},
"356b65335e274d769c338223e7af9c33": {
"available": true,
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2020-11-04T01:00:00+01:00",
"hardware": "1",
"location": "06aecb3d00354375924f50c47af36bd2",
@ -102,13 +138,10 @@
"zigbee_mac_address": "ABCD012345670A06"
},
"6f3e9d7084214c21b9dfa46f6eeb8700": {
"active_preset": "home",
"available": true,
"binary_sensors": {
"low_battery": false
},
"climate_mode": "heat",
"control_state": "off",
"dev_class": "zone_thermostat",
"firmware": "2016-10-27T02:00:00+02:00",
"hardware": "255",
@ -116,7 +149,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Kinderkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"battery": 79,
"setpoint": 13.0,
@ -128,18 +160,12 @@
"setpoint": 0.0,
"upper_bound": 2.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",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2020-11-04T01:00:00+01:00",
"hardware": "1",
"location": "13228dab8ce04617af318a2888b3c548",
@ -162,13 +188,10 @@
"zigbee_mac_address": "ABCD012345670A09"
},
"a6abc6a129ee499c88a4d420cc413b47": {
"active_preset": "home",
"available": true,
"binary_sensors": {
"low_battery": false
},
"climate_mode": "heat",
"control_state": "off",
"dev_class": "zone_thermostat",
"firmware": "2016-10-27T02:00:00+02:00",
"hardware": "255",
@ -176,7 +199,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Logeerkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"battery": 80,
"setpoint": 13.0,
@ -188,12 +210,6 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 13.0,
"upper_bound": 99.9
},
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A01"
},
@ -219,9 +235,32 @@
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670101"
},
"d27aede973b54be484f6842d1b2802ad": {
"active_preset": "home",
"climate_mode": "heat",
"control_state": "off",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Kinderkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"temperature": 30.0
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 13.0,
"upper_bound": 99.9
},
"thermostats": {
"primary": ["6f3e9d7084214c21b9dfa46f6eeb8700"],
"secondary": ["d4496250d0e942cfa7aea3476e9070d5"]
},
"vendor": "Plugwise"
},
"d4496250d0e942cfa7aea3476e9070d5": {
"available": true,
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2020-11-04T01:00:00+01:00",
"hardware": "1",
"location": "d27aede973b54be484f6842d1b2802ad",
@ -243,6 +282,29 @@
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A04"
},
"d58fec52899f4f1c92e4f8fad6d8c48c": {
"active_preset": "home",
"climate_mode": "heat",
"control_state": "off",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Logeerkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"temperature": 30.0
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 13.0,
"upper_bound": 99.9
},
"thermostats": {
"primary": ["a6abc6a129ee499c88a4d420cc413b47"],
"secondary": ["1da4d325838e4ad8aac12177214505c9"]
},
"vendor": "Plugwise"
},
"e4684553153b44afbef2200885f379dc": {
"available": true,
"binary_sensors": {
@ -280,13 +342,10 @@
"vendor": "Remeha B.V."
},
"f61f1a2535f54f52ad006a3d18e459ca": {
"active_preset": "home",
"available": true,
"binary_sensors": {
"low_battery": false
},
"climate_mode": "heat",
"control_state": "off",
"dev_class": "zone_thermometer",
"firmware": "2020-09-01T02:00:00+02:00",
"hardware": "1",
@ -294,7 +353,6 @@
"model": "Jip",
"model_id": "168-01",
"name": "Woonkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"battery": 100,
"humidity": 56.2,
@ -307,12 +365,6 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"thermostat": {
"lower_bound": 4.0,
"resolution": 0.01,
"setpoint": 9.0,
"upper_bound": 30.0
},
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A08"
}
@ -321,7 +373,7 @@
"cooling_present": false,
"gateway_id": "b5c2386c6f6342669e50fe49dd05b188",
"heater_id": "e4684553153b44afbef2200885f379dc",
"item_count": 228,
"item_count": 244,
"notifications": {},
"reboot": true,
"smile_name": "Adam"

View File

@ -21,6 +21,73 @@
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A15"
},
"08963fec7c53423ca5680aa4cb502c63": {
"active_preset": "away",
"available_schedules": [
"CV Roan",
"Bios Schema met Film Avond",
"GF7 Woonkamer",
"Badkamer Schema",
"CV Jessie",
"off"
],
"climate_mode": "auto",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Badkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "Badkamer Schema",
"sensors": {
"temperature": 18.9
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 14.0,
"upper_bound": 100.0
},
"thermostats": {
"primary": [
"f1fee6043d3642a9b0a65297455f008e",
"680423ff840043738f42cc7f1ff97a36"
],
"secondary": []
},
"vendor": "Plugwise"
},
"12493538af164a409c6a1c79e38afe1c": {
"active_preset": "away",
"available_schedules": [
"CV Roan",
"Bios Schema met Film Avond",
"GF7 Woonkamer",
"Badkamer Schema",
"CV Jessie",
"off"
],
"climate_mode": "heat",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Bios",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "off",
"sensors": {
"electricity_consumed": 0.0,
"electricity_produced": 0.0,
"temperature": 16.5
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 13.0,
"upper_bound": 100.0
},
"thermostats": {
"primary": ["df4a4a8169904cdb9c03d61a21f42140"],
"secondary": ["a2c3583e0a6349358998b760cea82d2a"]
},
"vendor": "Plugwise"
},
"21f2b542c49845e6bb416884c55778d6": {
"available": true,
"dev_class": "game_console_plug",
@ -42,6 +109,28 @@
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A12"
},
"446ac08dd04d4eff8ac57489757b7314": {
"active_preset": "no_frost",
"climate_mode": "heat",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Garage",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"temperature": 15.6
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 5.5,
"upper_bound": 100.0
},
"thermostats": {
"primary": ["e7693eb9582644e5b865dba8d4447cf1"],
"secondary": []
},
"vendor": "Plugwise"
},
"4a810418d5394b3f82727340b91ba740": {
"available": true,
"dev_class": "router_plug",
@ -89,13 +178,13 @@
"binary_sensors": {
"low_battery": false
},
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2019-03-27T01:00:00+01:00",
"hardware": "1",
"location": "08963fec7c53423ca5680aa4cb502c63",
"model": "Tom/Floor",
"model_id": "106-03",
"name": "Thermostatic Radiator Badkamer",
"name": "Thermostatic Radiator Badkamer 1",
"sensors": {
"battery": 51,
"setpoint": 14.0,
@ -113,20 +202,10 @@
"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",
"off"
],
"binary_sensors": {
"low_battery": false
},
"climate_mode": "auto",
"dev_class": "zone_thermostat",
"firmware": "2016-10-27T02:00:00+02:00",
"hardware": "255",
@ -134,8 +213,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Zone Thermostat Jessie",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "CV Jessie",
"sensors": {
"battery": 37,
"setpoint": 15.0,
@ -147,12 +224,6 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 15.0,
"upper_bound": 99.9
},
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A03"
},
@ -176,6 +247,37 @@
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A05"
},
"82fa13f017d240daa0d0ea1775420f24": {
"active_preset": "asleep",
"available_schedules": [
"CV Roan",
"Bios Schema met Film Avond",
"GF7 Woonkamer",
"Badkamer Schema",
"CV Jessie",
"off"
],
"climate_mode": "auto",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Jessie",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "CV Jessie",
"sensors": {
"temperature": 17.2
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 15.0,
"upper_bound": 100.0
},
"thermostats": {
"primary": ["6a3bf693d05e48e0b460c815a4fdd09d"],
"secondary": ["d3da73bde12a47d5a6b8f9dad971f2ec"]
},
"vendor": "Plugwise"
},
"90986d591dcd426cae3ec3e8111ff730": {
"binary_sensors": {
"heating_state": true
@ -216,7 +318,7 @@
"binary_sensors": {
"low_battery": false
},
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2019-03-27T01:00:00+01:00",
"hardware": "1",
"location": "12493538af164a409c6a1c79e38afe1c",
@ -241,7 +343,7 @@
},
"b310b72a0e354bfab43089919b9a88bf": {
"available": true,
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2019-03-27T01:00:00+01:00",
"hardware": "1",
"location": "c50f167537524366a5af7aa3942feb1e",
@ -264,20 +366,10 @@
"zigbee_mac_address": "ABCD012345670A02"
},
"b59bcebaf94b499ea7d46e4a66fb62d8": {
"active_preset": "home",
"available": true,
"available_schedules": [
"CV Roan",
"Bios Schema met Film Avond",
"GF7 Woonkamer",
"Badkamer Schema",
"CV Jessie",
"off"
],
"binary_sensors": {
"low_battery": false
},
"climate_mode": "auto",
"dev_class": "zone_thermostat",
"firmware": "2016-08-02T02:00:00+02:00",
"hardware": "255",
@ -285,8 +377,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Zone Lisa WK",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "GF7 Woonkamer",
"sensors": {
"battery": 34,
"setpoint": 21.5,
@ -298,14 +388,41 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A07"
},
"c50f167537524366a5af7aa3942feb1e": {
"active_preset": "home",
"available_schedules": [
"CV Roan",
"Bios Schema met Film Avond",
"GF7 Woonkamer",
"Badkamer Schema",
"CV Jessie",
"off"
],
"climate_mode": "auto",
"dev_class": "climate",
"model": "ThermoZone",
"name": "Woonkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "GF7 Woonkamer",
"sensors": {
"electricity_consumed": 35.6,
"electricity_produced": 0.0,
"temperature": 20.9
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 21.5,
"upper_bound": 99.9
"upper_bound": 100.0
},
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A07"
"thermostats": {
"primary": ["b59bcebaf94b499ea7d46e4a66fb62d8"],
"secondary": ["b310b72a0e354bfab43089919b9a88bf"]
},
"vendor": "Plugwise"
},
"cd0ddb54ef694e11ac18ed1cbce5dbbd": {
"available": true,
@ -333,7 +450,7 @@
"binary_sensors": {
"low_battery": false
},
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2019-03-27T01:00:00+01:00",
"hardware": "1",
"location": "82fa13f017d240daa0d0ea1775420f24",
@ -357,20 +474,10 @@
"zigbee_mac_address": "ABCD012345670A10"
},
"df4a4a8169904cdb9c03d61a21f42140": {
"active_preset": "away",
"available": true,
"available_schedules": [
"CV Roan",
"Bios Schema met Film Avond",
"GF7 Woonkamer",
"Badkamer Schema",
"CV Jessie",
"off"
],
"binary_sensors": {
"low_battery": false
},
"climate_mode": "heat",
"dev_class": "zone_thermostat",
"firmware": "2016-10-27T02:00:00+02:00",
"hardware": "255",
@ -378,8 +485,6 @@
"model": "Lisa",
"model_id": "158-01",
"name": "Zone Lisa Bios",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "off",
"sensors": {
"battery": 67,
"setpoint": 13.0,
@ -391,22 +496,14 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"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,
"binary_sensors": {
"low_battery": false
},
"climate_mode": "heat",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2019-03-27T01:00:00+01:00",
"hardware": "1",
@ -414,7 +511,6 @@
"model": "Tom/Floor",
"model_id": "106-03",
"name": "CV Kraan Garage",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"sensors": {
"battery": 68,
"setpoint": 5.5,
@ -428,39 +524,21 @@
"setpoint": 0.0,
"upper_bound": 2.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",
"off"
],
"binary_sensors": {
"low_battery": false
},
"climate_mode": "auto",
"dev_class": "zone_thermostat",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2016-10-27T02:00:00+02:00",
"hardware": "255",
"location": "08963fec7c53423ca5680aa4cb502c63",
"model": "Lisa",
"model_id": "158-01",
"name": "Zone Thermostat Badkamer",
"preset_modes": ["home", "asleep", "away", "vacation", "no_frost"],
"select_schedule": "Badkamer Schema",
"name": "Thermostatic Radiator Badkamer 2",
"sensors": {
"battery": 92,
"setpoint": 14.0,
@ -472,12 +550,6 @@
"setpoint": 0.0,
"upper_bound": 2.0
},
"thermostat": {
"lower_bound": 0.0,
"resolution": 0.01,
"setpoint": 14.0,
"upper_bound": 99.9
},
"vendor": "Plugwise",
"zigbee_mac_address": "ABCD012345670A08"
},
@ -505,7 +577,7 @@
"cooling_present": false,
"gateway_id": "fe799307f1624099878210aa0b9f1475",
"heater_id": "90986d591dcd426cae3ec3e8111ff730",
"item_count": 340,
"item_count": 364,
"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."

View File

@ -96,7 +96,8 @@
"name": "Schakel",
"switches": {
"relay": true
}
},
"vendor": "Plugwise"
},
"d950b314e9d8499f968e6db8d82ef78c": {
"dev_class": "report",
@ -111,7 +112,8 @@
"name": "Stroomvreters",
"switches": {
"relay": true
}
},
"vendor": "Plugwise"
},
"e1c884e7dede431dadee09506ec4f859": {
"dev_class": "refrigerator",

View File

@ -23,6 +23,90 @@
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A15',
}),
'08963fec7c53423ca5680aa4cb502c63': dict({
'active_preset': 'away',
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'climate_mode': 'auto',
'dev_class': 'climate',
'model': 'ThermoZone',
'name': 'Badkamer',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'Badkamer Schema',
'sensors': dict({
'temperature': 18.9,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 14.0,
'upper_bound': 100.0,
}),
'thermostats': dict({
'primary': list([
'f1fee6043d3642a9b0a65297455f008e',
'680423ff840043738f42cc7f1ff97a36',
]),
'secondary': list([
]),
}),
'vendor': 'Plugwise',
}),
'12493538af164a409c6a1c79e38afe1c': dict({
'active_preset': 'away',
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'climate_mode': 'heat',
'dev_class': 'climate',
'model': 'ThermoZone',
'name': 'Bios',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'off',
'sensors': dict({
'electricity_consumed': 0.0,
'electricity_produced': 0.0,
'temperature': 16.5,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 13.0,
'upper_bound': 100.0,
}),
'thermostats': dict({
'primary': list([
'df4a4a8169904cdb9c03d61a21f42140',
]),
'secondary': list([
'a2c3583e0a6349358998b760cea82d2a',
]),
}),
'vendor': 'Plugwise',
}),
'21f2b542c49845e6bb416884c55778d6': dict({
'available': True,
'dev_class': 'game_console_plug',
@ -44,6 +128,37 @@
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A12',
}),
'446ac08dd04d4eff8ac57489757b7314': dict({
'active_preset': 'no_frost',
'climate_mode': 'heat',
'dev_class': 'climate',
'model': 'ThermoZone',
'name': 'Garage',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'sensors': dict({
'temperature': 15.6,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 5.5,
'upper_bound': 100.0,
}),
'thermostats': dict({
'primary': list([
'e7693eb9582644e5b865dba8d4447cf1',
]),
'secondary': list([
]),
}),
'vendor': 'Plugwise',
}),
'4a810418d5394b3f82727340b91ba740': dict({
'available': True,
'dev_class': 'router_plug',
@ -91,13 +206,13 @@
'binary_sensors': dict({
'low_battery': False,
}),
'dev_class': 'thermo_sensor',
'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1',
'location': '08963fec7c53423ca5680aa4cb502c63',
'model': 'Tom/Floor',
'model_id': '106-03',
'name': 'Thermostatic Radiator Badkamer',
'name': 'Thermostatic Radiator Badkamer 1',
'sensors': dict({
'battery': 51,
'setpoint': 14.0,
@ -115,20 +230,10 @@
'zigbee_mac_address': 'ABCD012345670A17',
}),
'6a3bf693d05e48e0b460c815a4fdd09d': dict({
'active_preset': 'asleep',
'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({
'low_battery': False,
}),
'climate_mode': 'auto',
'dev_class': 'zone_thermostat',
'firmware': '2016-10-27T02:00:00+02:00',
'hardware': '255',
@ -136,14 +241,6 @@
'model': 'Lisa',
'model_id': '158-01',
'name': 'Zone Thermostat Jessie',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'CV Jessie',
'sensors': dict({
'battery': 37,
'setpoint': 15.0,
@ -155,12 +252,6 @@
'setpoint': 0.0,
'upper_bound': 2.0,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 15.0,
'upper_bound': 99.9,
}),
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A03',
}),
@ -184,6 +275,47 @@
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A05',
}),
'82fa13f017d240daa0d0ea1775420f24': dict({
'active_preset': 'asleep',
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'climate_mode': 'auto',
'dev_class': 'climate',
'model': 'ThermoZone',
'name': 'Jessie',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'CV Jessie',
'sensors': dict({
'temperature': 17.2,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 15.0,
'upper_bound': 100.0,
}),
'thermostats': dict({
'primary': list([
'6a3bf693d05e48e0b460c815a4fdd09d',
]),
'secondary': list([
'd3da73bde12a47d5a6b8f9dad971f2ec',
]),
}),
'vendor': 'Plugwise',
}),
'90986d591dcd426cae3ec3e8111ff730': dict({
'binary_sensors': dict({
'heating_state': True,
@ -224,7 +356,7 @@
'binary_sensors': dict({
'low_battery': False,
}),
'dev_class': 'thermo_sensor',
'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1',
'location': '12493538af164a409c6a1c79e38afe1c',
@ -249,7 +381,7 @@
}),
'b310b72a0e354bfab43089919b9a88bf': dict({
'available': True,
'dev_class': 'thermo_sensor',
'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1',
'location': 'c50f167537524366a5af7aa3942feb1e',
@ -272,20 +404,10 @@
'zigbee_mac_address': 'ABCD012345670A02',
}),
'b59bcebaf94b499ea7d46e4a66fb62d8': dict({
'active_preset': 'home',
'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({
'low_battery': False,
}),
'climate_mode': 'auto',
'dev_class': 'zone_thermostat',
'firmware': '2016-08-02T02:00:00+02:00',
'hardware': '255',
@ -293,14 +415,6 @@
'model': 'Lisa',
'model_id': '158-01',
'name': 'Zone Lisa WK',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'GF7 Woonkamer',
'sensors': dict({
'battery': 34,
'setpoint': 21.5,
@ -312,14 +426,51 @@
'setpoint': 0.0,
'upper_bound': 2.0,
}),
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A07',
}),
'c50f167537524366a5af7aa3942feb1e': dict({
'active_preset': 'home',
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'climate_mode': 'auto',
'dev_class': 'climate',
'model': 'ThermoZone',
'name': 'Woonkamer',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'GF7 Woonkamer',
'sensors': dict({
'electricity_consumed': 35.6,
'electricity_produced': 0.0,
'temperature': 20.9,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 21.5,
'upper_bound': 99.9,
'upper_bound': 100.0,
}),
'thermostats': dict({
'primary': list([
'b59bcebaf94b499ea7d46e4a66fb62d8',
]),
'secondary': list([
'b310b72a0e354bfab43089919b9a88bf',
]),
}),
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A07',
}),
'cd0ddb54ef694e11ac18ed1cbce5dbbd': dict({
'available': True,
@ -347,7 +498,7 @@
'binary_sensors': dict({
'low_battery': False,
}),
'dev_class': 'thermo_sensor',
'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1',
'location': '82fa13f017d240daa0d0ea1775420f24',
@ -371,20 +522,10 @@
'zigbee_mac_address': 'ABCD012345670A10',
}),
'df4a4a8169904cdb9c03d61a21f42140': dict({
'active_preset': 'away',
'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({
'low_battery': False,
}),
'climate_mode': 'heat',
'dev_class': 'zone_thermostat',
'firmware': '2016-10-27T02:00:00+02:00',
'hardware': '255',
@ -392,14 +533,6 @@
'model': 'Lisa',
'model_id': '158-01',
'name': 'Zone Lisa Bios',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'off',
'sensors': dict({
'battery': 67,
'setpoint': 13.0,
@ -411,22 +544,14 @@
'setpoint': 0.0,
'upper_bound': 2.0,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 13.0,
'upper_bound': 99.9,
}),
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A06',
}),
'e7693eb9582644e5b865dba8d4447cf1': dict({
'active_preset': 'no_frost',
'available': True,
'binary_sensors': dict({
'low_battery': False,
}),
'climate_mode': 'heat',
'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1',
@ -434,13 +559,6 @@
'model': 'Tom/Floor',
'model_id': '106-03',
'name': 'CV Kraan Garage',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'sensors': dict({
'battery': 68,
'setpoint': 5.5,
@ -454,45 +572,21 @@
'setpoint': 0.0,
'upper_bound': 2.0,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 5.5,
'upper_bound': 100.0,
}),
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A11',
}),
'f1fee6043d3642a9b0a65297455f008e': dict({
'active_preset': 'away',
'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({
'low_battery': False,
}),
'climate_mode': 'auto',
'dev_class': 'zone_thermostat',
'dev_class': 'thermostatic_radiator_valve',
'firmware': '2016-10-27T02:00:00+02:00',
'hardware': '255',
'location': '08963fec7c53423ca5680aa4cb502c63',
'model': 'Lisa',
'model_id': '158-01',
'name': 'Zone Thermostat Badkamer',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'Badkamer Schema',
'name': 'Thermostatic Radiator Badkamer 2',
'sensors': dict({
'battery': 92,
'setpoint': 14.0,
@ -504,12 +598,6 @@
'setpoint': 0.0,
'upper_bound': 2.0,
}),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 14.0,
'upper_bound': 99.9,
}),
'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A08',
}),
@ -537,7 +625,7 @@
'cooling_present': False,
'gateway_id': 'fe799307f1624099878210aa0b9f1475',
'heater_id': '90986d591dcd426cae3ec3e8111ff730',
'item_count': 340,
'item_count': 364,
'notifications': dict({
'af82e4ccf9c548528166d38e560662a4': dict({
'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.",

View File

@ -28,7 +28,7 @@ async def test_adam_climate_entity_attributes(
hass: HomeAssistant, mock_smile_adam: MagicMock, init_integration: MockConfigEntry
) -> None:
"""Test creation of adam climate device environment."""
state = hass.states.get("climate.zone_lisa_wk")
state = hass.states.get("climate.woonkamer")
assert state
assert state.state == HVACMode.AUTO
assert state.attributes["hvac_modes"] == [HVACMode.AUTO, HVACMode.HEAT]
@ -46,7 +46,7 @@ async def test_adam_climate_entity_attributes(
assert state.attributes["max_temp"] == 35.0
assert state.attributes["target_temp_step"] == 0.1
state = hass.states.get("climate.zone_thermostat_jessie")
state = hass.states.get("climate.jessie")
assert state
assert state.state == HVACMode.AUTO
assert state.attributes["hvac_modes"] == [HVACMode.AUTO, HVACMode.HEAT]
@ -68,7 +68,7 @@ async def test_adam_2_climate_entity_attributes(
hass: HomeAssistant, mock_smile_adam_2: MagicMock, init_integration: MockConfigEntry
) -> None:
"""Test creation of adam climate device environment."""
state = hass.states.get("climate.anna")
state = hass.states.get("climate.living_room")
assert state
assert state.state == HVACMode.HEAT
assert state.attributes["hvac_action"] == "preheating"
@ -78,7 +78,7 @@ async def test_adam_2_climate_entity_attributes(
HVACMode.HEAT,
]
state = hass.states.get("climate.lisa_badkamer")
state = hass.states.get("climate.bathroom")
assert state
assert state.state == HVACMode.AUTO
assert state.attributes["hvac_action"] == "idle"
@ -96,7 +96,7 @@ async def test_adam_3_climate_entity_attributes(
freezer: FrozenDateTimeFactory,
) -> None:
"""Test creation of adam climate device environment."""
state = hass.states.get("climate.anna")
state = hass.states.get("climate.living_room")
assert state
assert state.state == HVACMode.COOL
assert state.attributes["hvac_action"] == "cooling"
@ -109,7 +109,7 @@ async def test_adam_3_climate_entity_attributes(
data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = (
"heating"
)
data.devices["ad4838d7d35c4d6ea796ee12ae5aedf8"]["control_state"] = "heating"
data.devices["f2bf9048bef64cc5b6d5110154e33c81"]["control_state"] = "heating"
data.devices["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"][
"cooling_state"
] = False
@ -121,7 +121,7 @@ async def test_adam_3_climate_entity_attributes(
async_fire_time_changed(hass)
await hass.async_block_till_done()
state = hass.states.get("climate.anna")
state = hass.states.get("climate.living_room")
assert state
assert state.state == HVACMode.HEAT
assert state.attributes["hvac_action"] == "heating"
@ -135,7 +135,7 @@ async def test_adam_3_climate_entity_attributes(
data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = (
"cooling"
)
data.devices["ad4838d7d35c4d6ea796ee12ae5aedf8"]["control_state"] = "cooling"
data.devices["f2bf9048bef64cc5b6d5110154e33c81"]["control_state"] = "cooling"
data.devices["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"][
"cooling_state"
] = True
@ -147,7 +147,7 @@ async def test_adam_3_climate_entity_attributes(
async_fire_time_changed(hass)
await hass.async_block_till_done()
state = hass.states.get("climate.anna")
state = hass.states.get("climate.living_room")
assert state
assert state.state == HVACMode.COOL
assert state.attributes["hvac_action"] == "cooling"
@ -168,7 +168,7 @@ async def test_adam_climate_adjust_negative_testing(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{"entity_id": "climate.zone_lisa_wk", "temperature": 25},
{"entity_id": "climate.woonkamer", "temperature": 25},
blocking=True,
)
@ -180,7 +180,7 @@ async def test_adam_climate_entity_climate_changes(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{"entity_id": "climate.zone_lisa_wk", "temperature": 25},
{"entity_id": "climate.woonkamer", "temperature": 25},
blocking=True,
)
assert mock_smile_adam.set_temperature.call_count == 1
@ -192,7 +192,7 @@ async def test_adam_climate_entity_climate_changes(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{
"entity_id": "climate.zone_lisa_wk",
"entity_id": "climate.woonkamer",
"hvac_mode": "heat",
"temperature": 25,
},
@ -207,14 +207,14 @@ async def test_adam_climate_entity_climate_changes(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{"entity_id": "climate.zone_lisa_wk", "temperature": 150},
{"entity_id": "climate.woonkamer", "temperature": 150},
blocking=True,
)
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_PRESET_MODE,
{"entity_id": "climate.zone_lisa_wk", "preset_mode": "away"},
{"entity_id": "climate.woonkamer", "preset_mode": "away"},
blocking=True,
)
assert mock_smile_adam.set_preset.call_count == 1
@ -225,7 +225,7 @@ async def test_adam_climate_entity_climate_changes(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE,
{"entity_id": "climate.zone_lisa_wk", "hvac_mode": "heat"},
{"entity_id": "climate.woonkamer", "hvac_mode": "heat"},
blocking=True,
)
assert mock_smile_adam.set_schedule_state.call_count == 2
@ -238,7 +238,7 @@ async def test_adam_climate_entity_climate_changes(
CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE,
{
"entity_id": "climate.zone_thermostat_jessie",
"entity_id": "climate.jessie",
"hvac_mode": "dry",
},
blocking=True,

View File

@ -34,17 +34,18 @@ SECONDARY_ID = (
TOM = {
"01234567890abcdefghijklmnopqrstu": {
"available": True,
"dev_class": "thermo_sensor",
"dev_class": "thermostatic_radiator_valve",
"firmware": "2020-11-04T01:00:00+01:00",
"hardware": "1",
"location": "f871b8c4d63549319221e294e4f88074",
"model": "Tom/Floor",
"name": "Tom Zolder",
"name": "Tom Badkamer 2",
"binary_sensors": {
"low_battery": False,
},
"sensors": {
"battery": 99,
"setpoint": 18.0,
"temperature": 18.6,
"temperature_difference": 2.3,
"valve_position": 0.0,
@ -246,7 +247,7 @@ async def test_update_device(
entity_registry, mock_config_entry.entry_id
)
)
== 31
== 38
)
assert (
len(
@ -254,11 +255,19 @@ async def test_update_device(
device_registry, mock_config_entry.entry_id
)
)
== 6
== 8
)
# Add a 2nd Tom/Floor
data.devices.update(TOM)
data.devices["f871b8c4d63549319221e294e4f88074"]["thermostats"].update(
{
"secondary": [
"01234567890abcdefghijklmnopqrstu",
"1772a4ea304041adb83f357b751341ff",
]
}
)
with patch(HA_PLUGWISE_SMILE_ASYNC_UPDATE, return_value=data):
freezer.tick(timedelta(minutes=1))
async_fire_time_changed(hass)
@ -270,7 +279,7 @@ async def test_update_device(
entity_registry, mock_config_entry.entry_id
)
)
== 37
== 45
)
assert (
len(
@ -278,7 +287,7 @@ async def test_update_device(
device_registry, mock_config_entry.entry_id
)
)
== 7
== 9
)
item_list: list[str] = []
for device_entry in list(device_registry.devices.values()):
@ -286,6 +295,9 @@ async def test_update_device(
assert "01234567890abcdefghijklmnopqrstu" in item_list
# Remove the existing Tom/Floor
data.devices["f871b8c4d63549319221e294e4f88074"]["thermostats"].update(
{"secondary": ["01234567890abcdefghijklmnopqrstu"]}
)
data.devices.pop("1772a4ea304041adb83f357b751341ff")
with patch(HA_PLUGWISE_SMILE_ASYNC_UPDATE, return_value=data):
freezer.tick(timedelta(minutes=1))
@ -298,7 +310,7 @@ async def test_update_device(
entity_registry, mock_config_entry.entry_id
)
)
== 31
== 38
)
assert (
len(
@ -306,7 +318,7 @@ async def test_update_device(
device_registry, mock_config_entry.entry_id
)
)
== 6
== 8
)
item_list: list[str] = []
for device_entry in list(device_registry.devices.values()):

View File

@ -18,7 +18,7 @@ async def test_adam_select_entities(
) -> None:
"""Test a thermostat Select."""
state = hass.states.get("select.zone_lisa_wk_thermostat_schedule")
state = hass.states.get("select.woonkamer_thermostat_schedule")
assert state
assert state.state == "GF7 Woonkamer"
@ -32,7 +32,7 @@ async def test_adam_change_select_entity(
SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
{
ATTR_ENTITY_ID: "select.zone_lisa_wk_thermostat_schedule",
ATTR_ENTITY_ID: "select.woonkamer_thermostat_schedule",
ATTR_OPTION: "Badkamer Schema",
},
blocking=True,