Calculate ah drawn for history and add time since last full

This commit is contained in:
Carsten Schmiemann 2023-06-12 01:23:13 +02:00
parent f3a7259d22
commit 3306b57f81
1 changed files with 12 additions and 5 deletions

View File

@ -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: