Save data to OUTPUT
This commit is contained in:
parent
1501db5e9f
commit
b6083495ee
1 changed files with 177 additions and 164 deletions
|
|
@ -39,6 +39,7 @@ parser = argparse.ArgumentParser(description = 'Chargery BMS driver')
|
|||
parser.add_argument('--version', action='version', version='%(prog)s v' + str(driver['version']) + ' (' + driver['serial'] + ')')
|
||||
parser.add_argument('--debug', action="store_true", help='enable debug logging')
|
||||
parser.add_argument('--test', action="store_true", help='test some stored examples network packets')
|
||||
parser.add_argument('-o', '--output', help='save data to OUTPUT')
|
||||
requiredArguments = parser.add_argument_group('required arguments')
|
||||
requiredArguments.add_argument('-d', '--device', help='serial device for data (eg /dev/ttyUSB0)', required=True)
|
||||
args = parser.parse_args()
|
||||
|
|
@ -108,39 +109,39 @@ BMS_STATUS = {
|
|||
}
|
||||
},
|
||||
'voltages' : {
|
||||
'cell1_voltage' : {
|
||||
'cell01_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell2_voltage' : {
|
||||
'cell02_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell3_voltage' : {
|
||||
'cell03_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell4_voltage' : {
|
||||
'cell04_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell5_voltage' : {
|
||||
'cell05_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell6_voltage' : {
|
||||
'cell06_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell7_voltage' : {
|
||||
'cell07_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell8_voltage' : {
|
||||
'cell08_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell9_voltage' : {
|
||||
'cell09_voltage' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
|
|
@ -244,39 +245,39 @@ BMS_STATUS = {
|
|||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell1_impedance' : {
|
||||
'cell01_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell2_impedance' : {
|
||||
'cell02_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell3_impedance' : {
|
||||
'cell03_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell4_impedance' : {
|
||||
'cell04_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell5_impedance' : {
|
||||
'cell05_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell6_impedance' : {
|
||||
'cell06_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell7_impedance' : {
|
||||
'cell07_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell8_impedance' : {
|
||||
'cell08_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
'cell9_impedance' : {
|
||||
'cell09_impedance' : {
|
||||
'value' : -1,
|
||||
'text' : ""
|
||||
},
|
||||
|
|
@ -391,6 +392,20 @@ SPECIAL_DISPLAY_SYMBOLS = {
|
|||
'ohm' : u'\u03A9'
|
||||
}
|
||||
|
||||
def dfs_bms_status (f, bms_status, prefix=""):
|
||||
import functools, operator
|
||||
if "value" in bms_status:
|
||||
return [f(prefix, bms_status)]
|
||||
else:
|
||||
return functools.reduce(operator.add,
|
||||
[dfs_bms_status(f, bms_status[sub_dict], (prefix+"." if len(prefix)>0 else "") + sub_dict) for sub_dict in sorted(bms_status.keys())],
|
||||
[])
|
||||
|
||||
def print_status_header (prefix, bms_status_leaf):
|
||||
return prefix
|
||||
|
||||
def print_status_value (prefix, bms_status_leaf):
|
||||
return bms_status_leaf["value"]
|
||||
|
||||
def reset_status_values():
|
||||
|
||||
|
|
@ -416,24 +431,24 @@ def reset_impedances_values():
|
|||
BMS_STATUS['impedances']['current_mode1']['text'] = ""
|
||||
BMS_STATUS['impedances']['current1']['value'] = -1
|
||||
BMS_STATUS['impedances']['current1']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell1_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell1_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell2_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell2_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell3_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell3_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell4_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell4_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell5_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell5_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell6_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell6_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell7_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell7_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell8_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell8_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell9_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell9_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell01_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell01_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell02_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell02_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell03_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell03_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell04_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell04_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell05_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell05_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell06_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell06_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell07_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell07_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell08_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell08_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell09_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell09_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell10_impedance']['value'] = -1
|
||||
BMS_STATUS['impedances']['cell10_impedance']['text'] = ""
|
||||
BMS_STATUS['impedances']['cell11_impedance']['value'] = -1
|
||||
|
|
@ -481,24 +496,24 @@ def reset_impedances_values():
|
|||
|
||||
|
||||
def reset_voltages_values():
|
||||
BMS_STATUS['voltages']['cell1_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell1_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell2_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell2_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell3_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell3_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell4_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell4_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell5_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell5_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell6_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell6_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell7_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell7_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell8_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell8_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell9_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell9_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell01_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell01_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell02_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell02_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell03_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell03_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell04_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell04_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell05_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell05_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell06_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell06_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell07_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell07_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell08_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell08_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell09_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell09_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell10_voltage']['value'] = -1
|
||||
BMS_STATUS['voltages']['cell10_voltage']['text'] = ""
|
||||
BMS_STATUS['voltages']['cell11_voltage']['value'] = -1
|
||||
|
|
@ -757,34 +772,34 @@ def parse_packet(packet):
|
|||
|
||||
|
||||
# cell voltages BMS8
|
||||
BMS_STATUS['voltages']['cell1_voltage']['value'] = get_voltage_value((packet[4]), (packet[5]))
|
||||
BMS_STATUS['voltages']['cell1_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell1_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell01_voltage']['value'] = get_voltage_value((packet[4]), (packet[5]))
|
||||
BMS_STATUS['voltages']['cell01_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell01_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell2_voltage']['value'] = get_voltage_value((packet[6]), (packet[7]))
|
||||
BMS_STATUS['voltages']['cell2_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell2_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell02_voltage']['value'] = get_voltage_value((packet[6]), (packet[7]))
|
||||
BMS_STATUS['voltages']['cell02_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell02_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell3_voltage']['value'] = get_voltage_value((packet[8]), (packet[9]))
|
||||
BMS_STATUS['voltages']['cell3_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell3_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell03_voltage']['value'] = get_voltage_value((packet[8]), (packet[9]))
|
||||
BMS_STATUS['voltages']['cell03_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell03_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell4_voltage']['value'] = get_voltage_value((packet[10]), (packet[11]))
|
||||
BMS_STATUS['voltages']['cell4_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell4_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell04_voltage']['value'] = get_voltage_value((packet[10]), (packet[11]))
|
||||
BMS_STATUS['voltages']['cell04_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell04_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell5_voltage']['value'] = get_voltage_value((packet[12]), (packet[13]))
|
||||
BMS_STATUS['voltages']['cell5_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell5_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell05_voltage']['value'] = get_voltage_value((packet[12]), (packet[13]))
|
||||
BMS_STATUS['voltages']['cell05_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell05_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell6_voltage']['value'] = get_voltage_value((packet[14]), (packet[15]))
|
||||
BMS_STATUS['voltages']['cell6_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell6_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell06_voltage']['value'] = get_voltage_value((packet[14]), (packet[15]))
|
||||
BMS_STATUS['voltages']['cell06_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell06_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell7_voltage']['value'] = get_voltage_value((packet[16]), (packet[17]))
|
||||
BMS_STATUS['voltages']['cell7_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell7_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell07_voltage']['value'] = get_voltage_value((packet[16]), (packet[17]))
|
||||
BMS_STATUS['voltages']['cell07_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell07_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell8_voltage']['value'] = get_voltage_value((packet[18]), (packet[19]))
|
||||
BMS_STATUS['voltages']['cell8_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell8_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell08_voltage']['value'] = get_voltage_value((packet[18]), (packet[19]))
|
||||
BMS_STATUS['voltages']['cell08_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell08_voltage']['value']) + "V"
|
||||
|
||||
if (packet_length == PACKET_LENGTH_STATUS_CELLS[1]): # packet from BMS16
|
||||
|
||||
BMS_STATUS['voltages']['cell9_voltage']['value'] = get_voltage_value((packet[20]), (packet[21]))
|
||||
BMS_STATUS['voltages']['cell9_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell9_voltage']['value']) + "V"
|
||||
BMS_STATUS['voltages']['cell09_voltage']['value'] = get_voltage_value((packet[20]), (packet[21]))
|
||||
BMS_STATUS['voltages']['cell09_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell09_voltage']['value']) + "V"
|
||||
|
||||
BMS_STATUS['voltages']['cell10_voltage']['value'] = get_voltage_value((packet[22]), (packet[23]))
|
||||
BMS_STATUS['voltages']['cell10_voltage']['text'] = "{:.3f}".format(BMS_STATUS['voltages']['cell10_voltage']['value']) + "V"
|
||||
|
|
@ -839,24 +854,24 @@ def parse_packet(packet):
|
|||
# get min/max voltages to calculate the diff
|
||||
cell_voltages = []
|
||||
|
||||
if (BMS_STATUS['voltages']['cell1_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell1_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell2_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell2_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell3_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell3_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell4_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell4_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell5_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell5_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell6_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell6_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell7_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell7_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell8_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell8_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell9_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell9_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell01_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell01_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell02_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell02_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell03_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell03_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell04_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell04_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell05_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell05_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell06_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell06_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell07_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell07_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell08_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell08_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell09_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell09_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell10_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
cell_voltages.append(BMS_STATUS['voltages']['cell10_voltage']['value'])
|
||||
if (BMS_STATUS['voltages']['cell11_voltage']['value'] >= MIN_CELL_VOLTAGE):
|
||||
|
|
@ -943,14 +958,14 @@ def parse_packet(packet):
|
|||
"][CAPACITYWH|" + BMS_STATUS['voltages']['battery_capacity_wh']['text'] +
|
||||
"][DIFF|" + BMS_STATUS['voltages']['agg_voltages']['diff']['text'] +
|
||||
"][SUM|" + BMS_STATUS['voltages']['agg_voltages']['sum']['text'] +
|
||||
"][#1|" + BMS_STATUS['voltages']['cell1_voltage']['text'] +
|
||||
"][#2|" + BMS_STATUS['voltages']['cell2_voltage']['text'] +
|
||||
"][#3|" + BMS_STATUS['voltages']['cell3_voltage']['text'] +
|
||||
"][#4|" + BMS_STATUS['voltages']['cell4_voltage']['text'] +
|
||||
"][#5|" + BMS_STATUS['voltages']['cell5_voltage']['text'] +
|
||||
"][#6|" + BMS_STATUS['voltages']['cell6_voltage']['text'] +
|
||||
"][#7|" + BMS_STATUS['voltages']['cell7_voltage']['text'] +
|
||||
"][#8|" + BMS_STATUS['voltages']['cell8_voltage']['text'] + "]")
|
||||
"][#1|" + BMS_STATUS['voltages']['cell01_voltage']['text'] +
|
||||
"][#2|" + BMS_STATUS['voltages']['cell02_voltage']['text'] +
|
||||
"][#3|" + BMS_STATUS['voltages']['cell03_voltage']['text'] +
|
||||
"][#4|" + BMS_STATUS['voltages']['cell04_voltage']['text'] +
|
||||
"][#5|" + BMS_STATUS['voltages']['cell05_voltage']['text'] +
|
||||
"][#6|" + BMS_STATUS['voltages']['cell06_voltage']['text'] +
|
||||
"][#7|" + BMS_STATUS['voltages']['cell07_voltage']['text'] +
|
||||
"][#8|" + BMS_STATUS['voltages']['cell08_voltage']['text'] + "]")
|
||||
|
||||
elif (packet_length == PACKET_LENGTH_STATUS_CELLS[1]): # packet from BMS16
|
||||
|
||||
|
|
@ -959,15 +974,15 @@ def parse_packet(packet):
|
|||
"][CAPACITYWH|" + BMS_STATUS['voltages']['battery_capacity_wh']['text'] +
|
||||
"][DIFF|" + BMS_STATUS['voltages']['agg_voltages']['diff']['text'] +
|
||||
"][SUM|" + BMS_STATUS['voltages']['agg_voltages']['sum']['text'] +
|
||||
"][#1|" + BMS_STATUS['voltages']['cell1_voltage']['text'] +
|
||||
"][#2|" + BMS_STATUS['voltages']['cell2_voltage']['text'] +
|
||||
"][#3|" + BMS_STATUS['voltages']['cell3_voltage']['text'] +
|
||||
"][#4|" + BMS_STATUS['voltages']['cell4_voltage']['text'] +
|
||||
"][#5|" + BMS_STATUS['voltages']['cell5_voltage']['text'] +
|
||||
"][#6|" + BMS_STATUS['voltages']['cell6_voltage']['text'] +
|
||||
"][#7|" + BMS_STATUS['voltages']['cell7_voltage']['text'] +
|
||||
"][#8|" + BMS_STATUS['voltages']['cell8_voltage']['text'] +
|
||||
"][#9|" + BMS_STATUS['voltages']['cell9_voltage']['text'] +
|
||||
"][#1|" + BMS_STATUS['voltages']['cell01_voltage']['text'] +
|
||||
"][#2|" + BMS_STATUS['voltages']['cell02_voltage']['text'] +
|
||||
"][#3|" + BMS_STATUS['voltages']['cell03_voltage']['text'] +
|
||||
"][#4|" + BMS_STATUS['voltages']['cell04_voltage']['text'] +
|
||||
"][#5|" + BMS_STATUS['voltages']['cell05_voltage']['text'] +
|
||||
"][#6|" + BMS_STATUS['voltages']['cell06_voltage']['text'] +
|
||||
"][#7|" + BMS_STATUS['voltages']['cell07_voltage']['text'] +
|
||||
"][#8|" + BMS_STATUS['voltages']['cell08_voltage']['text'] +
|
||||
"][#9|" + BMS_STATUS['voltages']['cell09_voltage']['text'] +
|
||||
"][#10|" + BMS_STATUS['voltages']['cell10_voltage']['text'] +
|
||||
"][#11|" + BMS_STATUS['voltages']['cell11_voltage']['text'] +
|
||||
"][#12|" + BMS_STATUS['voltages']['cell12_voltage']['text'] +
|
||||
|
|
@ -984,15 +999,15 @@ def parse_packet(packet):
|
|||
"][CAPACITYWH|" + BMS_STATUS['voltages']['battery_capacity_wh']['text'] +
|
||||
"][DIFF|" + BMS_STATUS['voltages']['agg_voltages']['diff']['text'] +
|
||||
"][SUM|" + BMS_STATUS['voltages']['agg_voltages']['sum']['text'] +
|
||||
"][#1|" + BMS_STATUS['voltages']['cell1_voltage']['text'] +
|
||||
"][#2|" + BMS_STATUS['voltages']['cell2_voltage']['text'] +
|
||||
"][#3|" + BMS_STATUS['voltages']['cell3_voltage']['text'] +
|
||||
"][#4|" + BMS_STATUS['voltages']['cell4_voltage']['text'] +
|
||||
"][#5|" + BMS_STATUS['voltages']['cell5_voltage']['text'] +
|
||||
"][#6|" + BMS_STATUS['voltages']['cell6_voltage']['text'] +
|
||||
"][#7|" + BMS_STATUS['voltages']['cell7_voltage']['text'] +
|
||||
"][#8|" + BMS_STATUS['voltages']['cell8_voltage']['text'] +
|
||||
"][#9|" + BMS_STATUS['voltages']['cell9_voltage']['text'] +
|
||||
"][#1|" + BMS_STATUS['voltages']['cell01_voltage']['text'] +
|
||||
"][#2|" + BMS_STATUS['voltages']['cell02_voltage']['text'] +
|
||||
"][#3|" + BMS_STATUS['voltages']['cell03_voltage']['text'] +
|
||||
"][#4|" + BMS_STATUS['voltages']['cell04_voltage']['text'] +
|
||||
"][#5|" + BMS_STATUS['voltages']['cell05_voltage']['text'] +
|
||||
"][#6|" + BMS_STATUS['voltages']['cell06_voltage']['text'] +
|
||||
"][#7|" + BMS_STATUS['voltages']['cell07_voltage']['text'] +
|
||||
"][#8|" + BMS_STATUS['voltages']['cell08_voltage']['text'] +
|
||||
"][#9|" + BMS_STATUS['voltages']['cell09_voltage']['text'] +
|
||||
"][#10|" + BMS_STATUS['voltages']['cell10_voltage']['text'] +
|
||||
"][#11|" + BMS_STATUS['voltages']['cell11_voltage']['text'] +
|
||||
"][#12|" + BMS_STATUS['voltages']['cell12_voltage']['text'] +
|
||||
|
|
@ -1062,32 +1077,32 @@ def parse_packet(packet):
|
|||
BMS_STATUS['impedances']['current1']['text'] = ""
|
||||
|
||||
for i in range(1, cell_count+1):
|
||||
BMS_STATUS['impedances']['cell'+str(i)+'_impedance']['value'] = get_cell_impedance((packet[7+(2*(i-1))]), (packet[8+(2*(i-1))]))
|
||||
BMS_STATUS['impedances']['cell'+str(i)+'_impedance']['text'] = "{:.1f}".format(BMS_STATUS['impedances']['cell'+str(i)+'_impedance']['value']) + "m" + SPECIAL_DISPLAY_SYMBOLS['ohm']
|
||||
BMS_STATUS['impedances']['cell'+"{:02d}".format(i)+'_impedance']['value'] = get_cell_impedance((packet[7+(2*(i-1))]), (packet[8+(2*(i-1))]))
|
||||
BMS_STATUS['impedances']['cell'+"{:02d}".format(i)+'_impedance']['text'] = "{:.1f}".format(BMS_STATUS['impedances']['cell'+"{:02d}".format(i)+'_impedance']['value']) + "m" + SPECIAL_DISPLAY_SYMBOLS['ohm']
|
||||
|
||||
|
||||
|
||||
# get min/max impedances to calculate the diff
|
||||
cell_impedances = []
|
||||
|
||||
if (BMS_STATUS['impedances']['cell1_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell1_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell2_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell2_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell3_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell3_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell4_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell4_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell5_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell5_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell6_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell6_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell7_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell7_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell8_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell8_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell9_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell9_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell01_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell01_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell02_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell02_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell03_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell03_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell04_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell04_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell05_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell05_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell06_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell06_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell07_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell07_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell08_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell08_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell09_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell09_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell10_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
cell_impedances.append(BMS_STATUS['impedances']['cell10_impedance']['value'])
|
||||
if (BMS_STATUS['impedances']['cell11_impedance']['value'] >= MIN_CELL_IMPEDANCE):
|
||||
|
|
@ -1138,15 +1153,15 @@ def parse_packet(packet):
|
|||
"][MODE1|" + BMS_STATUS['impedances']['current_mode1']['text'] +
|
||||
"][CURRENT1|" + BMS_STATUS['impedances']['current1']['text'] +
|
||||
"][SUM|" + BMS_STATUS['impedances']['agg_impedances']['sum']['text'] +
|
||||
"][#1|" + BMS_STATUS['impedances']['cell1_impedance']['text'] +
|
||||
"][#2|" + BMS_STATUS['impedances']['cell2_impedance']['text'] +
|
||||
"][#3|" + BMS_STATUS['impedances']['cell3_impedance']['text'] +
|
||||
"][#4|" + BMS_STATUS['impedances']['cell4_impedance']['text'] +
|
||||
"][#5|" + BMS_STATUS['impedances']['cell5_impedance']['text'] +
|
||||
"][#6|" + BMS_STATUS['impedances']['cell6_impedance']['text'] +
|
||||
"][#7|" + BMS_STATUS['impedances']['cell7_impedance']['text'] +
|
||||
"][#8|" + BMS_STATUS['impedances']['cell8_impedance']['text'] +
|
||||
"][#9|" + BMS_STATUS['impedances']['cell9_impedance']['text'] +
|
||||
"][#1|" + BMS_STATUS['impedances']['cell01_impedance']['text'] +
|
||||
"][#2|" + BMS_STATUS['impedances']['cell02_impedance']['text'] +
|
||||
"][#3|" + BMS_STATUS['impedances']['cell03_impedance']['text'] +
|
||||
"][#4|" + BMS_STATUS['impedances']['cell04_impedance']['text'] +
|
||||
"][#5|" + BMS_STATUS['impedances']['cell05_impedance']['text'] +
|
||||
"][#6|" + BMS_STATUS['impedances']['cell06_impedance']['text'] +
|
||||
"][#7|" + BMS_STATUS['impedances']['cell07_impedance']['text'] +
|
||||
"][#8|" + BMS_STATUS['impedances']['cell08_impedance']['text'] +
|
||||
"][#9|" + BMS_STATUS['impedances']['cell09_impedance']['text'] +
|
||||
"][#10|" + BMS_STATUS['impedances']['cell10_impedance']['text'] +
|
||||
"][#11|" + BMS_STATUS['impedances']['cell11_impedance']['text'] +
|
||||
"][#12|" + BMS_STATUS['impedances']['cell12_impedance']['text'] +
|
||||
|
|
@ -1187,7 +1202,6 @@ def handle_serial_data(test_packet = ''):
|
|||
try:
|
||||
|
||||
if (len(test_packet) > 0): # for testing the example packets form the chargery manual
|
||||
print(test_packet)
|
||||
parse_packet(test_packet)
|
||||
else:
|
||||
serial_packet = ""
|
||||
|
|
@ -1196,34 +1210,33 @@ def handle_serial_data(test_packet = ''):
|
|||
if (serial_port.in_waiting >= (PACKET_LENGTH_MINIMUM * 2)):
|
||||
data_buffer_array = serial_port.read(serial_port.in_waiting)
|
||||
logging.debug("Data Received [" + str(len(data_buffer_array)) + " bytes]")
|
||||
print(data_buffer_array)
|
||||
for data_buffer in data_buffer_array:
|
||||
pass
|
||||
#print(hex(data_buffer))
|
||||
#serial_packet += data_buffer
|
||||
|
||||
if (len(data_buffer_array) > 0):
|
||||
parse_packet(bytearray(data_buffer_array))
|
||||
|
||||
data_buffer_array = ""
|
||||
serial_packet = ""
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
|
||||
if args.test:
|
||||
for item in BMS_TEST_PACKETS.items():
|
||||
print("Test Item Start")
|
||||
handle_serial_data((item[1]));
|
||||
print("Test Item End")
|
||||
print("")
|
||||
print("\n".join(dfs_bms_status(print_status_header, BMS_STATUS)))
|
||||
|
||||
for item in BMS_TEST_PACKETS.items():
|
||||
handle_serial_data((item[1]))
|
||||
print(str(dfs_bms_status(print_status_value, BMS_STATUS)).strip('[]'))
|
||||
|
||||
else:
|
||||
if args.output is not None:
|
||||
output_file = open(args.output)
|
||||
print(",".join(dfs_bms_status(print_status_header, BMS_STATUS)), file=output_file)
|
||||
|
||||
while True:
|
||||
handle_serial_data()
|
||||
print(str(dfs_bms_status(print_status_value, BMS_STATUS)).strip('[]'), file=output_file)
|
||||
time.sleep(1)
|
||||
else:
|
||||
while True:
|
||||
print("Test Item Start")
|
||||
handle_serial_data()
|
||||
time.sleep(1)
|
||||
print("Test Item End")
|
||||
print("")
|
||||
Loading…
Add table
Reference in a new issue