mirror of
https://github.com/home-assistant/core.git
synced 2026-04-02 16:36:08 +01:00
1030 lines
41 KiB
Python
1030 lines
41 KiB
Python
"""Sensor platform for Compit integration."""
|
|
|
|
from dataclasses import dataclass
|
|
|
|
from compit_inext_api.consts import CompitParameter
|
|
|
|
from homeassistant.components.sensor import (
|
|
EntityCategory,
|
|
SensorDeviceClass,
|
|
SensorEntity,
|
|
SensorEntityDescription,
|
|
SensorStateClass,
|
|
)
|
|
from homeassistant.const import (
|
|
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
CONCENTRATION_PARTS_PER_MILLION,
|
|
PERCENTAGE,
|
|
UnitOfElectricCurrent,
|
|
UnitOfEnergy,
|
|
UnitOfPower,
|
|
UnitOfTemperature,
|
|
)
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.device_registry import DeviceInfo
|
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
|
|
|
from .const import DOMAIN, MANUFACTURER_NAME
|
|
from .coordinator import CompitConfigEntry, CompitDataUpdateCoordinator
|
|
|
|
PARALLEL_UPDATES = 0
|
|
NO_SENSOR = "no_sensor"
|
|
|
|
DESCRIPTIONS: dict[CompitParameter, SensorEntityDescription] = {
|
|
CompitParameter.ACTUAL_BUFFER_TEMP: SensorEntityDescription(
|
|
key=CompitParameter.ACTUAL_BUFFER_TEMP.value,
|
|
translation_key="actual_buffer_temp",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.ACTUAL_DHW_TEMP: SensorEntityDescription(
|
|
key=CompitParameter.ACTUAL_DHW_TEMP.value,
|
|
translation_key="actual_dhw_temp",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.ACTUAL_HC1_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.ACTUAL_HC1_TEMPERATURE.value,
|
|
translation_key="actual_hc_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "1"},
|
|
),
|
|
CompitParameter.ACTUAL_HC2_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.ACTUAL_HC2_TEMPERATURE.value,
|
|
translation_key="actual_hc_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "2"},
|
|
),
|
|
CompitParameter.ACTUAL_HC3_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.ACTUAL_HC3_TEMPERATURE.value,
|
|
translation_key="actual_hc_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "3"},
|
|
),
|
|
CompitParameter.ACTUAL_HC4_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.ACTUAL_HC4_TEMPERATURE.value,
|
|
translation_key="actual_hc_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "4"},
|
|
),
|
|
CompitParameter.ACTUAL_UPPER_SOURCE_TEMP: SensorEntityDescription(
|
|
key=CompitParameter.ACTUAL_UPPER_SOURCE_TEMP.value,
|
|
translation_key="actual_upper_source_temp",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.ALARM_CODE: SensorEntityDescription(
|
|
key=CompitParameter.ALARM_CODE.value,
|
|
translation_key="alarm_code",
|
|
device_class=SensorDeviceClass.ENUM,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
options=[
|
|
"no_alarm",
|
|
"damaged_outdoor_temp",
|
|
"damaged_return_temp",
|
|
"no_battery",
|
|
"discharged_battery",
|
|
"low_battery_level",
|
|
"battery_fault",
|
|
"no_pump",
|
|
"pump_fault",
|
|
"internal_af",
|
|
"no_power",
|
|
],
|
|
),
|
|
CompitParameter.BATTERY_LEVEL: SensorEntityDescription(
|
|
key=CompitParameter.BATTERY_LEVEL.value,
|
|
device_class=SensorDeviceClass.BATTERY,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=PERCENTAGE,
|
|
),
|
|
CompitParameter.BOILER_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.BOILER_TEMPERATURE.value,
|
|
translation_key="boiler_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.BUFFER_RETURN_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.BUFFER_RETURN_TEMPERATURE.value,
|
|
translation_key="buffer_return_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.BUFFER_SET_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.BUFFER_SET_TEMPERATURE.value,
|
|
translation_key="buffer_set_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.CALCULATED_BUFFER_TEMP: SensorEntityDescription(
|
|
key=CompitParameter.CALCULATED_BUFFER_TEMP.value,
|
|
translation_key="calculated_buffer_temp",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.CALCULATED_DHW_TEMP: SensorEntityDescription(
|
|
key=CompitParameter.CALCULATED_DHW_TEMP.value,
|
|
translation_key="calculated_dhw_temp",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.CALCULATED_HEATING_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.CALCULATED_HEATING_TEMPERATURE.value,
|
|
translation_key="calculated_heating_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.CALCULATED_TARGET_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.CALCULATED_TARGET_TEMPERATURE.value,
|
|
translation_key="calculated_target_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.CALCULATED_UPPER_SOURCE_TEMP: SensorEntityDescription(
|
|
key=CompitParameter.CALCULATED_UPPER_SOURCE_TEMP.value,
|
|
translation_key="calculated_upper_source_temp",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.CHARGING_POWER: SensorEntityDescription(
|
|
key=CompitParameter.CHARGING_POWER.value,
|
|
translation_key="charging_power",
|
|
device_class=SensorDeviceClass.CURRENT,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE,
|
|
),
|
|
CompitParameter.CIRCUIT_TARGET_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.CIRCUIT_TARGET_TEMPERATURE.value,
|
|
translation_key="circuit_target_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.CO2_LEVEL: SensorEntityDescription(
|
|
key=CompitParameter.CO2_LEVEL.value,
|
|
device_class=SensorDeviceClass.CO2,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
|
|
),
|
|
CompitParameter.CO2_PERCENT: SensorEntityDescription(
|
|
key=CompitParameter.CO2_PERCENT.value,
|
|
translation_key="co2_percent",
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=PERCENTAGE,
|
|
),
|
|
CompitParameter.COLLECTOR_POWER: SensorEntityDescription(
|
|
key=CompitParameter.COLLECTOR_POWER.value,
|
|
translation_key="collector_power",
|
|
device_class=SensorDeviceClass.POWER,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfPower.KILO_WATT,
|
|
),
|
|
CompitParameter.COLLECTOR_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.COLLECTOR_TEMPERATURE.value,
|
|
translation_key="collector_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.DHW_MEASURED_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.DHW_MEASURED_TEMPERATURE.value,
|
|
translation_key="dhw_measured_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.DHW_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.DHW_TEMPERATURE.value,
|
|
translation_key="dhw_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.ENERGY_CONSUMPTION: SensorEntityDescription(
|
|
key=CompitParameter.ENERGY_CONSUMPTION.value,
|
|
translation_key="energy_consumption",
|
|
device_class=SensorDeviceClass.POWER,
|
|
native_unit_of_measurement=UnitOfPower.MEGA_WATT,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
),
|
|
CompitParameter.ENERGY_SGREADY_YESTERDAY: SensorEntityDescription(
|
|
key=CompitParameter.ENERGY_SGREADY_YESTERDAY.value,
|
|
translation_key="energy_smart_grid_yesterday",
|
|
device_class=SensorDeviceClass.ENERGY,
|
|
state_class=SensorStateClass.TOTAL,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
),
|
|
CompitParameter.ENERGY_TODAY: SensorEntityDescription(
|
|
key=CompitParameter.ENERGY_TODAY.value,
|
|
translation_key="energy_today",
|
|
device_class=SensorDeviceClass.ENERGY,
|
|
state_class=SensorStateClass.TOTAL,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
),
|
|
CompitParameter.ENERGY_TOTAL: SensorEntityDescription(
|
|
key=CompitParameter.ENERGY_TOTAL.value,
|
|
translation_key="energy_total",
|
|
device_class=SensorDeviceClass.ENERGY,
|
|
state_class=SensorStateClass.TOTAL_INCREASING,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
),
|
|
CompitParameter.ENERGY_YESTERDAY: SensorEntityDescription(
|
|
key=CompitParameter.ENERGY_YESTERDAY.value,
|
|
translation_key="energy_yesterday",
|
|
device_class=SensorDeviceClass.ENERGY,
|
|
state_class=SensorStateClass.TOTAL,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
|
|
),
|
|
CompitParameter.FUEL_LEVEL: SensorEntityDescription(
|
|
key=CompitParameter.FUEL_LEVEL.value,
|
|
translation_key="fuel_level",
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=PERCENTAGE,
|
|
),
|
|
CompitParameter.HEATING1_TARGET_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.HEATING1_TARGET_TEMPERATURE.value,
|
|
translation_key="heating_target_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "1"},
|
|
),
|
|
CompitParameter.HEATING2_TARGET_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.HEATING2_TARGET_TEMPERATURE.value,
|
|
translation_key="heating_target_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "2"},
|
|
),
|
|
CompitParameter.HEATING3_TARGET_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.HEATING3_TARGET_TEMPERATURE.value,
|
|
translation_key="heating_target_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "3"},
|
|
),
|
|
CompitParameter.HEATING4_TARGET_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.HEATING4_TARGET_TEMPERATURE.value,
|
|
translation_key="heating_target_temperature_zone",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"zone": "4"},
|
|
),
|
|
CompitParameter.HUMIDITY: SensorEntityDescription(
|
|
key=CompitParameter.HUMIDITY.value,
|
|
device_class=SensorDeviceClass.HUMIDITY,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=PERCENTAGE,
|
|
),
|
|
CompitParameter.LOWER_SOURCE_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.LOWER_SOURCE_TEMPERATURE.value,
|
|
translation_key="lower_source_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.MIXER_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.MIXER_TEMPERATURE.value,
|
|
translation_key="mixer_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.MIXER1_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.MIXER1_TEMPERATURE.value,
|
|
translation_key="mixer_temperature_zone",
|
|
translation_placeholders={"zone": "1"},
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.MIXER2_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.MIXER2_TEMPERATURE.value,
|
|
translation_key="mixer_temperature_zone",
|
|
translation_placeholders={"zone": "2"},
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.OUTDOOR_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.OUTDOOR_TEMPERATURE.value,
|
|
translation_key="outdoor_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.PK1_FUNCTION: SensorEntityDescription(
|
|
key=CompitParameter.PK1_FUNCTION.value,
|
|
translation_key="pk1_function",
|
|
device_class=SensorDeviceClass.ENUM,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
options=[
|
|
"off",
|
|
"on",
|
|
"nano_nr_1",
|
|
"nano_nr_2",
|
|
"nano_nr_3",
|
|
"nano_nr_4",
|
|
"nano_nr_5",
|
|
"winter",
|
|
"summer",
|
|
"cooling",
|
|
"holiday",
|
|
],
|
|
),
|
|
CompitParameter.PM1_LEVEL_MEASURED: SensorEntityDescription(
|
|
key=CompitParameter.PM1_LEVEL_MEASURED.value,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
device_class=SensorDeviceClass.PM1,
|
|
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
),
|
|
CompitParameter.PM4_LEVEL_MEASURED: SensorEntityDescription(
|
|
key=CompitParameter.PM4_LEVEL_MEASURED.value,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
device_class=SensorDeviceClass.PM4,
|
|
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
),
|
|
CompitParameter.PM10_LEVEL: SensorEntityDescription(
|
|
key=CompitParameter.PM10_LEVEL.value,
|
|
translation_key="pm10_level",
|
|
device_class=SensorDeviceClass.ENUM,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
entity_registry_enabled_default=False,
|
|
options=[NO_SENSOR, "normal", "warning", "exceeded"],
|
|
),
|
|
CompitParameter.PM10_MEASURED: SensorEntityDescription(
|
|
key=CompitParameter.PM10_MEASURED.value,
|
|
device_class=SensorDeviceClass.PM10,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
),
|
|
CompitParameter.PM25_LEVEL: SensorEntityDescription(
|
|
key=CompitParameter.PM25_LEVEL.value,
|
|
translation_key="pm25_level",
|
|
device_class=SensorDeviceClass.ENUM,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
entity_registry_enabled_default=False,
|
|
options=[NO_SENSOR, "normal", "warning", "exceeded"],
|
|
),
|
|
CompitParameter.PM25_MEASURED: SensorEntityDescription(
|
|
key=CompitParameter.PM25_MEASURED.value,
|
|
device_class=SensorDeviceClass.PM25,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
|
|
),
|
|
CompitParameter.PROTECTION_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.PROTECTION_TEMPERATURE.value,
|
|
translation_key="protection_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.RETURN_CIRCUIT_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.RETURN_CIRCUIT_TEMPERATURE.value,
|
|
translation_key="return_circuit_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.TANK_BOTTOM_T2_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.TANK_BOTTOM_T2_TEMPERATURE.value,
|
|
translation_key="tank_temperature_t2",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.TANK_T4_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.TANK_T4_TEMPERATURE.value,
|
|
translation_key="tank_temperature_t4",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
translation_placeholders={"sensor": "T4"},
|
|
),
|
|
CompitParameter.TANK_TOP_T3_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.TANK_TOP_T3_TEMPERATURE.value,
|
|
translation_key="tank_temperature_t3",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.TARGET_HEATING_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.TARGET_HEATING_TEMPERATURE.value,
|
|
translation_key="target_heating_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.UPPER_SOURCE_TEMPERATURE: SensorEntityDescription(
|
|
key=CompitParameter.UPPER_SOURCE_TEMPERATURE.value,
|
|
translation_key="upper_source_temperature",
|
|
device_class=SensorDeviceClass.TEMPERATURE,
|
|
state_class=SensorStateClass.MEASUREMENT,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
|
|
),
|
|
CompitParameter.VENTILATION_ALARM: SensorEntityDescription(
|
|
key=CompitParameter.VENTILATION_ALARM.value,
|
|
translation_key="ventilation_alarm",
|
|
device_class=SensorDeviceClass.ENUM,
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
options=[
|
|
"no_alarm",
|
|
"damaged_supply_sensor",
|
|
"damaged_exhaust_sensor",
|
|
"damaged_supply_and_exhaust_sensors",
|
|
"bot_alarm",
|
|
"damaged_preheater_sensor",
|
|
"ahu_alarm",
|
|
],
|
|
),
|
|
CompitParameter.VENTILATION_GEAR: SensorEntityDescription(
|
|
key=CompitParameter.VENTILATION_GEAR.value,
|
|
translation_key="ventilation_gear",
|
|
entity_category=EntityCategory.DIAGNOSTIC,
|
|
),
|
|
}
|
|
|
|
|
|
@dataclass(frozen=True, kw_only=True)
|
|
class CompitDeviceDescription:
|
|
"""Class to describe a Compit device."""
|
|
|
|
name: str
|
|
"""Name of the device."""
|
|
|
|
parameters: dict[CompitParameter, SensorEntityDescription]
|
|
"""Parameters of the device."""
|
|
|
|
|
|
DEVICE_DEFINITIONS: dict[int, CompitDeviceDescription] = {
|
|
3: CompitDeviceDescription(
|
|
name="R 810",
|
|
parameters={
|
|
CompitParameter.CALCULATED_HEATING_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.CALCULATED_HEATING_TEMPERATURE
|
|
],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
CompitParameter.RETURN_CIRCUIT_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.RETURN_CIRCUIT_TEMPERATURE
|
|
],
|
|
CompitParameter.TARGET_HEATING_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TARGET_HEATING_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
5: CompitDeviceDescription(
|
|
name="R350 T3",
|
|
parameters={
|
|
CompitParameter.CALCULATED_TARGET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.CALCULATED_TARGET_TEMPERATURE
|
|
],
|
|
CompitParameter.CIRCUIT_TARGET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.CIRCUIT_TARGET_TEMPERATURE
|
|
],
|
|
CompitParameter.MIXER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.MIXER_TEMPERATURE
|
|
],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
12: CompitDeviceDescription(
|
|
name="Nano Color",
|
|
parameters={
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
CompitParameter.PM10_LEVEL: DESCRIPTIONS[CompitParameter.PM10_LEVEL],
|
|
CompitParameter.PM25_LEVEL: DESCRIPTIONS[CompitParameter.PM25_LEVEL],
|
|
CompitParameter.VENTILATION_ALARM: DESCRIPTIONS[
|
|
CompitParameter.VENTILATION_ALARM
|
|
],
|
|
},
|
|
),
|
|
14: CompitDeviceDescription(
|
|
name="BWC310",
|
|
parameters={
|
|
CompitParameter.CALCULATED_HEATING_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.CALCULATED_HEATING_TEMPERATURE
|
|
],
|
|
CompitParameter.TARGET_HEATING_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TARGET_HEATING_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
27: CompitDeviceDescription(
|
|
name="CO2 SHC",
|
|
parameters={
|
|
CompitParameter.HUMIDITY: DESCRIPTIONS[CompitParameter.HUMIDITY],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
34: CompitDeviceDescription(
|
|
name="r470",
|
|
parameters={
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
36: CompitDeviceDescription(
|
|
name="BioMax742",
|
|
parameters={
|
|
CompitParameter.BOILER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BOILER_TEMPERATURE
|
|
],
|
|
CompitParameter.FUEL_LEVEL: DESCRIPTIONS[CompitParameter.FUEL_LEVEL],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
44: CompitDeviceDescription(
|
|
name="SolarComp 951",
|
|
parameters={
|
|
CompitParameter.COLLECTOR_POWER: DESCRIPTIONS[
|
|
CompitParameter.COLLECTOR_POWER
|
|
],
|
|
CompitParameter.COLLECTOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.COLLECTOR_TEMPERATURE
|
|
],
|
|
CompitParameter.TANK_BOTTOM_T2_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TANK_BOTTOM_T2_TEMPERATURE
|
|
],
|
|
CompitParameter.TANK_T4_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TANK_T4_TEMPERATURE
|
|
],
|
|
CompitParameter.TANK_TOP_T3_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TANK_TOP_T3_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
45: CompitDeviceDescription(
|
|
name="SolarComp971",
|
|
parameters={
|
|
CompitParameter.COLLECTOR_POWER: DESCRIPTIONS[
|
|
CompitParameter.COLLECTOR_POWER
|
|
],
|
|
CompitParameter.COLLECTOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.COLLECTOR_TEMPERATURE
|
|
],
|
|
CompitParameter.ENERGY_TODAY: DESCRIPTIONS[CompitParameter.ENERGY_TODAY],
|
|
CompitParameter.TANK_BOTTOM_T2_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TANK_BOTTOM_T2_TEMPERATURE
|
|
],
|
|
CompitParameter.TANK_TOP_T3_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TANK_TOP_T3_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
53: CompitDeviceDescription(
|
|
name="R350.CWU",
|
|
parameters={
|
|
CompitParameter.CALCULATED_TARGET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.CALCULATED_TARGET_TEMPERATURE
|
|
],
|
|
CompitParameter.DHW_MEASURED_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.DHW_MEASURED_TEMPERATURE
|
|
],
|
|
CompitParameter.ENERGY_SGREADY_YESTERDAY: DESCRIPTIONS[
|
|
CompitParameter.ENERGY_SGREADY_YESTERDAY
|
|
],
|
|
CompitParameter.ENERGY_TOTAL: DESCRIPTIONS[CompitParameter.ENERGY_TOTAL],
|
|
CompitParameter.ENERGY_YESTERDAY: DESCRIPTIONS[
|
|
CompitParameter.ENERGY_YESTERDAY
|
|
],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
58: CompitDeviceDescription(
|
|
name="SolarComp 971SD1",
|
|
parameters={
|
|
CompitParameter.ENERGY_CONSUMPTION: DESCRIPTIONS[
|
|
CompitParameter.ENERGY_CONSUMPTION
|
|
],
|
|
},
|
|
),
|
|
75: CompitDeviceDescription(
|
|
name="BioMax772",
|
|
parameters={
|
|
CompitParameter.BOILER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BOILER_TEMPERATURE
|
|
],
|
|
CompitParameter.FUEL_LEVEL: DESCRIPTIONS[CompitParameter.FUEL_LEVEL],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
78: CompitDeviceDescription(
|
|
name="SPM - Nano Color 2",
|
|
parameters={
|
|
CompitParameter.CO2_LEVEL: DESCRIPTIONS[CompitParameter.CO2_LEVEL],
|
|
CompitParameter.CO2_PERCENT: DESCRIPTIONS[CompitParameter.CO2_PERCENT],
|
|
CompitParameter.HUMIDITY: DESCRIPTIONS[CompitParameter.HUMIDITY],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
CompitParameter.PM1_LEVEL_MEASURED: DESCRIPTIONS[
|
|
CompitParameter.PM1_LEVEL_MEASURED
|
|
],
|
|
CompitParameter.PM4_LEVEL_MEASURED: DESCRIPTIONS[
|
|
CompitParameter.PM4_LEVEL_MEASURED
|
|
],
|
|
CompitParameter.PM10_MEASURED: DESCRIPTIONS[CompitParameter.PM10_MEASURED],
|
|
CompitParameter.PM25_MEASURED: DESCRIPTIONS[CompitParameter.PM25_MEASURED],
|
|
},
|
|
),
|
|
91: CompitDeviceDescription(
|
|
name="R770RS / R771RS ",
|
|
parameters={
|
|
CompitParameter.BOILER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BOILER_TEMPERATURE
|
|
],
|
|
CompitParameter.FUEL_LEVEL: DESCRIPTIONS[CompitParameter.FUEL_LEVEL],
|
|
CompitParameter.MIXER1_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.MIXER1_TEMPERATURE
|
|
],
|
|
CompitParameter.MIXER2_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.MIXER2_TEMPERATURE
|
|
],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
92: CompitDeviceDescription(
|
|
name="r490",
|
|
parameters={
|
|
CompitParameter.LOWER_SOURCE_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.LOWER_SOURCE_TEMPERATURE
|
|
],
|
|
CompitParameter.UPPER_SOURCE_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.UPPER_SOURCE_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
99: CompitDeviceDescription(
|
|
name="SolarComp971C",
|
|
parameters={
|
|
CompitParameter.COLLECTOR_POWER: DESCRIPTIONS[
|
|
CompitParameter.COLLECTOR_POWER
|
|
],
|
|
CompitParameter.COLLECTOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.COLLECTOR_TEMPERATURE
|
|
],
|
|
CompitParameter.ENERGY_TODAY: DESCRIPTIONS[CompitParameter.ENERGY_TODAY],
|
|
CompitParameter.TANK_BOTTOM_T2_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TANK_BOTTOM_T2_TEMPERATURE
|
|
],
|
|
CompitParameter.TANK_TOP_T3_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.TANK_TOP_T3_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
201: CompitDeviceDescription(
|
|
name="BioMax775",
|
|
parameters={
|
|
CompitParameter.BOILER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BOILER_TEMPERATURE
|
|
],
|
|
CompitParameter.FUEL_LEVEL: DESCRIPTIONS[CompitParameter.FUEL_LEVEL],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
210: CompitDeviceDescription(
|
|
name="EL750",
|
|
parameters={
|
|
CompitParameter.BOILER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BOILER_TEMPERATURE
|
|
],
|
|
CompitParameter.BUFFER_RETURN_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BUFFER_RETURN_TEMPERATURE
|
|
],
|
|
CompitParameter.DHW_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.DHW_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
212: CompitDeviceDescription(
|
|
name="BioMax742",
|
|
parameters={
|
|
CompitParameter.BOILER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BOILER_TEMPERATURE
|
|
],
|
|
CompitParameter.FUEL_LEVEL: DESCRIPTIONS[CompitParameter.FUEL_LEVEL],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
215: CompitDeviceDescription(
|
|
name="R480",
|
|
parameters={
|
|
CompitParameter.ACTUAL_BUFFER_TEMP: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_BUFFER_TEMP
|
|
],
|
|
CompitParameter.ACTUAL_DHW_TEMP: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_DHW_TEMP
|
|
],
|
|
CompitParameter.DHW_MEASURED_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.DHW_MEASURED_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
221: CompitDeviceDescription(
|
|
name="R350.M",
|
|
parameters={
|
|
CompitParameter.MIXER_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.MIXER_TEMPERATURE
|
|
],
|
|
CompitParameter.PROTECTION_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.PROTECTION_TEMPERATURE
|
|
],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
222: CompitDeviceDescription(
|
|
name="R377B",
|
|
parameters={
|
|
CompitParameter.BUFFER_SET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.BUFFER_SET_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
223: CompitDeviceDescription(
|
|
name="Nano Color 2",
|
|
parameters={
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
CompitParameter.PM10_LEVEL: DESCRIPTIONS[CompitParameter.PM10_LEVEL],
|
|
CompitParameter.PM25_LEVEL: DESCRIPTIONS[CompitParameter.PM25_LEVEL],
|
|
CompitParameter.VENTILATION_ALARM: DESCRIPTIONS[
|
|
CompitParameter.VENTILATION_ALARM
|
|
],
|
|
CompitParameter.VENTILATION_GEAR: DESCRIPTIONS[
|
|
CompitParameter.VENTILATION_GEAR
|
|
],
|
|
},
|
|
),
|
|
224: CompitDeviceDescription(
|
|
name="R 900",
|
|
parameters={
|
|
CompitParameter.ACTUAL_BUFFER_TEMP: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_BUFFER_TEMP
|
|
],
|
|
CompitParameter.ACTUAL_HC1_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_HC1_TEMPERATURE
|
|
],
|
|
CompitParameter.ACTUAL_HC2_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_HC2_TEMPERATURE
|
|
],
|
|
CompitParameter.ACTUAL_HC3_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_HC3_TEMPERATURE
|
|
],
|
|
CompitParameter.ACTUAL_HC4_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_HC4_TEMPERATURE
|
|
],
|
|
CompitParameter.ACTUAL_DHW_TEMP: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_DHW_TEMP
|
|
],
|
|
CompitParameter.ACTUAL_UPPER_SOURCE_TEMP: DESCRIPTIONS[
|
|
CompitParameter.ACTUAL_UPPER_SOURCE_TEMP
|
|
],
|
|
CompitParameter.CALCULATED_BUFFER_TEMP: DESCRIPTIONS[
|
|
CompitParameter.CALCULATED_BUFFER_TEMP
|
|
],
|
|
CompitParameter.CALCULATED_DHW_TEMP: DESCRIPTIONS[
|
|
CompitParameter.CALCULATED_DHW_TEMP
|
|
],
|
|
CompitParameter.CALCULATED_UPPER_SOURCE_TEMP: DESCRIPTIONS[
|
|
CompitParameter.CALCULATED_UPPER_SOURCE_TEMP
|
|
],
|
|
CompitParameter.HEATING1_TARGET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.HEATING1_TARGET_TEMPERATURE
|
|
],
|
|
CompitParameter.HEATING2_TARGET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.HEATING2_TARGET_TEMPERATURE
|
|
],
|
|
CompitParameter.HEATING3_TARGET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.HEATING3_TARGET_TEMPERATURE
|
|
],
|
|
CompitParameter.HEATING4_TARGET_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.HEATING4_TARGET_TEMPERATURE
|
|
],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
225: CompitDeviceDescription(
|
|
name="SPM - Nano Color",
|
|
parameters={
|
|
CompitParameter.HUMIDITY: DESCRIPTIONS[CompitParameter.HUMIDITY],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
CompitParameter.PM10_MEASURED: DESCRIPTIONS[CompitParameter.PM10_MEASURED],
|
|
CompitParameter.PM25_MEASURED: DESCRIPTIONS[CompitParameter.PM25_MEASURED],
|
|
},
|
|
),
|
|
226: CompitDeviceDescription(
|
|
name="AF-1",
|
|
parameters={
|
|
CompitParameter.ALARM_CODE: DESCRIPTIONS[CompitParameter.ALARM_CODE],
|
|
CompitParameter.BATTERY_LEVEL: DESCRIPTIONS[CompitParameter.BATTERY_LEVEL],
|
|
CompitParameter.CHARGING_POWER: DESCRIPTIONS[
|
|
CompitParameter.CHARGING_POWER
|
|
],
|
|
CompitParameter.OUTDOOR_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.OUTDOOR_TEMPERATURE
|
|
],
|
|
CompitParameter.RETURN_CIRCUIT_TEMPERATURE: DESCRIPTIONS[
|
|
CompitParameter.RETURN_CIRCUIT_TEMPERATURE
|
|
],
|
|
},
|
|
),
|
|
227: CompitDeviceDescription(
|
|
name="Combo",
|
|
parameters={
|
|
CompitParameter.PK1_FUNCTION: DESCRIPTIONS[CompitParameter.PK1_FUNCTION],
|
|
},
|
|
),
|
|
}
|
|
|
|
|
|
async def async_setup_entry(
|
|
hass: HomeAssistant,
|
|
entry: CompitConfigEntry,
|
|
async_add_devices: AddConfigEntryEntitiesCallback,
|
|
) -> None:
|
|
"""Set up Compit sensor entities from a config entry."""
|
|
|
|
coordinator = entry.runtime_data
|
|
sensor_entities = []
|
|
for device_id, device in coordinator.connector.all_devices.items():
|
|
device_definition = DEVICE_DEFINITIONS.get(device.definition.code)
|
|
|
|
if not device_definition:
|
|
continue
|
|
|
|
for code, entity_description in device_definition.parameters.items():
|
|
if (
|
|
entity_description.options
|
|
and NO_SENSOR in entity_description.options
|
|
and (
|
|
coordinator.connector.get_current_value(device_id, code)
|
|
== NO_SENSOR
|
|
)
|
|
):
|
|
continue
|
|
|
|
sensor_entities.append(
|
|
CompitSensor(
|
|
coordinator,
|
|
device_id,
|
|
device_definition.name,
|
|
code,
|
|
entity_description,
|
|
)
|
|
)
|
|
|
|
async_add_devices(sensor_entities)
|
|
|
|
|
|
class CompitSensor(CoordinatorEntity[CompitDataUpdateCoordinator], SensorEntity):
|
|
"""Representation of a Compit sensor entity."""
|
|
|
|
def __init__(
|
|
self,
|
|
coordinator: CompitDataUpdateCoordinator,
|
|
device_id: int,
|
|
device_name: str,
|
|
parameter_code: CompitParameter,
|
|
entity_description: SensorEntityDescription,
|
|
) -> None:
|
|
"""Initialize the sensor entity."""
|
|
super().__init__(coordinator)
|
|
self.device_id = device_id
|
|
self.entity_description = entity_description
|
|
self._attr_has_entity_name = True
|
|
self._attr_unique_id = f"{device_id}_{entity_description.key}"
|
|
self._attr_device_info = DeviceInfo(
|
|
identifiers={(DOMAIN, str(device_id))},
|
|
name=device_name,
|
|
manufacturer=MANUFACTURER_NAME,
|
|
model=device_name,
|
|
)
|
|
self.parameter_code = parameter_code
|
|
|
|
@property
|
|
def available(self) -> bool:
|
|
"""Return if entity is available."""
|
|
return (
|
|
super().available
|
|
and self.coordinator.connector.get_device(self.device_id) is not None
|
|
)
|
|
|
|
@property
|
|
def native_value(self) -> float | str | None:
|
|
"""Return the state of the sensor."""
|
|
value = self.coordinator.connector.get_current_value(
|
|
self.device_id, self.parameter_code
|
|
)
|
|
|
|
if (
|
|
isinstance(value, str)
|
|
and self.entity_description.options
|
|
and value in self.entity_description.options
|
|
):
|
|
return value
|
|
|
|
if isinstance(value, (int, float)):
|
|
return value
|
|
|
|
return None
|