1 """Support for Rheem EcoNet water heaters."""
3 from __future__
import annotations
5 from pyeconet.equipment
import Equipment, EquipmentType
10 SensorEntityDescription,
16 SIGNAL_STRENGTH_DECIBELS,
24 from .const
import DOMAIN, EQUIPMENT
25 from .entity
import EcoNetEntity
27 SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
31 native_unit_of_measurement=PERCENTAGE,
32 state_class=SensorStateClass.MEASUREMENT,
35 key=
"tank_hot_water_availability",
36 name=
"available_hot_water",
37 native_unit_of_measurement=PERCENTAGE,
38 state_class=SensorStateClass.MEASUREMENT,
41 key=
"compressor_health",
42 name=
"compressor_health",
43 native_unit_of_measurement=PERCENTAGE,
44 state_class=SensorStateClass.MEASUREMENT,
47 key=
"override_status",
48 name=
"override_status",
51 key=
"todays_water_usage",
52 name=
"water_usage_today",
53 native_unit_of_measurement=UnitOfVolume.GALLONS,
54 device_class=SensorDeviceClass.WATER,
55 state_class=SensorStateClass.TOTAL_INCREASING,
58 key=
"todays_energy_usage",
59 name=
"power_usage_today",
60 native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
61 device_class=SensorDeviceClass.ENERGY,
62 state_class=SensorStateClass.TOTAL_INCREASING,
71 native_unit_of_measurement=SIGNAL_STRENGTH_DECIBELS,
72 device_class=SensorDeviceClass.SIGNAL_STRENGTH,
73 state_class=SensorStateClass.MEASUREMENT,
74 entity_registry_enabled_default=
False,
75 entity_category=EntityCategory.DIAGNOSTIC,
85 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
87 """Set up EcoNet sensor based on a config entry."""
89 data = hass.data[DOMAIN][EQUIPMENT][entry.entry_id]
90 equipment = data[EquipmentType.WATER_HEATER].copy()
91 equipment.extend(data[EquipmentType.THERMOSTAT].copy())
95 for _equip
in equipment
96 for description
in SENSOR_TYPES
97 if getattr(_equip, description.key,
False)
is not False
104 """Define a Econet sensor."""
108 econet_device: Equipment,
109 description: SensorEntityDescription,
116 f
"{econet_device.device_id}_{econet_device.device_name}_{description.name}"
121 """Return sensors state."""
124 if self.
_econet_econet.energy_type ==
"KBTU":
125 value = value * 0.2930710702
126 if isinstance(value, float):
127 value = round(value, 2)
None __init__(self, Equipment econet_device, SensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)