2 * Copyright (c) 2010-2024 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.solax.internal;
15 import static org.junit.jupiter.api.Assertions.*;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.binding.solax.internal.connectivity.rawdata.LocalConnectRawDataBean;
20 import org.openhab.binding.solax.internal.model.InverterData;
21 import org.openhab.binding.solax.internal.model.InverterType;
22 import org.openhab.binding.solax.internal.model.parsers.RawDataParser;
25 * The {@link TestX3HybridG4Parser} simple test that tests for proper parsing against a real data from the inverter
27 * @author Konstantin Polihronov - Initial contribution
30 public class TestX3MicOrProG2Parser {
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,
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
45 Information:[8.000,16,XY,8,1.15,0.00,1.11,1.01,0.00,1]
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");
56 RawDataParser parser = inverterType.getParser();
57 assertNotNull(parser);
59 InverterData data = parser.getData(bean);
60 assertEquals("XYZ", data.getWifiSerial());
61 assertEquals("3.003.02", data.getWifiVersion());
63 assertEquals(251.5, data.getVoltagePhase1()); // [0]
64 assertEquals(244.9, data.getVoltagePhase2()); // [1]
65 assertEquals(248.4, data.getVoltagePhase3()); // [2]
67 assertEquals(0.5, data.getCurrentPhase1()); // [3]
68 assertEquals(0.5, data.getCurrentPhase2()); // [4]
69 assertEquals(0.9, data.getCurrentPhase3()); // [5]
71 assertEquals(54, data.getOutputPowerPhase1()); // [6]
72 assertEquals(44, data.getOutputPowerPhase2()); // [7]
73 assertEquals(20, data.getOutputPowerPhase3()); // [8]
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]
82 assertEquals(49.99, data.getFrequencyPhase1()); // [18]
83 assertEquals(49.99, data.getFrequencyPhase2()); // [19]
84 assertEquals(49.99, data.getFrequencyPhase3()); // [20]
86 assertEquals(2, data.getInverterWorkModeCode()); // [21]
87 assertEquals("2", data.getInverterWorkMode()); // [21]
89 assertEquals(5, data.getInverterTemperature1()); // [26]
90 assertEquals(9, data.getInverterTemperature2()); // [27]
92 assertEquals(120, data.getTotalOutputPower()); // [78]
94 assertEquals(1903.5, data.getTotalEnergy()); // [22]
95 assertEquals(5.0, data.getTodayEnergy()); // [24]