Skip to content

Commit d3a844d

Browse files
Add sensors to capture current charge target
1 parent efa7404 commit d3a844d

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

custom_components/mixergy/sensor.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ async def async_update_data():
3434
new_entities.append(HotWaterTemperatureSensor(coordinator, tank))
3535
new_entities.append(ColdestWaterTemperatureSensor(coordinator, tank))
3636
new_entities.append(ChargeSensor(coordinator, tank))
37+
new_entities.append(TargetChargeSensor(coordinator, tank))
3738
new_entities.append(ElectricHeatSensor(coordinator, tank))
3839
new_entities.append(IndirectHeatSensor(coordinator, tank))
3940
new_entities.append(HeatPumpHeatSensor(coordinator,tank))
@@ -44,6 +45,7 @@ async def async_update_data():
4445
new_entities.append(TargetTemperatureSensor(coordinator, tank))
4546
new_entities.append(HolidayModeSensor(coordinator, tank))
4647
new_entities.append(PVPowerSensor(coordinator, tank))
48+
new_entities.append(IsChargingSensor(coordinator, tank))
4749

4850
async_add_entities(new_entities)
4951

@@ -129,6 +131,31 @@ def icon(self):
129131
@property
130132
def name(self):
131133
return f"Current Charge"
134+
135+
class TargetChargeSensor(SensorBase):
136+
137+
def __init__(self, coordinator, tank:Tank):
138+
super().__init__(coordinator, tank)
139+
140+
@property
141+
def unique_id(self):
142+
return f"mixergy_{self._tank.serial_number}_target_charge"
143+
144+
@property
145+
def unit_of_measurement(self):
146+
return PERCENTAGE
147+
148+
@property
149+
def state(self):
150+
return self._tank.target_charge
151+
152+
@property
153+
def icon(self):
154+
return "hass:water-percent"
155+
156+
@property
157+
def name(self):
158+
return f"Target Charge"
132159

133160
class HotWaterTemperatureSensor(SensorBase):
134161

@@ -306,6 +333,28 @@ def icon(self):
306333
@property
307334
def name(self):
308335
return f"Low Hot Water"
336+
337+
class IsChargingSensor(BinarySensorBase):
338+
339+
def __init__(self, coordinator, tank:Tank):
340+
super().__init__( coordinator, tank)
341+
self._state = STATE_OFF
342+
343+
@property
344+
def unique_id(self):
345+
return f"mixergy_{self._tank.tank_id}_charging"
346+
347+
@property
348+
def is_on(self):
349+
return self._tank.target_charge > 0
350+
351+
@property
352+
def icon(self):
353+
return "hass:water-percent-alert"
354+
355+
@property
356+
def name(self):
357+
return f"Is Charging"
309358

310359
class PowerSensor(SensorBase):
311360

custom_components/mixergy/tank.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def __init__(self, hass, username, password, serial_number):
2727
self._hot_water_temperature = -1
2828
self._coldest_water_temperature = -1
2929
self._charge = -1
30+
self._target_charge = -1
3031
self._indirect_heat_source = False
3132
self._electric_heat_source = False
3233
self._heatpump_heat_source = False
@@ -236,6 +237,18 @@ async def fetch_last_measurement(self):
236237

237238
current = state["current"]
238239

240+
new_target_charge = -1
241+
242+
if "target" in current:
243+
new_target_charge = current["target"]
244+
else:
245+
new_target_charge = -1
246+
247+
_LOGGER.debug("Current Target: %f", self._target_charge)
248+
_LOGGER.debug("New Target: %f", new_target_charge)
249+
250+
self._target_charge = new_target_charge
251+
239252
vacation = False
240253

241254
# Source is only present when vacation is enabled it seems
@@ -331,6 +344,10 @@ def coldest_water_temperature(self):
331344
def charge(self):
332345
return self._charge
333346

347+
@property
348+
def target_charge(self):
349+
return self._target_charge
350+
334351
@property
335352
def indirect_heat_source(self):
336353
return self._indirect_heat_source

0 commit comments

Comments
 (0)