mirror of
https://github.com/Electric-Special/ha-core.git
synced 2026-03-21 07:05:48 +01:00
Add compressor, condensor and evaporator sensors in ViCare integration (#156411)
This commit is contained in:
committed by
GitHub
parent
b6c8b787e8
commit
87b68e99ec
@@ -35,6 +35,7 @@ CONF_HEATING_TYPE = "heating_type"
|
||||
DEFAULT_CACHE_DURATION = 60
|
||||
|
||||
VICARE_BAR = "bar"
|
||||
VICARE_CELSIUS = "celsius"
|
||||
VICARE_CUBIC_METER = "cubicMeter"
|
||||
VICARE_KW = "kilowatt"
|
||||
VICARE_KWH = "kilowattHour"
|
||||
|
||||
@@ -44,6 +44,7 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
|
||||
from .const import (
|
||||
VICARE_BAR,
|
||||
VICARE_CELSIUS,
|
||||
VICARE_CUBIC_METER,
|
||||
VICARE_KW,
|
||||
VICARE_KWH,
|
||||
@@ -58,7 +59,9 @@ from .utils import (
|
||||
get_burners,
|
||||
get_circuits,
|
||||
get_compressors,
|
||||
get_condensors,
|
||||
get_device_serial,
|
||||
get_evaporators,
|
||||
is_supported,
|
||||
normalize_state,
|
||||
)
|
||||
@@ -76,6 +79,7 @@ VICARE_UNIT_TO_DEVICE_CLASS = {
|
||||
|
||||
VICARE_UNIT_TO_HA_UNIT = {
|
||||
VICARE_BAR: UnitOfPressure.BAR,
|
||||
VICARE_CELSIUS: UnitOfTemperature.CELSIUS,
|
||||
VICARE_CUBIC_METER: UnitOfVolume.CUBIC_METERS,
|
||||
VICARE_KW: UnitOfPower.KILO_WATT,
|
||||
VICARE_KWH: UnitOfEnergy.KILO_WATT_HOUR,
|
||||
@@ -1195,6 +1199,84 @@ COMPRESSOR_SENSORS: tuple[ViCareSensorEntityDescription, ...] = (
|
||||
value_getter=lambda api: normalize_state(api.getPhase()),
|
||||
entity_category=EntityCategory.DIAGNOSTIC,
|
||||
),
|
||||
ViCareSensorEntityDescription(
|
||||
key="compressor_inlet_temperature",
|
||||
translation_key="compressor_inlet_temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_getter=lambda api: api.getCompressorInletTemperature(),
|
||||
unit_getter=lambda api: api.getCompressorInletTemperatureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
ViCareSensorEntityDescription(
|
||||
key="compressor_outlet_temperature",
|
||||
translation_key="compressor_outlet_temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_getter=lambda api: api.getCompressorOutletTemperature(),
|
||||
unit_getter=lambda api: api.getCompressorOutletTemperatureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
ViCareSensorEntityDescription(
|
||||
key="compressor_inlet_pressure",
|
||||
translation_key="compressor_inlet_pressure",
|
||||
device_class=SensorDeviceClass.PRESSURE,
|
||||
native_unit_of_measurement=UnitOfPressure.BAR,
|
||||
value_getter=lambda api: api.getCompressorInletPressure(),
|
||||
unit_getter=lambda api: api.getCompressorInletPressureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
ViCareSensorEntityDescription(
|
||||
key="compressor_outlet_pressure",
|
||||
translation_key="compressor_outlet_pressure",
|
||||
device_class=SensorDeviceClass.PRESSURE,
|
||||
native_unit_of_measurement=UnitOfPressure.BAR,
|
||||
value_getter=lambda api: api.getCompressorOutletPressure(),
|
||||
unit_getter=lambda api: api.getCompressorOutletPressureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
)
|
||||
|
||||
CONDENSOR_SENSORS: tuple[ViCareSensorEntityDescription, ...] = (
|
||||
ViCareSensorEntityDescription(
|
||||
key="condensor_liquid_temperature",
|
||||
translation_key="condensor_liquid_temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_getter=lambda api: api.getCondensorLiquidTemperature(),
|
||||
unit_getter=lambda api: api.getCondensorLiquidTemperatureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
ViCareSensorEntityDescription(
|
||||
key="condensor_subcooling_temperature",
|
||||
translation_key="condensor_subcooling_temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_getter=lambda api: api.getCondensorSubcoolingTemperature(),
|
||||
unit_getter=lambda api: api.getCondensorSubcoolingTemperatureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
)
|
||||
|
||||
EVAPORATOR_SENSORS: tuple[ViCareSensorEntityDescription, ...] = (
|
||||
ViCareSensorEntityDescription(
|
||||
key="evaporator_overheat_temperature",
|
||||
translation_key="evaporator_overheat_temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_getter=lambda api: api.getEvaporatorOverheatTemperature(),
|
||||
unit_getter=lambda api: api.getEvaporatorOverheatTemperatureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
ViCareSensorEntityDescription(
|
||||
key="evaporator_liquid_temperature",
|
||||
translation_key="evaporator_liquid_temperature",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
||||
value_getter=lambda api: api.getEvaporatorLiquidTemperature(),
|
||||
unit_getter=lambda api: api.getEvaporatorLiquidTemperatureUnit(),
|
||||
entity_registry_enabled_default=False,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -1221,6 +1303,8 @@ def _build_entities(
|
||||
(get_circuits(device.api), CIRCUIT_SENSORS),
|
||||
(get_burners(device.api), BURNER_SENSORS),
|
||||
(get_compressors(device.api), COMPRESSOR_SENSORS),
|
||||
(get_condensors(device.api), CONDENSOR_SENSORS),
|
||||
(get_evaporators(device.api), EVAPORATOR_SENSORS),
|
||||
):
|
||||
entities.extend(
|
||||
ViCareSensor(
|
||||
|
||||
@@ -215,6 +215,18 @@
|
||||
"compressor_hours_loadclass5": {
|
||||
"name": "Compressor hours load class 5"
|
||||
},
|
||||
"compressor_inlet_pressure": {
|
||||
"name": "Compressor inlet pressure"
|
||||
},
|
||||
"compressor_inlet_temperature": {
|
||||
"name": "Compressor inlet temperature"
|
||||
},
|
||||
"compressor_outlet_pressure": {
|
||||
"name": "Compressor outlet pressure"
|
||||
},
|
||||
"compressor_outlet_temperature": {
|
||||
"name": "Compressor outlet temperature"
|
||||
},
|
||||
"compressor_phase": {
|
||||
"name": "Compressor phase",
|
||||
"state": {
|
||||
@@ -232,6 +244,12 @@
|
||||
"compressor_starts": {
|
||||
"name": "Compressor starts"
|
||||
},
|
||||
"condensor_liquid_temperature": {
|
||||
"name": "Condensor liquid temperature"
|
||||
},
|
||||
"condensor_subcooling_temperature": {
|
||||
"name": "Condensor subcooling temperature"
|
||||
},
|
||||
"dhw_storage_bottom_temperature": {
|
||||
"name": "DHW storage bottom temperature"
|
||||
},
|
||||
@@ -306,6 +324,12 @@
|
||||
"standby": "[%key:common::state::standby%]"
|
||||
}
|
||||
},
|
||||
"evaporator_liquid_temperature": {
|
||||
"name": "Evaporator liquid temperature"
|
||||
},
|
||||
"evaporator_overheat_temperature": {
|
||||
"name": "Evaporator overheat temperature"
|
||||
},
|
||||
"filter_hours": {
|
||||
"name": "Filter hours"
|
||||
},
|
||||
|
||||
@@ -130,6 +130,28 @@ def get_compressors(device: PyViCareDevice) -> list[PyViCareHeatingDeviceCompone
|
||||
return []
|
||||
|
||||
|
||||
def get_condensors(device: PyViCareDevice) -> list[PyViCareHeatingDeviceComponent]:
|
||||
"""Return the list of condensors."""
|
||||
try:
|
||||
return device.condensors
|
||||
except PyViCareNotSupportedFeatureError:
|
||||
_LOGGER.debug("No condensors found")
|
||||
except AttributeError as error:
|
||||
_LOGGER.debug("No condensors found: %s", error)
|
||||
return []
|
||||
|
||||
|
||||
def get_evaporators(device: PyViCareDevice) -> list[PyViCareHeatingDeviceComponent]:
|
||||
"""Return the list of evaporators."""
|
||||
try:
|
||||
return device.evaporators
|
||||
except PyViCareNotSupportedFeatureError:
|
||||
_LOGGER.debug("No evaporators found")
|
||||
except AttributeError as error:
|
||||
_LOGGER.debug("No evaporators found: %s", error)
|
||||
return []
|
||||
|
||||
|
||||
def filter_state(state: str) -> str | None:
|
||||
"""Return the state if not 'nothing' or 'unknown'."""
|
||||
return None if state in ("nothing", "unknown") else state
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -26,6 +26,7 @@ async def test_all_entities(
|
||||
fixtures: list[Fixture] = [
|
||||
Fixture({"type:boiler"}, "vicare/Vitodens300W.json"),
|
||||
Fixture({"type:heatpump"}, "vicare/Vitocal250A.json"),
|
||||
Fixture({"type:heatpump"}, "vicare/Vitocal222G_Vitovent300W.json"),
|
||||
Fixture({"type:ventilation"}, "vicare/ViAir300F.json"),
|
||||
Fixture({"type:ventilation"}, "vicare/VitoPure.json"),
|
||||
Fixture({"type:ess"}, "vicare/VitoChargeVX3.json"),
|
||||
|
||||
Reference in New Issue
Block a user