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.teleinfo.internal.reader.io.serialport;
15 import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
17 import javax.measure.Unit;
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.library.unit.Units;
23 * The {@link Label} enum defines all Teleinfo labels and their format.
25 * @author Nicolas SIBERIL - Initial contribution
31 ADCO(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
32 OPTARIF(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
33 BASE(ValueType.INTEGER, CHANNEL_BASE_FRAME_BASE, Units.WATT_HOUR),
34 HCHC(ValueType.INTEGER, CHANNEL_HC_FRAME_HCHC, Units.WATT_HOUR),
35 HCHP(ValueType.INTEGER, CHANNEL_HC_FRAME_HCHP, Units.WATT_HOUR),
36 EJPHN(ValueType.INTEGER, CHANNEL_EJP_FRAME_EJPHN, Units.WATT_HOUR),
37 EJPHPM(ValueType.INTEGER, CHANNEL_EJP_FRAME_EJPHPM, Units.WATT_HOUR),
38 PTEC(ValueType.STRING, CHANNEL_PTEC, Units.ONE),
39 MOTDETAT(ValueType.STRING, CHANNEL_MOTDETAT, Units.AMPERE),
40 ISOUSC(ValueType.INTEGER, CHANNEL_ISOUSC, Units.AMPERE),
41 IINST(ValueType.INTEGER, CHANNEL_CBEMM_IINST, Units.AMPERE),
42 IINST1(ValueType.INTEGER, CHANNEL_CBETM_IINST1, Units.AMPERE),
43 IINST2(ValueType.INTEGER, CHANNEL_CBETM_IINST2, Units.AMPERE),
44 IINST3(ValueType.INTEGER, CHANNEL_CBETM_IINST3, Units.AMPERE),
45 ADIR1(ValueType.INTEGER, CHANNEL_CBETM_SHORT_ADIR1, Units.AMPERE),
46 ADIR2(ValueType.INTEGER, CHANNEL_CBETM_SHORT_ADIR2, Units.AMPERE),
47 ADIR3(ValueType.INTEGER, CHANNEL_CBETM_SHORT_ADIR3, Units.AMPERE),
48 ADPS(ValueType.INTEGER, CHANNEL_CBEMM_ADPS, Units.AMPERE),
49 IMAX(ValueType.INTEGER, CHANNEL_CBEMM_IMAX, Units.AMPERE),
50 IMAX1(ValueType.INTEGER, CHANNEL_CBETM_LONG_IMAX1, Units.AMPERE),
51 IMAX2(ValueType.INTEGER, CHANNEL_CBETM_LONG_IMAX2, Units.AMPERE),
52 IMAX3(ValueType.INTEGER, CHANNEL_CBETM_LONG_IMAX3, Units.AMPERE),
53 PMAX(ValueType.INTEGER, CHANNEL_CBETM_LONG_PMAX, Units.WATT),
54 HHPHC(ValueType.STRING, CHANNEL_HHPHC, Units.ONE),
55 PPOT(ValueType.STRING, CHANNEL_CBETM_LONG_PPOT, Units.ONE),
56 PAPP(ValueType.INTEGER, CHANNEL_PAPP, Units.VOLT_AMPERE),
57 BBRHCJB(ValueType.INTEGER, CHANNEL_TEMPO_FRAME_BBRHCJB, Units.WATT_HOUR),
58 BBRHPJB(ValueType.INTEGER, CHANNEL_TEMPO_FRAME_BBRHPJB, Units.WATT_HOUR),
59 BBRHCJW(ValueType.INTEGER, CHANNEL_TEMPO_FRAME_BBRHCJW, Units.WATT_HOUR),
60 BBRHPJW(ValueType.INTEGER, CHANNEL_TEMPO_FRAME_BBRHPJW, Units.WATT_HOUR),
61 BBRHCJR(ValueType.INTEGER, CHANNEL_TEMPO_FRAME_BBRHCJR, Units.WATT_HOUR),
62 BBRHPJR(ValueType.INTEGER, CHANNEL_TEMPO_FRAME_BBRHPJR, Units.WATT_HOUR),
63 PEJP(ValueType.INTEGER, CHANNEL_EJP_FRAME_PEJP, Units.MINUTE),
64 DEMAIN(ValueType.STRING, CHANNEL_TEMPO_FRAME_DEMAIN, Units.ONE),
66 // Standard TIC mode labels
67 ADSC(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
68 VTIC(ValueType.INTEGER, NOT_A_CHANNEL, Units.ONE),
69 DATE(ValueType.STRING, NOT_A_CHANNEL, CHANNEL_LSM_DATE, Units.ONE),
70 NGTF(ValueType.STRING, CHANNEL_LSM_NGTF, Units.ONE),
71 LTARF(ValueType.STRING, CHANNEL_LSM_LTARF, Units.ONE),
72 EAST(ValueType.INTEGER, CHANNEL_LSM_EAST, Units.WATT_HOUR),
73 EASF01(ValueType.INTEGER, CHANNEL_LSM_EASF01, Units.WATT_HOUR),
74 EASF02(ValueType.INTEGER, CHANNEL_LSM_EASF02, Units.WATT_HOUR),
75 EASF03(ValueType.INTEGER, CHANNEL_LSM_EASF03, Units.WATT_HOUR),
76 EASF04(ValueType.INTEGER, CHANNEL_LSM_EASF04, Units.WATT_HOUR),
77 EASF05(ValueType.INTEGER, CHANNEL_LSM_EASF05, Units.WATT_HOUR),
78 EASF06(ValueType.INTEGER, CHANNEL_LSM_EASF06, Units.WATT_HOUR),
79 EASF07(ValueType.INTEGER, CHANNEL_LSM_EASF07, Units.WATT_HOUR),
80 EASF08(ValueType.INTEGER, CHANNEL_LSM_EASF08, Units.WATT_HOUR),
81 EASF09(ValueType.INTEGER, CHANNEL_LSM_EASF09, Units.WATT_HOUR),
82 EASF10(ValueType.INTEGER, CHANNEL_LSM_EASF10, Units.WATT_HOUR),
83 EASD01(ValueType.INTEGER, CHANNEL_LSM_EASD01, Units.WATT_HOUR),
84 EASD02(ValueType.INTEGER, CHANNEL_LSM_EASD02, Units.WATT_HOUR),
85 EASD03(ValueType.INTEGER, CHANNEL_LSM_EASD03, Units.WATT_HOUR),
86 EASD04(ValueType.INTEGER, CHANNEL_LSM_EASD04, Units.WATT_HOUR),
87 EAIT(ValueType.INTEGER, CHANNEL_LSM_EAIT, Units.WATT_HOUR),
88 ERQ1(ValueType.INTEGER, CHANNEL_LSM_ERQ1, Units.VOLT_AMPERE_HOUR),
89 ERQ2(ValueType.INTEGER, CHANNEL_LSM_ERQ2, Units.VOLT_AMPERE_HOUR),
90 ERQ3(ValueType.INTEGER, CHANNEL_LSM_ERQ3, Units.VOLT_AMPERE_HOUR),
91 ERQ4(ValueType.INTEGER, CHANNEL_LSM_ERQ4, Units.VOLT_AMPERE_HOUR),
92 IRMS1(ValueType.INTEGER, CHANNEL_LSM_IRMS1, Units.AMPERE),
93 IRMS2(ValueType.INTEGER, CHANNEL_LSM_IRMS2, Units.AMPERE),
94 IRMS3(ValueType.INTEGER, CHANNEL_LSM_IRMS3, Units.AMPERE),
95 URMS1(ValueType.INTEGER, CHANNEL_LSM_URMS1, Units.VOLT),
96 URMS2(ValueType.INTEGER, CHANNEL_LSM_URMS2, Units.VOLT),
97 URMS3(ValueType.INTEGER, CHANNEL_LSM_URMS3, Units.VOLT),
98 PREF(ValueType.INTEGER, CHANNEL_LSM_PREF, Units.VOLT_AMPERE, 1000),
99 PCOUP(ValueType.INTEGER, CHANNEL_LSM_PCOUP, Units.VOLT_AMPERE, 1000),
100 SINSTS(ValueType.INTEGER, CHANNEL_LSM_SINSTS, Units.VOLT_AMPERE),
101 SINSTS1(ValueType.INTEGER, CHANNEL_LSM_SINSTS1, Units.VOLT_AMPERE),
102 SINSTS2(ValueType.INTEGER, CHANNEL_LSM_SINSTS2, Units.VOLT_AMPERE),
103 SINSTS3(ValueType.INTEGER, CHANNEL_LSM_SINSTS3, Units.VOLT_AMPERE),
104 SMAXSN(ValueType.INTEGER, CHANNEL_LSM_SMAXSN, CHANNEL_LSM_SMAXSN_DATE, Units.VOLT_AMPERE),
105 SMAXSN1(ValueType.INTEGER, CHANNEL_LSM_SMAXSN1, CHANNEL_LSM_SMAXSN1_DATE, Units.VOLT_AMPERE),
106 SMAXSN2(ValueType.INTEGER, CHANNEL_LSM_SMAXSN2, CHANNEL_LSM_SMAXSN2_DATE, Units.VOLT_AMPERE),
107 SMAXSN3(ValueType.INTEGER, CHANNEL_LSM_SMAXSN3, CHANNEL_LSM_SMAXSN3_DATE, Units.VOLT_AMPERE),
108 SMAXSN_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_SMAXSN_MINUS_1, CHANNEL_LSM_SMAXSN_MINUS_1_DATE, Units.VOLT_AMPERE),
109 SMAXSN1_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_SMAXSN1_MINUS_1, CHANNEL_LSM_SMAXSN1_MINUS_1_DATE,
111 SMAXSN2_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_SMAXSN2_MINUS_1, CHANNEL_LSM_SMAXSN2_MINUS_1_DATE,
113 SMAXSN3_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_SMAXSN3_MINUS_1, CHANNEL_LSM_SMAXSN3_MINUS_1_DATE,
115 SINSTI(ValueType.INTEGER, CHANNEL_LSM_SINSTI, Units.VOLT_AMPERE),
116 SMAXIN(ValueType.INTEGER, CHANNEL_LSM_SMAXIN, CHANNEL_LSM_SMAXIN_DATE, Units.VOLT_AMPERE),
117 SMAXIN_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_SMAXIN_MINUS_1, CHANNEL_LSM_SMAXIN_MINUS_1_DATE, Units.VOLT_AMPERE),
118 CCASN(ValueType.INTEGER, CHANNEL_LSM_CCASN, CHANNEL_LSM_CCASN_DATE, Units.WATT),
119 CCASN_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_CCASN_MINUS_1, CHANNEL_LSM_CCASN_MINUS_1_DATE, Units.WATT),
120 CCAIN(ValueType.INTEGER, CHANNEL_LSM_CCAIN, CHANNEL_LSM_CCAIN_DATE, Units.WATT),
121 CCAIN_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_CCAIN_MINUS_1, CHANNEL_LSM_CCAIN_MINUS_1_DATE, Units.WATT),
122 UMOY1(ValueType.INTEGER, CHANNEL_LSM_UMOY1, CHANNEL_LSM_UMOY1_DATE, Units.VOLT),
123 UMOY2(ValueType.INTEGER, CHANNEL_LSM_UMOY2, CHANNEL_LSM_UMOY2_DATE, Units.VOLT),
124 UMOY3(ValueType.INTEGER, CHANNEL_LSM_UMOY3, CHANNEL_LSM_UMOY3_DATE, Units.VOLT),
125 STGE(ValueType.STRING, CHANNEL_LSM_STGE, Units.ONE),
126 DPM1(ValueType.STRING, CHANNEL_LSM_DPM1, CHANNEL_LSM_DPM1_DATE, Units.ONE),
127 FPM1(ValueType.STRING, CHANNEL_LSM_FPM1, CHANNEL_LSM_FPM1_DATE, Units.ONE),
128 DPM2(ValueType.STRING, CHANNEL_LSM_DPM2, CHANNEL_LSM_DPM2_DATE, Units.ONE),
129 FPM2(ValueType.STRING, CHANNEL_LSM_FPM2, CHANNEL_LSM_FPM2_DATE, Units.ONE),
130 DPM3(ValueType.STRING, CHANNEL_LSM_DPM3, CHANNEL_LSM_DPM3_DATE, Units.ONE),
131 FPM3(ValueType.STRING, CHANNEL_LSM_FPM3, CHANNEL_LSM_FPM3_DATE, Units.ONE),
132 MSG1(ValueType.STRING, CHANNEL_LSM_MSG1, Units.ONE),
133 MSG2(ValueType.STRING, CHANNEL_LSM_MSG2, Units.ONE),
134 PRM(ValueType.STRING, CHANNEL_LSM_PRM, Units.ONE),
135 RELAIS(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
136 NTARF(ValueType.STRING, CHANNEL_LSM_NTARF, Units.ONE),
137 NJOURF(ValueType.STRING, CHANNEL_LSM_NJOURF, Units.ONE),
138 NJOURF_PLUS_1(ValueType.STRING, CHANNEL_LSM_NJOURF_PLUS_1, Units.ONE),
139 PJOURF_PLUS_1(ValueType.STRING, CHANNEL_LSM_PJOURF_PLUS_1, Units.ONE),
140 PPOINTE(ValueType.STRING, CHANNEL_LSM_PPOINTE, Units.ONE);
142 private final ValueType type;
143 private final String channelName;
144 private final String timestampChannelName;
145 private final Unit<?> unit;
146 private final int factor;
148 Label(ValueType type, String channelName, Unit<?> unit) {
149 this(type, channelName, NOT_A_CHANNEL, unit, 1);
152 Label(ValueType type, String channelName, String timestampChannelName, Unit<?> unit) {
153 this(type, channelName, timestampChannelName, unit, 1);
156 Label(ValueType type, String channelName, Unit<?> unit, int factor) {
157 this(type, channelName, NOT_A_CHANNEL, unit, factor);
160 Label(ValueType type, String channelName, String timestampChannelName, Unit<?> unit, int factor) {
162 this.channelName = channelName;
163 this.timestampChannelName = timestampChannelName;
165 this.factor = factor;
168 public ValueType getType() {
172 public String getChannelName() {
176 public String getTimestampChannelName() {
177 return timestampChannelName;
180 public Unit<?> getUnit() {
184 public int getFactor() {
188 public static Label getEnum(String label) {
189 String modifiedLabel = label.replace("-", "_MINUS_");
190 modifiedLabel = modifiedLabel.replace("+", "_PLUS_");
191 return valueOf(modifiedLabel);