]> git.basschouten.com Git - openhab-addons.git/blob
4ae4bf2240bcac6ae1601c88a1f8cde39467991b
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2021 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.enocean.internal;
14
15 import java.util.Map;
16 import java.util.Set;
17
18 import javax.measure.quantity.Angle;
19 import javax.measure.quantity.Dimensionless;
20 import javax.measure.quantity.ElectricPotential;
21 import javax.measure.quantity.Energy;
22 import javax.measure.quantity.Illuminance;
23 import javax.measure.quantity.Power;
24 import javax.measure.quantity.Speed;
25 import javax.measure.quantity.Temperature;
26 import javax.measure.quantity.Time;
27 import javax.measure.quantity.Volume;
28
29 import org.eclipse.jdt.annotation.NonNullByDefault;
30 import org.openhab.core.items.ItemUtil;
31 import org.openhab.core.library.CoreItemFactory;
32 import org.openhab.core.library.dimension.VolumetricFlowRate;
33 import org.openhab.core.thing.DefaultSystemChannelTypeProvider;
34 import org.openhab.core.thing.ThingTypeUID;
35 import org.openhab.core.thing.type.ChannelTypeUID;
36
37 /**
38  * The {@link EnOceanBinding} class defines common constants, which are
39  * used across the whole binding.
40  *
41  * @author Daniel Weber - Initial contribution
42  */
43 @NonNullByDefault
44 public class EnOceanBindingConstants {
45
46     public static final String BINDING_ID = "enocean";
47
48     // bridge
49     public static final ThingTypeUID THING_TYPE_BRIDGE = new ThingTypeUID(BINDING_ID, "bridge");
50
51     // List of all Thing Type UIDs
52     public static final ThingTypeUID THING_TYPE_PUSHBUTTON = new ThingTypeUID(BINDING_ID, "pushButton");
53     public static final ThingTypeUID THING_TYPE_ROCKERSWITCH = new ThingTypeUID(BINDING_ID, "rockerSwitch");
54     public static final ThingTypeUID THING_TYPE_CLASSICDEVICE = new ThingTypeUID(BINDING_ID, "classicDevice");
55
56     public static final ThingTypeUID THING_TYPE_CENTRALCOMMAND = new ThingTypeUID(BINDING_ID, "centralCommand");
57     public static final ThingTypeUID THING_TYPE_ROOMOPERATINGPANEL = new ThingTypeUID(BINDING_ID, "roomOperatingPanel");
58     public static final ThingTypeUID THING_TYPE_MECHANICALHANDLE = new ThingTypeUID(BINDING_ID, "mechanicalHandle");
59     public static final ThingTypeUID THING_TYPE_CONTACT = new ThingTypeUID(BINDING_ID, "contact");
60     public static final ThingTypeUID THING_TYPE_MEASUREMENTSWITCH = new ThingTypeUID(BINDING_ID, "measurementSwitch");
61     public static final ThingTypeUID THING_TYPE_TEMPERATURESENSOR = new ThingTypeUID(BINDING_ID, "temperatureSensor");
62     public static final ThingTypeUID THING_TYPE_TEMPERATUREHUMIDITYSENSOR = new ThingTypeUID(BINDING_ID,
63             "temperatureHumiditySensor");
64     public static final ThingTypeUID THING_TYPE_AUTOMATEDMETERSENSOR = new ThingTypeUID(BINDING_ID,
65             "automatedMeterSensor");
66     public static final ThingTypeUID THING_TYPE_THERMOSTAT = new ThingTypeUID(BINDING_ID, "thermostat");
67     public static final ThingTypeUID THING_TYPE_OCCUPANCYSENSOR = new ThingTypeUID(BINDING_ID, "occupancySensor");
68     public static final ThingTypeUID THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR = new ThingTypeUID(BINDING_ID,
69             "lightTemperatureOccupancySensor");
70     public static final ThingTypeUID THING_TYPE_LIGHTSENSOR = new ThingTypeUID(BINDING_ID, "lightSensor");
71     public static final ThingTypeUID THING_TYPE_ENVIRONMENTALSENSOR = new ThingTypeUID(BINDING_ID,
72             "environmentalSensor");
73     public static final ThingTypeUID THING_TYPE_GENERICTHING = new ThingTypeUID(BINDING_ID, "genericThing");
74     public static final ThingTypeUID THING_TYPE_ROLLERSHUTTER = new ThingTypeUID(BINDING_ID, "rollershutter");
75     public static final ThingTypeUID THING_TYPE_MULTFUNCTIONSMOKEDETECTOR = new ThingTypeUID(BINDING_ID,
76             "multiFunctionSmokeDetector");
77
78     public static final ThingTypeUID THING_TYPE_HEATRECOVERYVENTILATION = new ThingTypeUID(BINDING_ID,
79             "heatRecoveryVentilation");
80
81     public static final Set<ThingTypeUID> SUPPORTED_DEVICE_THING_TYPES_UIDS = Set.of(THING_TYPE_PUSHBUTTON,
82             THING_TYPE_ROCKERSWITCH, THING_TYPE_CLASSICDEVICE, THING_TYPE_CENTRALCOMMAND, THING_TYPE_ROOMOPERATINGPANEL,
83             THING_TYPE_MECHANICALHANDLE, THING_TYPE_CONTACT, THING_TYPE_MEASUREMENTSWITCH, THING_TYPE_TEMPERATURESENSOR,
84             THING_TYPE_TEMPERATUREHUMIDITYSENSOR, THING_TYPE_GENERICTHING, THING_TYPE_ROLLERSHUTTER,
85             THING_TYPE_OCCUPANCYSENSOR, THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR, THING_TYPE_LIGHTSENSOR,
86             THING_TYPE_ENVIRONMENTALSENSOR, THING_TYPE_AUTOMATEDMETERSENSOR, THING_TYPE_THERMOSTAT,
87             THING_TYPE_MULTFUNCTIONSMOKEDETECTOR, THING_TYPE_HEATRECOVERYVENTILATION);
88
89     // List of all Channel Type Ids, these type ids are also used as channel ids during dynamic creation of channels
90     // this makes it a lot easier as we do not have to manage a type id and an id, drawback long channel names
91     public static final String CHANNEL_REPEATERMODE = "repeaterMode";
92     public static final String CHANNEL_SETBASEID = "setBaseId";
93     public static final String CHANNEL_GENERAL_SWITCHING = "generalSwitch";
94
95     public static final String CHANNEL_GENERAL_SWITCHINGA = "generalSwitchA"; // used for D2-01-12 EEP
96     public static final String CHANNEL_GENERAL_SWITCHINGB = "generalSwitchB"; // used for D2-01-12 EEP
97
98     public static final String CHANNEL_DIMMER = "dimmer";
99     public static final String CHANNEL_ROLLERSHUTTER = "rollershutter";
100     public static final String CHANNEL_ANGLE = "angle";
101     public static final String CHANNEL_TEMPERATURE = "temperature";
102     public static final String CHANNEL_HUMIDITY = "humidity";
103     public static final String CHANNEL_SETPOINT = "setPoint";
104     public static final String CHANNEL_FANSPEEDSTAGE = "fanSpeedStage";
105     public static final String CHANNEL_OCCUPANCY = "occupancy";
106     public static final String CHANNEL_MOTIONDETECTION = "motionDetection";
107     public static final String CHANNEL_VIBRATION = "vibration";
108     public static final String CHANNEL_ILLUMINATION = "illumination";
109     public static final String CHANNEL_ILLUMINATIONWEST = "illuminationWest";
110     public static final String CHANNEL_ILLUMINATIONSOUTHNORTH = "illuminationSouthNorth";
111     public static final String CHANNEL_ILLUMINATIONEAST = "illuminationEast";
112     public static final String CHANNEL_WINDSPEED = "windspeed";
113     public static final String CHANNEL_RAINSTATUS = "rainStatus";
114     public static final String CHANNEL_COUNTER = "counter";
115     public static final String CHANNEL_CURRENTNUMBER = "currentNumber";
116     public static final String CHANNEL_SMOKEDETECTION = "smokeDetection";
117     public static final String CHANNEL_SENSORFAULT = "sensorFault";
118     public static final String CHANNEL_MAINTENANCESTATUS = "maintenanceStatus";
119     public static final String CHANNEL_SENSORANALYSISHUMIDITYRANGE = "saHumidityRange";
120     public static final String CHANNEL_SENSORANALYSISTEMPERATURRANGE = "saTemperatureRange";
121     public static final String CHANNEL_TIMESINCELASTMAINTENANCE = "timeSinceLastMaintenance";
122     public static final String CHANNEL_REMAININGPLT = "remainingPLT";
123     public static final String CHANNEL_HYGROCOMFORTINDEX = "hygroComfortIndex";
124     public static final String CHANNEL_INDOORAIRANALYSIS = "indoorAirAnalysis";
125
126     public static final String CHANNEL_PUSHBUTTON = "pushButton";
127     public static final String CHANNEL_DOUBLEPRESS = "doublePress";
128     public static final String CHANNEL_LONGPRESS = "longPress";
129
130     public static final String CHANNEL_ROCKERSWITCH_CHANNELA = "rockerswitchA";
131     public static final String CHANNEL_ROCKERSWITCH_CHANNELB = "rockerswitchB";
132
133     public static final String CHANNEL_VIRTUALSWITCHA = "virtualSwitchA";
134     public static final String CHANNEL_VIRTUALROLLERSHUTTERA = "virtualRollershutterA";
135     public static final String CHANNEL_VIRTUALROCKERSWITCHB = "virtualRockerswitchB";
136     public static final String CHANNEL_ROCKERSWITCHLISTENERSWITCH = "rockerswitchListenerSwitch";
137     public static final String CHANNEL_ROCKERSWITCHLISTENERROLLERSHUTTER = "rockerswitchListenerRollershutter";
138     public static final String CHANNEL_ROCKERSWITCHLISTENER_START = "rockerswitchListener";
139
140     public static final String CHANNEL_WINDOWHANDLESTATE = "windowHandleState";
141     public static final String CHANNEL_CONTACT = "contact";
142     public static final String CHANNEL_TEACHINCMD = "teachInCMD";
143     public static final String CHANNEL_INSTANTPOWER = "instantpower";
144     public static final String CHANNEL_TOTALUSAGE = "totalusage";
145     public static final String CHANNEL_CURRENTFLOW = "currentFlow";
146     public static final String CHANNEL_CUMULATIVEVALUE = "cumulativeValue";
147     public static final String CHANNEL_BATTERY_VOLTAGE = "batteryVoltage";
148     public static final String CHANNEL_ENERGY_STORAGE = "energyStorage";
149     public static final String CHANNEL_BATTERY_LEVEL = "batteryLevel";
150     public static final String CHANNEL_BATTERYLOW = "batteryLow";
151
152     public static final String CHANNEL_AUTOOFF = "autoOFF";
153     public static final String CHANNEL_DELAYRADIOOFF = "delayRadioOFF";
154     public static final String CHANNEL_EXTERNALINTERFACEMODE = "externalInterfaceMode";
155     public static final String CHANNEL_TWOSTATESWITCH = "twoStateSwitch";
156     public static final String CHANNEL_ECOMODE = "ecoMode";
157
158     public static final String CHANNEL_RSSI = "rssi";
159     public static final String CHANNEL_REPEATCOUNT = "repeatCount";
160     public static final String CHANNEL_LASTRECEIVED = "lastReceived";
161
162     public static final String CHANNEL_GENERIC_SWITCH = "genericSwitch";
163     public static final String CHANNEL_GENERIC_ROLLERSHUTTER = "genericRollershutter";
164     public static final String CHANNEL_GENERIC_DIMMER = "genericDimmer";
165     public static final String CHANNEL_GENERIC_NUMBER = "genericNumber";
166     public static final String CHANNEL_GENERIC_STRING = "genericString";
167     public static final String CHANNEL_GENERIC_COLOR = "genericColor";
168     public static final String CHANNEL_GENERIC_TEACHINCMD = "genericTeachInCMD";
169
170     public static final String CHANNEL_VALVE_POSITION = "valvePosition";
171     public static final String CHANNEL_BUTTON_LOCK = "buttonLock";
172     public static final String CHANNEL_DISPLAY_ORIENTATION = "displayOrientation";
173     public static final String CHANNEL_TEMPERATURE_SETPOINT = "temperatureSetPoint";
174     public static final String CHANNEL_FEED_TEMPERATURE = "feedTemperature";
175     public static final String CHANNEL_MEASUREMENT_CONTROL = "measurementControl";
176     public static final String CHANNEL_FAILURE_CODE = "failureCode";
177     public static final String CHANNEL_WAKEUPCYCLE = "wakeUpCycle";
178     public static final String CHANNEL_SERVICECOMMAND = "serviceCommand";
179     public static final String CHANNEL_STATUS_REQUEST_EVENT = "statusRequestEvent";
180     public static final String CHANNEL_SEND_COMMAND = "sendCommand";
181
182     public static final String CHANNEL_VENTILATIONOPERATIONMODE = "ventilationOperationMode";
183     public static final String CHANNEL_FIREPLACESAFETYMODE = "fireplaceSafetyMode";
184     public static final String CHANNEL_HEATEXCHANGERBYPASSSTATUS = "heatExchangerBypassStatus";
185     public static final String CHANNEL_SUPPLYAIRFLAPSTATUS = "supplyAirFlapStatus";
186     public static final String CHANNEL_EXHAUSTAIRFLAPSTATUS = "exhaustAirFlapStatus";
187     public static final String CHANNEL_DEFROSTMODE = "defrostMode";
188     public static final String CHANNEL_COOLINGPROTECTIONMODE = "coolingProtectionMode";
189     public static final String CHANNEL_OUTDOORAIRHEATERSTATUS = "outdoorAirHeaterStatus";
190     public static final String CHANNEL_SUPPLYAIRHEATERSTATUS = "supplyAirHeaterStatus";
191     public static final String CHANNEL_DRAINHEATERSTATUS = "drainHeaterStatus";
192     public static final String CHANNEL_TIMEROPERATIONMODE = "timerOperationMode";
193     public static final String CHANNEL_WEEKLYTIMERPROGRAMSTATUS = "weeklyTimerProgramStatus";
194     public static final String CHANNEL_ROOMTEMPERATURECONTROLSTATUS = "roomTemperatureControlStatus";
195     public static final String CHANNEL_AIRQUALITYVALUE1 = "airQualityValue1";
196     public static final String CHANNEL_AIRQUALITYVALUE2 = "airQualityValue2";
197     public static final String CHANNEL_OUTDOORAIRTEMPERATURE = "outdoorAirTemperature";
198     public static final String CHANNEL_SUPPLYAIRTEMPERATURE = "supplyAirTemperature";
199     public static final String CHANNEL_INDOORAIRTEMPERATURE = "indoorAirTemperature";
200     public static final String CHANNEL_EXHAUSTAIRTEMPERATURE = "exhaustAirTemperature";
201     public static final String CHANNEL_SUPPLYAIRFANAIRFLOWRATE = "supplyAirFanAirFlowRate";
202     public static final String CHANNEL_EXHAUSTAIRFANAIRFLOWRATE = "exhaustAirFanAirFlowRate";
203     public static final String CHANNEL_SUPPLYFANSPEED = "supplyFanSpeed";
204     public static final String CHANNEL_EXHAUSTFANSPEED = "exhaustFanSpeed";
205
206     public static final Map<String, EnOceanChannelDescription> CHANNELID2CHANNELDESCRIPTION = Map.ofEntries(
207             Map.entry(CHANNEL_GENERAL_SWITCHING,
208                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERAL_SWITCHING),
209                             CoreItemFactory.SWITCH)),
210
211             Map.entry(CHANNEL_GENERAL_SWITCHINGA,
212                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERAL_SWITCHINGA),
213                             CoreItemFactory.SWITCH)),
214             Map.entry(CHANNEL_GENERAL_SWITCHINGB,
215                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERAL_SWITCHINGB),
216                             CoreItemFactory.SWITCH)),
217
218             Map.entry(CHANNEL_DIMMER,
219                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_DIMMER),
220                             CoreItemFactory.DIMMER)),
221             Map.entry(CHANNEL_ROLLERSHUTTER,
222                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ROLLERSHUTTER),
223                             CoreItemFactory.ROLLERSHUTTER)),
224             Map.entry(CHANNEL_ANGLE,
225                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ANGLE),
226                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Angle.class.getSimpleName())),
227             Map.entry(CHANNEL_TEMPERATURE,
228                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TEMPERATURE),
229                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName())),
230             Map.entry(CHANNEL_HUMIDITY,
231                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_HUMIDITY),
232                             CoreItemFactory.NUMBER)),
233             Map.entry(CHANNEL_FANSPEEDSTAGE,
234                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_FANSPEEDSTAGE),
235                             CoreItemFactory.STRING)),
236             Map.entry(CHANNEL_OCCUPANCY,
237                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_OCCUPANCY),
238                             CoreItemFactory.SWITCH)),
239             Map.entry(CHANNEL_MOTIONDETECTION,
240                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_MOTION.getUID(),
241                             CoreItemFactory.SWITCH)),
242             Map.entry(CHANNEL_VIBRATION,
243                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VIBRATION),
244                             CoreItemFactory.SWITCH)),
245             Map.entry(CHANNEL_ILLUMINATION,
246                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATION),
247                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName())),
248             Map.entry(CHANNEL_ILLUMINATIONWEST,
249                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATIONWEST),
250                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName())),
251             Map.entry(CHANNEL_ILLUMINATIONSOUTHNORTH,
252                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATIONSOUTHNORTH),
253                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName())),
254             Map.entry(CHANNEL_ILLUMINATIONEAST,
255                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATIONEAST),
256                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName())),
257             Map.entry(CHANNEL_WINDSPEED,
258                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_WIND_SPEED.getUID(),
259                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Speed.class.getSimpleName())),
260             Map.entry(CHANNEL_RAINSTATUS,
261                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_RAINSTATUS),
262                             CoreItemFactory.SWITCH)),
263             Map.entry(CHANNEL_COUNTER,
264                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_COUNTER),
265                             CoreItemFactory.NUMBER)),
266             Map.entry(CHANNEL_CURRENTNUMBER,
267                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CURRENTNUMBER),
268                             CoreItemFactory.NUMBER)),
269             Map.entry(CHANNEL_SMOKEDETECTION,
270                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SMOKEDETECTION),
271                             CoreItemFactory.SWITCH)),
272             Map.entry(CHANNEL_SENSORFAULT,
273                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT),
274                             CoreItemFactory.SWITCH)),
275             Map.entry(CHANNEL_MAINTENANCESTATUS,
276                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT),
277                             CoreItemFactory.SWITCH)),
278             Map.entry(CHANNEL_SENSORANALYSISHUMIDITYRANGE,
279                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT),
280                             CoreItemFactory.SWITCH)),
281             Map.entry(CHANNEL_SENSORANALYSISTEMPERATURRANGE,
282                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT),
283                             CoreItemFactory.SWITCH)),
284             Map.entry(CHANNEL_TIMESINCELASTMAINTENANCE,
285                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TIMESINCELASTMAINTENANCE),
286                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Time.class.getSimpleName())),
287             Map.entry(CHANNEL_REMAININGPLT,
288                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_REMAININGPLT),
289                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Time.class.getSimpleName())),
290             Map.entry(CHANNEL_HYGROCOMFORTINDEX,
291                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_HYGROCOMFORTINDEX),
292                             CoreItemFactory.STRING)),
293             Map.entry(CHANNEL_INDOORAIRANALYSIS,
294                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_INDOORAIRANALYSIS),
295                             CoreItemFactory.STRING)),
296             Map.entry(CHANNEL_SETPOINT,
297                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SETPOINT),
298                             CoreItemFactory.NUMBER)),
299             Map.entry(CHANNEL_CONTACT,
300                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CONTACT),
301                             CoreItemFactory.CONTACT)),
302             Map.entry(CHANNEL_WINDOWHANDLESTATE,
303                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_WINDOWHANDLESTATE),
304                             CoreItemFactory.STRING)),
305             Map.entry(
306                     CHANNEL_BATTERY_VOLTAGE,
307                     new EnOceanChannelDescription(
308                             new ChannelTypeUID(BINDING_ID, CHANNEL_BATTERY_VOLTAGE),
309                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
310                                     + ElectricPotential.class.getSimpleName())),
311             Map.entry(CHANNEL_ENERGY_STORAGE,
312                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ENERGY_STORAGE),
313                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
314                                     + ElectricPotential.class.getSimpleName())),
315             Map.entry(CHANNEL_BATTERY_LEVEL, new EnOceanChannelDescription(
316                     DefaultSystemChannelTypeProvider.SYSTEM_CHANNEL_BATTERY_LEVEL.getUID(), CoreItemFactory.NUMBER)),
317             Map.entry(CHANNEL_BATTERYLOW,
318                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_CHANNEL_LOW_BATTERY.getUID(),
319                             CoreItemFactory.SWITCH)),
320             Map.entry(CHANNEL_TEACHINCMD,
321                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TEACHINCMD),
322                             CoreItemFactory.SWITCH)),
323
324             Map.entry(CHANNEL_PUSHBUTTON,
325                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWBUTTON.getUID(), null,
326                             "Push button", false, true)),
327             Map.entry(CHANNEL_DOUBLEPRESS,
328                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWBUTTON.getUID(), null,
329                             "Double press", false, true)),
330             Map.entry(CHANNEL_LONGPRESS,
331                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWBUTTON.getUID(), null,
332                             "Long press", false, true)),
333
334             Map.entry(CHANNEL_ROCKERSWITCH_CHANNELA,
335                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWROCKER.getUID(), null,
336                             "Rocker Switch - Channel A", false, false)),
337             Map.entry(CHANNEL_ROCKERSWITCH_CHANNELB,
338                     new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWROCKER.getUID(), null,
339                             "Rocker Switch - Channel B", false, false)),
340
341             Map.entry(CHANNEL_VIRTUALSWITCHA,
342                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VIRTUALSWITCHA),
343                             CoreItemFactory.SWITCH, "", true, false)),
344             Map.entry(CHANNEL_VIRTUALROLLERSHUTTERA,
345                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VIRTUALROLLERSHUTTERA),
346                             CoreItemFactory.ROLLERSHUTTER, "", true, false)),
347             Map.entry(CHANNEL_VIRTUALROCKERSWITCHB,
348                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VIRTUALROCKERSWITCHB),
349                             CoreItemFactory.STRING, "Rocker Switch - Channel B", true, false)),
350             Map.entry(CHANNEL_ROCKERSWITCHLISTENERSWITCH,
351                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ROCKERSWITCHLISTENERSWITCH),
352                             CoreItemFactory.SWITCH, "Rocker Switch Listener (Switch)", true, false)),
353             Map.entry(CHANNEL_ROCKERSWITCHLISTENERROLLERSHUTTER,
354                     new EnOceanChannelDescription(
355                             new ChannelTypeUID(BINDING_ID, CHANNEL_ROCKERSWITCHLISTENERROLLERSHUTTER),
356                             CoreItemFactory.ROLLERSHUTTER, "Rocker Switch Listener (Rollershutter)", true, false)),
357
358             Map.entry(CHANNEL_INSTANTPOWER,
359                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_INSTANTPOWER),
360                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Power.class.getSimpleName())),
361             Map.entry(CHANNEL_TOTALUSAGE,
362                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TOTALUSAGE),
363                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Energy.class.getSimpleName())),
364             Map.entry(CHANNEL_CURRENTFLOW,
365                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CURRENTFLOW),
366                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
367                                     + VolumetricFlowRate.class.getSimpleName())),
368             Map.entry(CHANNEL_CUMULATIVEVALUE,
369                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CUMULATIVEVALUE),
370                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Volume.class.getSimpleName())),
371             Map.entry(CHANNEL_AUTOOFF,
372                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_AUTOOFF),
373                             CoreItemFactory.NUMBER)),
374             Map.entry(CHANNEL_DELAYRADIOOFF,
375                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_DELAYRADIOOFF),
376                             CoreItemFactory.NUMBER)),
377             Map.entry(CHANNEL_EXTERNALINTERFACEMODE,
378                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_EXTERNALINTERFACEMODE),
379                             CoreItemFactory.STRING)),
380             Map.entry(CHANNEL_TWOSTATESWITCH,
381                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TWOSTATESWITCH),
382                             CoreItemFactory.SWITCH)),
383             Map.entry(CHANNEL_ECOMODE,
384                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ECOMODE),
385                             CoreItemFactory.SWITCH)),
386
387             Map.entry(CHANNEL_RSSI,
388                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_RSSI),
389                             CoreItemFactory.NUMBER)),
390             Map.entry(CHANNEL_REPEATCOUNT,
391                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_REPEATCOUNT),
392                             CoreItemFactory.NUMBER)),
393             Map.entry(CHANNEL_LASTRECEIVED,
394                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_LASTRECEIVED),
395                             CoreItemFactory.DATETIME)),
396
397             Map.entry(CHANNEL_GENERIC_SWITCH,
398                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_SWITCH),
399                             CoreItemFactory.SWITCH)),
400             Map.entry(CHANNEL_GENERIC_ROLLERSHUTTER,
401                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_ROLLERSHUTTER),
402                             CoreItemFactory.ROLLERSHUTTER)),
403             Map.entry(CHANNEL_GENERIC_DIMMER,
404                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_DIMMER),
405                             CoreItemFactory.DIMMER)),
406             Map.entry(CHANNEL_GENERIC_NUMBER,
407                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_NUMBER),
408                             CoreItemFactory.NUMBER)),
409             Map.entry(CHANNEL_GENERIC_STRING,
410                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_STRING),
411                             CoreItemFactory.STRING)),
412             Map.entry(CHANNEL_GENERIC_COLOR,
413                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_COLOR),
414                             CoreItemFactory.COLOR)),
415             Map.entry(CHANNEL_GENERIC_TEACHINCMD,
416                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_TEACHINCMD),
417                             CoreItemFactory.SWITCH)),
418
419             Map.entry(CHANNEL_VALVE_POSITION,
420                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VALVE_POSITION),
421                             CoreItemFactory.NUMBER)),
422             Map.entry(CHANNEL_BUTTON_LOCK,
423                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_BUTTON_LOCK),
424                             CoreItemFactory.SWITCH)),
425             Map.entry(CHANNEL_DISPLAY_ORIENTATION,
426                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_DISPLAY_ORIENTATION),
427                             CoreItemFactory.NUMBER)),
428             Map.entry(CHANNEL_TEMPERATURE_SETPOINT,
429                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TEMPERATURE_SETPOINT),
430                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName())),
431             Map.entry(CHANNEL_FEED_TEMPERATURE,
432                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_FEED_TEMPERATURE),
433                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName())),
434             Map.entry(CHANNEL_MEASUREMENT_CONTROL,
435                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_MEASUREMENT_CONTROL),
436                             CoreItemFactory.SWITCH)),
437             Map.entry(CHANNEL_FAILURE_CODE,
438                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_FAILURE_CODE),
439                             CoreItemFactory.NUMBER)),
440             Map.entry(CHANNEL_WAKEUPCYCLE,
441                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_WAKEUPCYCLE),
442                             CoreItemFactory.NUMBER)),
443             Map.entry(CHANNEL_SERVICECOMMAND,
444                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SERVICECOMMAND),
445                             CoreItemFactory.NUMBER)),
446
447             Map.entry(CHANNEL_STATUS_REQUEST_EVENT,
448                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_STATUS_REQUEST_EVENT), null,
449                             "", false, true)),
450             Map.entry(CHANNEL_SEND_COMMAND,
451                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SEND_COMMAND),
452                             CoreItemFactory.SWITCH)),
453
454             Map.entry(CHANNEL_VENTILATIONOPERATIONMODE,
455                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VENTILATIONOPERATIONMODE),
456                             CoreItemFactory.STRING)),
457             Map.entry(CHANNEL_FIREPLACESAFETYMODE,
458                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_FIREPLACESAFETYMODE),
459                             CoreItemFactory.SWITCH)),
460             Map.entry(CHANNEL_HEATEXCHANGERBYPASSSTATUS,
461                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_HEATEXCHANGERBYPASSSTATUS),
462                             CoreItemFactory.CONTACT)),
463             Map.entry(CHANNEL_SUPPLYAIRFLAPSTATUS,
464                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SUPPLYAIRFLAPSTATUS),
465                             CoreItemFactory.CONTACT)),
466             Map.entry(CHANNEL_EXHAUSTAIRFLAPSTATUS,
467                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_EXHAUSTAIRFLAPSTATUS),
468                             CoreItemFactory.CONTACT)),
469             Map.entry(CHANNEL_DEFROSTMODE,
470                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_DEFROSTMODE),
471                             CoreItemFactory.SWITCH)),
472             Map.entry(CHANNEL_COOLINGPROTECTIONMODE,
473                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_COOLINGPROTECTIONMODE),
474                             CoreItemFactory.SWITCH)),
475             Map.entry(CHANNEL_OUTDOORAIRHEATERSTATUS,
476                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_OUTDOORAIRHEATERSTATUS),
477                             CoreItemFactory.SWITCH)),
478             Map.entry(CHANNEL_SUPPLYAIRHEATERSTATUS,
479                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SUPPLYAIRHEATERSTATUS),
480                             CoreItemFactory.SWITCH)),
481             Map.entry(CHANNEL_DRAINHEATERSTATUS,
482                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_DRAINHEATERSTATUS),
483                             CoreItemFactory.SWITCH)),
484             Map.entry(CHANNEL_TIMEROPERATIONMODE,
485                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TIMEROPERATIONMODE),
486                             CoreItemFactory.SWITCH)),
487             Map.entry(CHANNEL_WEEKLYTIMERPROGRAMSTATUS,
488                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_WEEKLYTIMERPROGRAMSTATUS),
489                             CoreItemFactory.SWITCH)),
490             Map.entry(CHANNEL_ROOMTEMPERATURECONTROLSTATUS,
491                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ROOMTEMPERATURECONTROLSTATUS),
492                             CoreItemFactory.SWITCH)),
493             Map.entry(CHANNEL_AIRQUALITYVALUE1,
494                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_AIRQUALITYVALUE1),
495                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
496                                     + Dimensionless.class.getSimpleName())),
497             Map.entry(CHANNEL_AIRQUALITYVALUE2,
498                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_AIRQUALITYVALUE2),
499                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
500                                     + Dimensionless.class.getSimpleName())),
501             Map.entry(CHANNEL_OUTDOORAIRTEMPERATURE,
502                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_OUTDOORAIRTEMPERATURE),
503                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName())),
504             Map.entry(CHANNEL_SUPPLYAIRTEMPERATURE,
505                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SUPPLYAIRTEMPERATURE),
506                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName())),
507             Map.entry(CHANNEL_INDOORAIRTEMPERATURE,
508                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_INDOORAIRTEMPERATURE),
509                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName())),
510             Map.entry(CHANNEL_EXHAUSTAIRTEMPERATURE,
511                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_EXHAUSTAIRTEMPERATURE),
512                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName())),
513             Map.entry(CHANNEL_SUPPLYAIRFANAIRFLOWRATE,
514                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SUPPLYAIRFANAIRFLOWRATE),
515                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
516                                     + VolumetricFlowRate.class.getSimpleName())),
517             Map.entry(CHANNEL_EXHAUSTAIRFANAIRFLOWRATE,
518                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_EXHAUSTAIRFANAIRFLOWRATE),
519                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
520                                     + VolumetricFlowRate.class.getSimpleName())),
521             Map.entry(CHANNEL_SUPPLYFANSPEED,
522                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SUPPLYFANSPEED),
523                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
524                                     + Dimensionless.class.getSimpleName())),
525             Map.entry(CHANNEL_EXHAUSTFANSPEED,
526                     new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_EXHAUSTFANSPEED),
527                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
528                                     + Dimensionless.class.getSimpleName())),
529
530             Map.entry(CHANNEL_REPEATERMODE, new EnOceanChannelDescription(
531                     new ChannelTypeUID(BINDING_ID, CHANNEL_REPEATERMODE), CoreItemFactory.STRING)));
532
533     // List of all repeater mode states
534     public static final String REPEATERMODE_OFF = "OFF";
535     public static final String REPEATERMODE_LEVEL_1 = "LEVEL1";
536     public static final String REPEATERMODE_LEVEL_2 = "LEVEL2";
537
538     // Bridge config properties
539     public static final String SENDERID = "senderId";
540     public static final String PATH = "path";
541     public static final String HOST = "host";
542     public static final String RS485 = "rs485";
543     public static final String NEXTSENDERID = "nextSenderId";
544
545     // Bridge properties
546     public static final String PROPERTY_BASE_ID = "Base ID";
547     public static final String PROPERTY_REMAINING_WRITE_CYCLES_Base_ID = "Remaining Base ID Write Cycles";
548     public static final String PROPERTY_APP_VERSION = "APP Version";
549     public static final String PROPERTY_API_VERSION = "API Version";
550     public static final String PROPERTY_CHIP_ID = "Chip ID";
551     public static final String PROPERTY_DESCRIPTION = "Description";
552
553     // Thing properties
554     public static final String PROPERTY_ENOCEAN_ID = "enoceanId";
555
556     // Thing config parameter
557     public static final String PARAMETER_SENDERIDOFFSET = "senderIdOffset";
558     public static final String PARAMETER_SENDINGEEPID = "sendingEEPId";
559     public static final String PARAMETER_RECEIVINGEEPID = "receivingEEPId";
560     public static final String PARAMETER_EEPID = "eepId";
561
562     public static final String PARAMETER_BROADCASTMESSAGES = "broadcastMessages";
563     public static final String PARAMETER_ENOCEANID = "enoceanId";
564
565     // Channel config parameter
566     public static final String PARAMETER_CHANNEL_TeachInMSG = "teachInMSG";
567     public static final String PARAMETER_CHANNEL_Duration = "duration";
568     public static final String PARAMETER_CHANNEL_SwitchMode = "switchMode";
569
570     // Manufacturer Ids - used to recognize special EEPs during auto discovery
571     public static final int ELTAKOID = 0x00d;
572     public static final int NODONID = 0x046; // NodOn devices are designed by ID-RF hence use their ID
573     public static final int PERMUNDOID = 0x033;
574
575     public static final String EMPTYENOCEANID = "00000000";
576
577     public static final byte ZERO = (byte) 0;
578 }