From 9026dfa4bcc6c68cda5c68d47cf74b789199af6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Jonas=20S=C3=A4mann?= Date: Thu, 5 May 2022 19:42:58 +0200 Subject: [PATCH] Prepare decoder template for HM-1500 --- tools/rpi/hoymiles/__init__.py | 3 +- tools/rpi/hoymiles/decoders/__init__.py | 53 +++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) 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