Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Daly BMS - no data shown in MQTT #837

Closed
gkehrer opened this issue Oct 9, 2023 · 6 comments
Closed

Daly BMS - no data shown in MQTT #837

gkehrer opened this issue Oct 9, 2023 · 6 comments
Labels
bug Something isn't working

Comments

@gkehrer
Copy link

gkehrer commented Oct 9, 2023

Describe the bug

I got a new Daly BMS with FW 11_230627_001T and here the data is not available in MQTT.
In the old Daly BMS with FW 11_220722_100T all works OK.

Both Daly BMS show data in the Victron console but the new one is not showing all data.
The data in SerialBattery -> Device is missing:
grafik

I installed the latest dev nightly build but the issue is still the same.

How to reproduce

  1. Install latest code
  2. go to: SerialBattery -> Device

grafik
grafik
grafik

dbus-spy shows only limited values at the new BMS:
grafik

At the old BMS all data is available with dbus-spy:
grafik

Expected behavior

Show all values in dbus-spy and MQTT for the new Daly BMS.

Driver version

1.0.20231009dev

Venus OS device type

Cerbo GX

Venus OS version

v3.10

BMS type

Daly Smart BMS

Cell count

8

Connection type

Serial USB adapter to RS485

Config file

; 1 Seconds
; 2 Time string <days>d <hours>h <minutes>m <seconds>s
; 3 Both seconds and time string "<seconds> [<days>d <hours>h <minutes>m <seconds>s]"
TIME_TO_SOC_VALUE_TYPE = 1
; Specify in seconds how often the TimeToSoc should be recalculated
; Minimum are 5 seconds to prevent CPU overload
TIME_TO_SOC_RECALCULATE_EVERY = 60
; Include TimeToSoC points when moving away from the SoC point [Valid values True, False]
; These will be as negative time. Disabling this improves performance slightly
TIME_TO_SOC_INC_FROM = False


; --------- Additional settings ---------
; Specify only one BMS type to load else leave empty to try to load all availabe
; LltJbd, Ant, Daly, Daly, Jkbms, Lifepower, Renogy, Renogy, Ecs
BMS_TYPE = Daly

; Publish the config settings to the dbus path "/Info/Config/"
PUBLISH_CONFIG_VALUES = 1

; Select the format of cell data presented on dbus [Valid values 0,1,2,3]
; 0 Do not publish all the cells (only the min/max cell data as used by the default GX)
; 1 Format: /Voltages/Cell (also available for display on Remote Console)
; 2 Format: /Cell/#/Volts
; 3 Both formats 1 and 2
BATTERY_CELL_DATA_FORMAT = 1

; Simulate Midpoint graph (True/False).
MIDPOINT_ENABLE = False


; Battery temperature
; Specifiy how the battery temperature is assembled
; 0 Get mean of temperature sensor 1 and temperature sensor 2
; 1 Get only temperature from temperature sensor 1
; 2 Get only temperature from temperature sensor 2
TEMP_BATTERY = 0

; Temperature sensor 1 name
TEMP_1_NAME = Temp 1

; Temperature sensor 2 name
TEMP_2_NAME = Temp 2


; --------- BMS specific settings ---------

; -- LltJbd settings
; SoC low levels
; NOTE: SOC_LOW_WARNING is also used to calculate the Time-To-Go even if you are not using a LltJbd BMS
SOC_LOW_WARNING = 20
SOC_LOW_ALARM   = 10

; -- Daly settings
; Battery capacity (amps) if the BMS does not support reading it
BATTERY_CAPACITY = 560
; Invert Battery Current. Default non-inverted. Set to -1 to invert
INVERT_CURRENT_MEASUREMENT = -1

; -- ESC GreenMeter and Lipro device settings
GREENMETER_ADDRESS  = 1
LIPRO_START_ADDRESS = 2
LIPRO_END_ADDRESS   = 4
LIPRO_CELL_COUNT = 15

Relevant log output

Logs
2023-10-09 14:36:45.310106500 ERROR:dbus.service:Unable to append (dbus.String('20230717\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', variant_level=1),) to message with signature v: <class 'ValueError'>: embedded null byte
2023-10-09 14:36:49.621966500 ERROR:dbus.service:Unable to append (dbus.Dictionary({'Mgmt/ProcessName': dbus.String('/opt/victronenergy/dbus-serialbattery/dbushelper.py', variant_level=1),
    'Mgmt/ProcessVersion': dbus.String('Python 3.8.14', variant_level=1),
    'Mgmt/Connection': dbus.String('Serial /dev/ttyUSB0', variant_level=1),
    'DeviceInstance': dbus.Int32(1, variant_level=1),
    'ProductId': dbus.Int32(0, variant_level=1),
    'ProductName': dbus.String('SerialBattery(Daly)', variant_level=1),
    'FirmwareVersion': dbus.String('1.0.20231009dev', variant_level=1),
    'HardwareVersion': dbus.String('DalyBMS 8 cells', variant_level=1),
    'Connected': dbus.Int32(1, variant_level=1),
    'CustomName': dbus.String('SerialBattery(Daly)', variant_level=1),
    'Serial': dbus.String('20230717\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', variant_level=1),
    'DeviceName': dbus.String('20230717\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', variant_level=1),
    'Info/BatteryLowVoltage': dbus.Double(23.2, variant_level=1),
    'Info/MaxChargeVoltage': dbus.Double(28.44, variant_level=1),
    'Info/MaxChargeCurrent': dbus.Double(98.333, variant_level=1),
    'Info/MaxDischargeCurrent': dbus.Double(250.0, variant_level=1),
    'Info/ChargeMode': dbus.String('Bulk (Linear Mode)', variant_level=1),
    'Info/ChargeModeDebug': dbus.String('', variant_level=1),
    'Info/ChargeLimitation': dbus.String('Cell Voltage', variant_level=1),
    'Info/DischargeLimitation': dbus.String('Max Battery Discharge Current', variant_level=1),
    'System/NrOfCellsPerBattery': dbus.Int32(8, variant_level=1),
    'System/NrOfModulesOnline': dbus.Int32(1, variant_level=1),
    'System/NrOfModulesOffline': dbus.Int32(0, variant_level=1),
    'System/NrOfModulesBlockingCharge': dbus.Int32(0, variant_level=1),
    'System/NrOfModulesBlockingDischarge': dbus.Int32(0, variant_level=1),
    'Capacity': dbus.Double(491.68, variant_level=1),
    'InstalledCapacity': dbus.Double(560.0, variant_level=1),
    'ConsumedAmphours': dbus.Double(68.32, variant_level=1),
    'Soc': dbus.Double(87.8, variant_level=1),
    'Dc/0/Voltage': dbus.Double(26.8, variant_level=1),
    'Dc/0/Current': dbus.Double(3.61, variant_level=1),
    'Dc/0/Power': dbus.Double(96.86, variant_level=1),
    'Dc/0/Temperature': dbus.Double(19.0, variant_level=1),
    'Dc/0/MidVoltage': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Dc/0/MidVoltageDeviation': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/MinCellTemperature': dbus.Int32(19, variant_level=1),
    'System/MinTemperatureCellId': dbus.String('Temp 1', variant_level=1),
    'System/MaxCellTemperature': dbus.Int32(19, variant_level=1),
    'System/MaxTemperatureCellId': dbus.String('Temp 2', variant_level=1),
    'System/MOSTemperature': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature1': dbus.Int32(19, variant_level=1),
    'System/Temperature1Name': dbus.String('Temp 1', variant_level=1),
    'System/Temperature2': dbus.Int32(19, variant_level=1),
    'System/Temperature2Name': dbus.String('Temp 2', variant_level=1),
    'System/Temperature3': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature3Name': dbus.String('Temp 3', variant_level=1),
    'System/Temperature4': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature4Name': dbus.String('Temp 4', variant_level=1),
    'System/MaxCellVoltage': dbus.Double(3.364, variant_level=1),
    'System/MaxVoltageCellId': dbus.String('C4', variant_level=1),
    'System/MinCellVoltage': dbus.Double(3.36, variant_level=1),
    'System/MinVoltageCellId': dbus.String('C8', variant_level=1),
    'History/ChargeCycles': dbus.Int32(7, variant_level=1),
    'History/TotalAhDrawn': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Balancing': dbus.Int32(0, variant_level=1),
    'Io/AllowToCharge': dbus.Int32(1, variant_level=1),
    'Io/AllowToDischarge': dbus.Int32(1, variant_level=1),
    'Io/AllowToBalance': dbus.Int32(0, variant_level=1),
    'Io/ForceChargingOff': dbus.Int32(0, variant_level=1),
    'Io/ForceDischargingOff': dbus.Int32(0, variant_level=1),
    'Io/TurnBalancingOff': dbus.Int32(0, variant_level=1),
    'Alarms/LowVoltage': dbus.Int32(0, variant_level=1),
    'Alarms/HighVoltage': dbus.Int32(0, variant_level=1),
    'Alarms/LowCellVoltage': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/LowSoc': dbus.Int32(0, variant_level=1),
    'Alarms/HighChargeCurrent': dbus.Int32(0, variant_level=1),
    'Alarms/HighDischargeCurrent': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/CellImbalance': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/InternalFailure': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/HighChargeTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/LowChargeTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/HighTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/LowTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/BmsCable': dbus.Int32(0, variant_level=1),
    'Alarms/HighInternalTemperature': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Voltages/Cell1': dbus.Double(3.361, variant_level=1),
    'Balances/Cell1': dbus.Int32(0, variant_level=1),
    'Voltages/Cell2': dbus.Double(3.362, variant_level=1),
    'Balances/Cell2': dbus.Int32(0, variant_level=1),
    'Voltages/Cell3': dbus.Double(3.364, variant_level=1),
    'Balances/Cell3': dbus.Int32(0, variant_level=1),
    'Voltages/Cell4': dbus.Double(3.365, variant_level=1),
    'Balances/Cell4': dbus.Int32(0, variant_level=1),
    'Voltages/Cell5': dbus.Double(3.362, variant_level=1),
    'Balances/Cell5': dbus.Int32(0, variant_level=1),
    'Voltages/Cell6': dbus.Double(3.362, variant_level=1),
    'Balances/Cell6': dbus.Int32(0, variant_level=1),
    'Voltages/Cell7': dbus.Double(3.362, variant_level=1),
    'Balances/Cell7': dbus.Int32(0, variant_level=1),
    'Voltages/Cell8': dbus.Double(3.359, variant_level=1),
    'Balances/Cell8': dbus.Int32(0, variant_level=1),
    'Voltages/Sum': dbus.Double(26.897000000000006, variant_level=1),
    'Voltages/Diff': dbus.Double(0.0040000000000000036, variant_level=1),
    'TimeToGo': dbus.Int32(145533, variant_level=1),
    'CurrentAvg': dbus.Double(1.69, variant_level=1),
    'Info/Config/PATH_CONFIG_DEFAULT': dbus.String('config.default.ini', variant_level=1),
    'Info/Config/PATH_CONFIG_USER': dbus.String('config.ini', variant_level=1),
    'Info/Config/default_config_file_path': dbus.String('/opt/victronenergy/dbus-serialbattery/config.default.ini', variant_level=1),
    'Info/Config/custom_config_file_path': dbus.String('/opt/victronenergy/dbus-serialbattery/config.ini', variant_level=1),
    'Info/Config/DRIVER_VERSION': dbus.String('1.0.20231009dev', variant_level=1),
    'Info/Config/zero_char': dbus.String('0', variant_level=1),
    'Info/Config/degree_sign': dbus.String('°', variant_level=1),
    'Info/Config/MAX_BATTERY_CHARGE_CURRENT': dbus.Double(125.0, variant_level=1),
    'Info/Config/MAX_BATTERY_DISCHARGE_CURRENT': dbus.Double(250.0, variant_level=1),
    'Info/Config/MIN_CELL_VOLTAGE': dbus.Double(2.9, variant_level=1),
    'Info/Config/MAX_CELL_VOLTAGE': dbus.Double(3.555, variant_level=1),
    'Info/Config/FLOAT_CELL_VOLTAGE': dbus.Double(3.455, variant_level=1),
    'Info/Config/SOC_RESET_VOLTAGE': dbus.Double(3.65, variant_level=1),
    'Info/Config/SOC_RESET_AFTER_DAYS': dbus.Boolean(False, variant_level=1),
    'Info/Config/BLOCK_ON_DISCONNECT': dbus.Boolean(False, variant_level=1),
    'Info/Config/LINEAR_LIMITATION_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/LINEAR_RECALCULATION_EVERY': dbus.Int32(60, variant_level=1),
    'Info/Config/LINEAR_RECALCULATION_ON_PERC_CHANGE': dbus.Int32(5, variant_level=1),
    'Info/Config/CVCM_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CELL_VOLTAGE_DIFF_KEEP_MAX_VOLTAGE_UNTIL': dbus.Double(0.01, variant_level=1),
    'Info/Config/CELL_VOLTAGE_DIFF_TO_RESET_VOLTAGE_LIMIT': dbus.Double(0.08, variant_level=1),
    'Info/Config/MAX_VOLTAGE_TIME_SEC': dbus.Int32(900, variant_level=1),
    'Info/Config/SOC_LEVEL_TO_RESET_VOLTAGE_LIMIT': dbus.Int32(90, variant_level=1),
    'Info/Config/CCCM_CV_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/DCCM_CV_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CELL_VOLTAGES_WHILE_CHARGING': dbus.Array([dbus.Double(3.55, variant_level=1), dbus.Double(3.5, variant_level=1), dbus.Double(3.45, variant_level=1), dbus.Double(3.3, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_CHARGE_CURRENT_CV': dbus.Array([dbus.Double(6.25, variant_level=1), dbus.Double(12.5, variant_level=1), dbus.Double(62.5, variant_level=1), dbus.Double(125.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CELL_VOLTAGES_WHILE_DISCHARGING': dbus.Array([dbus.Double(2.7, variant_level=1), dbus.Double(2.8, variant_level=1), dbus.Double(2.9, variant_level=1), dbus.Double(3.1, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_DISCHARGE_CURRENT_CV': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(25.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(250.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CCCM_T_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/DCCM_T_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/TEMPERATURE_LIMITS_WHILE_CHARGING': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(2.0, variant_level=1), dbus.Double(5.0, variant_level=1), dbus.Double(10.0, variant_level=1), dbus.Double(15.0, variant_level=1), dbus.Double(20.0, variant_level=1), dbus.Double(35.0, variant_level=1), dbus.Double(40.0, variant_level=1), dbus.Double(55.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_CHARGE_CURRENT_T': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(12.5, variant_level=1), dbus.Double(25.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(100.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(0.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/TEMPERATURE_LIMITS_WHILE_DISCHARGING': dbus.Array([dbus.Double(-20.0, variant_level=1), dbus.Double(0.0, variant_level=1), dbus.Double(5.0, variant_level=1), dbus.Double(10.0, variant_level=1), dbus.Double(15.0, variant_level=1), dbus.Double(45.0, variant_level=1), dbus.Double(55.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_DISCHARGE_CURRENT_T': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(75.0, variant_level=1), dbus.Double(100.0, variant_level=1), dbus.Double(250.0, variant_level=1), dbus.Double(250.0, variant_level=1), dbus.Double(0.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CCCM_SOC_ENABLE': dbus.Boolean(False, variant_level=1),
    'Info/Config/DCCM_SOC_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CC_SOC_LIMIT1': dbus.Double(98.0, variant_level=1),
    'Info/Config/CC_SOC_LIMIT2': dbus.Double(95.0, variant_level=1),
    'Info/Config/CC_SOC_LIMIT3': dbus.Double(91.0, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT1': dbus.Double(12.5, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT2': dbus.Double(37.5, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT3': dbus.Double(62.5, variant_level=1),
    'Info/Config/DC_SOC_LIMIT1': dbus.Double(10.0, variant_level=1),
    'Info/Config/DC_SOC_LIMIT2': dbus.Double(20.0, variant_level=1),
    'Info/Config/DC_SOC_LIMIT3': dbus.Double(30.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT1': dbus.Double(25.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT2': dbus.Double(75.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT3': dbus.Double(125.0, variant_level=1),
    'Info/Config/TIME_TO_GO_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/TIME_TO_SOC_POINTS': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/TIME_TO_SOC_VALUE_TYPE': dbus.Int32(1, variant_level=1),
    'Info/Config/TIME_TO_SOC_RECALCULATE_EVERY': dbus.Int32(60, variant_level=1),
    'Info/Config/TIME_TO_SOC_INC_FROM': dbus.Boolean(False, variant_level=1),
    'Info/Config/BMS_TYPE': dbus.Array([dbus.String('Daly', variant_level=1)], signature=None, variant_level=1),
    'Info/Config/EXCLUDED_DEVICES': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/CUSTOM_BATTERY_NAMES': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/AUTO_RESET_SOC': dbus.Boolean(True, variant_level=1),
    'Info/Config/PUBLISH_CONFIG_VALUES': dbus.Int32(1, variant_level=1),
    'Info/Config/BATTERY_CELL_DATA_FORMAT': dbus.Int32(1, variant_level=1),
    'Info/Config/MIDPOINT_ENABLE': dbus.Boolean(False, variant_level=1),
    'Info/Config/TEMP_BATTERY': dbus.Int32(0, variant_level=1),
    'Info/Config/TEMP_1_NAME': dbus.String('Temp 1', variant_level=1),
    'Info/Config/TEMP_2_NAME': dbus.String('Temp 2', variant_level=1),
    'Info/Config/TEMP_3_NAME': dbus.String('Temp 3', variant_level=1),
    'Info/Config/TEMP_4_NAME': dbus.String('Temp 4', variant_level=1),
    'Info/Config/SOC_LOW_WARNING': dbus.Double(20.0, variant_level=1),
    'Info/Config/SOC_LOW_ALARM': dbus.Double(10.0, variant_level=1),
    'Info/Config/BATTERY_CAPACITY': dbus.Double(560.0, variant_level=1),
    'Info/Config/INVERT_CURRENT_MEASUREMENT': dbus.Int32(-1, variant_level=1),
    'Info/Config/GREENMETER_ADDRESS': dbus.Int32(1, variant_level=1),
    'Info/Config/LIPRO_START_ADDRESS': dbus.Int32(2, variant_level=1),
    'Info/Config/LIPRO_END_ADDRESS': dbus.Int32(4, variant_level=1),
    'Info/Config/LIPRO_CELL_COUNT': dbus.Int32(15, variant_level=1),
    'Info/Config/HELTEC_MODBUS_ADDR': dbus.Array([dbus.Int32(1, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/VOLTAGE_DROP': dbus.Double(0.0, variant_level=1),
    'Settings/HasSettings': dbus.Int32(1, variant_level=1),
    'Settings/ResetSoc': dbus.Double(87.8, variant_level=1)}, signature=dbus.Signature('sv'), variant_level=1),) to message with signature v: <class 'ValueError'>: embedded null byte
    tail: /var/log/dbus-serialbattery.ttyUSB0/current has been replaced; following end of new file
    riant_level=1),
    'System/MaxCellTemperature': dbus.Int32(19, variant_level=1),
    'System/MaxTemperatureCellId': dbus.String('Temp 2', variant_level=1),
    'System/MOSTemperature': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature1': dbus.Int32(19, variant_level=1),
    'System/Temperature1Name': dbus.String('Temp 1', variant_level=1),
    'System/Temperature2': dbus.Int32(19, variant_level=1),
    'System/Temperature2Name': dbus.String('Temp 2', variant_level=1),
    'System/Temperature3': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature3Name': dbus.String('Temp 3', variant_level=1),
    'System/Temperature4': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature4Name': dbus.String('Temp 4', variant_level=1),
    'System/MaxCellVoltage': dbus.Double(3.364, variant_level=1),
    'System/MaxVoltageCellId': dbus.String('C4', variant_level=1),
    'System/MinCellVoltage': dbus.Double(3.359, variant_level=1),
    'System/MinVoltageCellId': dbus.String('C8', variant_level=1),
    'History/ChargeCycles': dbus.Int32(7, variant_level=1),
    'History/TotalAhDrawn': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Balancing': dbus.Int32(0, variant_level=1),
    'Io/AllowToCharge': dbus.Int32(1, variant_level=1),
    'Io/AllowToDischarge': dbus.Int32(1, variant_level=1),
    'Io/AllowToBalance': dbus.Int32(0, variant_level=1),
    'Io/ForceChargingOff': dbus.Int32(0, variant_level=1),
    'Io/ForceDischargingOff': dbus.Int32(0, variant_level=1),
    'Io/TurnBalancingOff': dbus.Int32(0, variant_level=1),
    'Alarms/LowVoltage': dbus.Int32(0, variant_level=1),
    'Alarms/HighVoltage': dbus.Int32(0, variant_level=1),
    'Alarms/LowCellVoltage': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/LowSoc': dbus.Int32(0, variant_level=1),
    'Alarms/HighChargeCurrent': dbus.Int32(0, variant_level=1),
    'Alarms/HighDischargeCurrent': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/CellImbalance': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/InternalFailure': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/HighChargeTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/LowChargeTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/HighTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/LowTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/BmsCable': dbus.Int32(0, variant_level=1),
    'Alarms/HighInternalTemperature': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Voltages/Cell1': dbus.Double(3.361, variant_level=1),
    'Balances/Cell1': dbus.Int32(0, variant_level=1),
    'Voltages/Cell2': dbus.Double(3.363, variant_level=1),
    'Balances/Cell2': dbus.Int32(0, variant_level=1),
    'Voltages/Cell3': dbus.Double(3.363, variant_level=1),
    'Balances/Cell3': dbus.Int32(0, variant_level=1),
    'Voltages/Cell4': dbus.Double(3.365, variant_level=1),
    'Balances/Cell4': dbus.Int32(0, variant_level=1),
    'Voltages/Cell5': dbus.Double(3.362, variant_level=1),
    'Balances/Cell5': dbus.Int32(0, variant_level=1),
    'Voltages/Cell6': dbus.Double(3.363, variant_level=1),
    'Balances/Cell6': dbus.Int32(0, variant_level=1),
    'Voltages/Cell7': dbus.Double(3.362, variant_level=1),
    'Balances/Cell7': dbus.Int32(0, variant_level=1),
    'Voltages/Cell8': dbus.Double(3.36, variant_level=1),
    'Balances/Cell8': dbus.Int32(0, variant_level=1),
    'Voltages/Sum': dbus.Double(26.899, variant_level=1),
    'Voltages/Diff': dbus.Double(0.004999999999999893, variant_level=1),
    'TimeToGo': dbus.Int32(145533, variant_level=1),
    'CurrentAvg': dbus.Double(1.69, variant_level=1),
    'Info/Config/PATH_CONFIG_DEFAULT': dbus.String('config.default.ini', variant_level=1),
    'Info/Config/PATH_CONFIG_USER': dbus.String('config.ini', variant_level=1),
    'Info/Config/default_config_file_path': dbus.String('/opt/victronenergy/dbus-serialbattery/config.default.ini', variant_level=1),
    'Info/Config/custom_config_file_path': dbus.String('/opt/victronenergy/dbus-serialbattery/config.ini', variant_level=1),
    'Info/Config/DRIVER_VERSION': dbus.String('1.0.20231009dev', variant_level=1),
    'Info/Config/zero_char': dbus.String('0', variant_level=1),
    'Info/Config/degree_sign': dbus.String('°', variant_level=1),
    'Info/Config/MAX_BATTERY_CHARGE_CURRENT': dbus.Double(125.0, variant_level=1),
    'Info/Config/MAX_BATTERY_DISCHARGE_CURRENT': dbus.Double(250.0, variant_level=1),
    'Info/Config/MIN_CELL_VOLTAGE': dbus.Double(2.9, variant_level=1),
    'Info/Config/MAX_CELL_VOLTAGE': dbus.Double(3.555, variant_level=1),
    'Info/Config/FLOAT_CELL_VOLTAGE': dbus.Double(3.455, variant_level=1),
    'Info/Config/SOC_RESET_VOLTAGE': dbus.Double(3.65, variant_level=1),
    'Info/Config/SOC_RESET_AFTER_DAYS': dbus.Boolean(False, variant_level=1),
    'Info/Config/BLOCK_ON_DISCONNECT': dbus.Boolean(False, variant_level=1),
    'Info/Config/LINEAR_LIMITATION_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/LINEAR_RECALCULATION_EVERY': dbus.Int32(60, variant_level=1),
    'Info/Config/LINEAR_RECALCULATION_ON_PERC_CHANGE': dbus.Int32(5, variant_level=1),
    'Info/Config/CVCM_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CELL_VOLTAGE_DIFF_KEEP_MAX_VOLTAGE_UNTIL': dbus.Double(0.01, variant_level=1),
    'Info/Config/CELL_VOLTAGE_DIFF_TO_RESET_VOLTAGE_LIMIT': dbus.Double(0.08, variant_level=1),
    'Info/Config/MAX_VOLTAGE_TIME_SEC': dbus.Int32(900, variant_level=1),
    'Info/Config/SOC_LEVEL_TO_RESET_VOLTAGE_LIMIT': dbus.Int32(90, variant_level=1),
    'Info/Config/CCCM_CV_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/DCCM_CV_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CELL_VOLTAGES_WHILE_CHARGING': dbus.Array([dbus.Double(3.55, variant_level=1), dbus.Double(3.5, variant_level=1), dbus.Double(3.45, variant_level=1), dbus.Double(3.3, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_CHARGE_CURRENT_CV': dbus.Array([dbus.Double(6.25, variant_level=1), dbus.Double(12.5, variant_level=1), dbus.Double(62.5, variant_level=1), dbus.Double(125.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CELL_VOLTAGES_WHILE_DISCHARGING': dbus.Array([dbus.Double(2.7, variant_level=1), dbus.Double(2.8, variant_level=1), dbus.Double(2.9, variant_level=1), dbus.Double(3.1, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_DISCHARGE_CURRENT_CV': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(25.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(250.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CCCM_T_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/DCCM_T_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/TEMPERATURE_LIMITS_WHILE_CHARGING': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(2.0, variant_level=1), dbus.Double(5.0, variant_level=1), dbus.Double(10.0, variant_level=1), dbus.Double(15.0, variant_level=1), dbus.Double(20.0, variant_level=1), dbus.Double(35.0, variant_level=1), dbus.Double(40.0, variant_level=1), dbus.Double(55.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_CHARGE_CURRENT_T': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(12.5, variant_level=1), dbus.Double(25.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(100.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(0.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/TEMPERATURE_LIMITS_WHILE_DISCHARGING': dbus.Array([dbus.Double(-20.0, variant_level=1), dbus.Double(0.0, variant_level=1), dbus.Double(5.0, variant_level=1), dbus.Double(10.0, variant_level=1), dbus.Double(15.0, variant_level=1), dbus.Double(45.0, variant_level=1), dbus.Double(55.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_DISCHARGE_CURRENT_T': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(75.0, variant_level=1), dbus.Double(100.0, variant_level=1), dbus.Double(250.0, variant_level=1), dbus.Double(250.0, variant_level=1), dbus.Double(0.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CCCM_SOC_ENABLE': dbus.Boolean(False, variant_level=1),
    'Info/Config/DCCM_SOC_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CC_SOC_LIMIT1': dbus.Double(98.0, variant_level=1),
    'Info/Config/CC_SOC_LIMIT2': dbus.Double(95.0, variant_level=1),
    'Info/Config/CC_SOC_LIMIT3': dbus.Double(91.0, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT1': dbus.Double(12.5, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT2': dbus.Double(37.5, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT3': dbus.Double(62.5, variant_level=1),
    'Info/Config/DC_SOC_LIMIT1': dbus.Double(10.0, variant_level=1),
    'Info/Config/DC_SOC_LIMIT2': dbus.Double(20.0, variant_level=1),
    'Info/Config/DC_SOC_LIMIT3': dbus.Double(30.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT1': dbus.Double(25.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT2': dbus.Double(75.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT3': dbus.Double(125.0, variant_level=1),
    'Info/Config/TIME_TO_GO_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/TIME_TO_SOC_POINTS': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/TIME_TO_SOC_VALUE_TYPE': dbus.Int32(1, variant_level=1),
    'Info/Config/TIME_TO_SOC_RECALCULATE_EVERY': dbus.Int32(60, variant_level=1),
    'Info/Config/TIME_TO_SOC_INC_FROM': dbus.Boolean(False, variant_level=1),
    'Info/Config/BMS_TYPE': dbus.Array([dbus.String('Daly', variant_level=1)], signature=None, variant_level=1),
    'Info/Config/EXCLUDED_DEVICES': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/CUSTOM_BATTERY_NAMES': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/AUTO_RESET_SOC': dbus.Boolean(True, variant_level=1),
    'Info/Config/PUBLISH_CONFIG_VALUES': dbus.Int32(1, variant_level=1),
    'Info/Config/BATTERY_CELL_DATA_FORMAT': dbus.Int32(1, variant_level=1),
    'Info/Config/MIDPOINT_ENABLE': dbus.Boolean(False, variant_level=1),
    'Info/Config/TEMP_BATTERY': dbus.Int32(0, variant_level=1),
    'Info/Config/TEMP_1_NAME': dbus.String('Temp 1', variant_level=1),
    'Info/Config/TEMP_2_NAME': dbus.String('Temp 2', variant_level=1),
    'Info/Config/TEMP_3_NAME': dbus.String('Temp 3', variant_level=1),
    'Info/Config/TEMP_4_NAME': dbus.String('Temp 4', variant_level=1),
    'Info/Config/SOC_LOW_WARNING': dbus.Double(20.0, variant_level=1),
    'Info/Config/SOC_LOW_ALARM': dbus.Double(10.0, variant_level=1),
    'Info/Config/BATTERY_CAPACITY': dbus.Double(560.0, variant_level=1),
    'Info/Config/INVERT_CURRENT_MEASUREMENT': dbus.Int32(-1, variant_level=1),
    'Info/Config/GREENMETER_ADDRESS': dbus.Int32(1, variant_level=1),
    'Info/Config/LIPRO_START_ADDRESS': dbus.Int32(2, variant_level=1),
    'Info/Config/LIPRO_END_ADDRESS': dbus.Int32(4, variant_level=1),
    'Info/Config/LIPRO_CELL_COUNT': dbus.Int32(15, variant_level=1),
    'Info/Config/HELTEC_MODBUS_ADDR': dbus.Array([dbus.Int32(1, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/VOLTAGE_DROP': dbus.Double(0.0, variant_level=1),
    'Settings/HasSettings': dbus.Int32(1, variant_level=1),
2023-10-09 14:37:04.629333500 ERROR:dbus.service:Unable to append (dbus.Dictionary({'Mgmt/ProcessName': dbus.String('/opt/victronenergy/dbus-serialbattery/dbushelper.py', variant_level=1),
    'Mgmt/ProcessVersion': dbus.String('Python 3.8.14', variant_level=1),
    'Mgmt/Connection': dbus.String('Serial /dev/ttyUSB0', variant_level=1),
    'DeviceInstance': dbus.Int32(1, variant_level=1),
    'ProductId': dbus.Int32(0, variant_level=1),
    'ProductName': dbus.String('SerialBattery(Daly)', variant_level=1),
    'FirmwareVersion': dbus.String('1.0.20231009dev', variant_level=1),
    'HardwareVersion': dbus.String('DalyBMS 8 cells', variant_level=1),
    'Connected': dbus.Int32(1, variant_level=1),
    'CustomName': dbus.String('SerialBattery(Daly)', variant_level=1),
    'Serial': dbus.String('20230717\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', variant_level=1),
    'DeviceName': dbus.String('20230717\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', variant_level=1),
    'Info/BatteryLowVoltage': dbus.Double(23.2, variant_level=1),
    'Info/MaxChargeVoltage': dbus.Double(28.44, variant_level=1),
    'Info/MaxChargeCurrent': dbus.Double(98.333, variant_level=1),
    'Info/MaxDischargeCurrent': dbus.Double(250.0, variant_level=1),
    'Info/ChargeMode': dbus.String('Bulk (Linear Mode)', variant_level=1),
    'Info/ChargeModeDebug': dbus.String('', variant_level=1),
    'Info/ChargeLimitation': dbus.String('Cell Voltage', variant_level=1),
    'Info/DischargeLimitation': dbus.String('Max Battery Discharge Current', variant_level=1),
    'System/NrOfCellsPerBattery': dbus.Int32(8, variant_level=1),
    'System/NrOfModulesOnline': dbus.Int32(1, variant_level=1),
    'System/NrOfModulesOffline': dbus.Int32(0, variant_level=1),
    'System/NrOfModulesBlockingCharge': dbus.Int32(0, variant_level=1),
    'System/NrOfModulesBlockingDischarge': dbus.Int32(0, variant_level=1),
    'Capacity': dbus.Double(491.68, variant_level=1),
    'InstalledCapacity': dbus.Double(560.0, variant_level=1),
    'ConsumedAmphours': dbus.Double(68.32, variant_level=1),
    'Soc': dbus.Double(87.8, variant_level=1),
    'Dc/0/Voltage': dbus.Double(26.8, variant_level=1),
    'Dc/0/Current': dbus.Double(7.64, variant_level=1),
    'Dc/0/Power': dbus.Double(204.71, variant_level=1),
    'Dc/0/Temperature': dbus.Double(19.0, variant_level=1),
    'Dc/0/MidVoltage': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Dc/0/MidVoltageDeviation': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/MinCellTemperature': dbus.Int32(19, variant_level=1),
    'System/MinTemperatureCellId': dbus.String('Temp 1', variant_level=1),
    'System/MaxCellTemperature': dbus.Int32(19, variant_level=1),
    'System/MaxTemperatureCellId': dbus.String('Temp 2', variant_level=1),
    'System/MOSTemperature': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature1': dbus.Int32(19, variant_level=1),
    'System/Temperature1Name': dbus.String('Temp 1', variant_level=1),
    'System/Temperature2': dbus.Int32(19, variant_level=1),
    'System/Temperature2Name': dbus.String('Temp 2', variant_level=1),
    'System/Temperature3': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature3Name': dbus.String('Temp 3', variant_level=1),
    'System/Temperature4': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'System/Temperature4Name': dbus.String('Temp 4', variant_level=1),
    'System/MaxCellVoltage': dbus.Double(3.364, variant_level=1),
    'System/MaxVoltageCellId': dbus.String('C3', variant_level=1),
    'System/MinCellVoltage': dbus.Double(3.358, variant_level=1),
    'System/MinVoltageCellId': dbus.String('C8', variant_level=1),
    'History/ChargeCycles': dbus.Int32(7, variant_level=1),
    'History/TotalAhDrawn': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Balancing': dbus.Int32(0, variant_level=1),
    'Io/AllowToCharge': dbus.Int32(1, variant_level=1),
    'Io/AllowToDischarge': dbus.Int32(1, variant_level=1),
    'Io/AllowToBalance': dbus.Int32(0, variant_level=1),
    'Io/ForceChargingOff': dbus.Int32(0, variant_level=1),
    'Io/ForceDischargingOff': dbus.Int32(0, variant_level=1),
    'Io/TurnBalancingOff': dbus.Int32(0, variant_level=1),
    'Alarms/LowVoltage': dbus.Int32(0, variant_level=1),
    'Alarms/HighVoltage': dbus.Int32(0, variant_level=1),
    'Alarms/LowCellVoltage': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/LowSoc': dbus.Int32(0, variant_level=1),
    'Alarms/HighChargeCurrent': dbus.Int32(0, variant_level=1),
    'Alarms/HighDischargeCurrent': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/CellImbalance': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/InternalFailure': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Alarms/HighChargeTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/LowChargeTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/HighTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/LowTemperature': dbus.Int32(0, variant_level=1),
    'Alarms/BmsCable': dbus.Int32(0, variant_level=1),
    'Alarms/HighInternalTemperature': dbus.Array([], signature=dbus.Signature('i'), variant_level=1),
    'Voltages/Cell1': dbus.Double(3.361, variant_level=1),
    'Balances/Cell1': dbus.Int32(0, variant_level=1),
    'Voltages/Cell2': dbus.Double(3.361, variant_level=1),
    'Balances/Cell2': dbus.Int32(0, variant_level=1),
    'Voltages/Cell3': dbus.Double(3.364, variant_level=1),
    'Balances/Cell3': dbus.Int32(0, variant_level=1),
    'Voltages/Cell4': dbus.Double(3.363, variant_level=1),
    'Balances/Cell4': dbus.Int32(0, variant_level=1),
    'Voltages/Cell5': dbus.Double(3.363, variant_level=1),
    'Balances/Cell5': dbus.Int32(0, variant_level=1),
    'Voltages/Cell6': dbus.Double(3.361, variant_level=1),
    'Balances/Cell6': dbus.Int32(0, variant_level=1),
    'Voltages/Cell7': dbus.Double(3.362, variant_level=1),
    'Balances/Cell7': dbus.Int32(0, variant_level=1),
    'Voltages/Cell8': dbus.Double(3.358, variant_level=1),
    'Balances/Cell8': dbus.Int32(0, variant_level=1),
    'Voltages/Sum': dbus.Double(26.893000000000004, variant_level=1),
    'Voltages/Diff': dbus.Double(0.005999999999999783, variant_level=1),
    'TimeToGo': dbus.Int32(145533, variant_level=1),
    'CurrentAvg': dbus.Double(1.69, variant_level=1),
    'Info/Config/PATH_CONFIG_DEFAULT': dbus.String('config.default.ini', variant_level=1),
    'Info/Config/PATH_CONFIG_USER': dbus.String('config.ini', variant_level=1),
    'Info/Config/default_config_file_path': dbus.String('/opt/victronenergy/dbus-serialbattery/config.default.ini', variant_level=1),
    'Info/Config/custom_config_file_path': dbus.String('/opt/victronenergy/dbus-serialbattery/config.ini', variant_level=1),
    'Info/Config/DRIVER_VERSION': dbus.String('1.0.20231009dev', variant_level=1),
    'Info/Config/zero_char': dbus.String('0', variant_level=1),
    'Info/Config/degree_sign': dbus.String('°', variant_level=1),
    'Info/Config/MAX_BATTERY_CHARGE_CURRENT': dbus.Double(125.0, variant_level=1),
    'Info/Config/MAX_BATTERY_DISCHARGE_CURRENT': dbus.Double(250.0, variant_level=1),
    'Info/Config/MIN_CELL_VOLTAGE': dbus.Double(2.9, variant_level=1),
    'Info/Config/MAX_CELL_VOLTAGE': dbus.Double(3.555, variant_level=1),
    'Info/Config/FLOAT_CELL_VOLTAGE': dbus.Double(3.455, variant_level=1),
    'Info/Config/SOC_RESET_VOLTAGE': dbus.Double(3.65, variant_level=1),
    'Info/Config/SOC_RESET_AFTER_DAYS': dbus.Boolean(False, variant_level=1),
    'Info/Config/BLOCK_ON_DISCONNECT': dbus.Boolean(False, variant_level=1),
    'Info/Config/LINEAR_LIMITATION_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/LINEAR_RECALCULATION_EVERY': dbus.Int32(60, variant_level=1),
    'Info/Config/LINEAR_RECALCULATION_ON_PERC_CHANGE': dbus.Int32(5, variant_level=1),
    'Info/Config/CVCM_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CELL_VOLTAGE_DIFF_KEEP_MAX_VOLTAGE_UNTIL': dbus.Double(0.01, variant_level=1),
    'Info/Config/CELL_VOLTAGE_DIFF_TO_RESET_VOLTAGE_LIMIT': dbus.Double(0.08, variant_level=1),
    'Info/Config/MAX_VOLTAGE_TIME_SEC': dbus.Int32(900, variant_level=1),
    'Info/Config/SOC_LEVEL_TO_RESET_VOLTAGE_LIMIT': dbus.Int32(90, variant_level=1),
    'Info/Config/CCCM_CV_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/DCCM_CV_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CELL_VOLTAGES_WHILE_CHARGING': dbus.Array([dbus.Double(3.55, variant_level=1), dbus.Double(3.5, variant_level=1), dbus.Double(3.45, variant_level=1), dbus.Double(3.3, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_CHARGE_CURRENT_CV': dbus.Array([dbus.Double(6.25, variant_level=1), dbus.Double(12.5, variant_level=1), dbus.Double(62.5, variant_level=1), dbus.Double(125.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CELL_VOLTAGES_WHILE_DISCHARGING': dbus.Array([dbus.Double(2.7, variant_level=1), dbus.Double(2.8, variant_level=1), dbus.Double(2.9, variant_level=1), dbus.Double(3.1, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_DISCHARGE_CURRENT_CV': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(25.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(250.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CCCM_T_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/DCCM_T_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/TEMPERATURE_LIMITS_WHILE_CHARGING': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(2.0, variant_level=1), dbus.Double(5.0, variant_level=1), dbus.Double(10.0, variant_level=1), dbus.Double(15.0, variant_level=1), dbus.Double(20.0, variant_level=1), dbus.Double(35.0, variant_level=1), dbus.Double(40.0, variant_level=1), dbus.Double(55.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_CHARGE_CURRENT_T': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(12.5, variant_level=1), dbus.Double(25.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(100.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(125.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(0.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/TEMPERATURE_LIMITS_WHILE_DISCHARGING': dbus.Array([dbus.Double(-20.0, variant_level=1), dbus.Double(0.0, variant_level=1), dbus.Double(5.0, variant_level=1), dbus.Double(10.0, variant_level=1), dbus.Double(15.0, variant_level=1), dbus.Double(45.0, variant_level=1), dbus.Double(55.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/MAX_DISCHARGE_CURRENT_T': dbus.Array([dbus.Double(0.0, variant_level=1), dbus.Double(50.0, variant_level=1), dbus.Double(75.0, variant_level=1), dbus.Double(100.0, variant_level=1), dbus.Double(250.0, variant_level=1), dbus.Double(250.0, variant_level=1), dbus.Double(0.0, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/CCCM_SOC_ENABLE': dbus.Boolean(False, variant_level=1),
    'Info/Config/DCCM_SOC_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/CC_SOC_LIMIT1': dbus.Double(98.0, variant_level=1),
    'Info/Config/CC_SOC_LIMIT2': dbus.Double(95.0, variant_level=1),
    'Info/Config/CC_SOC_LIMIT3': dbus.Double(91.0, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT1': dbus.Double(12.5, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT2': dbus.Double(37.5, variant_level=1),
    'Info/Config/CC_CURRENT_LIMIT3': dbus.Double(62.5, variant_level=1),
    'Info/Config/DC_SOC_LIMIT1': dbus.Double(10.0, variant_level=1),
    'Info/Config/DC_SOC_LIMIT2': dbus.Double(20.0, variant_level=1),
    'Info/Config/DC_SOC_LIMIT3': dbus.Double(30.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT1': dbus.Double(25.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT2': dbus.Double(75.0, variant_level=1),
    'Info/Config/DC_CURRENT_LIMIT3': dbus.Double(125.0, variant_level=1),
    'Info/Config/TIME_TO_GO_ENABLE': dbus.Boolean(True, variant_level=1),
    'Info/Config/TIME_TO_SOC_POINTS': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/TIME_TO_SOC_VALUE_TYPE': dbus.Int32(1, variant_level=1),
    'Info/Config/TIME_TO_SOC_RECALCULATE_EVERY': dbus.Int32(60, variant_level=1),
    'Info/Config/TIME_TO_SOC_INC_FROM': dbus.Boolean(False, variant_level=1),
    'Info/Config/BMS_TYPE': dbus.Array([dbus.String('Daly', variant_level=1)], signature=None, variant_level=1),
    'Info/Config/EXCLUDED_DEVICES': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/CUSTOM_BATTERY_NAMES': dbus.Array([], signature=dbus.Signature('u'), variant_level=1),
    'Info/Config/AUTO_RESET_SOC': dbus.Boolean(True, variant_level=1),
    'Info/Config/PUBLISH_CONFIG_VALUES': dbus.Int32(1, variant_level=1),
    'Info/Config/BATTERY_CELL_DATA_FORMAT': dbus.Int32(1, variant_level=1),
    'Info/Config/MIDPOINT_ENABLE': dbus.Boolean(False, variant_level=1),
    'Info/Config/TEMP_BATTERY': dbus.Int32(0, variant_level=1),
    'Info/Config/TEMP_1_NAME': dbus.String('Temp 1', variant_level=1),
    'Info/Config/TEMP_2_NAME': dbus.String('Temp 2', variant_level=1),
    'Info/Config/TEMP_3_NAME': dbus.String('Temp 3', variant_level=1),
    'Info/Config/TEMP_4_NAME': dbus.String('Temp 4', variant_level=1),
    'Info/Config/SOC_LOW_WARNING': dbus.Double(20.0, variant_level=1),
    'Info/Config/SOC_LOW_ALARM': dbus.Double(10.0, variant_level=1),
    'Info/Config/BATTERY_CAPACITY': dbus.Double(560.0, variant_level=1),
    'Info/Config/INVERT_CURRENT_MEASUREMENT': dbus.Int32(-1, variant_level=1),
    'Info/Config/GREENMETER_ADDRESS': dbus.Int32(1, variant_level=1),
    'Info/Config/LIPRO_START_ADDRESS': dbus.Int32(2, variant_level=1),
    'Info/Config/LIPRO_END_ADDRESS': dbus.Int32(4, variant_level=1),
    'Info/Config/LIPRO_CELL_COUNT': dbus.Int32(15, variant_level=1),
    'Info/Config/HELTEC_MODBUS_ADDR': dbus.Array([dbus.Int32(1, variant_level=1)], signature=None, variant_level=1),
    'Info/Config/VOLTAGE_DROP': dbus.Double(0.0, variant_level=1),
    'Settings/HasSettings': dbus.Int32(1, variant_level=1),
    'Settings/ResetSoc': dbus.Double(87.8, variant_level=1)}, signature=dbus.Signature('sv'), variant_level=1),) to message with signature v: <class 'ValueError'>: embedded null byte

Any other information that may be helpful

No response

@gkehrer gkehrer added the bug Something isn't working label Oct 9, 2023
@mr-manuel
Copy link
Collaborator

Could you install the latest nightly of the dev branch again? 1.0.20231009dev had a bug.

@gkehrer
Copy link
Author

gkehrer commented Oct 10, 2023

There is no change by installing 1.0.20231010dev - still not all data visible in dbus-spy and no data in mqtt.

grafik

@mr-manuel
Copy link
Collaborator

Ok thanks. Can you please swap the daly.py with this one?

daly.py.txt

You have to remove the .txt suffix before or after upload.

@gkehrer
Copy link
Author

gkehrer commented Oct 10, 2023

Now all data is available in dbus-spy and mqtt:

grafik

Thanks for your help !

mr-manuel added a commit to mr-manuel/venus-os_dbus-serialbattery that referenced this issue Oct 10, 2023
@mr-manuel
Copy link
Collaborator

I merged it into the dev branch. Can you install the latest nightly and check, if it's still working?

@gkehrer
Copy link
Author

gkehrer commented Oct 10, 2023

The fix in 1.0.20231010dev2 is working correct !

👍

Louisvdw pushed a commit that referenced this issue Nov 25, 2023
* Update reinstall-local.sh: Fixed charge current parameter

Update reinstall-local.sh: Corrected charge current parameter for  initial config.ini

* Exclude devices from driver startup
This prevents blocking the serial port

* implement callback function for update

* fix comments to reflect new logic

* update changelog

* set soc=100% when charge mode changes to float, apply exponential smoothing on current readout

* remove scan for devices

the scan for devices and check if the BMS to test is present doesn't add value
if the device is not within range (or the MAC is wrong), then the subsequent start_scraping call will either fail or fail to produce usable data

* JKBMS_BLE driver fixes

* added Bluetooth signal strenght, increased debug

* Optimized reinstallation procedure
- Changed: Optimized restart sequence for the bluetooth installation
- Changed: Run serial part first and then bluetooth part. This allows the serial driver to get operative faster
- Removed: $DRIVERNAME variable for clearer paths
- Removed: Bluetooth system driver restart, since the devices get disconnected by the service before starting the dbus-serialbatterydriver

* Improved Jkbms_Ble error handling

* optimized disable procedure

* small fixes

* save custom name and make it restart persistant
#100

* changed unique identifier from string to function
function can be overridden by BMS battery class

* fix typo

* fix Sinowealth not loading
#702

* fix unique identifier function

* enable BMS over config, if disabled by default
Now you can also add more then one BMS for BMS_TYPE

* show battery port in log

* ANT BMS fixes
Fixed that other devices are recognized as ANT BMS

* Sinowealth BMS fixes
Fixed that other devices are recognized as Sinowealth BMS

* improved publish_battery error handling
switched from error count to seconds

* Improve Battery Voltage Handling in Linear Absorption Mode

* Refactor change time() to int(time()) for consistency in max_voltage_start_time and tDiff calculation
* Refactor battery voltage calculations for efficiency and clarity
* Remove penalty_buffer
* Reset max_voltage_start_time wenn we going to bulk(dynamic) mode

* updated changelog

* fix reply processing

* Reduce the big inrush current, if the CVL jumps
from Bulk/Absorbtion to Float
fix #659

* Check returned data lenght for Seplos BMS

Be stricter about the return data we accept, might fix the problem of grid meters accidently being recognized as a Seplos

* Validate current, voltage, capacity and SoC for all BMS
This prevents that a device, which is no BMS, is detected as BMS

* removed double check

* bump version

* fix validation if None

* updated changelog

* proposal to #659 formatted :)

* bugfix proposal to #659

* refactor setting float charge_mode

* fix type error, removed bluetooth cronjob

* updated changelog

* fix rs485 write communication errors by inserting sleeps, add debug print for charge mode and fix crash on write soc failures

* fix write problem on set_soc. also changed the switch charge/discharge function, just in case

* debug msg

* Bluetooth optimizations

* Fixes by @peterohman
#505 (comment)

* fix #712

* fix meaningless time to go values

* fix meaningless time to go values

* Duration of transition to float depends on number of cells

* Float transition - Voltage drop per second

* Update hlpdatabms4s.py

* Validate setting of FLOAT_CELL_VOLTAGE and avoid misconfiguration

* consider utils.LINEAR_RECALCULATION_EVERY to refresh CVL

* cleanup

* consider utils.LINEAR_RECALCULATION_EVERY to refresh CVL

* small refactor, introduced set_cvl_linear function to set CVL only once every LINEAR_RECALCULATION_EVERY seconds

* fix typo

* updated changelog

* remove debug msg

* remove debug msg

* undo debug change

* Daly BMS make auto reset soc configurable

* added debug and error information for CVL

* fix proposal for #733 (#735)

* Added: Tollerance to enter float voltage once the timer is triggered

* Add bulk voltage
Load to bulk voltage every x days to reset the SoC to 100% for some BMS

* JKBMS disable high voltage warning on bulk
reenable after bulk was completed

* fixed error

* disable high voltage warning for all BMS
when charging to bulk voltage

* fix error and change default value
measurementToleranceVariation from 0.025 to 0.5 else in OffGrid mode max voltage is always kept

* Added temperature names to dbus/mqtt

* Use current avg of last 300 cycles for TTG & TTS

* Calculate only positive Time-to-SoC points

* added current average of last 5 minutes

* make CCL and DCL more clear

* fix small error

* bugfix: LLTJBD BMS SOC different in Xiaoxiang app and dbus-serialbattery

* black formatting

* JDB BMS - Control FETs for charge, discharge and disable / enable balancer (#761)

* feature: Allow to control charge / discharge FET
* feature: Allow to enable / disable balancer

* bugfix: Cycle Capacity is in 10 mAh

Fixes SoC with factor 100 * 100% percentage

* JBD BMS show balancer state in GUI page IO (#763)

* Bump version

* Fix typos

* Smaller fixes
- fixes #792 (comment)

* Removed comments from utils.py
This should make more clear that there are no values to change

* Updated changelog

* possible fix for LLT/JBS connection problems
#769
#777

* bugfix: LLT/JBD BMS general packet data size check

* improved reinstall and disable script

* LLT/JBD BMS - Improved error handling and automatical driver restart
in case of error. Should fix:
- #730
- #769
- #777

* Fixed Building wheel for dbus-fast won't finish on weak systems
Fixes #785

* Support for Daly CAN Bus (#169)

* support for Daly CAN Bus
* fix constructor args
* revert port, needs fix
* add can filters
* comment logger

Some changes are still needed to work with the latest version. They will follow in a next PR.

---------

Co-authored-by: Samuel Brucksch <samuel@iternio.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>

* JKBMS BLE - Introduction of automatic SOC reset (HW Version 11) (#736)

* Introduction of automatic SOC reset for JK BMS (HW Version 11)
* Fixed value mapping
* Rework of the code to make it simpler to use without additional configuration.
Moved execution of SOC reset. It's now executed while changing from "Float" to "Float Transition".
* Implementation of suggested changes
Persist initial BMS OVP and OVPR settings
Make use of max_cell_voltage to calculate trigger value for OVP alert

* Added: Daly CAN and JKBMS CAN

* added CAN bms to installation script
optimized CAN drivers

* smaller fixes

* Trigger JK BLE SOC reset when using Step Mode

* Moved trigger_soc_reset()

* fixes LLT/JBD SOC > 100%
#769

* changed VOLTAGE_DROP behaviour

* Fix JKBMS not starting if BMS manuf. date is empty

* corrected bulk, absorption and soc reset terms

* fix typo

* add JKBMS_BLE debugging data

* fix small error

* added logging to config

* add sleep before starting driver
prevents lot of timeouts after reinstalling the driver, since the restart is now much faster than before

* changed post install info

* fix error

* Daly BMS fixed embedded null byte
#837

* added info for SoC reset to default config file

* fix for #716
#716

* fix for #716 and JKBMS model recognition
#716

* optimized logging

* fix JKBMS recognition

* added debugging

* fixes #716
#716

---------

Co-authored-by: Holger Schultheiß <hoschult@web.de>
Co-authored-by: Stefan Seidel <lkml@stefanseidel.info>
Co-authored-by: Bernd Stahlbock <6627385+transistorgit@users.noreply.github.com>
Co-authored-by: seidler2547 <github@stefanseidel.info>
Co-authored-by: ogurevich <50322596+ogurevich@users.noreply.github.com>
Co-authored-by: wollew <wollew@users.noreply.github.com>
Co-authored-by: Oleg Gurevich <oleg@gurevich.de>
Co-authored-by: peterohman <psub@fieber.se>
Co-authored-by: Strawder, Paul <paul@coach-ai.com>
Co-authored-by: Paul Strawder <paulidstein@gmail.com>
Co-authored-by: Samuel Brucksch <SamuelBrucksch@users.noreply.github.com>
Co-authored-by: Samuel Brucksch <samuel@iternio.com>
Co-authored-by: ArendsM <136503378+ArendsM@users.noreply.github.com>
Co-authored-by: Meik Arends <github@arends.info>
Louisvdw pushed a commit that referenced this issue Feb 28, 2024
* fix Sinowealth not loading
#702

* fix unique identifier function

* enable BMS over config, if disabled by default
Now you can also add more then one BMS for BMS_TYPE

* show battery port in log

* ANT BMS fixes
Fixed that other devices are recognized as ANT BMS

* Sinowealth BMS fixes
Fixed that other devices are recognized as Sinowealth BMS

* improved publish_battery error handling
switched from error count to seconds

* Improve Battery Voltage Handling in Linear Absorption Mode

* Refactor change time() to int(time()) for consistency in max_voltage_start_time and tDiff calculation
* Refactor battery voltage calculations for efficiency and clarity
* Remove penalty_buffer
* Reset max_voltage_start_time wenn we going to bulk(dynamic) mode

* updated changelog

* fix reply processing

* Reduce the big inrush current, if the CVL jumps
from Bulk/Absorbtion to Float
fix #659

* Check returned data lenght for Seplos BMS

Be stricter about the return data we accept, might fix the problem of grid meters accidently being recognized as a Seplos

* Validate current, voltage, capacity and SoC for all BMS
This prevents that a device, which is no BMS, is detected as BMS

* removed double check

* bump version

* fix validation if None

* updated changelog

* proposal to #659 formatted :)

* bugfix proposal to #659

* refactor setting float charge_mode

* fix type error, removed bluetooth cronjob

* updated changelog

* fix rs485 write communication errors by inserting sleeps, add debug print for charge mode and fix crash on write soc failures

* fix write problem on set_soc. also changed the switch charge/discharge function, just in case

* debug msg

* Bluetooth optimizations

* Fixes by @peterohman
#505 (comment)

* fix #712

* fix meaningless time to go values

* fix meaningless time to go values

* Duration of transition to float depends on number of cells

* Float transition - Voltage drop per second

* Update hlpdatabms4s.py

* Validate setting of FLOAT_CELL_VOLTAGE and avoid misconfiguration

* consider utils.LINEAR_RECALCULATION_EVERY to refresh CVL

* cleanup

* consider utils.LINEAR_RECALCULATION_EVERY to refresh CVL

* small refactor, introduced set_cvl_linear function to set CVL only once every LINEAR_RECALCULATION_EVERY seconds

* fix typo

* updated changelog

* remove debug msg

* remove debug msg

* undo debug change

* Daly BMS make auto reset soc configurable

* added debug and error information for CVL

* fix proposal for #733 (#735)

* Added: Tollerance to enter float voltage once the timer is triggered

* Add bulk voltage
Load to bulk voltage every x days to reset the SoC to 100% for some BMS

* JKBMS disable high voltage warning on bulk
reenable after bulk was completed

* fixed error

* disable high voltage warning for all BMS
when charging to bulk voltage

* fix error and change default value
measurementToleranceVariation from 0.025 to 0.5 else in OffGrid mode max voltage is always kept

* Added temperature names to dbus/mqtt

* Use current avg of last 300 cycles for TTG & TTS

* Calculate only positive Time-to-SoC points

* added current average of last 5 minutes

* make CCL and DCL more clear

* fix small error

* bugfix: LLTJBD BMS SOC different in Xiaoxiang app and dbus-serialbattery

* black formatting

* JDB BMS - Control FETs for charge, discharge and disable / enable balancer (#761)

* feature: Allow to control charge / discharge FET
* feature: Allow to enable / disable balancer

* bugfix: Cycle Capacity is in 10 mAh

Fixes SoC with factor 100 * 100% percentage

* JBD BMS show balancer state in GUI page IO (#763)

* Bump version

* Fix typos

* Smaller fixes
- fixes #792 (comment)

* Removed comments from utils.py
This should make more clear that there are no values to change

* Updated changelog

* possible fix for LLT/JBS connection problems
#769
#777

* bugfix: LLT/JBD BMS general packet data size check

* improved reinstall and disable script

* LLT/JBD BMS - Improved error handling and automatical driver restart
in case of error. Should fix:
- #730
- #769
- #777

* Fixed Building wheel for dbus-fast won't finish on weak systems
Fixes #785

* Support for Daly CAN Bus (#169)

* support for Daly CAN Bus
* fix constructor args
* revert port, needs fix
* add can filters
* comment logger

Some changes are still needed to work with the latest version. They will follow in a next PR.

---------

Co-authored-by: Samuel Brucksch <samuel@iternio.com>
Co-authored-by: Manuel <mr-manuel@outlook.it>

* JKBMS BLE - Introduction of automatic SOC reset (HW Version 11) (#736)

* Introduction of automatic SOC reset for JK BMS (HW Version 11)
* Fixed value mapping
* Rework of the code to make it simpler to use without additional configuration.
Moved execution of SOC reset. It's now executed while changing from "Float" to "Float Transition".
* Implementation of suggested changes
Persist initial BMS OVP and OVPR settings
Make use of max_cell_voltage to calculate trigger value for OVP alert

* Added: Daly CAN and JKBMS CAN

* added CAN bms to installation script
optimized CAN drivers

* smaller fixes

* Trigger JK BLE SOC reset when using Step Mode

* Moved trigger_soc_reset()

* fixes LLT/JBD SOC > 100%
#769

* changed VOLTAGE_DROP behaviour

* Fix JKBMS not starting if BMS manuf. date is empty

* corrected bulk, absorption and soc reset terms

* fix typo

* add JKBMS_BLE debugging data

* fix small error

* Some changes for lost bluetooth connection / hci_uart stack restart

* added logging to config

* add sleep before starting driver
prevents lot of timeouts after reinstalling the driver, since the restart is now much faster than before

* changed post install info

* fix error

* Daly BMS fixed embedded null byte
#837

* added info for SoC reset to default config file

* fix for #716
#716

* fix for #716 and JKBMS model recognition
#716

* optimized logging

* fix JKBMS recognition

* added debugging

* fixes #716
#716

* Bind device instance to unique_identifier
#718

* added data types to battery class
disabled unused variables

* save current charge state
#840

* correct file permissions

* updated changelog

* added periodic saveChargeDetails

* fix some small errors

* fix issue with ruuvi tags
When there are hundreds of unused ruuvi tags in the settings list that where added because thei where nearby the driver does not start correctly. These stale entries are disabled on the driver startup.
The issue was already filed to Victron developers

* CVL with i-controller instead of penaltysum

* cvl_controller: switch to choose PenaltySum or ICOntroller + documentation

* docu enhancement

* Add setting and install logic for usb bluetooth module

* round temperatures

* changed battery disconnect behaviour

* Fixes #891
#891

* updated changelog

* Add bluetooth device note to config.default.ini

* Fix typo in bluetooth note in config.default.ini

* fixed error in new cvl_controller

* fixed float division by zero and code optimization

* Restart MAX_VOLTAGE_TIME_SEC if cell diff > CELL_VOLTAGE_DIFF_KEEP_MAX_VOLTAGE_TIME_RESTART

* Calculation of the SOC based on coloumb-counting (#868)

* Calculation of the SOC in the driver based on coloumb-counting

* soc_calc: add current correction before integration

* soc_calc: correction map for current

* Soc_calc: CorrectionMap, switch to turn on/off correction, selectable initial value

* soc_calc: Bugfix

* soc_calc: Bugfix

* store soc in dbus for restart

* store soc in dbus for restart (formatted)

* store soc in dbus for restart (bugfix)

* save soc_calc only after change > 1.0

* store soc in dbus for restart (bugfix)

* logger does not work this way. do not know why

* writing and reading to dbus works

* Removed options: SOC_CALC_CURRENT_CORRECTION, SOC_CALC_RESET_VALUE_ON_RESTART, SOC_CALC_INIT_VALUE
sort soc_calc alphabetically

* fixed comments

* Updated changelog, small fixes

* Changed: PUBLISH_CONFIG_VALUES from 0/1 to True/False

* Changed: Code optimizations
- Changed some variables to be more clear
- Added comments for easier code understanding

* Calculated SOC: Added two decimals, added BMS SOC for MQTT & Node-RED

* Updated changelog, small fixes

* Changed: PUBLISH_CONFIG_VALUES from 0/1 to True/False

* Changed: Code optimizations
- Changed some variables to be more clear
- Added comments for easier code understanding

* Calculated SOC: Added two decimals, added BMS SOC for MQTT & Node-RED

* Fix #898
#898

* Changed: Fix issue loading settings from dbus

* Added nightly install option
makes it easier for users to pretest fixes

* Changed: more detailed error output when an exception happens

* Possible fix for #912
#912

* Fixes #919
#919

* Changed: Exit script with error, if port excluded
else the serialstarter stops at the dbus-serialbattery

* Fixed some smaller errors

* Updated pre-release workflow

* Fix JK BMS connection restart when bluetooth fails.

This fix installs a new thread to monitor the state of the original
scraping thread.
If scraping thread dies, it verifies that it did not because the
scraping was intentionally stopped by calling stop_scrapping.
When restarting the scrapper, it first calls the bluetooth
reset lambda function that was passed in the class contructor, such that
bluetooth is ready to make a proper connection.

* Fixes #916
#916

* Added Venus OS version to logfile

* Fix #840
#840

* Small code formatting fixes

* Optimized reinstall script. Restart GUI only on changes.

* Display debugging data in GUI when DEBUG enabled

* Install script now shows repositories and version numbers

* Update daly_can.py

Fixing #950 for DalyBMS

* Update jkbms_can.py

Fixing #950 for Jk BMS

* Fix black lint check

* Fixes #970
#970

* Fixed some errors in restoring values from dbus settings

* Moved sleep on start for all BMS

* Update config description

* Reworked a part of the default config

* fix typo in stopping services when reinstalling

* Fix Time-to-SoC and Time-to-Go calculation

* Add changelog info

* Round sum and diff voltage

* Temperature limitation variables where changed

* SoC limitation variables where changed

* Added error messages

* Remove unneeded code

* Reset SoC to 0% if empty

* Add GUIv2 for dbus-serialbattery

* Check free space before installing

* Added new GUIv2 version

* Removed Python 2 compatibility

* Changelog update

* Code cleanup
- Removed: get_temperatures()
- Removed: update_last_seen()

* Bluetooth code optimizations

* Fixed some JKBMS BLE not starting
#819

* Check if packages are already installed before install

* Fixed some SOC calculation errors

* Fixed None SOC on driver start

* Do not show and allow button change when callback is missing for:
- ForceChargingOff
- ForceDischargingOff
- TurnBalancingOff

* Check if a device instance is already used by creating a PID file

* Log and execute SOC reset to 100% or 0% only once

* Update GitHub workflow and issue templates

* Fixed LLT/JBD BMS with only on temperature sensor #791
#971

* Fix warning on reinstall

* Fix missing IO control for JBDBMS #992
#992

* Prepare for removing dev branch

---------

Co-authored-by: ogurevich <50322596+ogurevich@users.noreply.github.com>
Co-authored-by: Bernd Stahlbock <6627385+transistorgit@users.noreply.github.com>
Co-authored-by: wollew <wollew@users.noreply.github.com>
Co-authored-by: Oleg Gurevich <oleg@gurevich.de>
Co-authored-by: peterohman <psub@fieber.se>
Co-authored-by: Strawder, Paul <paul@coach-ai.com>
Co-authored-by: Paul Strawder <paulidstein@gmail.com>
Co-authored-by: Samuel Brucksch <SamuelBrucksch@users.noreply.github.com>
Co-authored-by: Samuel Brucksch <samuel@iternio.com>
Co-authored-by: ArendsM <136503378+ArendsM@users.noreply.github.com>
Co-authored-by: Meik Arends <github@arends.info>
Co-authored-by: Marvo2011 <Marvin.Edeler@gmail.com>
Co-authored-by: cflenker <christian.flenker@gmx.de>
Co-authored-by: cflenker <125555670+cflenker@users.noreply.github.com>
Co-authored-by: Cupertino Miranda <cupertinomiranda@gmail.com>
Co-authored-by: Martin Polehla <p0l0us@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants