diff --git a/firmware/opt/dbus-fzsonick-48tl-fork-S3/signals.py b/firmware/opt/dbus-fzsonick-48tl-fork-S3/signals.py index 2f4d16e4f..091d890c9 100755 --- a/firmware/opt/dbus-fzsonick-48tl-fork-S3/signals.py +++ b/firmware/opt/dbus-fzsonick-48tl-fork-S3/signals.py @@ -139,82 +139,89 @@ def init_battery_signals(): return status.battery.ampere_hours / 2 return [ - BatterySignal('/TimeToTOCRequest', max, read_float(register=1052)), - BatterySignal('/IoStatus/EocReached', return_in_list, read_eoc_reached), - BatterySignal('/NumOfLimbStrings', return_in_list, limp_strings_value), BatterySignal('/Dc/0/Voltage', mean, get_value=read_voltage(), unit='V'), BatterySignal('/Dc/0/Current', sum, get_value=read_current(), unit='A'), BatterySignal('/Dc/0/Power', sum, get_value=read_power, unit='W'), + BatterySignal('/BussVoltage', mean, read_float(register=1001, scale_factor=0.01, offset=0), unit='V'), BatterySignal('/Soc', mean, read_soc, unit='%'), - BatterySignal('/LowestSoc', min, read_float(register=1053, scale_factor=0.1, offset=0), unit='%'), BatterySignal('/Dc/0/Temperature', mean, read_float(register=1003, scale_factor=0.1, offset=-400), unit='C'), - BatterySignal('/Dc/0/LowestTemperature', min, read_float(register=1003, scale_factor=0.1, offset=-400), unit='C'), - BatterySignal('/WarningFlags/TaM1', return_in_list, read_bool(base_register=1005, bit=1)), - BatterySignal('/WarningFlags/TbM1', return_in_list, read_bool(base_register=1005, bit=4)), - BatterySignal('/WarningFlags/VBm1', return_in_list, read_bool(base_register=1005, bit=6)), - BatterySignal('/WarningFlags/VBM1', return_in_list, read_bool(base_register=1005, bit=8)), - BatterySignal('/WarningFlags/IDM1', return_in_list, read_bool(base_register=1005, bit=10)), - BatterySignal('/WarningFlags/vsm1', return_in_list, read_bool(base_register=1005, bit=22)), - BatterySignal('/WarningFlags/vsM1', return_in_list, read_bool(base_register=1005, bit=24)), - BatterySignal('/WarningFlags/iCM1', return_in_list, read_bool(base_register=1005, bit=26)), - BatterySignal('/WarningFlags/iDM1', return_in_list, read_bool(base_register=1005, bit=28)), - BatterySignal('/WarningFlags/MID1', return_in_list, read_bool(base_register=1005, bit=30)), - BatterySignal('/WarningFlags/BLPW', return_in_list, read_bool(base_register=1005, bit=32)), - BatterySignal('/WarningFlags/CCBF', return_in_list, read_bool(base_register=1005, bit=33)), - BatterySignal('/WarningFlags/Ah_W', return_in_list, read_bool(base_register=1005, bit=35)), - BatterySignal('/WarningFlags/MPMM', return_in_list, read_bool(base_register=1005, bit=38)), - BatterySignal('/WarningFlags/TCdi', return_in_list, read_bool(base_register=1005, bit=40)), - BatterySignal('/WarningFlags/LMPW', return_in_list, read_bool(base_register=1005, bit=44)), - BatterySignal('/WarningFlags/TOCW', return_in_list, read_bool(base_register=1005, bit=47)), - BatterySignal('/WarningFlags/BUSL', return_in_list, read_bool(base_register=1005, bit=49)), - BatterySignal('/AlarmFlags/Tam', return_in_list, read_bool(base_register=1005, bit=0)), - BatterySignal('/AlarmFlags/TaM2', return_in_list, read_bool(base_register=1005, bit=2)), - BatterySignal('/AlarmFlags/Tbm', return_in_list, read_bool(base_register=1005, bit=3)), - BatterySignal('/AlarmFlags/TbM2', return_in_list, read_bool(base_register=1005, bit=5)), - BatterySignal('/AlarmFlags/VBm2', return_in_list, read_bool(base_register=1005, bit=7)), - BatterySignal('/AlarmFlags/VBM2', return_in_list, read_bool(base_register=1005, bit=9)), - BatterySignal('/AlarmFlags/IDM2', return_in_list, read_bool(base_register=1005, bit=11)), - BatterySignal('/AlarmFlags/ISOB', return_in_list, read_bool(base_register=1005, bit=12)), - BatterySignal('/AlarmFlags/MSWE', return_in_list, read_bool(base_register=1005, bit=13)), - BatterySignal('/AlarmFlags/FUSE', return_in_list, read_bool(base_register=1005, bit=14)), - BatterySignal('/AlarmFlags/HTRE', return_in_list, read_bool(base_register=1005, bit=15)), - BatterySignal('/AlarmFlags/TCPE', return_in_list, read_bool(base_register=1005, bit=16)), - BatterySignal('/AlarmFlags/STRE', return_in_list, read_bool(base_register=1005, bit=17)), - BatterySignal('/AlarmFlags/CME', return_in_list, read_bool(base_register=1005, bit=18)), - BatterySignal('/AlarmFlags/HWFL', return_in_list, read_bool(base_register=1005, bit=19)), - BatterySignal('/AlarmFlags/HWEM', return_in_list, read_bool(base_register=1005, bit=20)), - BatterySignal('/AlarmFlags/ThM', return_in_list, read_bool(base_register=1005, bit=21)), - BatterySignal('/AlarmFlags/vsm2', return_in_list, read_bool(base_register=1005, bit=23)), - BatterySignal('/AlarmFlags/vsM2', return_in_list, read_bool(base_register=1005, bit=25)), - BatterySignal('/AlarmFlags/iCM2', return_in_list, read_bool(base_register=1005, bit=27)), - BatterySignal('/AlarmFlags/iDM2', return_in_list, read_bool(base_register=1005, bit=29)), - BatterySignal('/AlarmFlags/MID2', return_in_list, read_bool(base_register=1005, bit=31)), - BatterySignal('/AlarmFlags/HTFS', return_in_list, read_bool(base_register=1005, bit=42)), - BatterySignal('/AlarmFlags/DATA', return_in_list, read_bool(base_register=1005, bit=43)), - BatterySignal('/AlarmFlags/LMPA', return_in_list, read_bool(base_register=1005, bit=45)), - BatterySignal('/AlarmFlags/HEBT', return_in_list, read_bool(base_register=1005, bit=46)), - BatterySignal('/AlarmFlags/CURM', return_in_list, read_bool(base_register=1005, bit=48)), - BatterySignal('/Diagnostics/LedStatus/Red', first, read_led_state(register=1004, led=LedColor.red)), - BatterySignal('/Diagnostics/LedStatus/Blue', first, read_led_state(register=1004, led=LedColor.blue)), - BatterySignal('/Diagnostics/LedStatus/Green', first, read_led_state(register=1004, led=LedColor.green)), - BatterySignal('/Diagnostics/LedStatus/Amber', first, read_led_state(register=1004, led=LedColor.amber)), - BatterySignal('/Diagnostics/IoStatus/MainSwitchClosed', return_in_list, read_switch_closed), - BatterySignal('/Diagnostics/IoStatus/AlarmOutActive', return_in_list, read_alarm_out_active), - BatterySignal('/Diagnostics/IoStatus/InternalFanActive', return_in_list, read_bool(base_register=1013, bit=2)), - BatterySignal('/Diagnostics/IoStatus/VoltMeasurementAllowed', return_in_list, read_bool(base_register=1013, bit=3)), - BatterySignal('/Diagnostics/IoStatus/AuxRelay', return_in_list, read_aux_relay), - BatterySignal('/Diagnostics/IoStatus/RemoteState', return_in_list, read_bool(base_register=1013, bit=5)), - BatterySignal('/Diagnostics/IoStatus/RiscOn', return_in_list, read_bool(base_register=1013, bit=6)), + + BatterySignal('/NumberOfWarningFlags', sum, count_bits(base_register=1005, nb_of_registers=4, nb_of_bits=50)), + BatterySignal('/WarningFlags/TaM1', any, read_bool(base_register=1005, bit=1)), + BatterySignal('/WarningFlags/TbM1', any, read_bool(base_register=1005, bit=4)), + BatterySignal('/WarningFlags/VBm1', any, read_bool(base_register=1005, bit=6)), + BatterySignal('/WarningFlags/VBM1', any, read_bool(base_register=1005, bit=8)), + BatterySignal('/WarningFlags/IDM1', any, read_bool(base_register=1005, bit=10)), + BatterySignal('/WarningFlags/vsm1', any, read_bool(base_register=1005, bit=22)), + BatterySignal('/WarningFlags/vsM1', any, read_bool(base_register=1005, bit=24)), + BatterySignal('/WarningFlags/iCM1', any, read_bool(base_register=1005, bit=26)), + BatterySignal('/WarningFlags/iDM1', any, read_bool(base_register=1005, bit=28)), + BatterySignal('/WarningFlags/MID1', any, read_bool(base_register=1005, bit=30)), + BatterySignal('/WarningFlags/BLPW', any, read_bool(base_register=1005, bit=32)), + BatterySignal('/WarningFlags/CCBF', any, read_bool(base_register=1005, bit=33)), + BatterySignal('/WarningFlags/Ah_W', any, read_bool(base_register=1005, bit=35)), + BatterySignal('/WarningFlags/MPMM', any, read_bool(base_register=1005, bit=38)), + BatterySignal('/WarningFlags/TCdi', any, read_bool(base_register=1005, bit=40)), + BatterySignal('/WarningFlags/LMPW', any, read_bool(base_register=1005, bit=44)), + BatterySignal('/WarningFlags/TOCW', any, read_bool(base_register=1005, bit=47)), + BatterySignal('/WarningFlags/BUSL', any, read_bool(base_register=1005, bit=49)), + + BatterySignal('/NumberOfAlarmFlags', sum, count_bits(base_register=1009, nb_of_registers=4, nb_of_bits=50)), + BatterySignal('/AlarmFlags/Tam', any, read_bool(base_register=1005, bit=0)), + BatterySignal('/AlarmFlags/TaM2', any, read_bool(base_register=1005, bit=2)), + BatterySignal('/AlarmFlags/Tbm', any, read_bool(base_register=1005, bit=3)), + BatterySignal('/AlarmFlags/TbM2', any, read_bool(base_register=1005, bit=5)), + BatterySignal('/AlarmFlags/VBm2', any, read_bool(base_register=1005, bit=7)), + BatterySignal('/AlarmFlags/VBM2', any, read_bool(base_register=1005, bit=9)), + BatterySignal('/AlarmFlags/IDM2', any, read_bool(base_register=1005, bit=11)), + BatterySignal('/AlarmFlags/ISOB', any, read_bool(base_register=1005, bit=12)), + BatterySignal('/AlarmFlags/MSWE', any, read_bool(base_register=1005, bit=13)), + BatterySignal('/AlarmFlags/FUSE', any, read_bool(base_register=1005, bit=14)), + BatterySignal('/AlarmFlags/HTRE', any, read_bool(base_register=1005, bit=15)), + BatterySignal('/AlarmFlags/TCPE', any, read_bool(base_register=1005, bit=16)), + BatterySignal('/AlarmFlags/STRE', any, read_bool(base_register=1005, bit=17)), + BatterySignal('/AlarmFlags/CME', any, read_bool(base_register=1005, bit=18)), + BatterySignal('/AlarmFlags/HWFL', any, read_bool(base_register=1005, bit=19)), + BatterySignal('/AlarmFlags/HWEM', any, read_bool(base_register=1005, bit=20)), + BatterySignal('/AlarmFlags/ThM', any, read_bool(base_register=1005, bit=21)), + BatterySignal('/AlarmFlags/vsm2', any, read_bool(base_register=1005, bit=23)), + BatterySignal('/AlarmFlags/vsM2', any, read_bool(base_register=1005, bit=25)), + BatterySignal('/AlarmFlags/iCM2', any, read_bool(base_register=1005, bit=27)), + BatterySignal('/AlarmFlags/iDM2', any, read_bool(base_register=1005, bit=29)), + BatterySignal('/AlarmFlags/MID2', any, read_bool(base_register=1005, bit=31)), + BatterySignal('/AlarmFlags/HTFS', any, read_bool(base_register=1005, bit=42)), + BatterySignal('/AlarmFlags/DATA', any, read_bool(base_register=1005, bit=43)), + BatterySignal('/AlarmFlags/LMPA', any, read_bool(base_register=1005, bit=45)), + BatterySignal('/AlarmFlags/HEBT', any, read_bool(base_register=1005, bit=46)), + BatterySignal('/AlarmFlags/CURM', any, read_bool(base_register=1005, bit=48)), + + BatterySignal('/LedStatus/Red', max, read_led_state(register=1004, led=LedColor.red)), + BatterySignal('/LedStatus/Blue', max, read_led_state(register=1004, led=LedColor.blue)), + BatterySignal('/LedStatus/Green', max, read_led_state(register=1004, led=LedColor.green)), + BatterySignal('/LedStatus/Amber', max, read_led_state(register=1004, led=LedColor.amber)), + + BatterySignal('/IoStatus/MainSwitchClosed', any, read_switch_closed), + BatterySignal('/IoStatus/AlarmOutActive', any, read_alarm_out_active), + BatterySignal('/IoStatus/InternalFanActive', any, read_bool(base_register=1013, bit=2)), + BatterySignal('/IoStatus/VoltMeasurementAllowed', any, read_bool(base_register=1013, bit=3)), + BatterySignal('/IoStatus/AuxRelay', any, read_aux_relay), + BatterySignal('/IoStatus/RemoteState', any, read_bool(base_register=1013, bit=5)), + BatterySignal('/IoStatus/RiscOn', any, read_bool(base_register=1013, bit=6)), BatterySignal('/IoStatus/BatteryCold', any, read_battery_cold), + BatterySignal('/IoStatus/EocReached', any, read_eoc_reached), + + BatterySignal('/Info/MaxDischargeCurrent', sum, max_discharge_current, unit='A'), BatterySignal('/Info/MaxChargeCurrent', sum, max_charge_current, unit='A'), BatterySignal('/Info/MaxChargeVoltage', min, lambda bs: bs.battery.v_max, unit='V'), BatterySignal('/Info/MinDischargeVoltage', max, lambda bs: bs.battery.v_min, unit='V'), BatterySignal('/Info/BatteryLowVoltage', max, lambda bs: bs.battery.v_min - 2, unit='V'), - BatterySignal('/Info/NumberOfStrings', sum, number_of_active_strings), + BatterySignal('/Info/NumberOfStrings', sum, lambda bs: bs.battery.n_strings), + BatterySignal('/Info/MaxChargePower', sum, calc_max_charge_power), BatterySignal('/Info/MaxDischargePower', sum, calc_max_discharge_power), + BatterySignal('/FirmwareVersion', comma_separated, lambda bs: bs.battery.firmware_version), BatterySignal('/HardwareVersion', comma_separated, lambda bs: bs.battery.hardware_version), BatterySignal('/BmsVersion', comma_separated, lambda bs: bs.battery.bms_version)