You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tried dev branch yesterday.
After few hours serialbattery is crashing with Exception, see log:
ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643
Seems related to TimeToSoc/ Calculation?
Here my Config related to that:
TIME_TO_GO_ENABLE = True
TIME_TO_SOC_POINTS = 100,10
TIME_TO_SOC_VALUE_TYPE = 1
TIME_TO_SOC_RECALCULATE_EVERY = 60
TIME_TO_SOC_INC_FROM = True
How to reproduce
Steps to reproduce the behavior:
Not sure about it but i think:
1.) Install nightly dev.
2.) Use above Time-To-Go/Time-To-Soc Parameter
3.) wait some time (few hours)
Expected behavior
No Crash
Driver version
nightly dev
Venus OS device type
Raspberry Pi
Venus OS version
3.01
BMS type
JKBMS / Heltec BMS
Cell count
18
Connection type
Serial USB adapter to RS485
Config file
[DEFAULT]; --------- Battery Current limits ---------MAX_BATTERY_CHARGE_CURRENT = 115.0
MAX_BATTERY_DISCHARGE_CURRENT = 115.0
; --------- Cell Voltages ---------; Description: Cell min/max voltages which are used to calculate the min/max battery voltage; Example: 16 cells * 3.45V/cell = 55.2V max charge voltage. 16 cells * 2.90V = 46.4V min discharge voltageMIN_CELL_VOLTAGE = 2.900
; Max voltage can seen as absorption voltageMAX_CELL_VOLTAGE = 3.450
; Float voltage (can be seen as resting voltage)FLOAT_CELL_VOLTAGE = 3.340
;Maxx: Settings GAS;MAX_CELL_VOLTAGE = 3.450;FLOAT_CELL_VOLTAGE = 3.450; Bulk voltage (may be needed to reset the SoC to 100% once in a while for some BMS); Has to be higher as the MAX_CELL_VOLTAGEBULK_CELL_VOLTAGE = 3.650
; Specify after how many days the bulk voltage should be reached again; The timer is reset when the bulk voltage is reached; Leave empty if you don't want to use this; Example: Value is set to 15; day 1: bulk reached once; day 16: bulk reached twice; day 31: bulk not reached since it's very cloudy; day 34: bulk reached since the sun came out; day 49: bulk reached again, since last time it took 3 days to reach bulk voltageBULK_AFTER_DAYS =
; --------- Bluetooth BMS ---------; Description: List the Bluetooth BMS here that you want to install; -- Available Bluetooth BMS:; Jkbms_Ble, LltJbd_Ble; Example:; 1 BMS: Jkbms_Ble C8:47:8C:00:00:00; 3 BMS: Jkbms_Ble C8:47:8C:00:00:00, Jkbms_Ble C8:47:8C:00:00:11, Jkbms_Ble C8:47:8C:00:00:22BLUETOOTH_BMS =
; --------- BMS disconnect behaviour ---------; Description: Block charge and discharge when the communication to the BMS is lost. If you are removing the; BMS on purpose, then you have to restart the driver/system to reset the block.; False: Charge and discharge is not blocked on BMS communication loss; True: Charge and discharge is blocked on BMS communication loss, it's unblocked when connection is established; again or the driver/system is restartedBLOCK_ON_DISCONNECT = True
; --------- Charge mode ---------; Choose the mode for voltage / current limitations (True / False); False is a step mode: This is the default with limitations on hard boundary steps; True is a linear mode:; For CCL and DCL the values between the steps are calculated for smoother values (by WaldemarFech); For CVL max battery voltage is calculated dynamically in order that the max cell voltage is not exceededLINEAR_LIMITATION_ENABLE = True
; Specify in seconds how often the linear values should be recalculatedLINEAR_RECALCULATION_EVERY = 1
; Specify in percent when the linear values should be recalculated immediately; Example: 5 for a immediate change, when the value changes by more than 5%LINEAR_RECALCULATION_ON_PERC_CHANGE = 5
; --------- Charge Voltage limitation (affecting CVL) ---------; Description: Limit max charging voltage (MAX_CELL_VOLTAGE * cell count), switch from max voltage to float; voltage (FLOAT_CELL_VOLTAGE * cell count) and back; False: Max charging voltage is always kept; True: Max charging voltage is reduced based on charge mode; Step mode: After max voltage is reached for MAX_VOLTAGE_TIME_SEC it switches to float voltage. After; SoC is below SOC_LEVEL_TO_RESET_VOLTAGE_LIMIT it switches back to max voltage.; Linear mode: After max voltage is reachend and cell voltage difference is smaller or equal to; CELL_VOLTAGE_DIFF_KEEP_MAX_VOLTAGE_UNTIL it switches to float voltage after 300 (fixed); additional seconds. After cell voltage difference is greater or equal to; CELL_VOLTAGE_DIFF_TO_RESET_VOLTAGE_LIMIT it switches back to max voltage.; Example: The battery reached max voltage of 55.2V and hold it for 900 seconds, the the CVL is switched to; float voltage of 53.6V to don't stress the batteries. Allow max voltage of 55.2V again, if SoC is; once below 90%; OR; The battery reached max voltage of 55.2V and the max cell difference is 0.010V, then switch to float; voltage of 53.6V after 300 additional seconds to don't stress the batteries. Allow max voltage of; 55.2V again if max cell difference is above 0.080V or SoC below 90%; Charge voltage control management enable (True/False).CVCM_ENABLE = True
; -- CVL reset based on cell voltage diff (linear mode); Specify cell voltage diff where CVL limit is kept until diff is equal or lowerCELL_VOLTAGE_DIFF_KEEP_MAX_VOLTAGE_UNTIL = 0.004
; Specify cell voltage diff where CVL limit is reset to max voltage, if value get above; the cells are considered as imbalanced, if the cell diff exceeds 5% of the nominal cell voltage; e.g. 3.2 V * 5 / 100 = 0.160 VCELL_VOLTAGE_DIFF_TO_RESET_VOLTAGE_LIMIT = 0.015
; -- CVL reset based on SoC option (step mode); Specify how long the max voltage should be kept, if reached then switch to float voltageMAX_VOLTAGE_TIME_SEC = 900
; Specify SoC where CVL limit is reset to max voltage, if value gets belowSOC_LEVEL_TO_RESET_VOLTAGE_LIMIT = 80
; --------- Cell Voltage Current limitation (affecting CCL/DCL) ---------; Description: Maximal charge / discharge current will be in-/decreased depending on min and max cell voltages; Example: 18 cells * 3.55V/cell = 63.9V max charge voltage; 18 cells * 2.70V/cell = 48.6V min discharge voltage; But in reality not all cells reach the same voltage at the same time. The (dis)charge current; will be (in-/)decreased, if even ONE SINGLE BATTERY CELL reaches the limits; Charge current control management referring to cell-voltage enable (True/False).CCCM_CV_ENABLE = True
; Discharge current control management referring to cell-voltage enable (True/False).DCCM_CV_ENABLE = True
; Set steps to reduce battery current; The current will be changed linear between those steps if LINEAR_LIMITATION_ENABLE is set to TrueCELL_VOLTAGES_WHILE_CHARGING = 3.55, 3.50, 3.45, 3.40
MAX_CHARGE_CURRENT_CV_FRACTION = 0, 0.05, 0.5, 1
CELL_VOLTAGES_WHILE_DISCHARGING = 2.75, 2.80, 2.90, 3.00
MAX_DISCHARGE_CURRENT_CV_FRACTION = 0, 0.1, 0.5, 1
; --------- Temperature limitation (affecting CCL/DCL) ---------; Description: Maximal charge / discharge current will be in-/decreased depending on temperature; Example: The temperature limit will be monitored to control the currents. If there are two temperature senors,; then the worst case will be calculated and the more secure lower current will be set.; Charge current control management referring to temperature enable (True/False).CCCM_T_ENABLE = True
; Charge current control management referring to temperature enable (True/False).DCCM_T_ENABLE = True
; Set steps to reduce battery current; The current will be changed linear between those steps if LINEAR_LIMITATION_ENABLE is set to TrueTEMPERATURE_LIMITS_WHILE_CHARGING = 0, 2, 5, 10, 15, 20, 35, 40 , 50
MAX_CHARGE_CURRENT_T_FRACTION = 0, 0.1, 0.2, 0.4, 0.8, 1, 1, 0.4, 0
TEMPERATURE_LIMITS_WHILE_DISCHARGING = -20, 0, 5, 10, 15, 45, 50
MAX_DISCHARGE_CURRENT_T_FRACTION = 0, 0.2, 0.3, 0.4, 1, 1, 0
; --------- SOC limitation (affecting CCL/DCL) ---------; Description: Maximal charge / discharge current will be increased / decreased depending on State of Charge,; see CC_SOC_LIMIT1 etc.; Example: The SoC limit will be monitored to control the currents.; Charge current control management enable (True/False).CCCM_SOC_ENABLE = False
; Discharge current control management enable (True/False).DCCM_SOC_ENABLE = FALSE
; Charge current soc limitsCC_SOC_LIMIT1 = 98
CC_SOC_LIMIT2 = 95
CC_SOC_LIMIT3 = 91
; Charge current limitsCC_CURRENT_LIMIT1_FRACTION = 0.1
CC_CURRENT_LIMIT2_FRACTION = 0.3
CC_CURRENT_LIMIT3_FRACTION = 0.5
; Discharge current soc limitsDC_SOC_LIMIT1 = 10
DC_SOC_LIMIT2 = 20
DC_SOC_LIMIT3 = 30
; Discharge current limitsDC_CURRENT_LIMIT1_FRACTION = 0.1
DC_CURRENT_LIMIT2_FRACTION = 0.3
DC_CURRENT_LIMIT3_FRACTION = 0.5
; --------- Time-To-Go ---------; Description: Calculates the time to go shown in the GUI; Recalculation is done based on TIME_TO_SOC_RECALCULATE_EVERYTIME_TO_GO_ENABLE = True
; --------- Time-To-Soc ---------; Description: Calculates the time to a specific SoC; Example: TIME_TO_SOC_POINTS = 50, 25, 15, 0; 6h 24m remaining until 50% SoC; 17h 36m remaining until 25% SoC; 22h 5m remaining until 15% SoC; 28h 48m remaining until 0% SoC; Set of SoC percentages to report on dbus and MQTT. The more you specify the more it will impact system performance.; [Valid values 0-100, comma separated list. More that 20 intervals are not recommended]; Example: TIME_TO_SOC_POINTS = 100, 95, 90, 85, 75, 50, 25, 20, 10, 0; Leave empty to disableTIME_TO_SOC_POINTS = 100,10
; Specify TimeToSoc value type [Valid values 1, 2, 3]; 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 overloadTIME_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 slightlyTIME_TO_SOC_INC_FROM = True
; --------- 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, EcsBMS_TYPE = Jkbms
; Exclute this serial devices from the driver startup; Example: /dev/ttyUSB2, /dev/ttyUSB4EXCLUDED_DEVICES =
; Enter custom battery names here or change it over the GUI; Example:; /dev/ttyUSB0:My first battery; /dev/ttyUSB0:My first battery,/dev/ttyUSB1:My second batteryCUSTOM_BATTERY_NAMES =
; Auto reset SoC; If on, then SoC is reset to 100%, if the value switches from absorption to float voltage; Currently only working for Daly BMSAUTO_RESET_SOC = False
; 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 2BATTERY_CELL_DATA_FORMAT = 1
; Simulate Midpoint graph (True/False).MIDPOINT_ENABLE = False
; Battery temperature; Specify how the battery temperature is assembled; 0 Get mean of temperature sensor 1 to sensor 4; 1 Get only temperature from temperature sensor 1; 2 Get only temperature from temperature sensor 2; 3 Get only temperature from temperature sensor 3; 4 Get only temperature from temperature sensor 4TEMP_BATTERY = 0
; Temperature sensor 1 nameTEMP_1_NAME = Temp 1
; Temperature sensor 2 nameTEMP_2_NAME = Temp 2
; Temperature sensor 2 nameTEMP_3_NAME = Temp 3
; Temperature sensor 2 nameTEMP_4_NAME = Temp 4
; --------- 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 BMSSOC_LOW_WARNING = 20
SOC_LOW_ALARM = 10
; -- Daly settings; Battery capacity (amps) if the BMS does not support reading itBATTERY_CAPACITY = 50
; Invert Battery Current. Default non-inverted. Set to -1 to invertINVERT_CURRENT_MEASUREMENT = 1
; -- ESC GreenMeter and Lipro device settingsGREENMETER_ADDRESS = 1
LIPRO_START_ADDRESS = 2
LIPRO_END_ADDRESS = 4
LIPRO_CELL_COUNT = 15
; -- HeltecModbus (Heltec SmartBMS/YYBMS) settings; Set the Modbus addresses from the adapters; Separate each address to check by a comma like: 1, 2, 3, ...; factory default address will be 1HELTEC_MODBUS_ADDR = 1
; --------- Battery monitor specific settings ---------; If you are using a SmartShunt or something else as a battery monitor, the battery voltage reported; from the BMS and SmartShunt could differ. This causes, that the driver never goapplies the float voltage,; since max voltage is never reached.; Example:; cell count: 16; MAX_CELL_VOLTAGE = 3.45; max voltage calculated = 16 * 3.45 = 55.20; CVL is set to 55.20 and the battery is now charged until the SmartShunt measures 55.20 V. The BMS; now measures 55.05 V since there is a voltage drop of 0.15 V. Since the dbus-serialbattery measures; 55.05 V the max voltage is never reached for the driver and max voltage is kept forever.; Set VOLTAGE_DROP to 0.15VOLTAGE_DROP = 0.00
Relevant log output
@4000000064ea64290a51d68c INFO:SerialBattery:
@4000000064ea64290a55b6bc INFO:SerialBattery:Starting dbus-serialbattery
@4000000064ea64290a5ecedc INFO:SerialBattery:dbus-serialbattery v1.0.20230723dev
@4000000064ea64290a6366a4 INFO:SerialBattery:-- Testing BMS: 1 of 3 rounds
@4000000064ea64290a677d84 INFO:SerialBattery:Testing Jkbms
@4000000064ea64290db0d454 INFO:SerialBattery:Connection established to Jkbms
@4000000064ea64290db55c7c INFO:SerialBattery:Battery Jkbms connected to dbus from /dev/ttyUSB1
@4000000064ea64290db95fd4 INFO:SerialBattery:========== Settings ==========
@4000000064ea64290dbdfb84 INFO:SerialBattery:> Connection voltage: 59.91V | Current: -0.0A | SoC: 76%
@4000000064ea64290dc1e76c INFO:SerialBattery:> Cell count: 18 | Cells populated: 0
@4000000064ea64290dc60234 INFO:SerialBattery:> LINEAR LIMITATION ENABLE: True
@4000000064ea64290dca4024 INFO:SerialBattery:> MAX BATTERY CHARGE CURRENT: 115.0A | MAX BATTERY DISCHARGE CURRENT: 115.0A
@4000000064ea64290dce6a8c INFO:SerialBattery:> MAX BATTERY CHARGE CURRENT: 175.0A | MAX BATTERY DISCHARGE CURRENT: 175.0A (read from BMS)
@4000000064ea64290dd23b1c INFO:SerialBattery:> CVCM: True
@4000000064ea64290dd6713c INFO:SerialBattery:> MIN CELL VOLTAGE: 2.9V | MAX CELL VOLTAGE: 3.45V
@4000000064ea64290dda64f4 INFO:SerialBattery:> CCCM CV: True | DCCM CV: True
@4000000064ea64290dde7404 INFO:SerialBattery:> CCCM T: True | DCCM T: True
@4000000064ea64290de27f2c INFO:SerialBattery:> CCCM SOC: False | DCCM SOC: False
@4000000064ea64290de6578c INFO:SerialBattery:Serial Number/Unique Identifier: P1_P1
@4000000064ea64290f66c984 INFO:SerialBattery:DeviceInstance = 1
@4000000064ea64290f6b691c INFO:SerialBattery:com.victronenergy.battery.ttyUSB1
@4000000064ea6429106885fc INFO:SerialBattery:publish config values = 1
@4000000064ea8e5a1be7a37c ERROR:SerialBattery:>>> ERROR: No reply - returning [len:49/13664]
@4000000064ea8e6a1c2a8494 ERROR:SerialBattery:>>> ERROR: No reply - returning [len:266/53001]
@4000000064ea8ea628606724 ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643@4000000064ea8ee22d5df5d4 ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643@4000000064ea8f1e3322242c ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643@4000000064ea8fd207679b64 ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643@4000000064ea900e0d6fe354 ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643@4000000064ea904a12dec1d4 ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643@4000000064ea905e0ed93754 ERROR:SerialBattery:>>> ERROR: No reply - returning [len:173/1431]@4000000064ea90a0256ce114 ERROR:SerialBattery:>>> ERROR: No reply - returning@4000000064ea90bc156f4824 ERROR:SerialBattery:>>> ERROR: No reply - returning [len:49/13664]@4000000064ea915d2162610c ERROR:SerialBattery:>>> ERROR: No reply - returning [len:235/4621]@4000000064ea9277381d517c ERROR:SerialBattery:>>> ERROR: No reply - returning [len:235/4621]@4000000064ea928737ab656c ERROR:SerialBattery:>>> ERROR: No reply - returning [len:255/3294]@4000000064ea94c42f2a0b14 ERROR:SerialBattery:>>> ERROR: No reply - returning [len:235/4621]@4000000064ea94d42e2a0fd4 ERROR:SerialBattery:>>> ERROR: No reply - returning [len:235/4621]@4000000064ea94ee2fecc2bc ERROR:SerialBattery:>>> ERROR: No reply - returning [len:49/13664]@4000000064ea9a11323bdb0c ERROR:SerialBattery:>>> ERROR: No reply - returning [len:49/13664]@4000000064ea9c212556f7b4 ERROR:SerialBattery:>>> ERROR: No reply - returning [len:173/1431]
Any other information that may be helpful
No response
The text was updated successfully, but these errors were encountered:
Describe the bug
Tried dev branch yesterday.
After few hours serialbattery is crashing with Exception, see log:
ERROR:SerialBattery:Exception occurred: TypeError("int() argument must be a string, a bytes-like object or a number, not 'NoneType'") of type <class 'TypeError'> in /opt/victronenergy/dbus-serialbattery/dbushelper.py line #643
Seems related to TimeToSoc/ Calculation?
Here my Config related to that:
TIME_TO_GO_ENABLE = True
TIME_TO_SOC_POINTS = 100,10
TIME_TO_SOC_VALUE_TYPE = 1
TIME_TO_SOC_RECALCULATE_EVERY = 60
TIME_TO_SOC_INC_FROM = True
How to reproduce
Steps to reproduce the behavior:
Not sure about it but i think:
1.) Install nightly dev.
2.) Use above Time-To-Go/Time-To-Soc Parameter
3.) wait some time (few hours)
Expected behavior
No Crash
Driver version
nightly dev
Venus OS device type
Raspberry Pi
Venus OS version
3.01
BMS type
JKBMS / Heltec BMS
Cell count
18
Connection type
Serial USB adapter to RS485
Config file
Relevant log output
Any other information that may be helpful
No response
The text was updated successfully, but these errors were encountered: