diff --git a/dbus-batrium-native/dbus-batrium-native.py b/dbus-batrium-native/dbus-batrium-native.py index 1596dab..25e6655 100644 --- a/dbus-batrium-native/dbus-batrium-native.py +++ b/dbus-batrium-native/dbus-batrium-native.py @@ -99,6 +99,7 @@ class DbusBatteryService: '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], + 'TargetChargeVoltage': ['/Settings/Batrium/TargetChargeVoltage', 0.0,0.0,0.0], 'interval': ['/Settings/Batrium/Interval', 200, 200, 200] }, eventCallback=handle_changed_setting) @@ -139,14 +140,15 @@ class DbusBatteryService: self._dbusservice['/Soh'] = 100 self._dbusservice['/Status'] = 0 self._dbusservice['/ConsumedAmphours'] = 0 - + self._dbusservice['/Info/MaxChargeCurrent'] = 1 + 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 - elif self._bat.soc > 100: + else: self._dbusservice['/Soc'] = 100 - + GLib.timeout_add( self._settings['interval'], exit_on_error, self._update) def _gettext(self, path, value): @@ -165,6 +167,7 @@ class DbusBatteryService: self._settings['TotalAhDrawn'] = self._dbusservice['/History/TotalAhDrawn'] self._settings['MinCellVoltage'] = self._dbusservice['/History/MinCellVoltage'] self._settings['MaxCellVoltage'] = self._dbusservice['/History/MaxCellVoltage'] + self._settings['TargetChargeVoltage'] = self._dbusservice['/Info/MaxChargeVoltage'] def _daily_stats(self): if (self._dbusservice['/History/DischargedEnergy'] == 0): return @@ -222,8 +225,8 @@ class DbusBatteryService: 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 datetime.fromtimestamp(time()).day != datetime.fromtimestamp(float(self._settings['TimeLastFull'])).day: + # self._settings['TimeLastFull'] = time() if self._bat.NumberInBypass != 0: self._dbusservice['/Balancing'] = 1 @@ -247,6 +250,8 @@ class DbusBatteryService: # Workaround lower charge voltage a bit, because Batrium sends TCL 0V if charge is disabled elif self.maxChargeVoltage != 0: self._dbusservice['/Info/MaxChargeVoltage'] = self.maxChargeVoltage - 0.1 + elif self.maxChargeVoltage == 0 and self._bat.maxChargeVoltage == 0: + self._dbusservice['/Info/MaxChargeVoltage'] = self._settings['TargetChargeVoltage'] self._dbusservice['/System/NrOfModulesOnline'] = self._bat.numberOfModules self._dbusservice['/System/NrOfBatteriesBalancing'] = self._bat.NumberInBypass