correctly identitfy HMS-1000W-2T

This commit is contained in:
suaveolent 2024-06-04 12:11:46 +02:00
parent 4c528655ee
commit d89abb093b

View File

@ -34,6 +34,7 @@ class InverterPower(Enum):
P_600_700_800 = "600/700/800" P_600_700_800 = "600/700/800"
P_800W = "800W" P_800W = "800W"
P_1000 = "1000" P_1000 = "1000"
P_10000W = "10000W"
P_1000_1200_1500 = "1000/1200/1500" P_1000_1200_1500 = "1000/1200/1500"
P_1200_1500 = "1200/1500" P_1200_1500 = "1200/1500"
P_1600 = "1600" P_1600 = "1600"
@ -54,7 +55,8 @@ power_mapping = {
0x1061: InverterPower.P_1200_1500, 0x1061: InverterPower.P_1200_1500,
0x1161: InverterPower.P_1000_1200_1500, 0x1161: InverterPower.P_1000_1200_1500,
0x1164: InverterPower.P_1600, 0x1164: InverterPower.P_1600,
0x1412: InverterPower.P_800W, 0x141292: InverterPower.P_800W,
0x141293: InverterPower.P_10000W,
} }
@ -115,6 +117,8 @@ type_mapping = {
0x4143: DTUType.DTUBI, 0x4143: DTUType.DTUBI,
} }
HMS_W_SERIES = 0x1412
def format_number(number: int) -> str: def format_number(number: int) -> str:
"""Format number to two digits.""" """Format number to two digits."""
@ -235,6 +239,9 @@ def get_inverter_power(serial_bytes: bytes) -> InverterPower:
inverter_type_bytes = struct.unpack(">H", serial_bytes[:2])[0] inverter_type_bytes = struct.unpack(">H", serial_bytes[:2])[0]
if inverter_type_bytes == HMS_W_SERIES:
inverter_type_bytes = struct.unpack(">I", b"\x00" + serial_bytes[:3])[0]
power = power_mapping.get(inverter_type_bytes) power = power_mapping.get(inverter_type_bytes)
if power is None: if power is None:
@ -248,9 +255,6 @@ def get_inverter_power(serial_bytes: bytes) -> InverterPower:
def get_inverter_model_name(serial_number: str) -> str: def get_inverter_model_name(serial_number: str) -> str:
"""Get hardware model name.""" """Get hardware model name."""
if serial_number == "22069994886948":
serial_number = generate_inverter_serial_number(int(serial_number))
serial_bytes = bytes.fromhex(serial_number) serial_bytes = bytes.fromhex(serial_number)
try: try: