Skip to content

Commit

Permalink
Issue #77. Ignore floating batteries in cvl calculation.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark Hale committed Jan 9, 2025
1 parent 7790f41 commit b67c019
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
23 changes: 21 additions & 2 deletions battery_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,14 @@ def get_result(self):
return self.get_value_count()


class NoOpAggregator(AbstractAggregator):
def __init__(self):
super().__init__(initial_value=None)

def get_result(self):
return None


SumAggregator = functools.partial(Aggregator, _sum, initial_value=0)
MinAggregator = functools.partial(Aggregator, _safe_min)
MaxAggregator = functools.partial(Aggregator, _safe_max)
Expand Down Expand Up @@ -180,6 +188,7 @@ def __init__(self, unit, triggerPaths=None, action=None):
'/ConsumedAmphours': PathDefinition(AMP_HOURS, SumAggregator),
'/Balancing': PathDefinition(NO_UNIT, BooleanAggregator),
'/Info/BatteryLowVoltage': PathDefinition(VOLTAGE, MaxAggregator),
'/Info/ChargeMode': PathDefinition(NO_UNIT, NoOpAggregator), # dbus-serialbattery
'/Io/AllowToCharge': PathDefinition(NO_UNIT, BooleanAggregator),
'/Io/AllowToDischarge': PathDefinition(NO_UNIT, BooleanAggregator),
'/Io/AllowToBalance': PathDefinition(NO_UNIT, BooleanAggregator),
Expand Down Expand Up @@ -697,10 +706,20 @@ def _updateCVL(self):

if op is not None:
cvlPerBattery = []
for cvl in aggr_cvl.values.values():
chargingCVLs = []
aggr_cm = self.aggregators["/Info/ChargeMode"]
for batteryName, cvl in aggr_cvl.values.items():
cm = aggr_cm.values.get(batteryName)
self.logger.debug(f"Charge mode for {batteryName}: {cm}")
if cvl is not None:
cvlPerBattery.append(cvl)

if cm is not None and not "float" in cm.lower():
chargingCVLs.append(cvl)

if chargingCVLs:
cvlPerBattery = chargingCVLs

self.logger.debug(f"Battery CVL: {op.__name__} of {cvlPerBattery}")
if cvlPerBattery:
cvl = op(cvlPerBattery)
if self._is_dvcc():
Expand Down
2 changes: 1 addition & 1 deletion version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v3.25
v3.26

0 comments on commit b67c019

Please sign in to comment.