From 1913230b98674eaad52da061192f2a82f725f18a Mon Sep 17 00:00:00 2001 From: Roguyt Date: Fri, 30 May 2025 20:11:48 +0200 Subject: [PATCH 1/4] add floor heating + room control --- PyViCare/PyViCare.py | 2 +- PyViCare/PyViCareDevice.py | 11 + PyViCare/PyViCareDeviceConfig.py | 15 ++ PyViCare/PyViCareFloorHeating.py | 13 ++ .../PyViCareFloorHeatingCircuitChannel.py | 13 ++ PyViCare/PyViCareRoomControl.py | 203 ++++++++++++++++++ 6 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 PyViCare/PyViCareFloorHeating.py create mode 100644 PyViCare/PyViCareFloorHeatingCircuitChannel.py create mode 100644 PyViCare/PyViCareRoomControl.py diff --git a/PyViCare/PyViCare.py b/PyViCare/PyViCare.py index c4191f89..dc03efd7 100644 --- a/PyViCare/PyViCare.py +++ b/PyViCare/PyViCare.py @@ -52,7 +52,7 @@ def __extract_devices(self): for installation in self.installations: for gateway in installation.gateways: for device in gateway.devices: - if device.deviceType not in ["heating", "zigbee", "vitoconnect", "electricityStorage", "tcu", "ventilation"]: + if device.deviceType not in ["heating", "zigbee", "vitoconnect", "electricityStorage", "tcu", "ventilation", "roomControl"]: continue # we are only interested in heating, photovoltaic, electricityStorage, and ventilation devices accessor = ViCareDeviceAccessor( diff --git a/PyViCare/PyViCareDevice.py b/PyViCare/PyViCareDevice.py index e9085a9e..09e46f1b 100644 --- a/PyViCare/PyViCareDevice.py +++ b/PyViCare/PyViCareDevice.py @@ -42,3 +42,14 @@ def _isTypeDevice(self, deviceType: str): return self.service.getProperty(deviceType)["isEnabled"] and self.service.getProperty(deviceType)["properties"]["active"]["value"] except PyViCareNotSupportedFeatureError: return False + +class DeviceWithComponent: + + def __init__(self, device: Device, component: str) -> None: + self.service = device.service + self.component = component + self.device = device + + @property + def id(self) -> str: + return self.component diff --git a/PyViCare/PyViCareDeviceConfig.py b/PyViCare/PyViCareDeviceConfig.py index ae1ead22..7208a58e 100644 --- a/PyViCare/PyViCareDeviceConfig.py +++ b/PyViCare/PyViCareDeviceConfig.py @@ -2,6 +2,9 @@ import logging import re +from PyViCare.PyViCareFloorHeating import FloorHeating +from PyViCare.PyViCareFloorHeatingCircuitChannel import FloorHeatingCircuitChannel +from PyViCare.PyViCareRoomControl import RoomControl from PyViCare.PyViCareFuelCell import FuelCell from PyViCare.PyViCareGazBoiler import GazBoiler from PyViCare.PyViCareHeatingDevice import HeatingDevice @@ -50,6 +53,15 @@ def asHybridDevice(self): def asRadiatorActuator(self): return RadiatorActuator(self.service) + def asFloorHeating(self): + return FloorHeating(self.service) + + def asFloorHeatingCircuitChannel(self): + return FloorHeatingCircuitChannel(self.service) + + def asRoomControl(self): + return RoomControl(self.service) + def asRoomSensor(self): return RoomSensor(self.service) @@ -88,6 +100,9 @@ def asAutoDetectDevice(self): (self.asVentilation, r"E3_ViAir", ["type:ventilation;central"]), (self.asVentilation, r"E3_VitoPure", ["type:ventilation;purifier"]), (self.asRadiatorActuator, r"E3_RadiatorActuator", ["type:radiator"]), + (self.asFloorHeating, r"E3_FloorHeatingCircuitDistributorBox", ["type:fhtMain"]), + (self.asFloorHeatingCircuitChannel, r"E3_FloorHeatingCircuitChannel", ["type:fhtChannel"]), + (self.asRoomControl, r"E3_RoomControl_One_525", ["type:virtual;smartRoomControl"]), (self.asRoomSensor, r"E3_RoomSensor", ["type:climateSensor"]), (self.asGateway, r"E3_TCU41_x04", ["type:gateway;TCU100"]), (self.asGateway, r"E3_TCU19_x05", ["type:gateway;TCU200"]), diff --git a/PyViCare/PyViCareFloorHeating.py b/PyViCare/PyViCareFloorHeating.py new file mode 100644 index 00000000..b85001d7 --- /dev/null +++ b/PyViCare/PyViCareFloorHeating.py @@ -0,0 +1,13 @@ +from PyViCare.PyViCareDevice import Device +from PyViCare.PyViCareUtils import handleNotSupported + + +class FloorHeating(Device): + + @handleNotSupported + def getSerial(self): + return self.service.getProperty("device.name")["deviceId"] + + @handleNotSupported + def getName(self): + return self.service.getProperty("device.name")["properties"]["name"]["value"] diff --git a/PyViCare/PyViCareFloorHeatingCircuitChannel.py b/PyViCare/PyViCareFloorHeatingCircuitChannel.py new file mode 100644 index 00000000..be365510 --- /dev/null +++ b/PyViCare/PyViCareFloorHeatingCircuitChannel.py @@ -0,0 +1,13 @@ +from PyViCare.PyViCareDevice import Device +from PyViCare.PyViCareUtils import handleNotSupported + + +class FloorHeatingCircuitChannel(Device): + + @handleNotSupported + def getSerial(self): + return self.service.getProperty("device.name")["deviceId"] + + @handleNotSupported + def getName(self): + return self.service.getProperty("device.name")["properties"]["name"]["value"] diff --git a/PyViCare/PyViCareRoomControl.py b/PyViCare/PyViCareRoomControl.py new file mode 100644 index 00000000..8207134d --- /dev/null +++ b/PyViCare/PyViCareRoomControl.py @@ -0,0 +1,203 @@ +from typing import Any, List + +from PyViCare.PyViCareDevice import Device, DeviceWithComponent +from PyViCare.PyViCareUtils import handleNotSupported, handleAPICommandErrors + + +class RoomControl(Device): + + @property + def rooms(self) -> List[Any]: + return list([self.getRoom(x) for x in self.getAvailableRooms()]) + + def getRoom(self, room): + return Room(self, room) + + @handleNotSupported + def getAvailableRooms(self): + return self.service.getProperty("rooms")["properties"]["enabled"]["value"] + + +class Room(DeviceWithComponent): + @property + def room(self) -> str: + return self.component + + @handleNotSupported + def getType(self): + return self.service.getProperty(f"rooms.{self.room}")["properties"]["type"]["value"] + + @handleNotSupported + def getName(self): + return self.service.getProperty(f"rooms.{self.room}")["properties"]["name"]["value"] + + @property + def actors(self) -> List[Any]: + return list([self.getActor(x) for x in self.getAvailableActors()]) + + def getActor(self, actor): + return Actor(self, actor) + + @handleNotSupported + def getAvailableActors(self): + return list(map(lambda _: _["deviceId"], + self.service.getProperty(f"rooms.{self.room}")["properties"]["actors"]["value"])) + + @handleNotSupported + def getOperatingStateLevel(self) -> str: + return str(self.service.getProperty(f"rooms.{self.room}.operating.state")["properties"]["level"]["value"]) + + @handleNotSupported + def getOperatingStateDemand(self) -> str: + return str(self.service.getProperty(f"rooms.{self.room}.operating.state")["properties"]["demand"]["value"]) + + @handleNotSupported + def getOperatingStateReason(self) -> str: + return str(self.service.getProperty(f"rooms.{self.room}.operating.state")["properties"]["reason"]["value"]) + + @handleNotSupported + def getOperatingStateModifier(self) -> str: + return str(self.service.getProperty(f"rooms.{self.room}.operating.state")["properties"]["modifier"]["value"]) + + @handleNotSupported + def getSensorTemperature(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.sensors.temperature")["properties"]["value"]["value"]) + + @handleNotSupported + def getSensorTemperatureStatus(self) -> str: + return str(self.service.getProperty(f"rooms.{self.room}.sensors.temperature")["properties"]["status"]["value"]) + + @handleNotSupported + def getSensorHumidity(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.sensors.humidity")["properties"]["value"]["value"]) + + @handleNotSupported + def getSensorHumidityStatus(self) -> str: + return str(self.service.getProperty(f"rooms.{self.room}.sensors.humidity")["properties"]["status"]["value"]) + + @handleNotSupported + def getSensorCO2(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.sensors.co2")["properties"]["value"]["value"]) + + @handleNotSupported + def getSensorCO2Status(self) -> str: + return str(self.service.getProperty(f"rooms.{self.room}.sensors.co2")["properties"]["status"]["value"]) + + @handleNotSupported + def getNormalHeatingTemperature(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.operating.programs.normalHeating")["properties"][ + "temperature"]["value"]) + + @handleNotSupported + def getNormalHeatingActive(self) -> bool: + return bool( + self.service.getProperty(f"rooms.{self.room}.operating.programs.normalHeating")["properties"]["active"][ + "value"]) + + @handleAPICommandErrors + def setNormalHeatingTemperature(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.operating.programs.normalHeating", "setTemperature", + {'targetTemperature': temperature}) + + @handleNotSupported + def getReducedHeatingTemperature(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.operating.programs.reducedHeating")["properties"][ + "temperature"]["value"]) + + @handleNotSupported + def getReducedHeatingActive(self) -> bool: + return bool( + self.service.getProperty(f"rooms.{self.room}.operating.programs.reducedHeating")["properties"]["active"][ + "value"]) + + @handleAPICommandErrors + def setReducedHeatingTemperature(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.operating.programs.reducedHeating", "setTemperature", + {'targetTemperature': temperature}) + + @handleNotSupported + def getComfortHeatingTemperature(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.operating.programs.comfortHeating")["properties"][ + "temperature"]["value"]) + + @handleNotSupported + def getComfortHeatingActive(self) -> bool: + return bool( + self.service.getProperty(f"rooms.{self.room}.operating.programs.comfortHeating")["properties"]["active"][ + "value"]) + + @handleAPICommandErrors + def setComfortHeatingTemperature(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.operating.programs.comfortHeating", "setTemperature", + {'targetTemperature': temperature}) + + @handleNotSupported + def getNormalCoolingTemperature(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.operating.programs.normalCooling")["properties"][ + "temperature"]["value"]) + + @handleNotSupported + def getNormalCoolingActive(self) -> bool: + return bool( + self.service.getProperty(f"rooms.{self.room}.operating.programs.normalCooling")["properties"]["active"][ + "value"]) + + @handleAPICommandErrors + def setNormalCoolingTemperature(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.operating.programs.normalCooling", "setTemperature", + {'targetTemperature': temperature}) + + @handleNotSupported + def getReducedCoolingTemperature(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.operating.programs.reducedCooling")["properties"][ + "temperature"]["value"]) + + @handleNotSupported + def getReducedCoolingActive(self) -> bool: + return bool( + self.service.getProperty(f"rooms.{self.room}.operating.programs.reducedCooling")["properties"]["active"][ + "value"]) + + @handleAPICommandErrors + def setReducedCoolingTemperature(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.operating.programs.reducedCooling", "setTemperature", + {'targetTemperature': temperature}) + + @handleNotSupported + def getComfortCoolingTemperature(self) -> float: + return float(self.service.getProperty(f"rooms.{self.room}.operating.programs.comfortCooling")["properties"][ + "temperature"]["value"]) + + @handleNotSupported + def getComfortCoolingActive(self) -> bool: + return bool( + self.service.getProperty(f"rooms.{self.room}.operating.programs.comfortCooling")["properties"]["active"][ + "value"]) + + @handleAPICommandErrors + def setComfortCoolingTemperature(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.operating.programs.comfortCooling", "setTemperature", + {'targetTemperature': temperature}) + + @handleNotSupported + def getSchedule(self): + properties = self.service.getProperty( + f"rooms.{self.room}.schedule")["properties"] + return { + "active": properties["active"]["value"], + "mon": properties["entries"]["value"]["mon"], + "tue": properties["entries"]["value"]["tue"], + "wed": properties["entries"]["value"]["wed"], + "thu": properties["entries"]["value"]["thu"], + "fri": properties["entries"]["value"]["fri"], + "sat": properties["entries"]["value"]["sat"], + "sun": properties["entries"]["value"]["sun"] + } + + # TODO: Set schedule + + +class Actor(DeviceWithComponent): + @property + def actor(self) -> str: + return self.component From 33e5814edf03a1bcbec6e17083d070dca9085f58 Mon Sep 17 00:00:00 2001 From: Roguyt Date: Fri, 30 May 2025 20:49:39 +0200 Subject: [PATCH 2/4] add room control manual override --- PyViCare/PyViCareRoomControl.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/PyViCare/PyViCareRoomControl.py b/PyViCare/PyViCareRoomControl.py index 8207134d..3c4b189d 100644 --- a/PyViCare/PyViCareRoomControl.py +++ b/PyViCare/PyViCareRoomControl.py @@ -196,6 +196,26 @@ def getSchedule(self): # TODO: Set schedule + @handleNotSupported + def getManualTillNextScheduleActive(self) -> bool: + return bool( + self.service.getProperty(f"rooms.{self.room}.quickmodes.manualTillNextSchedule")["properties"]["active"][ + "value"]) + + @handleAPICommandErrors + def setManualTillNextScheduleTemperature(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.quickmodes.manualTillNextSchedule", "setTemperature", + {'targetTemperature': temperature}) + + @handleAPICommandErrors + def activateManualTillNextSchedule(self, temperature: float) -> Any: + return self.service.setProperty(f"rooms.{self.room}.quickmodes.manualTillNextSchedule", "activate", + {'temperature': temperature}) + + @handleAPICommandErrors + def deactivateManualTillNextSchedule(self) -> Any: + return self.service.setProperty(f"rooms.{self.room}.quickmodes.manualTillNextSchedule", "deactivate") + class Actor(DeviceWithComponent): @property From 2f8fee6f1975d7dcb9550d93ac1a4a36f5385fa5 Mon Sep 17 00:00:00 2001 From: Roguyt Date: Fri, 30 May 2025 23:58:57 +0200 Subject: [PATCH 3/4] fix deactivateManualTillNextSchedule --- PyViCare/PyViCareRoomControl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyViCare/PyViCareRoomControl.py b/PyViCare/PyViCareRoomControl.py index 3c4b189d..4ec75c9e 100644 --- a/PyViCare/PyViCareRoomControl.py +++ b/PyViCare/PyViCareRoomControl.py @@ -214,7 +214,7 @@ def activateManualTillNextSchedule(self, temperature: float) -> Any: @handleAPICommandErrors def deactivateManualTillNextSchedule(self) -> Any: - return self.service.setProperty(f"rooms.{self.room}.quickmodes.manualTillNextSchedule", "deactivate") + return self.service.setProperty(f"rooms.{self.room}.quickmodes.manualTillNextSchedule", "deactivate", {}) class Actor(DeviceWithComponent): From f87d332fb57a8048a42195941bcb191310311e62 Mon Sep 17 00:00:00 2001 From: Roguyt Date: Sat, 31 May 2025 00:02:28 +0200 Subject: [PATCH 4/4] add tests --- tests/response/RoomControl.json | 6464 ++++++++++++++++++++++++ tests/test_PyViCareDeviceConfig.py | 18 + tests/test_RoomControl.py | 236 + tests/test_TestForMissingProperties.py | 5 +- 4 files changed, 6722 insertions(+), 1 deletion(-) create mode 100644 tests/response/RoomControl.json create mode 100644 tests/test_RoomControl.py diff --git a/tests/response/RoomControl.json b/tests/response/RoomControl.json new file mode 100644 index 00000000..bddc37e4 --- /dev/null +++ b/tests/response/RoomControl.json @@ -0,0 +1,6464 @@ +{ + "data": [ + { + "apiVersion": 1, + "commands": { + "add": { + "isExecutable": true, + "name": "add", + "params": { + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1, + "regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$" + }, + "required": true, + "type": "string" + }, + "type": { + "constraints": { + "enum": [ + "bathroom", + "bedroom", + "hallway", + "livingroom", + "kitchen", + "office", + "nursery", + "toilet", + "other" + ] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms/commands/add" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "enabled": { + "type": "array", + "value": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + } + }, + "timestamp": "2025-05-28T10:03:10.602Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms" + }, + { + "apiVersion": 1, + "commands": { + "addActor": { + "constraints": { + "enum": [ + "cs", + "fht", + "trv", + "airQualitySensor", + "remoteControllerSensor" + ] + }, + "isExecutable": true, + "name": "addActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0/commands/addActor" + }, + "moveActor": { + "isExecutable": true, + "name": "moveActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + }, + "newRoomId": { + "constraints": { + "max": 23, + "min": 0, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0/commands/moveActor" + }, + "remove": { + "isExecutable": true, + "name": "remove", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0/commands/remove" + }, + "removeActor": { + "isExecutable": true, + "name": "removeActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0/commands/removeActor" + }, + "setName": { + "isExecutable": true, + "name": "setName", + "params": { + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1, + "regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0/commands/setName" + }, + "setType": { + "isExecutable": true, + "name": "setType", + "params": { + "type": { + "constraints": { + "enum": [ + "bathroom", + "bedroom", + "hallway", + "livingroom", + "kitchen", + "office", + "nursery", + "toilet", + "other" + ] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0/commands/setType" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "actors": { + "type": "array", + "value": [ + { + "deviceId": "zigbee-5cc7c1fffea33a3b" + }, + { + "deviceId": "zigbee-5cc7c1fffea27573-1" + } + ] + }, + "name": { + "type": "string", + "value": "Living room" + }, + "type": { + "type": "string", + "value": "livingroom" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.comfortCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.comfortHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.normalCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-30T08:34:18.884Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.normalHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-30T17:20:15.011Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.reducedCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 27 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.reducedHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.0.operating.state", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "demand": { + "type": "string", + "value": "cooling" + }, + "level": { + "type": "string", + "value": "normal" + }, + "modifier": { + "type": "string", + "value": "none" + }, + "reason": { + "type": "string", + "value": "schedule" + } + }, + "timestamp": "2025-05-30T08:34:18.884Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.operating.state" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "temperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.quickmodes.manualTillNextSchedule/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.quickmodes.manualTillNextSchedule/commands/deactivate" + }, + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.quickmodes.manualTillNextSchedule/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": { + "resetSchedule": { + "isExecutable": true, + "name": "resetSchedule", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.schedule/commands/resetSchedule" + }, + "setSchedule": { + "isExecutable": true, + "name": "setSchedule", + "params": { + "newSchedule": { + "constraints": { + "defaultMode": "reduced", + "maxEntries": 4, + "modes": [ + "normal", + "comfort" + ], + "overlapAllowed": false, + "resolution": 10 + }, + "required": true, + "type": "Schedule" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.schedule/commands/setSchedule" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.schedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "entries": { + "type": "Schedule", + "value": { + "fri": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "mon": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sat": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sun": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "thu": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "tue": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "wed": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ] + } + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.0.sensors.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "notConnected" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.0.sensors.humidity", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 60 + } + }, + "timestamp": "2025-05-30T19:03:18.878Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.0.sensors.temperature", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 25.4 + } + }, + "timestamp": "2025-05-30T19:03:18.878Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.0.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.0.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": { + "addActor": { + "constraints": { + "enum": [ + "cs", + "fht", + "trv", + "airQualitySensor", + "remoteControllerSensor" + ] + }, + "isExecutable": true, + "name": "addActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1/commands/addActor" + }, + "moveActor": { + "isExecutable": true, + "name": "moveActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + }, + "newRoomId": { + "constraints": { + "max": 23, + "min": 0, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1/commands/moveActor" + }, + "remove": { + "isExecutable": true, + "name": "remove", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1/commands/remove" + }, + "removeActor": { + "isExecutable": true, + "name": "removeActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1/commands/removeActor" + }, + "setName": { + "isExecutable": true, + "name": "setName", + "params": { + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1, + "regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1/commands/setName" + }, + "setType": { + "isExecutable": true, + "name": "setType", + "params": { + "type": { + "constraints": { + "enum": [ + "bathroom", + "bedroom", + "hallway", + "livingroom", + "kitchen", + "office", + "nursery", + "toilet", + "other" + ] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1/commands/setType" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "actors": { + "type": "array", + "value": [ + { + "deviceId": "zigbee-d87a3bfffeed7821" + }, + { + "deviceId": "zigbee-5cc7c1fffea27573-3" + } + ] + }, + "name": { + "type": "string", + "value": "Office 1" + }, + "type": { + "type": "string", + "value": "office" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.comfortCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.comfortHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.normalCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-30T11:18:18.730Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.normalHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-30T17:20:15.121Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.reducedCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 27 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.reducedHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.1.operating.state", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "demand": { + "type": "string", + "value": "cooling" + }, + "level": { + "type": "string", + "value": "normal" + }, + "modifier": { + "type": "string", + "value": "none" + }, + "reason": { + "type": "string", + "value": "schedule" + } + }, + "timestamp": "2025-05-30T11:18:18.730Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.operating.state" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "temperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.quickmodes.manualTillNextSchedule/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.quickmodes.manualTillNextSchedule/commands/deactivate" + }, + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.quickmodes.manualTillNextSchedule/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": { + "resetSchedule": { + "isExecutable": true, + "name": "resetSchedule", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.schedule/commands/resetSchedule" + }, + "setSchedule": { + "isExecutable": true, + "name": "setSchedule", + "params": { + "newSchedule": { + "constraints": { + "defaultMode": "reduced", + "maxEntries": 4, + "modes": [ + "normal", + "comfort" + ], + "overlapAllowed": false, + "resolution": 10 + }, + "required": true, + "type": "Schedule" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.schedule/commands/setSchedule" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.schedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "entries": { + "type": "Schedule", + "value": { + "fri": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "mon": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sat": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sun": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "thu": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "tue": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "wed": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ] + } + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.1.sensors.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "notConnected" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.1.sensors.humidity", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 55 + } + }, + "timestamp": "2025-05-30T19:02:38.613Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.1.sensors.temperature", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 28 + } + }, + "timestamp": "2025-05-30T19:02:18.440Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.1.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.1.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.10.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.10.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.10.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.11.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.11.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.11.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.12.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.12.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.12.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.13.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.13.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.13.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.14.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.14.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.14.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.15.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.15.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.15.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.16.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.16.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.16.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.17.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.17.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.17.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.18.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.18.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.18.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.19.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.19.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.19.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": { + "addActor": { + "constraints": { + "enum": [ + "cs", + "fht", + "trv", + "airQualitySensor", + "remoteControllerSensor" + ] + }, + "isExecutable": true, + "name": "addActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2/commands/addActor" + }, + "moveActor": { + "isExecutable": true, + "name": "moveActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + }, + "newRoomId": { + "constraints": { + "max": 23, + "min": 0, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2/commands/moveActor" + }, + "remove": { + "isExecutable": true, + "name": "remove", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2/commands/remove" + }, + "removeActor": { + "isExecutable": true, + "name": "removeActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2/commands/removeActor" + }, + "setName": { + "isExecutable": true, + "name": "setName", + "params": { + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1, + "regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2/commands/setName" + }, + "setType": { + "isExecutable": true, + "name": "setType", + "params": { + "type": { + "constraints": { + "enum": [ + "bathroom", + "bedroom", + "hallway", + "livingroom", + "kitchen", + "office", + "nursery", + "toilet", + "other" + ] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2/commands/setType" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "actors": { + "type": "array", + "value": [ + { + "deviceId": "zigbee-d87a3bfffefec170" + }, + { + "deviceId": "zigbee-5cc7c1fffea27573-2" + } + ] + }, + "name": { + "type": "string", + "value": "Bedroom" + }, + "type": { + "type": "string", + "value": "bedroom" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.comfortCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.comfortHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.normalCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-30T10:49:18.938Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.normalHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-30T17:20:16.004Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.reducedCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 27 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.reducedHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.2.operating.state", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "demand": { + "type": "string", + "value": "cooling" + }, + "level": { + "type": "string", + "value": "normal" + }, + "modifier": { + "type": "string", + "value": "none" + }, + "reason": { + "type": "string", + "value": "schedule" + } + }, + "timestamp": "2025-05-30T10:49:18.938Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.operating.state" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "temperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.quickmodes.manualTillNextSchedule/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.quickmodes.manualTillNextSchedule/commands/deactivate" + }, + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.quickmodes.manualTillNextSchedule/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": { + "resetSchedule": { + "isExecutable": true, + "name": "resetSchedule", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.schedule/commands/resetSchedule" + }, + "setSchedule": { + "isExecutable": true, + "name": "setSchedule", + "params": { + "newSchedule": { + "constraints": { + "defaultMode": "reduced", + "maxEntries": 4, + "modes": [ + "normal", + "comfort" + ], + "overlapAllowed": false, + "resolution": 10 + }, + "required": true, + "type": "Schedule" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.schedule/commands/setSchedule" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.schedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "entries": { + "type": "Schedule", + "value": { + "fri": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "mon": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sat": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sun": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "thu": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "tue": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "wed": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ] + } + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.2.sensors.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "notConnected" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.2.sensors.humidity", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 60 + } + }, + "timestamp": "2025-05-30T18:09:18.848Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.2.sensors.temperature", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 26 + } + }, + "timestamp": "2025-05-30T18:43:18.657Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.2.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.2.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": { + "addActor": { + "constraints": { + "enum": [ + "cs", + "fht", + "trv", + "airQualitySensor", + "remoteControllerSensor" + ] + }, + "isExecutable": true, + "name": "addActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3/commands/addActor" + }, + "moveActor": { + "isExecutable": true, + "name": "moveActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + }, + "newRoomId": { + "constraints": { + "max": 23, + "min": 0, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3/commands/moveActor" + }, + "remove": { + "isExecutable": true, + "name": "remove", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3/commands/remove" + }, + "removeActor": { + "isExecutable": true, + "name": "removeActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3/commands/removeActor" + }, + "setName": { + "isExecutable": true, + "name": "setName", + "params": { + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1, + "regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3/commands/setName" + }, + "setType": { + "isExecutable": true, + "name": "setType", + "params": { + "type": { + "constraints": { + "enum": [ + "bathroom", + "bedroom", + "hallway", + "livingroom", + "kitchen", + "office", + "nursery", + "toilet", + "other" + ] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3/commands/setType" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "actors": { + "type": "array", + "value": [ + { + "deviceId": "zigbee-d87a3bfffe5d844a" + }, + { + "deviceId": "zigbee-5cc7c1fffea27573-4" + } + ] + }, + "name": { + "type": "string", + "value": "Storage" + }, + "type": { + "type": "string", + "value": "other" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.comfortCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.comfortHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.normalCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-30T10:51:18.583Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.normalHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-30T17:20:16.145Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.reducedCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 27 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.reducedHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.3.operating.state", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "demand": { + "type": "string", + "value": "cooling" + }, + "level": { + "type": "string", + "value": "normal" + }, + "modifier": { + "type": "string", + "value": "none" + }, + "reason": { + "type": "string", + "value": "schedule" + } + }, + "timestamp": "2025-05-30T10:51:18.583Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.operating.state" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "temperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.quickmodes.manualTillNextSchedule/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.quickmodes.manualTillNextSchedule/commands/deactivate" + }, + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.quickmodes.manualTillNextSchedule/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": { + "resetSchedule": { + "isExecutable": true, + "name": "resetSchedule", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.schedule/commands/resetSchedule" + }, + "setSchedule": { + "isExecutable": true, + "name": "setSchedule", + "params": { + "newSchedule": { + "constraints": { + "defaultMode": "reduced", + "maxEntries": 4, + "modes": [ + "normal", + "comfort" + ], + "overlapAllowed": false, + "resolution": 10 + }, + "required": true, + "type": "Schedule" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.schedule/commands/setSchedule" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.schedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "entries": { + "type": "Schedule", + "value": { + "fri": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "mon": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sat": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sun": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "thu": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "tue": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "wed": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ] + } + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.3.sensors.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "notConnected" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.3.sensors.humidity", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 58 + } + }, + "timestamp": "2025-05-30T18:52:18.741Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.3.sensors.temperature", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 26.4 + } + }, + "timestamp": "2025-05-30T18:52:18.741Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.3.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.3.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": { + "addActor": { + "constraints": { + "enum": [ + "cs", + "fht", + "trv", + "airQualitySensor", + "remoteControllerSensor" + ] + }, + "isExecutable": true, + "name": "addActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4/commands/addActor" + }, + "moveActor": { + "isExecutable": true, + "name": "moveActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + }, + "newRoomId": { + "constraints": { + "max": 23, + "min": 0, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4/commands/moveActor" + }, + "remove": { + "isExecutable": true, + "name": "remove", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4/commands/remove" + }, + "removeActor": { + "isExecutable": true, + "name": "removeActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4/commands/removeActor" + }, + "setName": { + "isExecutable": true, + "name": "setName", + "params": { + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1, + "regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4/commands/setName" + }, + "setType": { + "isExecutable": true, + "name": "setType", + "params": { + "type": { + "constraints": { + "enum": [ + "bathroom", + "bedroom", + "hallway", + "livingroom", + "kitchen", + "office", + "nursery", + "toilet", + "other" + ] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4/commands/setType" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "actors": { + "type": "array", + "value": [ + { + "deviceId": "zigbee-d87a3bfffeec0fd7" + }, + { + "deviceId": "zigbee-5cc7c1fffea27573-5" + } + ] + }, + "name": { + "type": "string", + "value": "Bathroom" + }, + "type": { + "type": "string", + "value": "bathroom" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.comfortCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.comfortHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.normalCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-30T12:37:17.844Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.normalHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-30T17:20:17.038Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.reducedCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 27 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.reducedHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.4.operating.state", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "demand": { + "type": "string", + "value": "cooling" + }, + "level": { + "type": "string", + "value": "normal" + }, + "modifier": { + "type": "string", + "value": "none" + }, + "reason": { + "type": "string", + "value": "schedule" + } + }, + "timestamp": "2025-05-30T12:37:17.844Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.operating.state" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "temperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.quickmodes.manualTillNextSchedule/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.quickmodes.manualTillNextSchedule/commands/deactivate" + }, + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.quickmodes.manualTillNextSchedule/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": { + "resetSchedule": { + "isExecutable": true, + "name": "resetSchedule", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.schedule/commands/resetSchedule" + }, + "setSchedule": { + "isExecutable": true, + "name": "setSchedule", + "params": { + "newSchedule": { + "constraints": { + "defaultMode": "reduced", + "maxEntries": 4, + "modes": [ + "normal", + "comfort" + ], + "overlapAllowed": false, + "resolution": 10 + }, + "required": true, + "type": "Schedule" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.schedule/commands/setSchedule" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.schedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "entries": { + "type": "Schedule", + "value": { + "fri": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "mon": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sat": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sun": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "thu": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "tue": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "wed": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ] + } + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.4.sensors.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "notConnected" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.4.sensors.humidity", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 65 + } + }, + "timestamp": "2025-05-30T18:18:19.115Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.4.sensors.temperature", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 25.3 + } + }, + "timestamp": "2025-05-30T18:48:18.411Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.4.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.4.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": { + "addActor": { + "constraints": { + "enum": [ + "cs", + "fht", + "trv", + "airQualitySensor", + "remoteControllerSensor" + ] + }, + "isExecutable": true, + "name": "addActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5/commands/addActor" + }, + "moveActor": { + "isExecutable": true, + "name": "moveActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + }, + "heatingCircuit": { + "constraints": { + "max": 3, + "min": 0, + "stepping": 1 + }, + "required": false, + "type": "number" + }, + "newRoomId": { + "constraints": { + "max": 23, + "min": 0, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5/commands/moveActor" + }, + "remove": { + "isExecutable": true, + "name": "remove", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5/commands/remove" + }, + "removeActor": { + "isExecutable": true, + "name": "removeActor", + "params": { + "actorDeviceId": { + "constraints": {}, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5/commands/removeActor" + }, + "setName": { + "isExecutable": true, + "name": "setName", + "params": { + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1, + "regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5/commands/setName" + }, + "setType": { + "isExecutable": true, + "name": "setType", + "params": { + "type": { + "constraints": { + "enum": [ + "bathroom", + "bedroom", + "hallway", + "livingroom", + "kitchen", + "office", + "nursery", + "toilet", + "other" + ] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5/commands/setType" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "actors": { + "type": "array", + "value": [ + { + "deviceId": "zigbee-a46dd4fffe064794" + }, + { + "deviceId": "zigbee-5cc7c1fffea27573-6" + } + ] + }, + "name": { + "type": "string", + "value": "Laundry" + }, + "type": { + "type": "string", + "value": "other" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.comfortCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.comfortHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.normalCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.normalHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-30T17:20:17.126Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.reducedCooling/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 27 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": { + "setTemperature": { + "isExecutable": true, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.reducedHeating/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "temperature": { + "type": "number", + "unit": "celsius", + "value": 22 + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.5.operating.state", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "demand": { + "type": "string", + "value": "energySaving" + }, + "level": { + "type": "string", + "value": "normal" + }, + "modifier": { + "type": "string", + "value": "none" + }, + "reason": { + "type": "string", + "value": "schedule" + } + }, + "timestamp": "2025-05-30T03:55:02.816Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.operating.state" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "temperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.quickmodes.manualTillNextSchedule/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.quickmodes.manualTillNextSchedule/commands/deactivate" + }, + "setTemperature": { + "isExecutable": false, + "name": "setTemperature", + "params": { + "targetTemperature": { + "constraints": { + "max": 30, + "min": 8, + "stepping": 0.5 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.quickmodes.manualTillNextSchedule/commands/setTemperature" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": { + "resetSchedule": { + "isExecutable": true, + "name": "resetSchedule", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.schedule/commands/resetSchedule" + }, + "setSchedule": { + "isExecutable": true, + "name": "setSchedule", + "params": { + "newSchedule": { + "constraints": { + "defaultMode": "reduced", + "maxEntries": 4, + "modes": [ + "normal", + "comfort" + ], + "overlapAllowed": false, + "resolution": 10 + }, + "required": true, + "type": "Schedule" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.schedule/commands/setSchedule" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.schedule", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "entries": { + "type": "Schedule", + "value": { + "fri": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "mon": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sat": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "sun": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "thu": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "tue": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ], + "wed": [ + { + "end": "22:00", + "mode": "normal", + "position": 0, + "start": "06:00" + } + ] + } + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.5.sensors.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "notConnected" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.5.sensors.humidity", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 68 + } + }, + "timestamp": "2025-05-30T17:06:18.801Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.5.sensors.temperature", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 21.9 + } + }, + "timestamp": "2025-05-30T18:40:18.420Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.5.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.5.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.6.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.6.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.6.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.7.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.7.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.7.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.8.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.8.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.8.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.operating.programs.comfortCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.operating.programs.comfortCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.operating.programs.comfortHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.operating.programs.comfortHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.operating.programs.normalCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.operating.programs.normalCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.operating.programs.normalHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.operating.programs.normalHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.operating.programs.reducedCooling", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.operating.programs.reducedCooling" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.operating.programs.reducedHeating", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.operating.programs.reducedHeating" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.operating.state", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.operating.state" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.quickmodes.manualTillNextSchedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.quickmodes.manualTillNextSchedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.schedule", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.sensors.co2", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.sensors.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.sensors.humidity", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.sensors.humidity" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "RoomControl-1", + "feature": "rooms.9.sensors.temperature", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.sensors.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "none", + "removalDate": "2024-09-15" + }, + "deviceId": "RoomControl-1", + "feature": "rooms.9.sensors.window.openState", + "gatewayId": "################", + "isEnabled": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.9.sensors.window.openState" + }, + { + "apiVersion": 1, + "commands": { + "add": { + "isExecutable": true, + "name": "add", + "params": { + "heatingCircuit": { + "constraints": { + "enum": [ + 0 + ] + }, + "required": true, + "type": "number" + }, + "name": { + "constraints": { + "maxLength": 39, + "minLength": 1 + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.others/commands/add" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.others", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "enabled": { + "type": "array", + "value": [] + } + }, + "timestamp": "2025-05-28T10:03:10.602Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.others" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.status/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.status/commands/deactivate" + } + }, + "deviceId": "RoomControl-1", + "feature": "rooms.status", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "variant": { + "type": "string", + "value": "full" + } + }, + "timestamp": "2025-05-28T10:02:52.547Z", + "uri": "https://api.viessmann.com/iot/v2/features/installations/#######/gateways/################/devices/RoomControl-1/features/rooms.status" + } + ] +} diff --git a/tests/test_PyViCareDeviceConfig.py b/tests/test_PyViCareDeviceConfig.py index 9b2ccc10..5e606175 100644 --- a/tests/test_PyViCareDeviceConfig.py +++ b/tests/test_PyViCareDeviceConfig.py @@ -49,6 +49,24 @@ def test_autoDetect_RoleRadiator_asRadiatorActuator(self): device_type = c.asAutoDetectDevice() self.assertEqual("RadiatorActuator", type(device_type).__name__) + def test_autoDetect_RoleFhtMain_asFloorHeating(self): + self.service.hasRoles = has_roles(["type:fhtMain"]) + c = PyViCareDeviceConfig(self.service, "0", "Unknown", "Online") + device_type = c.asAutoDetectDevice() + self.assertEqual("FloorHeating", type(device_type).__name__) + + def test_autoDetect_RoleFhtChannel_asFloorHeatingCircuitChannel(self): + self.service.hasRoles = has_roles(["type:fhtChannel"]) + c = PyViCareDeviceConfig(self.service, "0", "Unknown", "Online") + device_type = c.asAutoDetectDevice() + self.assertEqual("FloorHeatingCircuitChannel", type(device_type).__name__) + + def test_autoDetect_RoleSmartRoomControl_asRoomControl(self): + self.service.hasRoles = has_roles(["type:virtual;smartRoomControl"]) + c = PyViCareDeviceConfig(self.service, "0", "Unknown", "Online") + device_type = c.asAutoDetectDevice() + self.assertEqual("RoomControl", type(device_type).__name__) + def test_autoDetect_RoleClimateSensor_asRoomSensor(self): self.service.hasRoles = has_roles(["type:climateSensor"]) c = PyViCareDeviceConfig(self.service, "0", "Unknown", "Online") diff --git a/tests/test_RoomControl.py b/tests/test_RoomControl.py new file mode 100644 index 00000000..5906bdca --- /dev/null +++ b/tests/test_RoomControl.py @@ -0,0 +1,236 @@ +import unittest + +from PyViCare.PyViCareRoomControl import RoomControl +from PyViCare.PyViCareUtils import PyViCareNotSupportedFeatureError +from tests.ViCareServiceMock import ViCareServiceMock + + +class TestRoomControl(unittest.TestCase): + def setUp(self): + self.service = ViCareServiceMock('response/RoomControl.json') + self.device = RoomControl(self.service) + + def test_rooms(self): + self.assertGreater(len(self.device.rooms), 0) + + def test_room_getType(self): + self.assertEqual(self.device.rooms[0].getType(), "livingroom") + + def test_room_getName(self): + self.assertEqual(self.device.rooms[0].getName(), "Living room") + + def test_room_actors(self): + self.assertGreater(len(self.device.rooms[0].actors), 0) + + def test_room_getSensorTemperature(self): + self.assertEqual(self.device.rooms[0].getSensorTemperature(), 25.4) + + def test_room_getSensorTemperatureStatus(self): + self.assertEqual(self.device.rooms[0].getSensorTemperatureStatus(), "connected") + + def test_room_getSensorHumidity(self): + self.assertEqual(self.device.rooms[0].getSensorHumidity(), 60) + + def test_room_getSensorHumidityStatus(self): + self.assertEqual(self.device.rooms[0].getSensorHumidityStatus(), "connected") + + def test_room_getSensorCO2(self): + def func(): + return self.device.rooms[0].getSensorCO2() + + self.assertRaises(PyViCareNotSupportedFeatureError, func) + + def test_room_getSensorCO2Status(self): + self.assertEqual(self.device.rooms[0].getSensorCO2Status(), "notConnected") + + def test_room_getOperatingStateLevel(self): + self.assertEqual(self.device.rooms[0].getOperatingStateLevel(), "normal") + + def test_room_getOperatingStateDemand(self): + self.assertEqual(self.device.rooms[0].getOperatingStateDemand(), "cooling") + + def test_room_getOperatingStateReason(self): + self.assertEqual(self.device.rooms[0].getOperatingStateReason(), "schedule") + + def test_room_getOperatingStateModifier(self): + self.assertEqual(self.device.rooms[0].getOperatingStateModifier(), "none") + + def test_room_getNormalHeatingTemperature(self): + self.assertEqual(self.device.rooms[0].getNormalHeatingTemperature(), 22) + + def test_room_getNormalHeatingActive(self): + self.assertEqual(self.device.rooms[0].getNormalHeatingActive(), False) + + def test_room_setNormalHeatingTemperature(self): + self.device.rooms[0].setNormalHeatingTemperature(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'setTemperature') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.operating.programs.normalHeating') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'targetTemperature': 22}) + + def test_room_getReducedHeatingTemperature(self): + self.assertEqual(self.device.rooms[0].getReducedHeatingTemperature(), 22) + + def test_room_getReducedHeatingActive(self): + self.assertEqual(self.device.rooms[0].getReducedHeatingActive(), False) + + def test_room_setReducedHeatingTemperature(self): + self.device.rooms[0].setReducedHeatingTemperature(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'setTemperature') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.operating.programs.reducedHeating') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'targetTemperature': 22}) + + def test_room_getComfortHeatingTemperature(self): + self.assertEqual(self.device.rooms[0].getComfortHeatingTemperature(), 22) + + def test_room_getComfortHeatingActive(self): + self.assertEqual(self.device.rooms[0].getComfortHeatingActive(), False) + + def test_room_setComfortHeatingTemperature(self): + self.device.rooms[0].setComfortHeatingTemperature(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'setTemperature') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.operating.programs.comfortHeating') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'targetTemperature': 22}) + + def test_room_getNormalCoolingTemperature(self): + self.assertEqual(self.device.rooms[0].getNormalCoolingTemperature(), 23) + + def test_room_getNormalCoolingActive(self): + self.assertEqual(self.device.rooms[0].getNormalCoolingActive(), True) + + def test_room_setNormalCoolingTemperature(self): + self.device.rooms[0].setNormalCoolingTemperature(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'setTemperature') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.operating.programs.normalCooling') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'targetTemperature': 22}) + + def test_room_getReducedCoolingTemperature(self): + self.assertEqual(self.device.rooms[0].getReducedCoolingTemperature(), 27) + + def test_room_getReducedCoolingActive(self): + self.assertEqual(self.device.rooms[0].getReducedCoolingActive(), False) + + def test_room_setReducedCoolingTemperature(self): + self.device.rooms[0].setReducedCoolingTemperature(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'setTemperature') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.operating.programs.reducedCooling') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'targetTemperature': 22}) + + def test_room_getComfortCoolingTemperature(self): + self.assertEqual(self.device.rooms[0].getComfortCoolingTemperature(), 23) + + def test_room_getComfortCoolingActive(self): + self.assertEqual(self.device.rooms[0].getComfortCoolingActive(), False) + + def test_room_setComfortCoolingTemperature(self): + self.device.rooms[0].setComfortCoolingTemperature(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'setTemperature') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.operating.programs.comfortCooling') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'targetTemperature': 22}) + + def test_room_getSchedule(self): + self.assertEqual(self.device.rooms[0].getSchedule(), { + 'active': True, + 'mon': [ + { + "end": "22:00", + "mode": "normal", + "start": "06:00", + "position": 0 + }], + "tue": [ + { + "mode": "normal", + "start": "06:00", + "end": "22:00", + "position": 0 + } + ], + "wed": [ + { + "mode": "normal", + "start": "06:00", + "end": "22:00", + "position": 0 + } + ], + "thu": [ + { + "mode": "normal", + "start": "06:00", + "end": "22:00", + "position": 0 + } + ], + "fri": [ + { + "mode": "normal", + "start": "06:00", + "end": "22:00", + "position": 0 + } + ], + "sat": [ + { + "mode": "normal", + "start": "06:00", + "end": "22:00", + "position": 0 + } + ], + "sun": [ + { + "mode": "normal", + "start": "06:00", + "end": "22:00", + "position": 0 + } + ] + }) + + def test_room_getManualTillNextScheduleActive(self): + self.assertEqual(self.device.rooms[0].getManualTillNextScheduleActive(), False) + + def test_room_setManualTillNextScheduleTemperature(self): + self.device.rooms[0].setManualTillNextScheduleTemperature(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'setTemperature') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.quickmodes.manualTillNextSchedule') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'targetTemperature': 22}) + + def test_room_activateManualTillNextSchedule(self): + self.device.rooms[0].activateManualTillNextSchedule(22) + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'activate') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.quickmodes.manualTillNextSchedule') + self.assertEqual( + self.service.setPropertyData[0]['data'], {'temperature': 22}) + + def test_room_deactivateManualTillNextSchedule(self): + self.device.rooms[0].deactivateManualTillNextSchedule() + self.assertEqual(len(self.service.setPropertyData), 1) + self.assertEqual(self.service.setPropertyData[0]['action'], 'deactivate') + self.assertEqual( + self.service.setPropertyData[0]['property_name'], 'rooms.0.quickmodes.manualTillNextSchedule') + self.assertEqual( + self.service.setPropertyData[0]['data'], {}) diff --git a/tests/test_TestForMissingProperties.py b/tests/test_TestForMissingProperties.py index be3494da..1672d8c5 100644 --- a/tests/test_TestForMissingProperties.py +++ b/tests/test_TestForMissingProperties.py @@ -99,6 +99,9 @@ def test_missingProperties(self): 'heating.scop.heating', # deprecated 'heating.scop.total', # deprecated 'heating.dhw.comfort', # deprecated + + 'rooms.others', # TODO: No idea what it is yet + 'rooms.status', # TODO: No idea what it is yet ] all_features = self.read_all_features() @@ -132,7 +135,7 @@ def test_unverifiedProperties(self): continue for match in re.findall(r'getProperty\(\s*?f?"(.*)"\s*?\)', all_python_files[python]): - feature_name = re.sub(r'{self.(circuit|burner|compressor)}', '0', match) + feature_name = re.sub(r'{self.(circuit|burner|compressor|room)}', '0', match) feature_name = re.sub(r'{burner}', '0', feature_name) feature_name = re.sub(r'\.{(quickmode|mode|program|active_program)}', '', feature_name) used_features.append(feature_name)