Skip to content

Commit 87b68e9

Browse files
authored
Add compressor, condensor and evaporator sensors in ViCare integration (home-assistant#156411)
1 parent b6c8b78 commit 87b68e9

File tree

7 files changed

+4543
-1259
lines changed

7 files changed

+4543
-1259
lines changed

homeassistant/components/vicare/const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
DEFAULT_CACHE_DURATION = 60
3636

3737
VICARE_BAR = "bar"
38+
VICARE_CELSIUS = "celsius"
3839
VICARE_CUBIC_METER = "cubicMeter"
3940
VICARE_KW = "kilowatt"
4041
VICARE_KWH = "kilowattHour"

homeassistant/components/vicare/sensor.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444

4545
from .const import (
4646
VICARE_BAR,
47+
VICARE_CELSIUS,
4748
VICARE_CUBIC_METER,
4849
VICARE_KW,
4950
VICARE_KWH,
@@ -58,7 +59,9 @@
5859
get_burners,
5960
get_circuits,
6061
get_compressors,
62+
get_condensors,
6163
get_device_serial,
64+
get_evaporators,
6265
is_supported,
6366
normalize_state,
6467
)
@@ -76,6 +79,7 @@
7679

7780
VICARE_UNIT_TO_HA_UNIT = {
7881
VICARE_BAR: UnitOfPressure.BAR,
82+
VICARE_CELSIUS: UnitOfTemperature.CELSIUS,
7983
VICARE_CUBIC_METER: UnitOfVolume.CUBIC_METERS,
8084
VICARE_KW: UnitOfPower.KILO_WATT,
8185
VICARE_KWH: UnitOfEnergy.KILO_WATT_HOUR,
@@ -1195,6 +1199,84 @@ class ViCareSensorEntityDescription(SensorEntityDescription, ViCareRequiredKeysM
11951199
value_getter=lambda api: normalize_state(api.getPhase()),
11961200
entity_category=EntityCategory.DIAGNOSTIC,
11971201
),
1202+
ViCareSensorEntityDescription(
1203+
key="compressor_inlet_temperature",
1204+
translation_key="compressor_inlet_temperature",
1205+
device_class=SensorDeviceClass.TEMPERATURE,
1206+
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
1207+
value_getter=lambda api: api.getCompressorInletTemperature(),
1208+
unit_getter=lambda api: api.getCompressorInletTemperatureUnit(),
1209+
entity_registry_enabled_default=False,
1210+
),
1211+
ViCareSensorEntityDescription(
1212+
key="compressor_outlet_temperature",
1213+
translation_key="compressor_outlet_temperature",
1214+
device_class=SensorDeviceClass.TEMPERATURE,
1215+
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
1216+
value_getter=lambda api: api.getCompressorOutletTemperature(),
1217+
unit_getter=lambda api: api.getCompressorOutletTemperatureUnit(),
1218+
entity_registry_enabled_default=False,
1219+
),
1220+
ViCareSensorEntityDescription(
1221+
key="compressor_inlet_pressure",
1222+
translation_key="compressor_inlet_pressure",
1223+
device_class=SensorDeviceClass.PRESSURE,
1224+
native_unit_of_measurement=UnitOfPressure.BAR,
1225+
value_getter=lambda api: api.getCompressorInletPressure(),
1226+
unit_getter=lambda api: api.getCompressorInletPressureUnit(),
1227+
entity_registry_enabled_default=False,
1228+
),
1229+
ViCareSensorEntityDescription(
1230+
key="compressor_outlet_pressure",
1231+
translation_key="compressor_outlet_pressure",
1232+
device_class=SensorDeviceClass.PRESSURE,
1233+
native_unit_of_measurement=UnitOfPressure.BAR,
1234+
value_getter=lambda api: api.getCompressorOutletPressure(),
1235+
unit_getter=lambda api: api.getCompressorOutletPressureUnit(),
1236+
entity_registry_enabled_default=False,
1237+
),
1238+
)
1239+
1240+
CONDENSOR_SENSORS: tuple[ViCareSensorEntityDescription, ...] = (
1241+
ViCareSensorEntityDescription(
1242+
key="condensor_liquid_temperature",
1243+
translation_key="condensor_liquid_temperature",
1244+
device_class=SensorDeviceClass.TEMPERATURE,
1245+
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
1246+
value_getter=lambda api: api.getCondensorLiquidTemperature(),
1247+
unit_getter=lambda api: api.getCondensorLiquidTemperatureUnit(),
1248+
entity_registry_enabled_default=False,
1249+
),
1250+
ViCareSensorEntityDescription(
1251+
key="condensor_subcooling_temperature",
1252+
translation_key="condensor_subcooling_temperature",
1253+
device_class=SensorDeviceClass.TEMPERATURE,
1254+
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
1255+
value_getter=lambda api: api.getCondensorSubcoolingTemperature(),
1256+
unit_getter=lambda api: api.getCondensorSubcoolingTemperatureUnit(),
1257+
entity_registry_enabled_default=False,
1258+
),
1259+
)
1260+
1261+
EVAPORATOR_SENSORS: tuple[ViCareSensorEntityDescription, ...] = (
1262+
ViCareSensorEntityDescription(
1263+
key="evaporator_overheat_temperature",
1264+
translation_key="evaporator_overheat_temperature",
1265+
device_class=SensorDeviceClass.TEMPERATURE,
1266+
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
1267+
value_getter=lambda api: api.getEvaporatorOverheatTemperature(),
1268+
unit_getter=lambda api: api.getEvaporatorOverheatTemperatureUnit(),
1269+
entity_registry_enabled_default=False,
1270+
),
1271+
ViCareSensorEntityDescription(
1272+
key="evaporator_liquid_temperature",
1273+
translation_key="evaporator_liquid_temperature",
1274+
device_class=SensorDeviceClass.TEMPERATURE,
1275+
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
1276+
value_getter=lambda api: api.getEvaporatorLiquidTemperature(),
1277+
unit_getter=lambda api: api.getEvaporatorLiquidTemperatureUnit(),
1278+
entity_registry_enabled_default=False,
1279+
),
11981280
)
11991281

12001282

@@ -1221,6 +1303,8 @@ def _build_entities(
12211303
(get_circuits(device.api), CIRCUIT_SENSORS),
12221304
(get_burners(device.api), BURNER_SENSORS),
12231305
(get_compressors(device.api), COMPRESSOR_SENSORS),
1306+
(get_condensors(device.api), CONDENSOR_SENSORS),
1307+
(get_evaporators(device.api), EVAPORATOR_SENSORS),
12241308
):
12251309
entities.extend(
12261310
ViCareSensor(

homeassistant/components/vicare/strings.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,18 @@
215215
"compressor_hours_loadclass5": {
216216
"name": "Compressor hours load class 5"
217217
},
218+
"compressor_inlet_pressure": {
219+
"name": "Compressor inlet pressure"
220+
},
221+
"compressor_inlet_temperature": {
222+
"name": "Compressor inlet temperature"
223+
},
224+
"compressor_outlet_pressure": {
225+
"name": "Compressor outlet pressure"
226+
},
227+
"compressor_outlet_temperature": {
228+
"name": "Compressor outlet temperature"
229+
},
218230
"compressor_phase": {
219231
"name": "Compressor phase",
220232
"state": {
@@ -232,6 +244,12 @@
232244
"compressor_starts": {
233245
"name": "Compressor starts"
234246
},
247+
"condensor_liquid_temperature": {
248+
"name": "Condensor liquid temperature"
249+
},
250+
"condensor_subcooling_temperature": {
251+
"name": "Condensor subcooling temperature"
252+
},
235253
"dhw_storage_bottom_temperature": {
236254
"name": "DHW storage bottom temperature"
237255
},
@@ -306,6 +324,12 @@
306324
"standby": "[%key:common::state::standby%]"
307325
}
308326
},
327+
"evaporator_liquid_temperature": {
328+
"name": "Evaporator liquid temperature"
329+
},
330+
"evaporator_overheat_temperature": {
331+
"name": "Evaporator overheat temperature"
332+
},
309333
"filter_hours": {
310334
"name": "Filter hours"
311335
},

homeassistant/components/vicare/utils.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,28 @@ def get_compressors(device: PyViCareDevice) -> list[PyViCareHeatingDeviceCompone
130130
return []
131131

132132

133+
def get_condensors(device: PyViCareDevice) -> list[PyViCareHeatingDeviceComponent]:
134+
"""Return the list of condensors."""
135+
try:
136+
return device.condensors
137+
except PyViCareNotSupportedFeatureError:
138+
_LOGGER.debug("No condensors found")
139+
except AttributeError as error:
140+
_LOGGER.debug("No condensors found: %s", error)
141+
return []
142+
143+
144+
def get_evaporators(device: PyViCareDevice) -> list[PyViCareHeatingDeviceComponent]:
145+
"""Return the list of evaporators."""
146+
try:
147+
return device.evaporators
148+
except PyViCareNotSupportedFeatureError:
149+
_LOGGER.debug("No evaporators found")
150+
except AttributeError as error:
151+
_LOGGER.debug("No evaporators found: %s", error)
152+
return []
153+
154+
133155
def filter_state(state: str) -> str | None:
134156
"""Return the state if not 'nothing' or 'unknown'."""
135157
return None if state in ("nothing", "unknown") else state

0 commit comments

Comments
 (0)