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