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 # Migrating opentherm_outdoor_temperature
# to opentherm_outdoor_air_temperature sensor # to opentherm_outdoor_air_temperature sensor
for device_id, device in coordinator.data.devices.items(): for device_id, device in coordinator.data.devices.items():
if device.get("dev_class") != "heater_central": if device["dev_class"] != "heater_central":
continue continue
old_unique_id = f"{device_id}-outdoor_temperature" old_unique_id = f"{device_id}-outdoor_temperature"

View File

@ -39,11 +39,19 @@ async def async_setup_entry(
if not coordinator.new_devices: if not coordinator.new_devices:
return return
async_add_entities( if coordinator.data.gateway["smile_name"] == "Adam":
PlugwiseClimateEntity(coordinator, device_id) async_add_entities(
for device_id in coordinator.new_devices PlugwiseClimateEntity(coordinator, device_id)
if coordinator.data.devices[device_id]["dev_class"] in MASTER_THERMOSTATS 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() _add_entities()
entry.async_on_unload(coordinator.async_add_listener(_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) super().__init__(coordinator, device_id)
self._attr_extra_state_attributes = {} self._attr_extra_state_attributes = {}
self._attr_unique_id = f"{device_id}-climate" 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 self.cdr_gateway = coordinator.data.gateway
gateway_id: str = coordinator.data.gateway["gateway_id"] gateway_id: str = coordinator.data.gateway["gateway_id"]
self.gateway_data = coordinator.data.devices[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): if mode := kwargs.get(ATTR_HVAC_MODE):
await self.async_set_hvac_mode(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 @plugwise_command
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: 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) await self.coordinator.api.set_regulation_mode(hvac_mode)
else: else:
await self.coordinator.api.set_schedule_state( await self.coordinator.api.set_schedule_state(
self.device["location"], self._location,
"on" if hvac_mode == HVACMode.AUTO else "off", "on" if hvac_mode == HVACMode.AUTO else "off",
) )
if self.hvac_mode == HVACMode.OFF: if self.hvac_mode == HVACMode.OFF:
@ -246,4 +259,4 @@ class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
@plugwise_command @plugwise_command
async def async_set_preset_mode(self, preset_mode: str) -> None: async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Set the preset mode.""" """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() version = await self.api.connect()
self._connected = isinstance(version, Version) self._connected = isinstance(version, Version)
if self._connected: if self._connected:
self.api.get_all_devices() self.api.get_all_gateway_entities()
async def _async_update_data(self) -> PlugwiseData: async def _async_update_data(self) -> PlugwiseData:
"""Fetch data from Plugwise.""" """Fetch data from Plugwise."""
data = PlugwiseData({}, {}) data = PlugwiseData(devices={}, gateway={})
try: try:
if not self._connected: if not self._connected:
await self._connect() await self._connect()

View File

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

View File

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

View File

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

View File

@ -91,12 +91,12 @@ class PlugwiseNumberEntity(PlugwiseEntity, NumberEntity):
) -> None: ) -> None:
"""Initiate Plugwise Number.""" """Initiate Plugwise Number."""
super().__init__(coordinator, device_id) 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_mode = NumberMode.BOX
self._attr_native_max_value = self.device[description.key]["upper_bound"] self._attr_native_max_value = self.device[description.key]["upper_bound"]
self._attr_native_min_value = self.device[description.key]["lower_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"] native_step = self.device[description.key]["resolution"]
if description.key != "temperature_offset": 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 homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import PlugwiseConfigEntry from . import PlugwiseConfigEntry
from .const import LOCATION, SelectOptionsType, SelectType from .const import SelectOptionsType, SelectType
from .coordinator import PlugwiseDataUpdateCoordinator from .coordinator import PlugwiseDataUpdateCoordinator
from .entity import PlugwiseEntity from .entity import PlugwiseEntity
from .util import plugwise_command from .util import plugwise_command
@ -89,8 +89,12 @@ class PlugwiseSelectEntity(PlugwiseEntity, SelectEntity):
) -> None: ) -> None:
"""Initialise the selector.""" """Initialise the selector."""
super().__init__(coordinator, device_id) super().__init__(coordinator, device_id)
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.entity_description = entity_description
self._location = device_id
if (location := self.device.get("location")) is not None:
self._location = location
@property @property
def current_option(self) -> str: def current_option(self) -> str:
@ -106,8 +110,8 @@ class PlugwiseSelectEntity(PlugwiseEntity, SelectEntity):
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.
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( 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: ) -> None:
"""Initialise the sensor.""" """Initialise the sensor."""
super().__init__(coordinator, device_id) super().__init__(coordinator, device_id)
self.entity_description = description
self._attr_unique_id = f"{device_id}-{description.key}" self._attr_unique_id = f"{device_id}-{description.key}"
self.entity_description = description
@property @property
def native_value(self) -> int | float: def native_value(self) -> int | float:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -23,6 +23,90 @@
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A15', '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({ '21f2b542c49845e6bb416884c55778d6': dict({
'available': True, 'available': True,
'dev_class': 'game_console_plug', 'dev_class': 'game_console_plug',
@ -44,6 +128,37 @@
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A12', '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({ '4a810418d5394b3f82727340b91ba740': dict({
'available': True, 'available': True,
'dev_class': 'router_plug', 'dev_class': 'router_plug',
@ -91,13 +206,13 @@
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'dev_class': 'thermo_sensor', 'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00', 'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1', 'hardware': '1',
'location': '08963fec7c53423ca5680aa4cb502c63', 'location': '08963fec7c53423ca5680aa4cb502c63',
'model': 'Tom/Floor', 'model': 'Tom/Floor',
'model_id': '106-03', 'model_id': '106-03',
'name': 'Thermostatic Radiator Badkamer', 'name': 'Thermostatic Radiator Badkamer 1',
'sensors': dict({ 'sensors': dict({
'battery': 51, 'battery': 51,
'setpoint': 14.0, 'setpoint': 14.0,
@ -115,20 +230,10 @@
'zigbee_mac_address': 'ABCD012345670A17', 'zigbee_mac_address': 'ABCD012345670A17',
}), }),
'6a3bf693d05e48e0b460c815a4fdd09d': dict({ '6a3bf693d05e48e0b460c815a4fdd09d': dict({
'active_preset': 'asleep',
'available': True, 'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'climate_mode': 'auto',
'dev_class': 'zone_thermostat', 'dev_class': 'zone_thermostat',
'firmware': '2016-10-27T02:00:00+02:00', 'firmware': '2016-10-27T02:00:00+02:00',
'hardware': '255', 'hardware': '255',
@ -136,14 +241,6 @@
'model': 'Lisa', 'model': 'Lisa',
'model_id': '158-01', 'model_id': '158-01',
'name': 'Zone Thermostat Jessie', 'name': 'Zone Thermostat Jessie',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'CV Jessie',
'sensors': dict({ 'sensors': dict({
'battery': 37, 'battery': 37,
'setpoint': 15.0, 'setpoint': 15.0,
@ -155,12 +252,6 @@
'setpoint': 0.0, 'setpoint': 0.0,
'upper_bound': 2.0, 'upper_bound': 2.0,
}), }),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 15.0,
'upper_bound': 99.9,
}),
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A03', 'zigbee_mac_address': 'ABCD012345670A03',
}), }),
@ -184,6 +275,47 @@
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A05', '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({ '90986d591dcd426cae3ec3e8111ff730': dict({
'binary_sensors': dict({ 'binary_sensors': dict({
'heating_state': True, 'heating_state': True,
@ -224,7 +356,7 @@
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'dev_class': 'thermo_sensor', 'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00', 'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1', 'hardware': '1',
'location': '12493538af164a409c6a1c79e38afe1c', 'location': '12493538af164a409c6a1c79e38afe1c',
@ -249,7 +381,7 @@
}), }),
'b310b72a0e354bfab43089919b9a88bf': dict({ 'b310b72a0e354bfab43089919b9a88bf': dict({
'available': True, 'available': True,
'dev_class': 'thermo_sensor', 'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00', 'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1', 'hardware': '1',
'location': 'c50f167537524366a5af7aa3942feb1e', 'location': 'c50f167537524366a5af7aa3942feb1e',
@ -272,20 +404,10 @@
'zigbee_mac_address': 'ABCD012345670A02', 'zigbee_mac_address': 'ABCD012345670A02',
}), }),
'b59bcebaf94b499ea7d46e4a66fb62d8': dict({ 'b59bcebaf94b499ea7d46e4a66fb62d8': dict({
'active_preset': 'home',
'available': True, 'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'climate_mode': 'auto',
'dev_class': 'zone_thermostat', 'dev_class': 'zone_thermostat',
'firmware': '2016-08-02T02:00:00+02:00', 'firmware': '2016-08-02T02:00:00+02:00',
'hardware': '255', 'hardware': '255',
@ -293,14 +415,6 @@
'model': 'Lisa', 'model': 'Lisa',
'model_id': '158-01', 'model_id': '158-01',
'name': 'Zone Lisa WK', 'name': 'Zone Lisa WK',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'GF7 Woonkamer',
'sensors': dict({ 'sensors': dict({
'battery': 34, 'battery': 34,
'setpoint': 21.5, 'setpoint': 21.5,
@ -312,14 +426,51 @@
'setpoint': 0.0, 'setpoint': 0.0,
'upper_bound': 2.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({ 'thermostat': dict({
'lower_bound': 0.0, 'lower_bound': 0.0,
'resolution': 0.01, 'resolution': 0.01,
'setpoint': 21.5, 'setpoint': 21.5,
'upper_bound': 99.9, 'upper_bound': 100.0,
}),
'thermostats': dict({
'primary': list([
'b59bcebaf94b499ea7d46e4a66fb62d8',
]),
'secondary': list([
'b310b72a0e354bfab43089919b9a88bf',
]),
}), }),
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A07',
}), }),
'cd0ddb54ef694e11ac18ed1cbce5dbbd': dict({ 'cd0ddb54ef694e11ac18ed1cbce5dbbd': dict({
'available': True, 'available': True,
@ -347,7 +498,7 @@
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'dev_class': 'thermo_sensor', 'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00', 'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1', 'hardware': '1',
'location': '82fa13f017d240daa0d0ea1775420f24', 'location': '82fa13f017d240daa0d0ea1775420f24',
@ -371,20 +522,10 @@
'zigbee_mac_address': 'ABCD012345670A10', 'zigbee_mac_address': 'ABCD012345670A10',
}), }),
'df4a4a8169904cdb9c03d61a21f42140': dict({ 'df4a4a8169904cdb9c03d61a21f42140': dict({
'active_preset': 'away',
'available': True, 'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'climate_mode': 'heat',
'dev_class': 'zone_thermostat', 'dev_class': 'zone_thermostat',
'firmware': '2016-10-27T02:00:00+02:00', 'firmware': '2016-10-27T02:00:00+02:00',
'hardware': '255', 'hardware': '255',
@ -392,14 +533,6 @@
'model': 'Lisa', 'model': 'Lisa',
'model_id': '158-01', 'model_id': '158-01',
'name': 'Zone Lisa Bios', 'name': 'Zone Lisa Bios',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'off',
'sensors': dict({ 'sensors': dict({
'battery': 67, 'battery': 67,
'setpoint': 13.0, 'setpoint': 13.0,
@ -411,22 +544,14 @@
'setpoint': 0.0, 'setpoint': 0.0,
'upper_bound': 2.0, 'upper_bound': 2.0,
}), }),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 13.0,
'upper_bound': 99.9,
}),
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A06', 'zigbee_mac_address': 'ABCD012345670A06',
}), }),
'e7693eb9582644e5b865dba8d4447cf1': dict({ 'e7693eb9582644e5b865dba8d4447cf1': dict({
'active_preset': 'no_frost',
'available': True, 'available': True,
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'climate_mode': 'heat',
'dev_class': 'thermostatic_radiator_valve', 'dev_class': 'thermostatic_radiator_valve',
'firmware': '2019-03-27T01:00:00+01:00', 'firmware': '2019-03-27T01:00:00+01:00',
'hardware': '1', 'hardware': '1',
@ -434,13 +559,6 @@
'model': 'Tom/Floor', 'model': 'Tom/Floor',
'model_id': '106-03', 'model_id': '106-03',
'name': 'CV Kraan Garage', 'name': 'CV Kraan Garage',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'sensors': dict({ 'sensors': dict({
'battery': 68, 'battery': 68,
'setpoint': 5.5, 'setpoint': 5.5,
@ -454,45 +572,21 @@
'setpoint': 0.0, 'setpoint': 0.0,
'upper_bound': 2.0, 'upper_bound': 2.0,
}), }),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 5.5,
'upper_bound': 100.0,
}),
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A11', 'zigbee_mac_address': 'ABCD012345670A11',
}), }),
'f1fee6043d3642a9b0a65297455f008e': dict({ 'f1fee6043d3642a9b0a65297455f008e': dict({
'active_preset': 'away',
'available': True, 'available': True,
'available_schedules': list([
'CV Roan',
'Bios Schema met Film Avond',
'GF7 Woonkamer',
'Badkamer Schema',
'CV Jessie',
'off',
]),
'binary_sensors': dict({ 'binary_sensors': dict({
'low_battery': False, 'low_battery': False,
}), }),
'climate_mode': 'auto', 'dev_class': 'thermostatic_radiator_valve',
'dev_class': 'zone_thermostat',
'firmware': '2016-10-27T02:00:00+02:00', 'firmware': '2016-10-27T02:00:00+02:00',
'hardware': '255', 'hardware': '255',
'location': '08963fec7c53423ca5680aa4cb502c63', 'location': '08963fec7c53423ca5680aa4cb502c63',
'model': 'Lisa', 'model': 'Lisa',
'model_id': '158-01', 'model_id': '158-01',
'name': 'Zone Thermostat Badkamer', 'name': 'Thermostatic Radiator Badkamer 2',
'preset_modes': list([
'home',
'asleep',
'away',
'vacation',
'no_frost',
]),
'select_schedule': 'Badkamer Schema',
'sensors': dict({ 'sensors': dict({
'battery': 92, 'battery': 92,
'setpoint': 14.0, 'setpoint': 14.0,
@ -504,12 +598,6 @@
'setpoint': 0.0, 'setpoint': 0.0,
'upper_bound': 2.0, 'upper_bound': 2.0,
}), }),
'thermostat': dict({
'lower_bound': 0.0,
'resolution': 0.01,
'setpoint': 14.0,
'upper_bound': 99.9,
}),
'vendor': 'Plugwise', 'vendor': 'Plugwise',
'zigbee_mac_address': 'ABCD012345670A08', 'zigbee_mac_address': 'ABCD012345670A08',
}), }),
@ -537,7 +625,7 @@
'cooling_present': False, 'cooling_present': False,
'gateway_id': 'fe799307f1624099878210aa0b9f1475', 'gateway_id': 'fe799307f1624099878210aa0b9f1475',
'heater_id': '90986d591dcd426cae3ec3e8111ff730', 'heater_id': '90986d591dcd426cae3ec3e8111ff730',
'item_count': 340, 'item_count': 364,
'notifications': dict({ 'notifications': dict({
'af82e4ccf9c548528166d38e560662a4': 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.", '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 hass: HomeAssistant, mock_smile_adam: MagicMock, init_integration: MockConfigEntry
) -> None: ) -> None:
"""Test creation of adam climate device environment.""" """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
assert state.state == HVACMode.AUTO assert state.state == HVACMode.AUTO
assert state.attributes["hvac_modes"] == [HVACMode.AUTO, HVACMode.HEAT] 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["max_temp"] == 35.0
assert state.attributes["target_temp_step"] == 0.1 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
assert state.state == HVACMode.AUTO assert state.state == HVACMode.AUTO
assert state.attributes["hvac_modes"] == [HVACMode.AUTO, HVACMode.HEAT] 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 hass: HomeAssistant, mock_smile_adam_2: MagicMock, init_integration: MockConfigEntry
) -> None: ) -> None:
"""Test creation of adam climate device environment.""" """Test creation of adam climate device environment."""
state = hass.states.get("climate.anna") state = hass.states.get("climate.living_room")
assert state assert state
assert state.state == HVACMode.HEAT assert state.state == HVACMode.HEAT
assert state.attributes["hvac_action"] == "preheating" assert state.attributes["hvac_action"] == "preheating"
@ -78,7 +78,7 @@ async def test_adam_2_climate_entity_attributes(
HVACMode.HEAT, HVACMode.HEAT,
] ]
state = hass.states.get("climate.lisa_badkamer") state = hass.states.get("climate.bathroom")
assert state assert state
assert state.state == HVACMode.AUTO assert state.state == HVACMode.AUTO
assert state.attributes["hvac_action"] == "idle" assert state.attributes["hvac_action"] == "idle"
@ -96,7 +96,7 @@ async def test_adam_3_climate_entity_attributes(
freezer: FrozenDateTimeFactory, freezer: FrozenDateTimeFactory,
) -> None: ) -> None:
"""Test creation of adam climate device environment.""" """Test creation of adam climate device environment."""
state = hass.states.get("climate.anna") state = hass.states.get("climate.living_room")
assert state assert state
assert state.state == HVACMode.COOL assert state.state == HVACMode.COOL
assert state.attributes["hvac_action"] == "cooling" assert state.attributes["hvac_action"] == "cooling"
@ -109,7 +109,7 @@ async def test_adam_3_climate_entity_attributes(
data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = ( data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = (
"heating" "heating"
) )
data.devices["ad4838d7d35c4d6ea796ee12ae5aedf8"]["control_state"] = "heating" data.devices["f2bf9048bef64cc5b6d5110154e33c81"]["control_state"] = "heating"
data.devices["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"][ data.devices["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"][
"cooling_state" "cooling_state"
] = False ] = False
@ -121,7 +121,7 @@ async def test_adam_3_climate_entity_attributes(
async_fire_time_changed(hass) async_fire_time_changed(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get("climate.anna") state = hass.states.get("climate.living_room")
assert state assert state
assert state.state == HVACMode.HEAT assert state.state == HVACMode.HEAT
assert state.attributes["hvac_action"] == "heating" assert state.attributes["hvac_action"] == "heating"
@ -135,7 +135,7 @@ async def test_adam_3_climate_entity_attributes(
data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = ( data.devices["da224107914542988a88561b4452b0f6"]["select_regulation_mode"] = (
"cooling" "cooling"
) )
data.devices["ad4838d7d35c4d6ea796ee12ae5aedf8"]["control_state"] = "cooling" data.devices["f2bf9048bef64cc5b6d5110154e33c81"]["control_state"] = "cooling"
data.devices["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"][ data.devices["056ee145a816487eaa69243c3280f8bf"]["binary_sensors"][
"cooling_state" "cooling_state"
] = True ] = True
@ -147,7 +147,7 @@ async def test_adam_3_climate_entity_attributes(
async_fire_time_changed(hass) async_fire_time_changed(hass)
await hass.async_block_till_done() await hass.async_block_till_done()
state = hass.states.get("climate.anna") state = hass.states.get("climate.living_room")
assert state assert state
assert state.state == HVACMode.COOL assert state.state == HVACMode.COOL
assert state.attributes["hvac_action"] == "cooling" assert state.attributes["hvac_action"] == "cooling"
@ -168,7 +168,7 @@ async def test_adam_climate_adjust_negative_testing(
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE, SERVICE_SET_TEMPERATURE,
{"entity_id": "climate.zone_lisa_wk", "temperature": 25}, {"entity_id": "climate.woonkamer", "temperature": 25},
blocking=True, blocking=True,
) )
@ -180,7 +180,7 @@ async def test_adam_climate_entity_climate_changes(
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE, SERVICE_SET_TEMPERATURE,
{"entity_id": "climate.zone_lisa_wk", "temperature": 25}, {"entity_id": "climate.woonkamer", "temperature": 25},
blocking=True, blocking=True,
) )
assert mock_smile_adam.set_temperature.call_count == 1 assert mock_smile_adam.set_temperature.call_count == 1
@ -192,7 +192,7 @@ async def test_adam_climate_entity_climate_changes(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE, SERVICE_SET_TEMPERATURE,
{ {
"entity_id": "climate.zone_lisa_wk", "entity_id": "climate.woonkamer",
"hvac_mode": "heat", "hvac_mode": "heat",
"temperature": 25, "temperature": 25,
}, },
@ -207,14 +207,14 @@ async def test_adam_climate_entity_climate_changes(
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE, SERVICE_SET_TEMPERATURE,
{"entity_id": "climate.zone_lisa_wk", "temperature": 150}, {"entity_id": "climate.woonkamer", "temperature": 150},
blocking=True, blocking=True,
) )
await hass.services.async_call( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_PRESET_MODE, SERVICE_SET_PRESET_MODE,
{"entity_id": "climate.zone_lisa_wk", "preset_mode": "away"}, {"entity_id": "climate.woonkamer", "preset_mode": "away"},
blocking=True, blocking=True,
) )
assert mock_smile_adam.set_preset.call_count == 1 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( await hass.services.async_call(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{"entity_id": "climate.zone_lisa_wk", "hvac_mode": "heat"}, {"entity_id": "climate.woonkamer", "hvac_mode": "heat"},
blocking=True, blocking=True,
) )
assert mock_smile_adam.set_schedule_state.call_count == 2 assert mock_smile_adam.set_schedule_state.call_count == 2
@ -238,7 +238,7 @@ async def test_adam_climate_entity_climate_changes(
CLIMATE_DOMAIN, CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE, SERVICE_SET_HVAC_MODE,
{ {
"entity_id": "climate.zone_thermostat_jessie", "entity_id": "climate.jessie",
"hvac_mode": "dry", "hvac_mode": "dry",
}, },
blocking=True, blocking=True,

View File

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

View File

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