47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
"""Holds map values for prostarsolar."""
|
|
|
|
def charge_state(inp_state):
|
|
"""Map function for charge state."""
|
|
states = {
|
|
0: "Start",
|
|
1: "Night Check",
|
|
2: "Disconnect",
|
|
3: "Night",
|
|
4: "Fault",
|
|
5: "Bulk",
|
|
6: "Absorption",
|
|
7: "Float",
|
|
8: "Equalize"
|
|
}
|
|
if inp_state in range(0,9):
|
|
return states[inp_state]
|
|
else:
|
|
return inp_state
|
|
|
|
|
|
def array_faults(inp_array_faults):
|
|
"""Form a string for the array_faults."""
|
|
fault_string = ""
|
|
faults = {
|
|
0: "Overcurrent Phase 1",
|
|
1: "FETs Shorted",
|
|
2: "Software Bug",
|
|
3: "Battery HVD (High Voltage Disconnect)",
|
|
4: "Array HVD (High Voltage Disconnect)",
|
|
5: "EEPROM Setting Edit (reset required)",
|
|
6: "RTS Shorted",
|
|
7: "RTS was valid now disconnected",
|
|
8: "Local temp. sensor failed",
|
|
9: "Battery LVD (Low Voltage Disconect)",
|
|
10: "DIP Switch Changed (excl. DIP 8)",
|
|
11: "Processor Supply Fault"
|
|
}
|
|
|
|
bit_string = ("0" * 16 + "{0:b}".format(inp_array_faults))[-16:]
|
|
for i in range(0, 12):
|
|
if int(bit_string[i]) == 1:
|
|
fault_string += faults[i] + ", "
|
|
if fault_string:
|
|
return fault_string[:-2]
|
|
else:
|
|
return "None" |