diff --git a/README.md b/README.md
index 697ea87..3552aec 100644
--- a/README.md
+++ b/README.md
@@ -179,10 +179,9 @@ A combination with a red question mark should work, but I have not checked it in
| Micro Inverter Model | Fw. 1.00.06 | Fw. 1.00.17 | Fw. 1.00.20 | Fw. 1.1.00.0B |
- GEN3 micro inverters (single MPPT): MS300, MS350, MS400 | ❓ | ❓ | ❓ | ➖ |
- GEN3 micro inverters (dual MPPT): MS600, MS700, MS800 | ✔️ | ✔️ | ✔️ | ➖ |
- GEN3 PLUS micro inverters: MS1600, MS1800, MS2000 | ➖ | ➖ | ➖ | ✔️ |
- Balcony micro inverters: MS400-D, MS800-D, MS2000-D | ❓ | ❓ | ❓ | ❓ |
+ GEN3 micro inverters (single MPPT): MS300, MS350, MS400 MS400-D | ❓ | ❓ | ❓ | ➖ |
+ GEN3 micro inverters (dual MPPT): MS600, MS700, MS800 MS600-D, MS800-D | ✔️ | ✔️ | ✔️ | ➖ |
+ GEN3 PLUS micro inverters: MS1600, MS1800, MS2000 MS2000-D | ➖ | ➖ | ➖ | ✔️ |
TITAN micro inverters: TSOL-MP3000, MP2250, MS3000 | ❓ | ❓ | ❓ | ❓ |
diff --git a/app/src/gen3plus/solarman_v5.py b/app/src/gen3plus/solarman_v5.py
index ac2ce61..5c8e588 100644
--- a/app/src/gen3plus/solarman_v5.py
+++ b/app/src/gen3plus/solarman_v5.py
@@ -58,10 +58,10 @@ class SolarmanV5(Message):
self.switch = {
0x4210: self.msg_data_ind, # real time data
- 0x1210: self.msg_data_rsp, # at least every 5 minutes
+ 0x1210: self.msg_response, # at least every 5 minutes
0x4710: self.msg_hbeat_ind, # heatbeat
- 0x1710: self.msg_hbeat_rsp, # every 2 minutes
+ 0x1710: self.msg_response, # every 2 minutes
# every 3 hours comes a sync seuqence:
# 00:00:00 0x4110 device data ftype: 0x02
@@ -72,18 +72,18 @@ class SolarmanV5(Message):
# 00:00:07 0x4310 wifi data ftype: 0x01 sub-id 0x0018: 0c # noqa: E501
# 00:00:08 0x4810 options? ftype: 0x01
- 0x4110: self.msg_dev_ind, # device data, sync start
- 0x1110: self.msg_dev_rsp, # every 3 hours
+ 0x4110: self.msg_dev_ind, # device data, sync start
+ 0x1110: self.msg_response, # every 3 hours
- 0x4310: self.msg_forward, # regulary after 3-6 hours
- 0x1310: self.msg_forward,
- 0x4810: self.msg_forward, # sync end
- 0x1810: self.msg_forward,
+ 0x4310: self.msg_sync_start, # regulary after 3-6 hours
+ 0x1310: self.msg_response,
+ 0x4810: self.msg_sync_end, # sync end
+ 0x1810: self.msg_response,
#
- # AT cmd
- 0x4510: self.at_command_ind, # from server
- 0x1510: self.msg_forward, # from inverter
+ # MODbus or AT cmd
+ 0x4510: self.msg_command_req, # from server
+ 0x1510: self.msg_response, # from inverter
}
'''
@@ -285,63 +285,23 @@ class SolarmanV5(Message):
self.data_len+2):]
self.header_valid = False
- '''
- Message handler methods
- '''
- def msg_unknown(self):
- logger.warning(f"Unknow Msg: ID:{int(self.control):#04x}")
- self.inc_counter('Unknown_Msg')
- self.msg_forward()
-
- def msg_forward(self):
- self.forward(self._recv_buffer, self.header_len+self.data_len+2)
-
- def msg_dev_ind(self):
- data = self._recv_buffer[self.header_len:]
- result = struct.unpack_from('