2 * Copyright (c) 2010-2023 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.fronius.internal;
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16 import org.openhab.core.thing.ThingTypeUID;
19 * The {@link FroniusBindingConstants} class defines common constants, which are
20 * used across the whole binding.
22 * @author Thomas Rokohl - Initial contribution
23 * @author Peter Schraffl - Added device status and error status channels
24 * @author Thomas Kordelle - Added inverter power, battery state of charge and PV solar yield
25 * @author Hannes Spenger - Added ohmpilot and meter power sum
26 * @author Jimmy Tanagra - Implement a common url parsing method
29 public class FroniusBindingConstants {
31 private static final String BINDING_ID = "fronius";
33 // List of all Thing Type UIDs
34 public static final ThingTypeUID THING_TYPE_BRIDGE = new ThingTypeUID(BINDING_ID, "bridge");
35 public static final ThingTypeUID THING_TYPE_INVERTER = new ThingTypeUID(BINDING_ID, "powerinverter");
36 public static final ThingTypeUID THING_TYPE_METER = new ThingTypeUID(BINDING_ID, "meter");
37 public static final ThingTypeUID THING_TYPE_OHMPILOT = new ThingTypeUID(BINDING_ID, "ohmpilot");
40 public static final String INVERTER_DATA_CHANNEL_DAY_ENERGY = "inverterdatachanneldayenergy";
41 public static final String INVERTER_DATA_CHANNEL_PAC = "inverterdatachannelpac";
42 public static final String INVERTER_DATA_CHANNEL_TOTAL = "inverterdatachanneltotal";
43 public static final String INVERTER_DATA_CHANNEL_YEAR = "inverterdatachannelyear";
44 public static final String INVERTER_DATA_CHANNEL_FAC = "inverterdatachannelfac";
45 public static final String INVERTER_DATA_CHANNEL_IAC = "inverterdatachanneliac";
46 public static final String INVERTER_DATA_CHANNEL_IDC = "inverterdatachannelidc";
47 public static final String INVERTER_DATA_CHANNEL_IDC2 = "inverterdatachannelidc2";
48 public static final String INVERTER_DATA_CHANNEL_IDC3 = "inverterdatachannelidc3";
49 public static final String INVERTER_DATA_CHANNEL_UAC = "inverterdatachanneluac";
50 public static final String INVERTER_DATA_CHANNEL_UDC = "inverterdatachanneludc";
51 public static final String INVERTER_DATA_CHANNEL_UDC2 = "inverterdatachanneludc2";
52 public static final String INVERTER_DATA_CHANNEL_UDC3 = "inverterdatachanneludc3";
53 public static final String INVERTER_DATA_CHANNEL_PDC = "inverterdatachannelpdc";
54 public static final String INVERTER_DATA_CHANNEL_PDC2 = "inverterdatachannelpdc2";
55 public static final String INVERTER_DATA_CHANNEL_PDC3 = "inverterdatachannelpdc3";
56 public static final String INVERTER_DATA_CHANNEL_DEVICE_STATUS_ERROR_CODE = "inverterdatadevicestatuserrorcode";
57 public static final String INVERTER_DATA_CHANNEL_DEVICE_STATUS_STATUS_CODE = "inverterdatadevicestatusstatuscode";
59 // Power Flow channels
60 public static final String POWER_FLOW_P_GRID = "powerflowchannelpgrid";
61 public static final String POWER_FLOW_P_LOAD = "powerflowchannelpload";
62 public static final String POWER_FLOW_P_AKKU = "powerflowchannelpakku";
63 public static final String POWER_FLOW_P_PV = "powerflowchannelppv";
64 public static final String POWER_FLOW_AUTONOMY = "powerflowautonomy";
65 public static final String POWER_FLOW_SELF_CONSUMPTION = "powerflowselfconsumption";
67 public static final String POWER_FLOW_INVERTER_1_POWER = "powerflowinverter1power";
68 public static final String POWER_FLOW_INVERTER_1_SOC = "powerflowinverter1soc";
71 public static final String METER_ENABLE = "enable";
72 public static final String METER_LOCATION = "location";
73 public static final String METER_CURRENT_AC_PHASE_1 = "currentacphase1";
74 public static final String METER_CURRENT_AC_PHASE_2 = "currentacphase2";
75 public static final String METER_CURRENT_AC_PHASE_3 = "currentacphase3";
76 public static final String METER_VOLTAGE_AC_PHASE_1 = "voltageacphase1";
77 public static final String METER_VOLTAGE_AC_PHASE_2 = "voltageacphase2";
78 public static final String METER_VOLTAGE_AC_PHASE_3 = "voltageacphase3";
79 public static final String METER_POWER_PHASE_1 = "powerrealphase1";
80 public static final String METER_POWER_PHASE_2 = "powerrealphase2";
81 public static final String METER_POWER_PHASE_3 = "powerrealphase3";
82 public static final String METER_POWER_SUM = "powerrealsum";
83 public static final String METER_POWER_FACTOR_PHASE_1 = "powerfactorphase1";
84 public static final String METER_POWER_FACTOR_PHASE_2 = "powerfactorphase2";
85 public static final String METER_POWER_FACTOR_PHASE_3 = "powerfactorphase3";
86 public static final String METER_ENERGY_REAL_SUM_CONSUMED = "energyrealsumconsumed";
87 public static final String METER_ENERGY_REAL_SUM_PRODUCED = "energyrealsumproduced";
90 public static final String OHMPILOT_POWER_REAL_SUM = "powerrealsum";
91 public static final String OHMPILOT_ENERGY_REAL_SUM_CONSUMED = "energyrealsumconsumed";
92 public static final String OHMPILOT_ENERGY_SENSOR_TEMPERATURE_CHANNEL_1 = "temperaturechannel1";
93 public static final String OHMPILOT_ERROR_CODE = "errorcode";
94 public static final String OHMPILOT_STATE_CODE = "statecode";
97 public static final String INVERTER_REALTIME_DATA_URL = "http://%IP%/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=%DEVICEID%&DataCollection=CommonInverterData";
98 public static final String POWERFLOW_REALTIME_DATA_URL = "http://%IP%/solar_api/v1/GetPowerFlowRealtimeData.fcgi";
99 public static final String METER_REALTIME_DATA_URL = "http://%IP%/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=%DEVICEID%&DataCollection=MeterRealtimeData";
100 public static final String OHMPILOT_REALTIME_DATA_URL = "http://%IP%/solar_api/v1/GetOhmPilotRealtimeData.cgi?Scope=Device&DeviceId=%DEVICEID%";
102 public static String getInverterDataUrl(String ip, int deviceId) {
103 return parseUrl(INVERTER_REALTIME_DATA_URL, ip, deviceId);
106 public static String getPowerFlowDataUrl(String ip) {
107 return parseUrl(POWERFLOW_REALTIME_DATA_URL, ip);
110 public static String getMeterDataUrl(String ip, int deviceId) {
111 return parseUrl(METER_REALTIME_DATA_URL, ip, deviceId);
114 public static String getOhmPilotDataUrl(String ip, int deviceId) {
115 return parseUrl(OHMPILOT_REALTIME_DATA_URL, ip, deviceId);
118 public static String parseUrl(String url, String ip) {
119 return url.replace("%IP%", ip == null ? "" : ip.trim());
122 public static String parseUrl(String url, String ip, int deviceId) {
123 return parseUrl(url, ip).replace("%DEVICEID%", Integer.toString(deviceId));