]> git.basschouten.com Git - openhab-addons.git/blob
08122c7d637a2b41c8bbf4c4c77ad6b98e0ef0b5
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 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.teleinfo.internal.reader.io.serialport;
14
15 import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
16
17 import javax.measure.Unit;
18
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.openhab.core.library.unit.Units;
21
22 /**
23  * The {@link Label} enum defines all Teleinfo labels and their format.
24  *
25  * @author Nicolas SIBERIL - Initial contribution
26  */
27 @NonNullByDefault
28 public enum Label {
29
30     // Historical labels
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),
65
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,
110             Units.VOLT_AMPERE),
111     SMAXSN2_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_SMAXSN2_MINUS_1, CHANNEL_LSM_SMAXSN2_MINUS_1_DATE,
112             Units.VOLT_AMPERE),
113     SMAXSN3_MINUS_1(ValueType.INTEGER, CHANNEL_LSM_SMAXSN3_MINUS_1, CHANNEL_LSM_SMAXSN3_MINUS_1_DATE,
114             Units.VOLT_AMPERE),
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);
141
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;
147
148     Label(ValueType type, String channelName, Unit<?> unit) {
149         this(type, channelName, NOT_A_CHANNEL, unit, 1);
150     }
151
152     Label(ValueType type, String channelName, String timestampChannelName, Unit<?> unit) {
153         this(type, channelName, timestampChannelName, unit, 1);
154     }
155
156     Label(ValueType type, String channelName, Unit<?> unit, int factor) {
157         this(type, channelName, NOT_A_CHANNEL, unit, factor);
158     }
159
160     Label(ValueType type, String channelName, String timestampChannelName, Unit<?> unit, int factor) {
161         this.type = type;
162         this.channelName = channelName;
163         this.timestampChannelName = timestampChannelName;
164         this.unit = unit;
165         this.factor = factor;
166     }
167
168     public ValueType getType() {
169         return type;
170     }
171
172     public String getChannelName() {
173         return channelName;
174     }
175
176     public String getTimestampChannelName() {
177         return timestampChannelName;
178     }
179
180     public Unit<?> getUnit() {
181         return unit;
182     }
183
184     public int getFactor() {
185         return factor;
186     }
187
188     public static Label getEnum(String label) {
189         String modifiedLabel = label.replace("-", "_MINUS_");
190         modifiedLabel = modifiedLabel.replace("+", "_PLUS_");
191         return valueOf(modifiedLabel);
192     }
193 }