From 3306b57f8163daee0acdcc6116a3635b33321bf7 Mon Sep 17 00:00:00 2001 From: Carsten Schmiemann Date: Mon, 12 Jun 2023 01:23:13 +0200 Subject: [PATCH] Calculate ah drawn for history and add time since last full --- dbus-batrium-native/dbus-batrium-native.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/dbus-batrium-native/dbus-batrium-native.py b/dbus-batrium-native/dbus-batrium-native.py index e1a767c..2c29445 100644 --- a/dbus-batrium-native/dbus-batrium-native.py +++ b/dbus-batrium-native/dbus-batrium-native.py @@ -96,7 +96,7 @@ class DbusBatteryService: supportedSettings={ 'AvgDischarge': ['/Settings/Batrium/AvgerageDischarge', 0.0,0,0], 'TotalAhDrawn': ['/Settings/Batrium/TotalAhDrawn', 0.0,0,0], - 'TimeLastFull': ['/Settings/Batrium/TimeLastFull', 0.0 ,0,0], + 'TimeLastFull': ['/Settings/Batrium/TimeLastFull', 0.0,0,0], 'MinCellVoltage': ['/Settings/Batrium/MinCellVoltage', 0.0,0.0,0.0], 'MaxCellVoltage': ['/Settings/Batrium/MaxCellVoltage', 0.0,0.0,0.0], 'interval': ['/Settings/Batrium/Interval', 200, 200, 200] @@ -138,9 +138,9 @@ class DbusBatteryService: self._dbusservice['/Soh'] = 100 self._dbusservice['/Status'] = 0 + self._dbusservice['/ConsumedAmphours'] = 0 - logging.info("History cell voltage min: %.3f, max: %.3f, totalAhDrawn: %d", - self._settings['MinCellVoltage'], self._settings['MaxCellVoltage'], self._settings['TotalAhDrawn']) + logging.info("History cell voltage min: %.3f, max: %.3f, totalAhDrawn: %d", self._settings['MinCellVoltage'], self._settings['MaxCellVoltage'], self._settings['TotalAhDrawn']) if self._bat.soc <= 99: self._dbusservice['/Soc'] = self._bat.soc @@ -215,16 +215,21 @@ class DbusBatteryService: if self._bat.soc <= 99: self._dbusservice['/Soc'] = self._bat.soc + # calculate time since last full charge + dt = datetime.now() - datetime.fromtimestamp( float(self._settings['TimeLastFull']) ) + self._dbusservice['/History/TimeSinceLastFullCharge'] = (dt.seconds + dt.days * 24 * 3600) elif (self._bat.soc > 99) and (self.cell_balanced): self._dbusservice['/Soc'] = 100 + self._dbusservice['/ConsumedAmphours'] = 0 + # set timestamp last full charge + if datetime.fromtimestamp(time()).day != datetime.fromtimestamp(float(self._settings['TimeLastFull'])).day: + self._settings['TimeLastFull'] = time() if self._bat.NumberInBypass != 0: self._dbusservice['/Balancing'] = 1 else: self._dbusservice['/Balancing'] = 0 - #self._dbusservice['/ConsumedAmphours'] = self._bat.AhToFull --- not working, Batrium not transmitting - self._dbusservice['/ConsumedAmphours'] = ((100 - self._dbusservice['/Soc']) / 100) * self._bat.capacity self._dbusservice['/InstalledCapacity'] = self._bat.capacity self._dbusservice['/Capacity'] = self._bat.capacity self._dbusservice['/Dc/0/Current'] = self._bat.current @@ -283,6 +288,8 @@ class DbusBatteryService: if self._bat.current < -1: #discharging + self._dbusservice['/ConsumedAmphours'] += abs(self._bat.current * 0.016667) #Ah + self._dbusservice['/History/TotalAhDrawn'] += abs(self._bat.current * 0.016667) #Ah if self._bat.TimeToEmpty < 432000: self._dbusservice['/TimeToGo'] = self._bat.TimeToEmpty else: