diff --git a/PyViCare/PyViCareVentilationDevice.py b/PyViCare/PyViCareVentilationDevice.py index bd2e20a0..5b9754f3 100644 --- a/PyViCare/PyViCareVentilationDevice.py +++ b/PyViCare/PyViCareVentilationDevice.py @@ -121,7 +121,7 @@ def deactivateVentilationQuickmode(self, quickmode: str) -> None: @handleNotSupported def getVentilationPrograms(self): available_programs = [] - for program in ['basic', 'intensive', 'reduced', 'standard', 'standby', 'holidayAtHome', 'permanent']: + for program in ['active','basic', 'intensive', 'reduced', 'standard', 'standby', 'holidayAtHome', 'permanent']: with suppress(PyViCareNotSupportedFeatureError): if self.getProperty(f"ventilation.operating.programs.{program}") is not None: available_programs.append(program) @@ -230,10 +230,26 @@ def getOutsideHumidity(self) -> int: def getSupplyTemperature(self) -> float: return float(self.getProperty("ventilation.sensors.temperature.supply")["properties"]["value"]["value"]) + @handleNotSupported + def getExhaustTemperature(self) -> float: + return float(self.getProperty("ventilation.sensors.temperature.exhaust")["properties"]["value"]["value"]) + + @handleNotSupported + def getExtractTemperature(self) -> float: + return float(self.getProperty("ventilation.sensors.temperature.extract")["properties"]["value"]["value"]) + @handleNotSupported def getSupplyHumidity(self) -> int: return int(self.getProperty("ventilation.sensors.humidity.supply")["properties"]["value"]["value"]) + @handleNotSupported + def getExhaustHumidity(self) -> int: + return int(self.getProperty("ventilation.sensors.humidity.exhaust")["properties"]["value"]["value"]) + + @handleNotSupported + def getExtractHumidity(self) -> int: + return int(self.getProperty("ventilation.sensors.humidity.extract")["properties"]["value"]["value"]) + @handleNotSupported def getVolatileOrganicCompounds(self) -> int: return int(self.getProperty("ventilation.sensors.volatileOrganicCompounds")["properties"]["value"]["value"]) @@ -282,6 +298,10 @@ def getSupplyFanTargetSpeed(self) -> int: def getHeatExchangerFrostProtectionActive(self) -> bool: return "off" != str(self.getProperty("ventilation.heatExchanger.frostprotection")["properties"]["status"]["value"]) + @handleNotSupported + def getHeatRecoveryEfficiency(self) -> float: + return float(self.getProperty("ventilation.heating.recovery")["properties"]["value"]["value"]) + @handleNotSupported def getSupplyVolumeFlow(self) -> int: return int(self.getProperty("ventilation.volumeFlow.current.input")["properties"]["value"]["value"]) diff --git a/tests/response/VitoairFs300E.json b/tests/response/VitoairFs300E.json index 53702aed..c3ce98c5 100644 --- a/tests/response/VitoairFs300E.json +++ b/tests/response/VitoairFs300E.json @@ -3,8 +3,98 @@ { "apiVersion": 1, "commands": {}, - "deviceId": "################", - "feature": "device.messages.errors.raw", + "deviceId": "0", + "feature": "device.commissioning.information", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "date": { + "type": "string", + "value": "2025-08-04" + }, + "status": { + "type": "string", + "value": "complete" + } + }, + "timestamp": "2026-02-15T20:34:21.290Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.commissioning.information" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.configuration.houseLocation", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "altitude": { + "type": "number", + "unit": "meter", + "value": 100 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.configuration.houseLocation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.lock.external", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.lock.external" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.messages.info.raw", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "entries": { + "type": "array", + "value": [] + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.messages.info.raw" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.messages.service.raw", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "entries": { + "type": "array", + "value": [] + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.messages.service.raw" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.messages.status.raw", "gatewayId": "################", "isEnabled": true, "isReady": true, @@ -14,13 +104,30 @@ "value": [] } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/device.messages.errors.raw" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.messages.status.raw" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.parameterIdentification.version", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "string", + "value": "0028.0513.2346.0001" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.parameterIdentification.version" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", + "deviceId": "0", "feature": "device.productIdentification", "gatewayId": "################", "isEnabled": true, @@ -29,72 +136,916 @@ "product": { "type": "object", "value": { - "busAddress": 71, + "busAddress": 1, "busType": "CanExternal", - "productFamily": "B_00028_VA330", + "productFamily": "VA330", "viessmannIdentificationNumber": "################" } } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/device.productIdentification" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.productIdentification" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.serial", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "string", + "value": "################" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.serial" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.setDefaultValues", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": {}, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.setDefaultValues" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "begin": { + "constraints": { + "regEx": "^[\\d]{2}-[\\d]{2}$" + }, + "required": true, + "type": "string" + }, + "end": { + "constraints": { + "regEx": "^[\\d]{2}-[\\d]{2}$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.time.daylightSaving/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.time.daylightSaving/commands/deactivate" + } + }, + "deviceId": "0", + "feature": "device.time.daylightSaving", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + }, + "begin": { + "type": "string", + "value": "25-03" + }, + "end": { + "type": "string", + "value": "25-10" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.time.daylightSaving" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.variant", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "string", + "value": "VitoairFS300" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.variant" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.zigbee.active", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.zigbee.active" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "device.zigbee.status", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "notConnected" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.zigbee.status" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "heating.boiler.serial", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "string", + "value": "################" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/heating.boiler.serial" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "replaced by device.configuration.houseLocation", + "removalDate": "2025-03-15" + }, + "deviceId": "0", + "feature": "heating.configuration.houseLocation", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "altitude": { + "type": "number", + "unit": "meter", + "value": 100 + }, + "latitude": { + "type": "number", + "unit": "degree", + "value": 0 + }, + "longitude": { + "type": "number", + "unit": "degree", + "value": 0 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/heating.configuration.houseLocation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "heating.device.time", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": {}, + "timestamp": "2026-02-15T20:34:21.290Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/heating.device.time" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "tcu.wifi", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "strength": { + "type": "number", + "unit": "", + "value": -71 + } + }, + "timestamp": "2026-02-15T18:38:41.465Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/tcu.wifi" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.air.balance.offset", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "input": { + "type": "number", + "unit": "percent", + "value": 0 + }, + "output": { + "type": "number", + "unit": "percent", + "value": 0 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.air.balance.offset" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.airQuality.co", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "error" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.airQuality.co" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.airQuality.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "error" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.airQuality.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.airQuality.organicComponents", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "error" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.airQuality.organicComponents" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.airQuality.pm10", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "error" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.airQuality.pm10" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.airQuality.pm2d5", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "error" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.airQuality.pm2d5" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.airQuality.temperature", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "error" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.airQuality.temperature" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass.configuration.temperature.perceived", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "celsius", + "value": 23 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass.configuration.temperature.perceived" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass.configuration.temperature.supply.dynamicRegulation", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "celsius", + "value": 12 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass.configuration.temperature.supply.dynamicRegulation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass.configuration.temperature.supply.smoothRegulation", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "celsius", + "value": 16 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass.configuration.temperature.supply.smoothRegulation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass.operating.modes.active", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "level": { + "type": "string", + "value": "dynamicRegulationMode" + }, + "state": { + "type": "string", + "value": "automatic" + }, + "value": { + "type": "string", + "value": "automatic" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass.operating.modes.active" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass.operating.modes.automatic", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass.operating.modes.automatic" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass.operating.modes.open", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass.operating.modes.open" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.bypass.position", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "percent", + "value": 0 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.bypass.position" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.control.filterChange", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.control.filterChange" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "replaced by device.lock.external", + "removalDate": "2024-09-15" + }, + "deviceId": "0", + "feature": "ventilation.external.lock", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.external.lock" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.fan.assignmentSwitch", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.fan.assignmentSwitch" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.fan.exhaust", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "current": { + "type": "number", + "unit": "rotationPerMinute", + "value": 1796 + }, + "status": { + "type": "string", + "value": "connected" + }, + "target": { + "type": "number", + "unit": "rotationPerMinute", + "value": 0 + } + }, + "timestamp": "2026-02-15T20:36:00.429Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.fan.exhaust" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.fan.exhaust.runtime", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "hour", + "value": 13897 + } + }, + "timestamp": "2026-02-15T19:38:12.582Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.fan.exhaust.runtime" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.fan.supply", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "current": { + "type": "number", + "unit": "rotationPerMinute", + "value": 2335 + }, + "status": { + "type": "string", + "value": "connected" + }, + "target": { + "type": "number", + "unit": "rotationPerMinute", + "value": 0 + } + }, + "timestamp": "2026-02-15T20:36:06.354Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.fan.supply" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.fan.supply.runtime", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "hour", + "value": 13908 + } + }, + "timestamp": "2026-02-15T19:40:13.556Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.fan.supply.runtime" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.features.co", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.features.co" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.features.co2", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.features.co2" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.features.dust", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.features.dust" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.features.finedust", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.features.finedust" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.features.organicComponent", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.features.organicComponent" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.filter.information", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "filterOneEan": { + "type": "string", + "value": "#############" + }, + "filterRuntimeResetValue": { + "type": "number", + "unit": "day", + "value": 365 + }, + "filterTwoEan": { + "type": "string", + "value": "#############" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.filter.information" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.filter.pollution.blocked", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 100 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.filter.pollution.blocked" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.filter.runtime", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "operatingHours": { + "type": "number", + "unit": "hours", + "value": 4450 + }, + "overdueHours": { + "type": "number", + "unit": "hours", + "value": 0 + }, + "remainingHours": { + "type": "number", + "unit": "hours", + "value": 4310 + } + }, + "timestamp": "2026-02-15T19:34:12.168Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.filter.runtime" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", - "feature": "device.serial", + "deviceId": "0", + "feature": "ventilation.heatExchanger.frostprotection", "gatewayId": "################", "isEnabled": true, "isReady": true, "properties": { - "value": { + "status": { "type": "string", - "value": "################" + "value": "off" } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/device.serial" + "timestamp": "2026-02-15T09:17:08.417Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.heatExchanger.frostprotection" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", - "feature": "heating.boiler.serial", + "deviceId": "0", + "feature": "ventilation.heating.recovery", "gatewayId": "################", "isEnabled": true, "isReady": true, "properties": { "value": { - "type": "string", - "value": "################" + "type": "number", + "unit": "percent", + "value": 77 } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/heating.boiler.serial" + "timestamp": "2026-02-15T20:19:10.199Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.heating.recovery" }, { "apiVersion": 1, - "commands": {}, - "deviceId": "################", - "feature": "ventilation", + "commands": { + "setValue": { + "isExecutable": false, + "name": "setValue", + "params": { + "value": { + "constraints": { + "max": 300, + "min": 261, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelFour/commands/setValue" + } + }, + "deviceId": "0", + "feature": "ventilation.levels.levelFour", "gatewayId": "################", "isEnabled": true, "isReady": true, "properties": { - "active": { - "type": "boolean", - "value": true + "volumeFlow": { + "type": "number", + "unit": "cubicMeter/hour", + "value": 275 } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelFour" }, { "apiVersion": 1, - "commands": {}, - "deviceId": "################", - "feature": "ventilation.levels.levelFour", + "commands": { + "setValue": { + "isExecutable": false, + "name": "setValue", + "params": { + "value": { + "constraints": { + "max": 199, + "min": 50, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelOne/commands/setValue" + } + }, + "deviceId": "0", + "feature": "ventilation.levels.levelOne", "gatewayId": "################", "isEnabled": true, "isReady": true, @@ -102,17 +1053,34 @@ "volumeFlow": { "type": "number", "unit": "cubicMeter/hour", - "value": 240 + "value": 140 } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.levels.levelFour" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelOne" }, { "apiVersion": 1, - "commands": {}, - "deviceId": "################", - "feature": "ventilation.levels.levelOne", + "commands": { + "setValue": { + "isExecutable": false, + "name": "setValue", + "params": { + "value": { + "constraints": { + "max": 274, + "min": 201, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelThree/commands/setValue" + } + }, + "deviceId": "0", + "feature": "ventilation.levels.levelThree", "gatewayId": "################", "isEnabled": true, "isReady": true, @@ -120,17 +1088,34 @@ "volumeFlow": { "type": "number", "unit": "cubicMeter/hour", - "value": 55 + "value": 260 } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.levels.levelOne" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelThree" }, { "apiVersion": 1, - "commands": {}, - "deviceId": "################", - "feature": "ventilation.levels.levelThree", + "commands": { + "setValue": { + "isExecutable": false, + "name": "setValue", + "params": { + "value": { + "constraints": { + "max": 259, + "min": 141, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelTwo/commands/setValue" + } + }, + "deviceId": "0", + "feature": "ventilation.levels.levelTwo", "gatewayId": "################", "isEnabled": true, "isReady": true, @@ -138,29 +1123,32 @@ "volumeFlow": { "type": "number", "unit": "cubicMeter/hour", - "value": 185 + "value": 200 } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.levels.levelThree" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelTwo" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", - "feature": "ventilation.levels.levelTwo", + "deviceId": "0", + "feature": "ventilation.lockExternal", "gatewayId": "################", "isEnabled": true, "isReady": true, "properties": { - "volumeFlow": { - "type": "number", - "unit": "cubicMeter/hour", - "value": 129 + "airPressureMonitor": { + "type": "boolean", + "value": false + }, + "fireProtectionFlap": { + "type": "boolean", + "value": false } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.levels.levelTwo" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.lockExternal" }, { "apiVersion": 1, @@ -182,16 +1170,16 @@ "type": "string" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.active/commands/setMode" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.active/commands/setMode" }, "setModeContinuousSensorOverride": { "isExecutable": true, "name": "setModeContinuousSensorOverride", "params": {}, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.active/commands/setModeContinuousSensorOverride" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.active/commands/setModeContinuousSensorOverride" } }, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.operating.modes.active", "gatewayId": "################", "isEnabled": true, @@ -202,13 +1190,13 @@ "value": "sensorOverride" } }, - "timestamp": "2024-11-07T02:31:12.967Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.active" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.active" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.operating.modes.filterChange", "gatewayId": "################", "isEnabled": true, @@ -219,8 +1207,8 @@ "value": false } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.filterChange" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.filterChange" }, { "apiVersion": 1, @@ -242,10 +1230,10 @@ "type": "string" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.permanent/commands/setLevel" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.permanent/commands/setLevel" } }, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.operating.modes.permanent", "gatewayId": "################", "isEnabled": true, @@ -256,13 +1244,13 @@ "value": false } }, - "timestamp": "2024-11-07T07:20:15.814Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.permanent" + "timestamp": "2026-02-15T18:00:26.438Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.permanent" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.operating.modes.sensorDriven", "gatewayId": "################", "isEnabled": true, @@ -273,13 +1261,13 @@ "value": false } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.sensorDriven" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.sensorDriven" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.operating.modes.sensorOverride", "gatewayId": "################", "isEnabled": true, @@ -290,13 +1278,13 @@ "value": true } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.sensorOverride" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.sensorOverride" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.operating.modes.ventilation", "gatewayId": "################", "isEnabled": true, @@ -307,13 +1295,13 @@ "value": false } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.modes.ventilation" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.ventilation" }, { "apiVersion": 1, "commands": {}, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.operating.programs.active", "gatewayId": "################", "isEnabled": true, @@ -321,210 +1309,89 @@ "properties": { "value": { "type": "string", - "value": "levelFour" + "value": "levelTwo" } }, - "timestamp": "2024-11-07T07:20:15.814Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.active" + "timestamp": "2026-02-15T18:00:26.438Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.programs.active" }, { "apiVersion": 1, - "commands": { - "activate": { - "isDeprecated": true, - "isExecutable": true, - "name": "activate", - "params": { - "timeout": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": false, - "type": "number" - } - }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.forcedLevelFour/commands/activate" - }, - "deactivate": { - "isDeprecated": true, - "isExecutable": true, - "name": "deactivate", - "params": {}, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.forcedLevelFour/commands/deactivate" - }, - "setDefaultRuntime": { - "isDeprecated": true, - "isExecutable": true, - "name": "setDefaultRuntime", - "params": { - "defaultRuntime": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": true, - "type": "number" - } - }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.forcedLevelFour/commands/setDefaultRuntime" - }, - "setTimeout": { - "isDeprecated": true, - "isExecutable": true, - "name": "setTimeout", - "params": { - "timeout": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": true, - "type": "number" - } - }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.forcedLevelFour/commands/setTimeout" - } - }, - "deprecated": { - "info": "none", - "removalDate": "2024-09-15" - }, - "deviceId": "################", - "feature": "ventilation.operating.programs.forcedLevelFour", + "commands": {}, + "deviceId": "0", + "feature": "ventilation.operating.state", "gatewayId": "################", "isEnabled": true, "isReady": true, "properties": { - "active": { - "type": "boolean", - "value": false + "demand": { + "type": "string", + "value": "unknown" }, - "defaultRuntime": { - "type": "number", - "unit": "minutes", - "value": 10 + "level": { + "type": "string", + "value": "levelTwo" }, - "isActiveWritable": { - "type": "boolean", - "value": true + "reason": { + "type": "string", + "value": "sensorOverride" } }, - "timestamp": "2024-11-07T02:31:12.967Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.forcedLevelFour" + "timestamp": "2026-02-15T18:00:26.438Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.state" }, { "apiVersion": 1, "commands": {}, - "deprecated": { - "info": "none", - "removalDate": "2024-09-15" - }, - "deviceId": "################", - "feature": "ventilation.operating.programs.levelFour", + "deviceId": "0", + "feature": "ventilation.preHeater", "gatewayId": "################", - "isEnabled": true, + "isEnabled": false, "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": true - }, - "volumeFlow": { - "type": "number", - "unit": "cubicMeter/hour", - "value": 240 - } - }, - "timestamp": "2024-11-07T07:20:15.814Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.levelFour" + "properties": {}, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.preHeater" }, { "apiVersion": 1, "commands": {}, - "deprecated": { - "info": "none", - "removalDate": "2024-09-15" - }, - "deviceId": "################", - "feature": "ventilation.operating.programs.levelOne", + "deviceId": "0", + "feature": "ventilation.preHeater.power.consumption", "gatewayId": "################", - "isEnabled": true, + "isEnabled": false, "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - }, - "volumeFlow": { - "type": "number", - "unit": "cubicMeter/hour", - "value": 55 - } - }, - "timestamp": "2024-11-07T07:20:15.814Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.levelOne" + "properties": {}, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.preHeater.power.consumption" }, { "apiVersion": 1, "commands": {}, - "deprecated": { - "info": "none", - "removalDate": "2024-09-15" - }, - "deviceId": "################", - "feature": "ventilation.operating.programs.levelThree", + "deviceId": "0", + "feature": "ventilation.preHeater.power.consumption.current", "gatewayId": "################", - "isEnabled": true, + "isEnabled": false, "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - }, - "volumeFlow": { - "type": "number", - "unit": "cubicMeter/hour", - "value": 185 - } - }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.levelThree" + "properties": {}, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.preHeater.power.consumption.current" }, { "apiVersion": 1, "commands": {}, - "deprecated": { - "info": "none", - "removalDate": "2024-09-15" - }, - "deviceId": "################", - "feature": "ventilation.operating.programs.levelTwo", + "deviceId": "0", + "feature": "ventilation.preHeater.statistics", "gatewayId": "################", - "isEnabled": true, + "isEnabled": false, "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - }, - "volumeFlow": { - "type": "number", - "unit": "cubicMeter/hour", - "value": 129 - } - }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.levelTwo" + "properties": {}, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.preHeater.statistics" }, { "apiVersion": 1, "commands": { "activate": { - "isDeprecated": true, "isExecutable": true, "name": "activate", "params": { @@ -538,17 +1405,15 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.silent/commands/activate" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/activate" }, "deactivate": { - "isDeprecated": true, "isExecutable": true, "name": "deactivate", "params": {}, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.silent/commands/deactivate" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/deactivate" }, "setDefaultRuntime": { - "isDeprecated": true, "isExecutable": true, "name": "setDefaultRuntime", "params": { @@ -562,10 +1427,9 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.silent/commands/setDefaultRuntime" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/setDefaultRuntime" }, "setTimeout": { - "isDeprecated": true, "isExecutable": true, "name": "setTimeout", "params": { @@ -579,41 +1443,11 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.silent/commands/setTimeout" - } - }, - "deprecated": { - "info": "none", - "removalDate": "2024-09-15" - }, - "deviceId": "################", - "feature": "ventilation.operating.programs.silent", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - }, - "defaultRuntime": { - "type": "number", - "unit": "minutes", - "value": 60 - }, - "isActiveWritable": { - "type": "boolean", - "value": true + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/setTimeout" } }, - "timestamp": "2024-11-07T02:31:12.967Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.silent" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "################", - "feature": "ventilation.operating.programs.standby", + "deviceId": "0", + "feature": "ventilation.quickmodes.forcedLevelFour", "gatewayId": "################", "isEnabled": true, "isReady": true, @@ -622,39 +1456,18 @@ "type": "boolean", "value": false }, - "volumeFlow": { - "type": "number", - "unit": "cubicMeter/hour", - "value": 0 - } - }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.programs.standby" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "################", - "feature": "ventilation.operating.state", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "demand": { - "type": "string", - "value": "unknown" - }, - "level": { - "type": "string", - "value": "levelFour" + "defaultRuntime": { + "type": "number", + "unit": "minutes", + "value": 30 }, - "reason": { - "type": "string", - "value": "sensorOverride" + "isCommandExecutable": { + "type": "boolean", + "value": true } }, - "timestamp": "2024-11-07T07:20:15.814Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.operating.state" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour" }, { "apiVersion": 1, @@ -673,13 +1486,13 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.forcedLevelFour/commands/activate" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/activate" }, "deactivate": { "isExecutable": true, "name": "deactivate", "params": {}, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.forcedLevelFour/commands/deactivate" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/deactivate" }, "setDefaultRuntime": { "isExecutable": true, @@ -695,7 +1508,7 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.forcedLevelFour/commands/setDefaultRuntime" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/setDefaultRuntime" }, "setTimeout": { "isExecutable": true, @@ -711,11 +1524,11 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.forcedLevelFour/commands/setTimeout" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/setTimeout" } }, - "deviceId": "################", - "feature": "ventilation.quickmodes.forcedLevelFour", + "deviceId": "0", + "feature": "ventilation.quickmodes.silent", "gatewayId": "################", "isEnabled": true, "isReady": true, @@ -727,15 +1540,15 @@ "defaultRuntime": { "type": "number", "unit": "minutes", - "value": 10 + "value": 30 }, - "isActiveWritable": { + "isCommandExecutable": { "type": "boolean", "value": true } }, - "timestamp": "2024-11-07T02:31:12.967Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.forcedLevelFour" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent" }, { "apiVersion": 1, @@ -754,13 +1567,13 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.silent/commands/activate" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.temporaryShutdown/commands/activate" }, "deactivate": { "isExecutable": true, "name": "deactivate", "params": {}, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.silent/commands/deactivate" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.temporaryShutdown/commands/deactivate" }, "setDefaultRuntime": { "isExecutable": true, @@ -776,27 +1589,11 @@ "type": "number" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.silent/commands/setDefaultRuntime" - }, - "setTimeout": { - "isExecutable": true, - "name": "setTimeout", - "params": { - "timeout": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": true, - "type": "number" - } - }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.silent/commands/setTimeout" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.temporaryShutdown/commands/setDefaultRuntime" } }, - "deviceId": "################", - "feature": "ventilation.quickmodes.silent", + "deviceId": "0", + "feature": "ventilation.quickmodes.temporaryShutdown", "gatewayId": "################", "isEnabled": true, "isReady": true, @@ -808,24 +1605,20 @@ "defaultRuntime": { "type": "number", "unit": "minutes", - "value": 60 - }, - "isActiveWritable": { - "type": "boolean", - "value": true + "value": 720 } }, - "timestamp": "2024-11-07T02:31:12.967Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.quickmodes.silent" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.temporaryShutdown" }, { "apiVersion": 1, "commands": { "resetSchedule": { - "isExecutable": false, + "isExecutable": true, "name": "resetSchedule", "params": {}, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.schedule/commands/resetSchedule" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.schedule/commands/resetSchedule" }, "setSchedule": { "isExecutable": true, @@ -847,10 +1640,10 @@ "type": "Schedule" } }, - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.schedule/commands/setSchedule" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.schedule/commands/setSchedule" } }, - "deviceId": "################", + "deviceId": "0", "feature": "ventilation.schedule", "gatewayId": "################", "isEnabled": true, @@ -865,191 +1658,442 @@ "value": { "fri": [ { - "end": "08:10", - "mode": "levelFour", + "end": "09:00", + "mode": "levelTwo", "position": 0, - "start": "07:20" + "start": "07:00" }, { - "end": "18:30", - "mode": "levelFour", + "end": "19:00", + "mode": "levelThree", "position": 1, - "start": "17:00" + "start": "09:00" }, { - "end": "21:30", + "end": "22:00", "mode": "levelTwo", "position": 2, - "start": "18:30" - }, - { - "end": "17:00", - "mode": "levelTwo", - "position": 3, - "start": "08:20" + "start": "19:00" } ], "mon": [ { - "end": "08:10", - "mode": "levelFour", + "end": "09:00", + "mode": "levelTwo", "position": 0, - "start": "07:20" + "start": "07:00" }, { - "end": "18:30", - "mode": "levelFour", + "end": "19:00", + "mode": "levelThree", "position": 1, - "start": "17:00" + "start": "09:00" }, { - "end": "21:30", + "end": "22:00", "mode": "levelTwo", "position": 2, - "start": "18:30" - }, - { - "end": "17:00", - "mode": "levelTwo", - "position": 3, - "start": "08:20" + "start": "19:00" } ], "sat": [ { "end": "09:00", - "mode": "levelFour", + "mode": "levelTwo", "position": 0, - "start": "08:30" + "start": "07:00" }, { - "end": "18:30", - "mode": "levelFour", + "end": "19:00", + "mode": "levelThree", "position": 1, - "start": "17:00" + "start": "09:00" }, { - "end": "21:30", + "end": "22:00", "mode": "levelTwo", "position": 2, - "start": "18:30" - }, - { - "end": "17:00", - "mode": "levelThree", - "position": 3, - "start": "10:00" + "start": "19:00" } ], "sun": [ { "end": "09:00", - "mode": "levelFour", + "mode": "levelTwo", "position": 0, - "start": "08:30" + "start": "07:00" }, { - "end": "18:30", - "mode": "levelFour", + "end": "19:00", + "mode": "levelThree", "position": 1, - "start": "17:00" + "start": "09:00" }, { - "end": "21:30", + "end": "22:00", "mode": "levelTwo", "position": 2, - "start": "18:30" - }, - { - "end": "17:00", - "mode": "levelThree", - "position": 3, - "start": "10:00" + "start": "19:00" } ], "thu": [ { - "end": "08:10", - "mode": "levelFour", + "end": "09:00", + "mode": "levelTwo", "position": 0, - "start": "07:20" + "start": "07:00" }, { - "end": "18:30", - "mode": "levelFour", + "end": "19:00", + "mode": "levelThree", "position": 1, - "start": "17:00" + "start": "09:00" }, { - "end": "21:30", + "end": "22:00", "mode": "levelTwo", "position": 2, - "start": "18:30" - }, - { - "end": "17:00", - "mode": "levelTwo", - "position": 3, - "start": "08:20" + "start": "19:00" } ], "tue": [ { - "end": "08:10", - "mode": "levelFour", + "end": "09:00", + "mode": "levelTwo", "position": 0, - "start": "07:20" + "start": "07:00" }, { - "end": "18:30", - "mode": "levelFour", + "end": "19:00", + "mode": "levelThree", "position": 1, - "start": "17:00" + "start": "09:00" }, { - "end": "21:30", + "end": "22:00", "mode": "levelTwo", "position": 2, - "start": "18:30" - }, - { - "end": "17:00", - "mode": "levelThree", - "position": 3, - "start": "08:20" + "start": "19:00" } ], "wed": [ { - "end": "08:10", - "mode": "levelFour", + "end": "09:00", + "mode": "levelTwo", "position": 0, - "start": "07:20" + "start": "07:00" }, { - "end": "18:30", - "mode": "levelFour", + "end": "19:00", + "mode": "levelThree", "position": 1, - "start": "17:00" + "start": "09:00" }, { - "end": "21:30", + "end": "22:00", "mode": "levelTwo", "position": 2, - "start": "18:30" - }, - { - "end": "17:00", - "mode": "levelTwo", - "position": 3, - "start": "08:20" + "start": "19:00" } ] } } }, - "timestamp": "2024-11-07T02:31:11.736Z", - "uri": "https://api.viessmann-climatesolutions.com/iot/v1/features/installations/#######/gateways/################/devices/################/features/ventilation.schedule" + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.actuator.selftest", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "enabled": { + "type": "boolean", + "value": false + }, + "status": { + "type": "string", + "value": "standby" + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.actuator.selftest" + }, + { + "apiVersion": 1, + "commands": {}, + "deprecated": { + "info": "replaced by ventilation.airQuality.abstract", + "removalDate": "2024-09-15" + }, + "deviceId": "0", + "feature": "ventilation.sensors.airQuality", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "", + "value": 0 + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.airQuality" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.humidity.exhaust", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 80 + } + }, + "timestamp": "2026-02-15T20:36:10.499Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.humidity.exhaust" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.humidity.extract", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 57 + } + }, + "timestamp": "2026-02-15T20:34:26.358Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.humidity.extract" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.humidity.outdoor", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 64 + } + }, + "timestamp": "2026-02-15T20:35:33.870Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.humidity.outdoor" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.humidity.supply", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 63 + } + }, + "timestamp": "2026-02-15T20:35:23.557Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.humidity.supply" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.temperature.exhaust", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 7.5 + } + }, + "timestamp": "2026-02-15T20:36:02.448Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.temperature.exhaust" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.temperature.extract", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 20.5 + } + }, + "timestamp": "2026-02-15T20:34:17.370Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.temperature.extract" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.temperature.outside", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 2.1 + } + }, + "timestamp": "2026-02-15T20:18:28.921Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.temperature.outside" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.temperature.supply", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 16.3 + } + }, + "timestamp": "2026-02-15T18:47:49.636Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.temperature.supply" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.switchActivation", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2026-02-14T05:59:18.868Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.switchActivation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.volumeFlow.current.input", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "cubicMeter/hour", + "value": 200 + } + }, + "timestamp": "2026-02-15T20:36:06.354Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.volumeFlow.current.input" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.volumeFlow.current.output", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "number", + "unit": "cubicMeter/hour", + "value": 192 + } + }, + "timestamp": "2026-02-15T20:33:34.650Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.volumeFlow.current.output" } - ] + ], + "device": { + "id": "0", + "modelId": "E3_ViAir_300F_13", + "roles": [ + "capability:consumptionReport;electric", + "type:E3", + "type:brand;Viessmann", + "type:businessDomain;ventilation", + "type:gatewayConfiguration", + "type:product;ViAir_300", + "type:product;ViAir_FS", + "type:productFamily;ViAir", + "type:ventilation;central" + ], + "status": "Online", + "type": "ventilation" + } } diff --git a/tests/test_TestForMissingProperties.py b/tests/test_TestForMissingProperties.py index c6fa396f..387596e7 100644 --- a/tests/test_TestForMissingProperties.py +++ b/tests/test_TestForMissingProperties.py @@ -244,6 +244,37 @@ def test_missingProperties(self): 'ventilation.quickmodes.comfort', 'ventilation.quickmodes.eco', 'ventilation.quickmodes.holiday', + # additional ventilation features seen in VitoairFs300E.json + 'device.commissioning.information', + 'ventilation.air.balance.offset', + 'ventilation.airQuality.co', + 'ventilation.airQuality.co2', + 'ventilation.airQuality.organicComponents', + 'ventilation.airQuality.pm10', + 'ventilation.airQuality.pm2d5', + 'ventilation.airQuality.temperature', + 'ventilation.bypass', + 'ventilation.bypass.configuration.temperature.perceived', + 'ventilation.bypass.configuration.temperature.supply.dynamicRegulation', + 'ventilation.bypass.configuration.temperature.supply.smoothRegulation', + 'ventilation.bypass.operating.modes.active', + 'ventilation.bypass.operating.modes.automatic', + 'ventilation.bypass.operating.modes.open', + 'ventilation.bypass.position', + 'ventilation.external.lock', + 'ventilation.fan.assignmentSwitch', + 'ventilation.fan.exhaust', + 'ventilation.fan.exhaust.runtime', + 'ventilation.features.co', + 'ventilation.features.co2', + 'ventilation.features.dust', + 'ventilation.features.finedust', + 'ventilation.features.organicComponent', + 'ventilation.filter.information', + 'ventilation.lockExternal', + 'ventilation.quickmodes.temporaryShutdown', + 'ventilation.sensors.actuator.selftest', + 'ventilation.switchActivation', # energy system - not yet used 'device.etn', diff --git a/tests/test_VitoairFs300E.py b/tests/test_VitoairFs300E.py index 5ce84cfb..96de3ae4 100644 --- a/tests/test_VitoairFs300E.py +++ b/tests/test_VitoairFs300E.py @@ -22,14 +22,14 @@ def test_getActiveVentilationMode(self): self.assertEqual(self.device.getActiveVentilationMode(), "sensorOverride") def test_getActiveVentilationProgram(self): - self.assertEqual(self.device.getActiveVentilationProgram(), "levelFour") + self.assertEqual(self.device.getActiveVentilationProgram(), "levelTwo") def test_getVentilationModes(self): expected_modes = ['permanent', 'ventilation', 'sensorOverride', 'sensorDriven'] self.assertListEqual(self.device.getVentilationModes(), expected_modes) def test_getVentilationPrograms(self): - expected_programs = ['standby'] + expected_programs = ['active'] self.assertListEqual(self.device.getVentilationPrograms(), expected_programs) def test_getVentilationLevels(self): @@ -56,14 +56,29 @@ def test_ventilationQuickmodes(self): "silent", ]) + def test_getExhaustTemperature(self): + self.assertEqual(self.device.getExhaustTemperature(), 7.5) + + def test_getExtractTemperature(self): + self.assertEqual(self.device.getExtractTemperature(), 20.5) + + def test_getExhaustHumidity(self): + self.assertEqual(self.device.getExhaustHumidity(), 80) + + def test_getExtractHumidity(self): + self.assertEqual(self.device.getExtractHumidity(), 57) + + def test_getHeatRecoveryEfficiency(self): + self.assertEqual(self.device.getHeatRecoveryEfficiency(), 77.0) + def test_getConfiguredLevelOneVolumeFlow(self): - self.assertEqual(self.device.getConfiguredLevelOneVolumeFlow(), 55) + self.assertEqual(self.device.getConfiguredLevelOneVolumeFlow(), 140) def test_getConfiguredLevelTwoVolumeFlow(self): - self.assertEqual(self.device.getConfiguredLevelTwoVolumeFlow(), 129) + self.assertEqual(self.device.getConfiguredLevelTwoVolumeFlow(), 200) def test_getConfiguredLevelThreeVolumeFlow(self): - self.assertEqual(self.device.getConfiguredLevelThreeVolumeFlow(), 185) + self.assertEqual(self.device.getConfiguredLevelThreeVolumeFlow(), 260) def test_getConfiguredLevelFourVolumeFlow(self): - self.assertEqual(self.device.getConfiguredLevelFourVolumeFlow(), 240) + self.assertEqual(self.device.getConfiguredLevelFourVolumeFlow(), 275)