diff --git a/tools/rpi/hoymiles/__init__.py b/tools/rpi/hoymiles/__init__.py index 37d0cb3b..d1b0ae13 100644 --- a/tools/rpi/hoymiles/__init__.py +++ b/tools/rpi/hoymiles/__init__.py @@ -76,7 +76,8 @@ class ResponseDecoderFactory: ('HM350', r'^112172......'), ('HM600', r'^114172......'), ('HM700', r'^114174......'), - ('HM1200', r'^116170......') + ('HM1200', r'^116170......'), + ('HM1500', r'^116171......') ] ser_str = str(self.inverter_ser) diff --git a/tools/rpi/hoymiles/decoders/__init__.py b/tools/rpi/hoymiles/decoders/__init__.py index bf6d90db..f6ab4010 100644 --- a/tools/rpi/hoymiles/decoders/__init__.py +++ b/tools/rpi/hoymiles/decoders/__init__.py @@ -141,3 +141,56 @@ class HM600_Decode0C(HM600_Decode0B): def __init__(self, response): self.response = response + +# HM-1500 +class HM1500_Decode0B(StatusResponse): + def __init__(self, response): + self.response = response + + @property + def dc_voltage_0(self): + return self.unpack('>H', 2)[0]/10 + @property + def dc_current_0(self): + return self.unpack('>H', 4)[0]/100 + @property + def dc_power_0(self): + return self.unpack('>H', 6)[0]/10 + @property + def dc_energy_total_0(self): + return self.unpack('>L', 14)[0] + @property + def dc_energy_daily_0(self): + return self.unpack('>H', 22)[0] + + @property + def dc_voltage_1(self): + return self.unpack('>H', 8)[0]/10 + @property + def dc_current_1(self): + return self.unpack('>H', 10)[0]/100 + @property + def dc_power_1(self): + return self.unpack('>H', 12)[0]/10 + @property + def dc_energy_total_1(self): + return self.unpack('>L', 18)[0] + @property + def dc_energy_daily_1(self): + return self.unpack('>H', 24)[0] + + @property + def ac_voltage_0(self): + return self.unpack('>H', 26)[0]/10 + @property + def ac_current_0(self): + return self.unpack('>H', 34)[0]/10 + @property + def ac_power_0(self): + return self.unpack('>H', 30)[0]/10 + @property + def frequency(self): + return self.unpack('>H', 28)[0]/100 + @property + def temperature(self): + return self.unpack('>H', 38)[0]/10