Skip to content

Commit 9568a76

Browse files
authored
Merge pull request #2203 from rosenrot00/fix/growatt-dms-detection
Add support for Growatt MOD 8000TL3-HU (DMS)
2 parents d61c8cc + bd3c437 commit 9568a76

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

custom_components/solax_modbus/plugin_growatt.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9701,6 +9701,8 @@ async def async_determineInverterType(self, hub: Any, configdict: dict[str, Any]
97019701
invertertype = HYBRID | GEN4 | X1 # MOD 4000 TL3-XH Hybrid, 2 MPPT
97029702
elif seriesnumber.startswith("DPS"):
97039703
invertertype = HYBRID | GEN4 | X3 # MOD 5000 TL3-HU Hybrid, 2 MPPT
9704+
elif seriesnumber.startswith("DMS"):
9705+
invertertype = HYBRID | GEN4 | X3 | MPPT3 # MOD 8000 TL3-HU Hybrid, 3 MPPT
97049706
elif seriesnumber.startswith("DKS"):
97059707
invertertype = HYBRID | GEN4 | X3 | MPPT3 # MOD 10000 TL3-HU Hybrid, 3 MPPT
97069708
elif seriesnumber.startswith("DO1"):
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
from typing import Any
2+
3+
import pytest
4+
5+
from custom_components.solax_modbus.plugin_growatt import (
6+
GEN4,
7+
HYBRID,
8+
MPPT3,
9+
X3,
10+
)
11+
from custom_components.solax_modbus.plugin_growatt import (
12+
plugin_instance as growatt_plugin,
13+
)
14+
15+
16+
@pytest.mark.asyncio
17+
async def test_dms_serial_detects_mod_8000_tl3_hu(mock_hub: Any) -> None:
18+
serial_number = "DMS8G1E00M"
19+
serial_registers = [int.from_bytes(serial_number[index : index + 2].encode(), byteorder="big") for index in range(0, len(serial_number), 2)]
20+
firmware = b"DO1.0ZBDC\x00"
21+
firmware_registers = [int.from_bytes(firmware[index : index + 2], byteorder="big") for index in range(0, len(firmware), 2)]
22+
mock_hub.configure_read(
23+
1,
24+
3001,
25+
5,
26+
type(
27+
"MockResponse",
28+
(),
29+
{
30+
"registers": serial_registers,
31+
"isError": lambda self: False,
32+
},
33+
)(),
34+
)
35+
mock_hub.configure_read(
36+
1,
37+
9,
38+
5,
39+
type(
40+
"MockResponse",
41+
(),
42+
{
43+
"registers": firmware_registers,
44+
"isError": lambda self: False,
45+
},
46+
)(),
47+
)
48+
49+
inverter_type = await growatt_plugin.async_determineInverterType(
50+
mock_hub,
51+
{"read_eps": False, "read_dcb": False},
52+
)
53+
54+
assert inverter_type == HYBRID | GEN4 | X3 | MPPT3
55+
assert mock_hub.seriesnumber == serial_number

0 commit comments

Comments
 (0)