diff --git a/homeassistant/components/vicare/binary_sensor.py b/homeassistant/components/vicare/binary_sensor.py index f1fe7d45754..940b27a4bc8 100644 --- a/homeassistant/components/vicare/binary_sensor.py +++ b/homeassistant/components/vicare/binary_sensor.py @@ -144,6 +144,11 @@ GLOBAL_SENSORS: tuple[ViCareBinarySensorEntityDescription, ...] = ( device_class=BinarySensorDeviceClass.DOOR, value_getter=lambda api: api.isValveOpen(), ), + ViCareBinarySensorEntityDescription( + key="ventilation_frost_protection", + translation_key="ventilation_frost_protection", + value_getter=lambda api: api.getHeatExchangerFrostProtectionActive(), + ), ) diff --git a/homeassistant/components/vicare/icons.json b/homeassistant/components/vicare/icons.json index 2fa5a42c10c..bafcac80c39 100644 --- a/homeassistant/components/vicare/icons.json +++ b/homeassistant/components/vicare/icons.json @@ -16,6 +16,15 @@ "domestic_hot_water_pump": { "default": "mdi:pump" }, + "filter_hours": { + "default": "mdi:counter" + }, + "filter_overdue_hours": { + "default": "mdi:counter" + }, + "filter_remaining_hours": { + "default": "mdi:counter" + }, "frost_protection": { "default": "mdi:snowflake" }, @@ -28,6 +37,12 @@ "solar_pump": { "default": "mdi:pump" }, + "supply_fan_hours": { + "default": "mdi:counter" + }, + "supply_fan_speed": { + "default": "mdi:rotate-right" + }, "valve": { "default": "mdi:pipe-valve" } @@ -101,6 +116,12 @@ "ess_state_of_charge": { "default": "mdi:home-battery" }, + "heating_rod_hours": { + "default": "mdi:counter" + }, + "heating_rod_starts": { + "default": "mdi:counter" + }, "pcc_energy_consumption": { "default": "mdi:transmission-tower-export" }, @@ -116,9 +137,15 @@ "valve_position": { "default": "mdi:pipe-valve" }, + "ventilation_input_volumeflow": { + "default": "mdi:air-filter" + }, "ventilation_level": { "default": "mdi:fan" }, + "ventilation_output_volumeflow": { + "default": "mdi:air-filter" + }, "volumetric_flow": { "default": "mdi:gauge" }, diff --git a/homeassistant/components/vicare/sensor.py b/homeassistant/components/vicare/sensor.py index ca204ff47a5..20b9809e43d 100644 --- a/homeassistant/components/vicare/sensor.py +++ b/homeassistant/components/vicare/sensor.py @@ -26,7 +26,9 @@ from homeassistant.components.sensor import ( SensorStateClass, ) from homeassistant.const import ( + CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, PERCENTAGE, + REVOLUTIONS_PER_MINUTE, EntityCategory, UnitOfEnergy, UnitOfMass, @@ -111,6 +113,14 @@ GLOBAL_SENSORS: tuple[ViCareSensorEntityDescription, ...] = ( device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, ), + ViCareSensorEntityDescription( + key="outside_humidity", + translation_key="outside_humidity", + native_unit_of_measurement=PERCENTAGE, + value_getter=lambda api: api.getOutsideHumidity(), + device_class=SensorDeviceClass.HUMIDITY, + state_class=SensorStateClass.MEASUREMENT, + ), ViCareSensorEntityDescription( key="return_temperature", translation_key="return_temperature", @@ -992,6 +1002,101 @@ GLOBAL_SENSORS: tuple[ViCareSensorEntityDescription, ...] = ( value_getter=lambda api: api.getHydraulicSeparatorTemperature(), ), SUPPLY_TEMPERATURE_SENSOR, + ViCareSensorEntityDescription( + key="supply_humidity", + translation_key="supply_humidity", + device_class=SensorDeviceClass.HUMIDITY, + native_unit_of_measurement=PERCENTAGE, + state_class=SensorStateClass.MEASUREMENT, + value_getter=lambda api: api.getSupplyHumidity(), + ), + ViCareSensorEntityDescription( + key="supply_fan_hours", + translation_key="supply_fan_hours", + native_unit_of_measurement=UnitOfTime.HOURS, + value_getter=lambda api: api.getSupplyFanHours(), + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.TOTAL_INCREASING, + entity_registry_enabled_default=False, + ), + ViCareSensorEntityDescription( + key="supply_fan_speed", + translation_key="supply_fan_speed", + native_unit_of_measurement=REVOLUTIONS_PER_MINUTE, + value_getter=lambda api: api.getSupplyFanSpeed(), + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.MEASUREMENT, + entity_registry_enabled_default=False, + ), + ViCareSensorEntityDescription( + key="filter_hours", + translation_key="filter_hours", + native_unit_of_measurement=UnitOfTime.HOURS, + value_getter=lambda api: api.getFilterHours(), + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.TOTAL_INCREASING, + entity_registry_enabled_default=False, + ), + ViCareSensorEntityDescription( + key="filter_remaining_hours", + translation_key="filter_remaining_hours", + native_unit_of_measurement=UnitOfTime.HOURS, + value_getter=lambda api: api.getFilterRemainingHours(), + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.TOTAL_INCREASING, + entity_registry_enabled_default=False, + ), + ViCareSensorEntityDescription( + key="filter_overdue_hours", + translation_key="filter_overdue_hours", + native_unit_of_measurement=UnitOfTime.HOURS, + value_getter=lambda api: api.getFilterOverdueHours(), + entity_category=EntityCategory.DIAGNOSTIC, + state_class=SensorStateClass.TOTAL_INCREASING, + entity_registry_enabled_default=False, + ), + ViCareSensorEntityDescription( + key="pm01", + device_class=SensorDeviceClass.PM1, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + state_class=SensorStateClass.MEASUREMENT, + value_getter=lambda api: api.getAirborneDustPM1(), + ), + ViCareSensorEntityDescription( + key="pm02", + device_class=SensorDeviceClass.PM25, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + state_class=SensorStateClass.MEASUREMENT, + value_getter=lambda api: api.getAirborneDustPM2d5(), + ), + ViCareSensorEntityDescription( + key="pm04", + device_class=SensorDeviceClass.PM4, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + state_class=SensorStateClass.MEASUREMENT, + value_getter=lambda api: api.getAirborneDustPM4(), + ), + ViCareSensorEntityDescription( + key="pm10", + device_class=SensorDeviceClass.PM10, + native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, + state_class=SensorStateClass.MEASUREMENT, + value_getter=lambda api: api.getAirborneDustPM10(), + ), + ViCareSensorEntityDescription( + key="ventilation_input_volumeflow", + translation_key="ventilation_input_volumeflow", + native_unit_of_measurement=UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR, + value_getter=lambda api: api.getSupplyVolumeFlow(), + state_class=SensorStateClass.MEASUREMENT, + ), + ViCareSensorEntityDescription( + key="ventilation_output_volumeflow", + translation_key="ventilation_output_volumeflow", + native_unit_of_measurement=UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR, + value_getter=lambda api: api.getExhaustVolumeFlow(), + state_class=SensorStateClass.MEASUREMENT, + ), ) CIRCUIT_SENSORS: tuple[ViCareSensorEntityDescription, ...] = ( diff --git a/homeassistant/components/vicare/strings.json b/homeassistant/components/vicare/strings.json index 17eed6fae98..eedd560da49 100644 --- a/homeassistant/components/vicare/strings.json +++ b/homeassistant/components/vicare/strings.json @@ -78,6 +78,9 @@ }, "valve": { "name": "Valve" + }, + "ventilation_frost_protection": { + "name": "Ventilation frost protection" } }, "button": { @@ -303,6 +306,15 @@ "standby": "[%key:common::state::standby%]" } }, + "filter_hours": { + "name": "Filter hours" + }, + "filter_overdue_hours": { + "name": "Filter overdue hours" + }, + "filter_remaining_hours": { + "name": "Filter remaining hours" + }, "fuel_need": { "name": "Fuel need" }, @@ -396,6 +408,9 @@ "hydraulic_separator_temperature": { "name": "Hydraulic separator temperature" }, + "outside_humidity": { + "name": "Outside humidity" + }, "outside_temperature": { "name": "Outside temperature" }, @@ -499,6 +514,15 @@ "spf_total": { "name": "Seasonal performance factor" }, + "supply_fan_hours": { + "name": "Supply fan hours" + }, + "supply_fan_speed": { + "name": "Supply fan speed" + }, + "supply_humidity": { + "name": "Supply humidity" + }, "supply_pressure": { "name": "Supply pressure" }, @@ -508,6 +532,9 @@ "valve_position": { "name": "Valve position" }, + "ventilation_input_volumeflow": { + "name": "Ventilation input volume flow" + }, "ventilation_level": { "name": "Ventilation level", "state": { @@ -518,6 +545,9 @@ "standby": "[%key:common::state::standby%]" } }, + "ventilation_output_volumeflow": { + "name": "Ventilation output volume flow" + }, "ventilation_reason": { "name": "Ventilation reason", "state": { diff --git a/tests/components/vicare/fixtures/VitoPure.json b/tests/components/vicare/fixtures/VitoPure.json index 1e1cdef97ec..2b935d5923c 100644 --- a/tests/components/vicare/fixtures/VitoPure.json +++ b/tests/components/vicare/fixtures/VitoPure.json @@ -4,358 +4,52 @@ "apiVersion": 1, "commands": {}, "deviceId": "0", - "feature": "ventilation", + "feature": "device.messages.info.raw", "gatewayId": "################", "isEnabled": true, "isReady": true, "properties": { - "active": { - "type": "boolean", - "value": true + "entries": { + "type": "array", + "value": [] } }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation" + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.messages.info.raw" }, { "apiVersion": 1, "commands": {}, "deviceId": "0", - "feature": "ventilation.levels.levelFour", + "feature": "device.messages.service.raw", "gatewayId": "################", - "isEnabled": false, + "isEnabled": true, "isReady": true, - "properties": {}, - "timestamp": "2024-12-17T08:16:15.525Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelFour" + "properties": { + "entries": { + "type": "array", + "value": [] + } + }, + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.messages.service.raw" }, { "apiVersion": 1, "commands": {}, "deviceId": "0", - "feature": "ventilation.levels.levelOne", - "gatewayId": "################", - "isEnabled": false, - "isReady": true, - "properties": {}, - "timestamp": "2024-12-17T08:16:15.525Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelOne" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "0", - "feature": "ventilation.levels.levelThree", - "gatewayId": "################", - "isEnabled": false, - "isReady": true, - "properties": {}, - "timestamp": "2024-12-17T08:16:15.525Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelThree" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "0", - "feature": "ventilation.levels.levelTwo", - "gatewayId": "################", - "isEnabled": false, - "isReady": true, - "properties": {}, - "timestamp": "2024-12-17T08:16:15.525Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.levels.levelTwo" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "0", - "feature": "ventilation.operating.modes.filterChange", + "feature": "device.messages.status.raw", "gatewayId": "################", "isEnabled": true, "isReady": true, "properties": { - "active": { - "type": "boolean", - "value": false + "entries": { + "type": "array", + "value": [] } }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.filterChange" - }, - { - "apiVersion": 1, - "commands": { - "setLevel": { - "isExecutable": true, - "name": "setLevel", - "params": { - "level": { - "constraints": { - "enum": ["levelOne", "levelTwo", "levelThree", "levelFour"] - }, - "required": true, - "type": "string" - } - }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.permanent/commands/setLevel" - } - }, - "deviceId": "0", - "feature": "ventilation.operating.modes.permanent", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - } - }, - "timestamp": "2024-12-17T13:24:03.411Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.permanent" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "0", - "feature": "ventilation.operating.modes.sensorDriven", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": true - } - }, - "timestamp": "2024-12-17T08:16:15.525Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.sensorDriven" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "0", - "feature": "ventilation.operating.modes.ventilation", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - } - }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.ventilation" - }, - { - "apiVersion": 1, - "commands": {}, - "deviceId": "0", - "feature": "ventilation.operating.programs.active", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "value": { - "type": "string", - "value": "levelTwo" - } - }, - "timestamp": "2024-12-17T13:24:03.411Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.programs.active" - }, - { - "apiVersion": 1, - "commands": { - "activate": { - "isExecutable": true, - "name": "activate", - "params": { - "timeout": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": false, - "type": "number" - } - }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/activate" - }, - "deactivate": { - "isExecutable": true, - "name": "deactivate", - "params": {}, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/deactivate" - }, - "setDefaultRuntime": { - "isExecutable": true, - "name": "setDefaultRuntime", - "params": { - "defaultRuntime": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": true, - "type": "number" - } - }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/setDefaultRuntime" - }, - "setTimeout": { - "isExecutable": true, - "name": "setTimeout", - "params": { - "timeout": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": true, - "type": "number" - } - }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/setTimeout" - } - }, - "deviceId": "0", - "feature": "ventilation.quickmodes.forcedLevelFour", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - }, - "defaultRuntime": { - "type": "number", - "unit": "minutes", - "value": 30 - }, - "isActiveWritable": { - "type": "boolean", - "value": true - } - }, - "timestamp": "2024-12-17T13:24:04.515Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour" - }, - { - "apiVersion": 1, - "commands": { - "activate": { - "isExecutable": true, - "name": "activate", - "params": { - "timeout": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": false, - "type": "number" - } - }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/activate" - }, - "deactivate": { - "isExecutable": true, - "name": "deactivate", - "params": {}, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/deactivate" - }, - "setDefaultRuntime": { - "isExecutable": true, - "name": "setDefaultRuntime", - "params": { - "defaultRuntime": { - "constraints": { - "max": 1440, - "min": 1, - "stepping": 1 - }, - "required": true, - "type": "number" - } - }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/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.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/setTimeout" - } - }, - "deviceId": "0", - "feature": "ventilation.quickmodes.silent", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": false - }, - "defaultRuntime": { - "type": "number", - "unit": "minutes", - "value": 30 - }, - "isActiveWritable": { - "type": "boolean", - "value": true - } - }, - "timestamp": "2024-12-17T13:24:04.515Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent" - }, - { - "apiVersion": 1, - "commands": { - "activate": { - "isExecutable": true, - "name": "activate", - "params": {}, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.standby/commands/activate" - }, - "deactivate": { - "isExecutable": true, - "name": "deactivate", - "params": {}, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.standby/commands/deactivate" - } - }, - "deviceId": "0", - "feature": "ventilation.quickmodes.standby", - "gatewayId": "################", - "isEnabled": true, - "isReady": true, - "properties": { - "active": { - "type": "boolean", - "value": true - } - }, - "timestamp": "2024-12-17T13:24:04.515Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.standby" + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.messages.status.raw" }, { "apiVersion": 1, @@ -376,25 +70,20 @@ } } }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/device.productIdentification" + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.productIdentification" }, { "apiVersion": 1, "commands": {}, "deviceId": "0", - "feature": "device.messages.errors.raw", + "feature": "device.setDefaultValues", "gatewayId": "################", "isEnabled": true, "isReady": true, - "properties": { - "entries": { - "type": "array", - "value": [] - } - }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/device.messages.errors.raw" + "properties": {}, + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.setDefaultValues" }, { "apiVersion": 1, @@ -418,13 +107,13 @@ "type": "string" } }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/device.time.daylightSaving/commands/activate" + "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.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/device.time.daylightSaving/commands/deactivate" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.time.daylightSaving/commands/deactivate" } }, "deviceId": "0", @@ -438,8 +127,25 @@ "value": false } }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/device.time.daylightSaving" + "timestamp": "2025-11-03T11:07:19.646Z", + "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": "Vitopure350" + } + }, + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/device.variant" }, { "apiVersion": 1, @@ -455,12 +161,43 @@ "value": "################" } }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/heating.boiler.serial" + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/heating.boiler.serial" + }, + { + "apiVersion": 1, + "commands": { + "setTime": { + "isExecutable": true, + "name": "setTime", + "params": { + "value": { + "constraints": { + "regEx": "^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])$" + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/heating.device.time/commands/setTime" + } + }, + "deviceId": "0", + "feature": "heating.device.time", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": {}, + "timestamp": "2025-11-05T07:52:28.632Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/heating.device.time" }, { "apiVersion": 1, "commands": {}, + "deprecated": { + "info": "replaced by device.variant", + "removalDate": "2025-03-15" + }, "deviceId": "0", "feature": "heating.device.variant", "gatewayId": "################", @@ -472,8 +209,215 @@ "value": "Vitopure350" } }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/heating.device.variant" + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/heating.device.variant" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "tcu.wifi", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "strength": { + "type": "number", + "unit": "", + "value": -41 + } + }, + "timestamp": "2025-11-05T07:55:06.737Z", + "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": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.control.filterChange", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.control.filterChange" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.fan.supply", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "current": { + "type": "number", + "unit": "rotationPerMinute", + "value": 555 + }, + "status": { + "type": "string", + "value": "connected" + }, + "target": { + "type": "number", + "unit": "rotationPerMinute", + "value": 585 + } + }, + "timestamp": "2025-11-05T07:54:56.887Z", + "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": 819 + } + }, + "timestamp": "2025-11-05T07:20:49.877Z", + "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": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-11-03T11:07:19.646Z", + "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": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-11-03T11:07:19.646Z", + "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": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-11-03T11:07:19.646Z", + "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": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-11-03T11:07:19.646Z", + "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": false, + "isReady": true, + "properties": {}, + "timestamp": "2025-11-03T11:07:19.646Z", + "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.pollution.blocked", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 5 + } + }, + "timestamp": "2025-11-03T11:07:19.646Z", + "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": 5795 + }, + "overdueHours": { + "type": "number", + "unit": "hours", + "value": 0 + }, + "remainingHours": { + "type": "number", + "unit": "hours", + "value": 2965 + } + }, + "timestamp": "2025-11-05T07:37:23.452Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.filter.runtime" }, { "apiVersion": 1, @@ -490,13 +434,13 @@ "type": "string" } }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/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": false, "name": "setModeContinuousSensorOverride", "params": {}, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/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": "0", @@ -510,8 +454,108 @@ "value": "sensorDriven" } }, - "timestamp": "2024-12-17T08:16:15.525Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.active" + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.active" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.operating.modes.filterChange", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.filterChange" + }, + { + "apiVersion": 1, + "commands": { + "setLevel": { + "isExecutable": true, + "name": "setLevel", + "params": { + "level": { + "constraints": { + "enum": ["levelOne", "levelTwo", "levelThree", "levelFour"] + }, + "required": true, + "type": "string" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.permanent/commands/setLevel" + } + }, + "deviceId": "0", + "feature": "ventilation.operating.modes.permanent", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-11-04T22:45:12.663Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.permanent" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.operating.modes.sensorDriven", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.sensorDriven" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.operating.modes.ventilation", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.modes.ventilation" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.operating.programs.active", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "value": { + "type": "string", + "value": "levelTwo" + } + }, + "timestamp": "2025-11-04T22:45:12.663Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.programs.active" }, { "apiVersion": 1, @@ -532,20 +576,224 @@ }, "reason": { "type": "string", - "value": "standby" + "value": "sensorDriven" } }, - "timestamp": "2024-12-17T13:24:04.515Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.state" + "timestamp": "2025-11-04T22:45:13.754Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.operating.state" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "timeout": { + "constraints": { + "max": 1440, + "min": 1, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/deactivate" + }, + "setDefaultRuntime": { + "isExecutable": true, + "name": "setDefaultRuntime", + "params": { + "defaultRuntime": { + "constraints": { + "max": 1440, + "min": 1, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/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/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour/commands/setTimeout" + } + }, + "deviceId": "0", + "feature": "ventilation.quickmodes.forcedLevelFour", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "defaultRuntime": { + "type": "number", + "unit": "minutes", + "value": 30 + }, + "isCommandExecutable": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2025-11-04T22:45:12.663Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.forcedLevelFour" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": { + "timeout": { + "constraints": { + "max": 1440, + "min": 1, + "stepping": 1 + }, + "required": false, + "type": "number" + } + }, + "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/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/deactivate" + }, + "setDefaultRuntime": { + "isExecutable": true, + "name": "setDefaultRuntime", + "params": { + "defaultRuntime": { + "constraints": { + "max": 1440, + "min": 1, + "stepping": 1 + }, + "required": true, + "type": "number" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/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/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent/commands/setTimeout" + } + }, + "deviceId": "0", + "feature": "ventilation.quickmodes.silent", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + }, + "defaultRuntime": { + "type": "number", + "unit": "minutes", + "value": 30 + }, + "isCommandExecutable": { + "type": "boolean", + "value": true + } + }, + "timestamp": "2025-11-04T22:45:12.663Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.silent" + }, + { + "apiVersion": 1, + "commands": { + "activate": { + "isExecutable": true, + "name": "activate", + "params": {}, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.standby/commands/activate" + }, + "deactivate": { + "isExecutable": true, + "name": "deactivate", + "params": {}, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.standby/commands/deactivate" + }, + "setActive": { + "isExecutable": true, + "name": "setActive", + "params": { + "active": { + "constraints": {}, + "required": true, + "type": "boolean" + } + }, + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.standby/commands/setActive" + } + }, + "deviceId": "0", + "feature": "ventilation.quickmodes.standby", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "active": { + "type": "boolean", + "value": false + } + }, + "timestamp": "2025-11-04T21:27:15.790Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.quickmodes.standby" }, { "apiVersion": 1, "commands": { "resetSchedule": { - "isExecutable": false, + "isExecutable": true, "name": "resetSchedule", "params": {}, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/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, @@ -563,7 +811,7 @@ "type": "Schedule" } }, - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.schedule/commands/setSchedule" + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.schedule/commands/setSchedule" } }, "deviceId": "0", @@ -638,8 +886,188 @@ } } }, - "timestamp": "2024-12-17T07:50:28.062Z", - "uri": "https://api.viessmann.com/iot/v1/features/installations/#######/gateways/################/devices/0/features/ventilation.schedule" + "timestamp": "2025-11-03T11:07:19.646Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.schedule" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.airBorneDust.pm1", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "microgrammsPerCubicMeter", + "value": 0.1 + } + }, + "timestamp": "2025-11-05T07:37:37.153Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.airBorneDust.pm1" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.airBorneDust.pm10", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "microgrammsPerCubicMeter", + "value": 0.5 + } + }, + "timestamp": "2025-11-05T07:51:36.966Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.airBorneDust.pm10" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.airBorneDust.pm2d5", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "microgrammsPerCubicMeter", + "value": 0.3 + } + }, + "timestamp": "2025-11-05T07:46:52.511Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.airBorneDust.pm2d5" + }, + { + "apiVersion": 1, + "commands": {}, + "deviceId": "0", + "feature": "ventilation.sensors.airBorneDust.pm4", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "microgrammsPerCubicMeter", + "value": 0.4 + } + }, + "timestamp": "2025-11-05T07:47:07.330Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.airBorneDust.pm4" + }, + { + "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": 49 + } + }, + "timestamp": "2025-11-05T07:34:04.585Z", + "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.supply", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "percent", + "value": 59 + } + }, + "timestamp": "2025-11-05T02:32:43.812Z", + "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.supply", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "celsius", + "value": 20.8 + } + }, + "timestamp": "2025-11-05T07:32:48.488Z", + "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.sensors.volatileOrganicCompounds", + "gatewayId": "################", + "isEnabled": true, + "isReady": true, + "properties": { + "status": { + "type": "string", + "value": "connected" + }, + "value": { + "type": "number", + "unit": "", + "value": 148 + } + }, + "timestamp": "2025-11-05T07:44:08.861Z", + "uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/0/features/ventilation.sensors.volatileOrganicCompounds" } ] } diff --git a/tests/components/vicare/snapshots/test_sensor.ambr b/tests/components/vicare/snapshots/test_sensor.ambr index 1d2ff27bbe2..92229ff4b2a 100644 --- a/tests/components/vicare/snapshots/test_sensor.ambr +++ b/tests/components/vicare/snapshots/test_sensor.ambr @@ -1122,6 +1122,114 @@ 'state': '25.5', }) # --- +# name: test_all_entities[sensor.model10_signal_strength-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.model10_signal_strength', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Signal strength', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'zigbee_signal_strength', + 'unique_id': 'gateway10_zigbee_################-zigbee_signal_strength', + 'unit_of_measurement': '%', + }) +# --- +# name: test_all_entities[sensor.model10_signal_strength-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'model10 Signal strength', + 'state_class': , + 'unit_of_measurement': '%', + }), + 'context': , + 'entity_id': 'sensor.model10_signal_strength', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '37', + }) +# --- +# name: test_all_entities[sensor.model10_supply_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model10_supply_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 1, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Supply temperature', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'supply_temperature', + 'unique_id': 'gateway10_zigbee_################-supply_temperature', + 'unit_of_measurement': , + }) +# --- +# name: test_all_entities[sensor.model10_supply_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'model10 Supply temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.model10_supply_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '31.0', + }) +# --- # name: test_all_entities[sensor.model1_boiler_supply_temperature-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -2831,7 +2939,718 @@ 'state': 'permanent', }) # --- -# name: test_all_entities[sensor.model3_battery_charge_total-entry] +# name: test_all_entities[sensor.model3_filter_hours-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.model3_filter_hours', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Filter hours', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'filter_hours', + 'unique_id': 'gateway3_deviceId3-filter_hours', + 'unit_of_measurement': , + }) +# --- +# name: test_all_entities[sensor.model3_filter_hours-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'model3 Filter hours', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.model3_filter_hours', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '5795', + }) +# --- +# name: test_all_entities[sensor.model3_filter_overdue_hours-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.model3_filter_overdue_hours', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Filter overdue hours', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'filter_overdue_hours', + 'unique_id': 'gateway3_deviceId3-filter_overdue_hours', + 'unit_of_measurement': , + }) +# --- +# name: test_all_entities[sensor.model3_filter_overdue_hours-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'model3 Filter overdue hours', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.model3_filter_overdue_hours', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '0', + }) +# --- +# name: test_all_entities[sensor.model3_filter_remaining_hours-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.model3_filter_remaining_hours', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Filter remaining hours', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'filter_remaining_hours', + 'unique_id': 'gateway3_deviceId3-filter_remaining_hours', + 'unit_of_measurement': , + }) +# --- +# name: test_all_entities[sensor.model3_filter_remaining_hours-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'model3 Filter remaining hours', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.model3_filter_remaining_hours', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2965', + }) +# --- +# name: test_all_entities[sensor.model3_pm1-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model3_pm1', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'PM1', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': 'gateway3_deviceId3-pm01', + 'unit_of_measurement': 'μg/m³', + }) +# --- +# name: test_all_entities[sensor.model3_pm1-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'pm1', + 'friendly_name': 'model3 PM1', + 'state_class': , + 'unit_of_measurement': 'μg/m³', + }), + 'context': , + 'entity_id': 'sensor.model3_pm1', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '0.1', + }) +# --- +# name: test_all_entities[sensor.model3_pm10-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model3_pm10', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'PM10', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': 'gateway3_deviceId3-pm10', + 'unit_of_measurement': 'μg/m³', + }) +# --- +# name: test_all_entities[sensor.model3_pm10-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'pm10', + 'friendly_name': 'model3 PM10', + 'state_class': , + 'unit_of_measurement': 'μg/m³', + }), + 'context': , + 'entity_id': 'sensor.model3_pm10', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '0.5', + }) +# --- +# name: test_all_entities[sensor.model3_pm2_5-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model3_pm2_5', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'PM2.5', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': 'gateway3_deviceId3-pm02', + 'unit_of_measurement': 'μg/m³', + }) +# --- +# name: test_all_entities[sensor.model3_pm2_5-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'pm25', + 'friendly_name': 'model3 PM2.5', + 'state_class': , + 'unit_of_measurement': 'μg/m³', + }), + 'context': , + 'entity_id': 'sensor.model3_pm2_5', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '0.3', + }) +# --- +# name: test_all_entities[sensor.model3_pm4-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model3_pm4', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'PM4', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': 'gateway3_deviceId3-pm04', + 'unit_of_measurement': 'μg/m³', + }) +# --- +# name: test_all_entities[sensor.model3_pm4-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'pm4', + 'friendly_name': 'model3 PM4', + 'state_class': , + 'unit_of_measurement': 'μg/m³', + }), + 'context': , + 'entity_id': 'sensor.model3_pm4', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '0.4', + }) +# --- +# name: test_all_entities[sensor.model3_supply_fan_hours-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.model3_supply_fan_hours', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Supply fan hours', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'supply_fan_hours', + 'unique_id': 'gateway3_deviceId3-supply_fan_hours', + 'unit_of_measurement': , + }) +# --- +# name: test_all_entities[sensor.model3_supply_fan_hours-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'model3 Supply fan hours', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.model3_supply_fan_hours', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '819', + }) +# --- +# name: test_all_entities[sensor.model3_supply_fan_speed-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.model3_supply_fan_speed', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Supply fan speed', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'supply_fan_speed', + 'unique_id': 'gateway3_deviceId3-supply_fan_speed', + 'unit_of_measurement': 'rpm', + }) +# --- +# name: test_all_entities[sensor.model3_supply_fan_speed-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'model3 Supply fan speed', + 'state_class': , + 'unit_of_measurement': 'rpm', + }), + 'context': , + 'entity_id': 'sensor.model3_supply_fan_speed', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '555', + }) +# --- +# name: test_all_entities[sensor.model3_supply_humidity-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model3_supply_humidity', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Supply humidity', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'supply_humidity', + 'unique_id': 'gateway3_deviceId3-supply_humidity', + 'unit_of_measurement': '%', + }) +# --- +# name: test_all_entities[sensor.model3_supply_humidity-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'humidity', + 'friendly_name': 'model3 Supply humidity', + 'state_class': , + 'unit_of_measurement': '%', + }), + 'context': , + 'entity_id': 'sensor.model3_supply_humidity', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '59', + }) +# --- +# name: test_all_entities[sensor.model3_supply_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model3_supply_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 1, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Supply temperature', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'supply_temperature', + 'unique_id': 'gateway3_deviceId3-supply_temperature', + 'unit_of_measurement': , + }) +# --- +# name: test_all_entities[sensor.model3_supply_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'model3 Supply temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.model3_supply_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '20.8', + }) +# --- +# name: test_all_entities[sensor.model3_ventilation_level-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'standby', + 'levelone', + 'leveltwo', + 'levelthree', + 'levelfour', + ]), + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model3_ventilation_level', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Ventilation level', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'ventilation_level', + 'unique_id': 'gateway3_deviceId3-ventilation_level', + 'unit_of_measurement': None, + }) +# --- +# name: test_all_entities[sensor.model3_ventilation_level-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'model3 Ventilation level', + 'options': list([ + 'standby', + 'levelone', + 'leveltwo', + 'levelthree', + 'levelfour', + ]), + }), + 'context': , + 'entity_id': 'sensor.model3_ventilation_level', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_all_entities[sensor.model3_ventilation_reason-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'standby', + 'permanent', + 'schedule', + 'sensordriven', + 'silent', + 'forcedlevelfour', + ]), + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.model3_ventilation_reason', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Ventilation reason', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'ventilation_reason', + 'unique_id': 'gateway3_deviceId3-ventilation_reason', + 'unit_of_measurement': None, + }) +# --- +# name: test_all_entities[sensor.model3_ventilation_reason-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'model3 Ventilation reason', + 'options': list([ + 'standby', + 'permanent', + 'schedule', + 'sensordriven', + 'silent', + 'forcedlevelfour', + ]), + }), + 'context': , + 'entity_id': 'sensor.model3_ventilation_reason', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'sensordriven', + }) +# --- +# name: test_all_entities[sensor.model4_battery_charge_total-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -2846,7 +3665,7 @@ 'disabled_by': None, 'domain': 'sensor', 'entity_category': None, - 'entity_id': 'sensor.model3_battery_charge_total', + 'entity_id': 'sensor.model4_battery_charge_total', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -2867,27 +3686,27 @@ 'suggested_object_id': None, 'supported_features': 0, 'translation_key': 'ess_charge_total', - 'unique_id': 'gateway3_deviceId3-ess_charge_total', + 'unique_id': 'gateway4_deviceId4-ess_charge_total', 'unit_of_measurement': , }) # --- -# name: test_all_entities[sensor.model3_battery_charge_total-state] +# name: test_all_entities[sensor.model4_battery_charge_total-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'device_class': 'energy', - 'friendly_name': 'model3 Battery charge total', + 'friendly_name': 'model4 Battery charge total', 'state_class': , 'unit_of_measurement': , }), 'context': , - 'entity_id': 'sensor.model3_battery_charge_total', + 'entity_id': 'sensor.model4_battery_charge_total', 'last_changed': , 'last_reported': , 'last_updated': , 'state': '1879163', }) # --- -# name: test_all_entities[sensor.model5_battery-entry] +# name: test_all_entities[sensor.model6_battery-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -2902,7 +3721,7 @@ 'disabled_by': None, 'domain': 'sensor', 'entity_category': , - 'entity_id': 'sensor.model5_battery', + 'entity_id': 'sensor.model6_battery', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -2920,135 +3739,26 @@ 'suggested_object_id': None, 'supported_features': 0, 'translation_key': None, - 'unique_id': 'gateway5_zigbee_d87a3bfffe5d844a-battery_level', + 'unique_id': 'gateway6_zigbee_d87a3bfffe5d844a-battery_level', 'unit_of_measurement': '%', }) # --- -# name: test_all_entities[sensor.model5_battery-state] +# name: test_all_entities[sensor.model6_battery-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'device_class': 'battery', - 'friendly_name': 'model5 Battery', + 'friendly_name': 'model6 Battery', 'state_class': , 'unit_of_measurement': '%', }), 'context': , - 'entity_id': 'sensor.model5_battery', + 'entity_id': 'sensor.model6_battery', 'last_changed': , 'last_reported': , 'last_updated': , 'state': '89', }) # --- -# name: test_all_entities[sensor.model5_humidity-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.model5_humidity', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Humidity', - 'platform': 'vicare', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': None, - 'unique_id': 'gateway5_zigbee_d87a3bfffe5d844a-room_humidity', - 'unit_of_measurement': '%', - }) -# --- -# name: test_all_entities[sensor.model5_humidity-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'humidity', - 'friendly_name': 'model5 Humidity', - 'state_class': , - 'unit_of_measurement': '%', - }), - 'context': , - 'entity_id': 'sensor.model5_humidity', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '53', - }) -# --- -# name: test_all_entities[sensor.model5_temperature-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.model5_temperature', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - 'sensor': dict({ - 'suggested_display_precision': 1, - }), - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Temperature', - 'platform': 'vicare', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': None, - 'unique_id': 'gateway5_zigbee_d87a3bfffe5d844a-room_temperature', - 'unit_of_measurement': , - }) -# --- -# name: test_all_entities[sensor.model5_temperature-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'model5 Temperature', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.model5_temperature', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '17.5', - }) -# --- # name: test_all_entities[sensor.model6_humidity-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -3082,7 +3792,7 @@ 'suggested_object_id': None, 'supported_features': 0, 'translation_key': None, - 'unique_id': 'gateway6_zigbee_5cc7c1fffea33a3b-room_humidity', + 'unique_id': 'gateway6_zigbee_d87a3bfffe5d844a-room_humidity', 'unit_of_measurement': '%', }) # --- @@ -3099,7 +3809,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '52', + 'state': '53', }) # --- # name: test_all_entities[sensor.model6_temperature-entry] @@ -3138,7 +3848,7 @@ 'suggested_object_id': None, 'supported_features': 0, 'translation_key': None, - 'unique_id': 'gateway6_zigbee_5cc7c1fffea33a3b-room_temperature', + 'unique_id': 'gateway6_zigbee_d87a3bfffe5d844a-room_temperature', 'unit_of_measurement': , }) # --- @@ -3155,10 +3865,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '16.9', + 'state': '17.5', }) # --- -# name: test_all_entities[sensor.model7_battery-entry] +# name: test_all_entities[sensor.model7_humidity-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -3172,8 +3882,8 @@ 'device_id': , 'disabled_by': None, 'domain': 'sensor', - 'entity_category': , - 'entity_id': 'sensor.model7_battery', + 'entity_category': None, + 'entity_id': 'sensor.model7_humidity', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -3183,84 +3893,32 @@ 'name': None, 'options': dict({ }), - 'original_device_class': , + 'original_device_class': , 'original_icon': None, - 'original_name': 'Battery', + 'original_name': 'Humidity', 'platform': 'vicare', 'previous_unique_id': None, 'suggested_object_id': None, 'supported_features': 0, 'translation_key': None, - 'unique_id': 'gateway7_zigbee_################-battery_level', + 'unique_id': 'gateway7_zigbee_5cc7c1fffea33a3b-room_humidity', 'unit_of_measurement': '%', }) # --- -# name: test_all_entities[sensor.model7_battery-state] +# name: test_all_entities[sensor.model7_humidity-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'device_class': 'battery', - 'friendly_name': 'model7 Battery', + 'device_class': 'humidity', + 'friendly_name': 'model7 Humidity', 'state_class': , 'unit_of_measurement': '%', }), 'context': , - 'entity_id': 'sensor.model7_battery', + 'entity_id': 'sensor.model7_humidity', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '36', - }) -# --- -# name: test_all_entities[sensor.model7_signal_strength-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': , - 'entity_id': 'sensor.model7_signal_strength', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Signal strength', - 'platform': 'vicare', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'zigbee_signal_strength', - 'unique_id': 'gateway7_zigbee_################-zigbee_signal_strength', - 'unit_of_measurement': '%', - }) -# --- -# name: test_all_entities[sensor.model7_signal_strength-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'model7 Signal strength', - 'state_class': , - 'unit_of_measurement': '%', - }), - 'context': , - 'entity_id': 'sensor.model7_signal_strength', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '90', + 'state': '52', }) # --- # name: test_all_entities[sensor.model7_temperature-entry] @@ -3299,7 +3957,7 @@ 'suggested_object_id': None, 'supported_features': 0, 'translation_key': None, - 'unique_id': 'gateway7_zigbee_################-room_temperature', + 'unique_id': 'gateway7_zigbee_5cc7c1fffea33a3b-room_temperature', 'unit_of_measurement': , }) # --- @@ -3316,10 +3974,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '21.5', + 'state': '16.9', }) # --- -# name: test_all_entities[sensor.model7_valve_position-entry] +# name: test_all_entities[sensor.model8_battery-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -3333,8 +3991,8 @@ 'device_id': , 'disabled_by': None, 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.model7_valve_position', + 'entity_category': , + 'entity_id': 'sensor.model8_battery', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -3344,31 +4002,32 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, - 'original_name': 'Valve position', + 'original_name': 'Battery', 'platform': 'vicare', 'previous_unique_id': None, 'suggested_object_id': None, 'supported_features': 0, - 'translation_key': 'valve_position', - 'unique_id': 'gateway7_zigbee_################-valve_position', + 'translation_key': None, + 'unique_id': 'gateway8_zigbee_################-battery_level', 'unit_of_measurement': '%', }) # --- -# name: test_all_entities[sensor.model7_valve_position-state] +# name: test_all_entities[sensor.model8_battery-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'friendly_name': 'model7 Valve position', + 'device_class': 'battery', + 'friendly_name': 'model8 Battery', 'state_class': , 'unit_of_measurement': '%', }), 'context': , - 'entity_id': 'sensor.model7_valve_position', + 'entity_id': 'sensor.model8_battery', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '2', + 'state': '36', }) # --- # name: test_all_entities[sensor.model8_signal_strength-entry] @@ -3420,7 +4079,115 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '46', + 'state': '90', + }) +# --- +# name: test_all_entities[sensor.model8_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model8_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + 'sensor': dict({ + 'suggested_display_precision': 1, + }), + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Temperature', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': None, + 'unique_id': 'gateway8_zigbee_################-room_temperature', + 'unit_of_measurement': , + }) +# --- +# name: test_all_entities[sensor.model8_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'model8 Temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.model8_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '21.5', + }) +# --- +# name: test_all_entities[sensor.model8_valve_position-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'config_subentry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.model8_valve_position', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Valve position', + 'platform': 'vicare', + 'previous_unique_id': None, + 'suggested_object_id': None, + 'supported_features': 0, + 'translation_key': 'valve_position', + 'unique_id': 'gateway8_zigbee_################-valve_position', + 'unit_of_measurement': '%', + }) +# --- +# name: test_all_entities[sensor.model8_valve_position-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'model8 Valve position', + 'state_class': , + 'unit_of_measurement': '%', + }), + 'context': , + 'entity_id': 'sensor.model8_valve_position', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2', }) # --- # name: test_all_entities[sensor.model9_signal_strength-entry] @@ -3472,63 +4239,7 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': '37', - }) -# --- -# name: test_all_entities[sensor.model9_supply_temperature-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.model9_supply_temperature', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - 'sensor': dict({ - 'suggested_display_precision': 1, - }), - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Supply temperature', - 'platform': 'vicare', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'supply_temperature', - 'unique_id': 'gateway9_zigbee_################-supply_temperature', - 'unit_of_measurement': , - }) -# --- -# name: test_all_entities[sensor.model9_supply_temperature-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'model9 Supply temperature', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.model9_supply_temperature', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '31.0', + 'state': '46', }) # --- # name: test_all_entities[sensor.vitovalor_hydraulic_separator_temperature-entry] @@ -3567,7 +4278,7 @@ 'suggested_object_id': None, 'supported_features': 0, 'translation_key': 'hydraulic_separator_temperature', - 'unique_id': 'gateway4_deviceId4-hydraulic_separator_temperature', + 'unique_id': 'gateway5_deviceId5-hydraulic_separator_temperature', 'unit_of_measurement': , }) # --- diff --git a/tests/components/vicare/test_sensor.py b/tests/components/vicare/test_sensor.py index fb6f8e207ed..74a2f3c9e09 100644 --- a/tests/components/vicare/test_sensor.py +++ b/tests/components/vicare/test_sensor.py @@ -27,6 +27,7 @@ async def test_all_entities( Fixture({"type:boiler"}, "vicare/Vitodens300W.json"), Fixture({"type:heatpump"}, "vicare/Vitocal250A.json"), Fixture({"type:ventilation"}, "vicare/ViAir300F.json"), + Fixture({"type:ventilation"}, "vicare/VitoPure.json"), Fixture({"type:ess"}, "vicare/VitoChargeVX3.json"), Fixture({None}, "vicare/VitoValor.json"), Fixture({"type:climateSensor"}, "vicare/RoomSensor1.json"),