diff --git a/solax/inverters/x1_hybrid_gen4.py b/solax/inverters/x1_hybrid_gen4.py index e3bc291..0be6c31 100644 --- a/solax/inverters/x1_hybrid_gen4.py +++ b/solax/inverters/x1_hybrid_gen4.py @@ -4,7 +4,7 @@ from solax.inverter import Inverter from solax.units import DailyTotal, Total, Units -from solax.utils import div10, div100, pack_u16, to_signed +from solax.utils import div10, div100, pack_u16, to_signed, twoway_div100 class X1HybridGen4(Inverter): @@ -48,12 +48,14 @@ def response_decoder(cls): "On-grid total yield": (pack_u16(11, 12), Total(Units.KWH), div10), "On-grid daily yield": (13, DailyTotal(Units.KWH), div10), "Battery voltage": (14, Units.V, div100), - "Battery current": (15, Units.A, div100), + "Battery current": (15, Units.A, twoway_div100), "Battery power": (16, Units.W, to_signed), "Battery temperature": (17, Units.C), "Battery SoC": (18, Units.PERCENT), "Inverter Temperature": (26, Units.C), "Grid power": (32, Units.W, to_signed), + "Load power": (38, Units.W, to_signed), + "Inverter Run Mode": (10, Units.NONE), "Total feed-in energy": (pack_u16(34, 35), Total(Units.KWH), div100), "Total consumption": (pack_u16(36, 37), Total(Units.KWH), div100), } diff --git a/tests/fixtures.py b/tests/fixtures.py index 62ac18c..47805ef 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -12,6 +12,7 @@ X1_BOOST_VALUES_V3, X1_HYBRID_G4_V_3_018_VALUES, X1_HYBRID_G4_VALUES, + X1_HYBRID_GEN4_V_3_019_VALUES, X1_MINI_G4_VALUES, X1_MINI_VALUES, X1_MINI_VALUES_V34, @@ -43,6 +44,7 @@ X1_HYBRID_G3_RESPONSE, X1_HYBRID_G4_RESPONSE, X1_HYBRID_G4_V_3_018_RESPONSE, + X1_HYBRID_GEN4_V_3_019_RESPONSE, X1_MINI_G4, X1_MINI_RESPONSE_V34, X1_MINI_RESPONSE_V34_VER3, @@ -371,6 +373,16 @@ def simple_http_fixture(httpserver): headers=None, data="optType=ReadRealTimeData", ), + InverterUnderTest( + uri="/", + method="POST", + query_string=None, + response=X1_HYBRID_GEN4_V_3_019_RESPONSE, + inverter=inverter.X1HybridGen4, + values=X1_HYBRID_GEN4_V_3_019_VALUES, + headers=None, + data="optType=ReadRealTimeData", + ), ] diff --git a/tests/samples/expected_values.py b/tests/samples/expected_values.py index e716de1..1250281 100644 --- a/tests/samples/expected_values.py +++ b/tests/samples/expected_values.py @@ -718,6 +718,8 @@ "Grid power": 1.0, "Total feed-in energy": 286.7, "Total consumption": 6.2, + "Load power": 236.0, + "Inverter Run Mode": 2.0, } X3_ULTRA_VALUES = { @@ -805,4 +807,32 @@ "Grid power": 0.0, "Total feed-in energy": 41.20, "Total consumption": 13.2, + "Load power": 384.0, + "Inverter Run Mode": 2.0, +} + +X1_HYBRID_GEN4_V_3_019_VALUES = { + "AC voltage R": 244.9, + "AC current": 1.7, + "AC power": 380.0, + "Grid frequency": 50.02, + "PV1 voltage": 272.5, + "PV2 voltage": 0.0, + "PV1 current": 0.4, + "PV2 current": 0.0, + "PV1 power": 134.0, + "PV2 power": 0.0, + "On-grid total yield": 10349.4, + "On-grid daily yield": 16.5, + "Battery voltage": 114.9, + "Battery current": -2.1, + "Battery power": -252.0, + "Battery temperature": 31.0, + "Battery SoC": 60.0, + "Inverter Temperature": 46.0, + "Grid power": 0.0, + "Load power": 380.0, + "Total feed-in energy": 3405.5, + "Total consumption": 11682.12, + "Inverter Run Mode": 2.0, } diff --git a/tests/samples/responses.py b/tests/samples/responses.py index 84fcf64..3d34a24 100644 --- a/tests/samples/responses.py +++ b/tests/samples/responses.py @@ -4947,3 +4947,313 @@ ], "Information": [3.680, 15, "H43XXXXXXXXXXX", 8, 1.47, 0.00, 1.43, 1.04, 0.00, 1], } + + +X1_HYBRID_GEN4_V_3_019_RESPONSE = { + "sn": "SRXXXXXXXX", + "ver": "3.019.01", + "type": 15, + "Data": [ + 2449, + 17, + 380, + 5002, + 2725, + 0, + 4, + 0, + 134, + 0, + 2, + 37958, + 1, + 165, + 11490, + 65326, + 65284, + 31, + 60, + 61612, + 0, + 3391, + 1, + 34, + 100, + 0, + 46, + 3798, + 0, + 0, + 0, + 0, + 0, + 0, + 12870, + 5, + 54100, + 17, + 380, + 48, + 256, + 1314, + 900, + 350, + 350, + 336, + 290, + 33, + 33, + 1138, + 1, + 1, + 48403, + 0, + 7044, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 820, + 0, + 1606, + 0, + 0, + 0, + 0, + 106, + 117, + 141, + 0, + 0, + 290, + 0, + 980, + 0, + 0, + 0, + 0, + 0, + 0, + 14084, + 1554, + 6665, + 603, + 259, + 9766, + 0, + 0, + 0, + 0, + 0, + 1, + 1182, + 65514, + 65276, + 3288, + 3283, + 57570, + 207, + 21302, + 14389, + 19013, + 12596, + 16689, + 12360, + 14387, + 21302, + 14389, + 19013, + 12596, + 16689, + 12360, + 14387, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1282, + 2561, + 1282, + 1025, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 161, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 96, + 0, + 0, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ], + "Information": [3.0, 15, "HXXXXXXXXXXXXX", 8, 1.5, 0.0, 1.46, 1.04, 0.0, 1], +}