mirror of
https://github.com/home-assistant/core.git
synced 2026-05-08 17:49:37 +01:00
Add air quality sensors in ViCare integration (#156417)
This commit is contained in:
committed by
GitHub
parent
dc8425c580
commit
5f49a6450f
@@ -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(),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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, ...] = (
|
||||
|
||||
@@ -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": {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user