From d89abb093b7b0c2e1a74f74b87a85b3456543fd4 Mon Sep 17 00:00:00 2001 From: suaveolent Date: Tue, 4 Jun 2024 12:11:46 +0200 Subject: [PATCH] correctly identitfy HMS-1000W-2T --- hoymiles_wifi/hoymiles.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hoymiles_wifi/hoymiles.py b/hoymiles_wifi/hoymiles.py index 41fa0d3..14c36a0 100644 --- a/hoymiles_wifi/hoymiles.py +++ b/hoymiles_wifi/hoymiles.py @@ -34,6 +34,7 @@ class InverterPower(Enum): P_600_700_800 = "600/700/800" P_800W = "800W" P_1000 = "1000" + P_10000W = "10000W" P_1000_1200_1500 = "1000/1200/1500" P_1200_1500 = "1200/1500" P_1600 = "1600" @@ -54,7 +55,8 @@ power_mapping = { 0x1061: InverterPower.P_1200_1500, 0x1161: InverterPower.P_1000_1200_1500, 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, } +HMS_W_SERIES = 0x1412 + def format_number(number: int) -> str: """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] + 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) 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: """Get hardware model name.""" - if serial_number == "22069994886948": - serial_number = generate_inverter_serial_number(int(serial_number)) - serial_bytes = bytes.fromhex(serial_number) try: