]> git.basschouten.com Git - openhab-addons.git/blob
a30172c98186e095d7bb5dfb13a370a2333b72ed
[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.assertEquals;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.openhab.binding.solax.internal.model.InverterType;
19 import org.openhab.binding.solax.internal.model.local.LocalInverterData;
20
21 /**
22  * The {@link TestX3HybridG4Parser} simple test that tests for proper parsing against a real data from the inverter
23  *
24  * @author Konstantin Polihronov - Initial contribution
25  */
26 @NonNullByDefault
27 public class TestX3HybridG4Parser extends AbstractParserTest {
28
29     private static final String RAW_DATA = """
30             {
31                 sn:XYZ,
32                 ver:3.005.01,
33                 type:14,Data:[
34                     2316,2329,2315,18,18,18,372,363,365,1100,
35                     12,23,34,45,56,67,4996,4996,4996,2,
36                     0,0,0,0,0,0,0,0,0,0,
37                     0,0,0,1,65494,65535,0,0,0,31330,
38                     320,1034,3078,1,44,1100,256,1294,0,0,
39                     7445,5895,100,0,38,0,0,0,0,0,
40                     0,0,0,0,0,0,0,0,505,0,
41                     396,0,0,0,102,0,142,0,62,110,
42                     570,0,463,0,0,0,1925,0,369,0,
43                     506,1925,304,309,0,0,0,0,0,0,
44                     0,0,0,45,1,59,1,34,54,256,
45                     3504,2400,300,300,295,276,33,33,2,1620,779,15163,15163,14906,0,0,0,3270,3264,45581,0,20564,12339,18753,12353,18742,12356,13625,20564,12339,18754,12866,18743,14151,13104,20564,12339,18754,12866,18743,14151,12592,20564,12339,18754,12865,18738,12871,13620,0,0,0,0,0,0,0,1025,8195,769,259,0,31460,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,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],
46                 Information:[12.000,14,XY,8,1.23,0.00,1.24,1.09,0.00,1]
47              }
48             """;
49
50     @Override
51     protected InverterType getInverterType() {
52         return InverterType.X3_HYBRID_G4;
53     }
54
55     @Override
56     protected void assertParserSpecific(LocalInverterData data) {
57         assertEquals("XYZ", data.getWifiSerial());
58         assertEquals("3.005.01", data.getWifiVersion());
59
60         assertEquals(231.6, data.getVoltagePhase1()); // [0]
61         assertEquals(232.9, data.getVoltagePhase2()); // [1]
62         assertEquals(231.5, data.getVoltagePhase3()); // [2]
63
64         assertEquals(1.8, data.getCurrentPhase1()); // [3]
65         assertEquals(1.8, data.getCurrentPhase2()); // [4]
66         assertEquals(1.8, data.getCurrentPhase3()); // [5]
67
68         assertEquals(372, data.getOutputPowerPhase1()); // [6]
69         assertEquals(363, data.getOutputPowerPhase2()); // [7]
70         assertEquals(365, data.getOutputPowerPhase3()); // [8]
71
72         assertEquals(1100, data.getTotalOutputPower()); // [9]
73
74         assertEquals(1.2, data.getPV1Voltage()); // [10]
75         assertEquals(2.3, data.getPV2Voltage()); // [11]
76         assertEquals(3.4, data.getPV1Current()); // [12]
77         assertEquals(4.5, data.getPV2Current()); // [13]
78         assertEquals(56, data.getPV1Power()); // [14]
79         assertEquals(67, data.getPV2Power()); // [15]
80
81         assertEquals(49.96, data.getFrequencyPhase1()); // [16]
82         assertEquals(49.96, data.getFrequencyPhase2()); // [17]
83         assertEquals(49.96, data.getFrequencyPhase3()); // [18]
84
85         assertEquals(2, data.getInverterWorkModeCode()); // [19]
86         assertEquals("2", data.getInverterWorkMode()); // [19]
87
88         assertEquals(-41, data.getFeedInPower()); // [34] - [35]
89
90         assertEquals(313.3, data.getBatteryVoltage()); // [39]
91         assertEquals(3.2, data.getBatteryCurrent()); // [40]
92         assertEquals(1034, data.getBatteryPower()); // [41]
93         assertEquals(45, data.getBatteryLevel()); // [103]
94         assertEquals(59, data.getBatteryTemperature()); // [105]
95
96         // Totals
97         assertEquals(1294, data.getPowerUsage()); // [47]
98         assertEquals(50.5, data.getTotalEnergy()); // [68]
99         assertEquals(102, data.getTotalBatteryDischargeEnergy()); // [74]
100         assertEquals(142, data.getTotalBatteryChargeEnergy()); // [76]
101         assertEquals(57, data.getTotalPVEnergy()); // [80]
102         assertEquals(1925, data.getTotalFeedInEnergy()); // [86]
103         assertEquals(36.9, data.getTotalConsumption()); // [88]
104         assertEquals(46.3, data.getTodayEnergy()); // [82] / 10
105         assertEquals(5.06, data.getTodayFeedInEnergy()); // [90] / 100
106         assertEquals(3.04, data.getTodayConsumption()); // [92] / 100
107         assertEquals(6.2, data.getTodayBatteryDischargeEnergy()); // [78] / 100
108         assertEquals(11, data.getTodayBatteryChargeEnergy()); // [79] / 100
109     }
110
111     @Override
112     protected String getRawData() {
113         return RAW_DATA;
114     }
115 }