]> git.basschouten.com Git - openhab-addons.git/blob
29846be0de34eb55fca536d7a44626bda833d435
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2024 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.solax.internal.local;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.binding.solax.internal.connectivity.rawdata.local.LocalConnectRawDataBean;
20 import org.openhab.binding.solax.internal.model.InverterType;
21 import org.openhab.binding.solax.internal.model.local.LocalInverterData;
22 import org.openhab.binding.solax.internal.model.local.parsers.RawDataParser;
23
24 /**
25  * The {@link TestX3HybridG4Parser} simple test that tests for proper parsing against a real data from the inverter
26  *
27  * @author Konstantin Polihronov - Initial contribution
28  */
29 @NonNullByDefault
30 public class TestX3MicOrProG2Parser {
31
32     String rawData = """
33             {
34                 sn:XYZ,
35                 ver:3.003.02,
36                 type:16,Data:[
37                     2515,2449,2484,5,5,9,54,44,20,4080,4340,
38                     0,1,2,0,67,102,0,4999,4999,4999,2,19035,
39                     0,50,8000,5,9,
40                     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
41                     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
42                     0,0,0,0,0,0,0,0,120,40,1,6,5,0,6772,0,0,0,
43                     0,0,0,0,0,0,0,0,0,0,0,0
44                     ],
45                 Information:[8.000,16,XY,8,1.15,0.00,1.11,1.01,0.00,1]
46              }
47             """;
48
49     @Test
50     public void testParser() {
51         LocalConnectRawDataBean bean = LocalConnectRawDataBean.fromJson(rawData);
52         int type = bean.getType();
53         InverterType inverterType = InverterType.fromIndex(type);
54         assertEquals(InverterType.X3_MIC_OR_PRO_G2, inverterType, "Inverter type not recognized properly");
55
56         RawDataParser parser = inverterType.getParser();
57         assertNotNull(parser);
58
59         LocalInverterData data = parser.getData(bean);
60         assertEquals("XYZ", data.getWifiSerial());
61         assertEquals("3.003.02", data.getWifiVersion());
62
63         assertEquals(251.5, data.getVoltagePhase1()); // [0]
64         assertEquals(244.9, data.getVoltagePhase2()); // [1]
65         assertEquals(248.4, data.getVoltagePhase3()); // [2]
66
67         assertEquals(0.5, data.getCurrentPhase1()); // [3]
68         assertEquals(0.5, data.getCurrentPhase2()); // [4]
69         assertEquals(0.9, data.getCurrentPhase3()); // [5]
70
71         assertEquals(54, data.getOutputPowerPhase1()); // [6]
72         assertEquals(44, data.getOutputPowerPhase2()); // [7]
73         assertEquals(20, data.getOutputPowerPhase3()); // [8]
74
75         assertEquals(408, data.getPV1Voltage()); // [9]
76         assertEquals(434, data.getPV2Voltage()); // [10]
77         assertEquals(0.1, data.getPV1Current()); // [12]
78         assertEquals(0.2, data.getPV2Current()); // [13]
79         assertEquals(67, data.getPV1Power()); // [15]
80         assertEquals(102, data.getPV2Power()); // [16]
81
82         assertEquals(49.99, data.getFrequencyPhase1()); // [18]
83         assertEquals(49.99, data.getFrequencyPhase2()); // [19]
84         assertEquals(49.99, data.getFrequencyPhase3()); // [20]
85
86         assertEquals(2, data.getInverterWorkModeCode()); // [21]
87         assertEquals("2", data.getInverterWorkMode()); // [21]
88
89         assertEquals(5, data.getInverterTemperature1()); // [26]
90         assertEquals(9, data.getInverterTemperature2()); // [27]
91
92         assertEquals(120, data.getTotalOutputPower()); // [78]
93
94         assertEquals(1903.5, data.getTotalEnergy()); // [22]
95         assertEquals(5.0, data.getTodayEnergy()); // [24]
96     }
97 }