]> git.basschouten.com Git - openhab-addons.git/blob
b8dc0cca9d7f3072b576f3d10195e47e26ba6acf
[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.Arrays;
16 import java.util.Collections;
17 import java.util.HashMap;
18 import java.util.HashSet;
19 import java.util.Map;
20 import java.util.Set;
21
22 import javax.measure.quantity.Angle;
23 import javax.measure.quantity.ElectricPotential;
24 import javax.measure.quantity.Energy;
25 import javax.measure.quantity.Illuminance;
26 import javax.measure.quantity.Power;
27 import javax.measure.quantity.Speed;
28 import javax.measure.quantity.Temperature;
29 import javax.measure.quantity.Time;
30 import javax.measure.quantity.Volume;
31
32 import org.eclipse.jdt.annotation.NonNullByDefault;
33 import org.openhab.core.items.ItemUtil;
34 import org.openhab.core.library.CoreItemFactory;
35 import org.openhab.core.library.dimension.VolumetricFlowRate;
36 import org.openhab.core.thing.DefaultSystemChannelTypeProvider;
37 import org.openhab.core.thing.ThingTypeUID;
38 import org.openhab.core.thing.type.ChannelTypeUID;
39
40 /**
41  * The {@link EnOceanBinding} class defines common constants, which are
42  * used across the whole binding.
43  *
44  * @author Daniel Weber - Initial contribution
45  */
46 @NonNullByDefault
47 public class EnOceanBindingConstants {
48
49     public static final String BINDING_ID = "enocean";
50
51     // bridge
52     public static final ThingTypeUID THING_TYPE_BRIDGE = new ThingTypeUID(BINDING_ID, "bridge");
53
54     // List of all Thing Type UIDs
55     public static final ThingTypeUID THING_TYPE_PUSHBUTTON = new ThingTypeUID(BINDING_ID, "pushButton");
56     public static final ThingTypeUID THING_TYPE_ROCKERSWITCH = new ThingTypeUID(BINDING_ID, "rockerSwitch");
57     public static final ThingTypeUID THING_TYPE_CLASSICDEVICE = new ThingTypeUID(BINDING_ID, "classicDevice");
58
59     public static final ThingTypeUID THING_TYPE_CENTRALCOMMAND = new ThingTypeUID(BINDING_ID, "centralCommand");
60     public static final ThingTypeUID THING_TYPE_ROOMOPERATINGPANEL = new ThingTypeUID(BINDING_ID, "roomOperatingPanel");
61     public static final ThingTypeUID THING_TYPE_MECHANICALHANDLE = new ThingTypeUID(BINDING_ID, "mechanicalHandle");
62     public static final ThingTypeUID THING_TYPE_CONTACT = new ThingTypeUID(BINDING_ID, "contact");
63     public static final ThingTypeUID THING_TYPE_MEASUREMENTSWITCH = new ThingTypeUID(BINDING_ID, "measurementSwitch");
64     public static final ThingTypeUID THING_TYPE_TEMPERATURESENSOR = new ThingTypeUID(BINDING_ID, "temperatureSensor");
65     public static final ThingTypeUID THING_TYPE_TEMPERATUREHUMIDITYSENSOR = new ThingTypeUID(BINDING_ID,
66             "temperatureHumiditySensor");
67     public static final ThingTypeUID THING_TYPE_AUTOMATEDMETERSENSOR = new ThingTypeUID(BINDING_ID,
68             "automatedMeterSensor");
69     public static final ThingTypeUID THING_TYPE_THERMOSTAT = new ThingTypeUID(BINDING_ID, "thermostat");
70     public static final ThingTypeUID THING_TYPE_OCCUPANCYSENSOR = new ThingTypeUID(BINDING_ID, "occupancySensor");
71     public static final ThingTypeUID THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR = new ThingTypeUID(BINDING_ID,
72             "lightTemperatureOccupancySensor");
73     public static final ThingTypeUID THING_TYPE_LIGHTSENSOR = new ThingTypeUID(BINDING_ID, "lightSensor");
74     public static final ThingTypeUID THING_TYPE_ENVIRONMENTALSENSOR = new ThingTypeUID(BINDING_ID,
75             "environmentalSensor");
76     public static final ThingTypeUID THING_TYPE_GENERICTHING = new ThingTypeUID(BINDING_ID, "genericThing");
77     public static final ThingTypeUID THING_TYPE_ROLLERSHUTTER = new ThingTypeUID(BINDING_ID, "rollershutter");
78     public static final ThingTypeUID THING_TYPE_MULTFUNCTIONSMOKEDETECTOR = new ThingTypeUID(BINDING_ID,
79             "multiFunctionSmokeDetector");
80
81     public static final Set<ThingTypeUID> SUPPORTED_DEVICE_THING_TYPES_UIDS = new HashSet<>(Arrays.asList(
82             THING_TYPE_PUSHBUTTON, THING_TYPE_ROCKERSWITCH, THING_TYPE_CLASSICDEVICE, THING_TYPE_CENTRALCOMMAND,
83             THING_TYPE_ROOMOPERATINGPANEL, THING_TYPE_MECHANICALHANDLE, THING_TYPE_CONTACT,
84             THING_TYPE_MEASUREMENTSWITCH, THING_TYPE_TEMPERATURESENSOR, THING_TYPE_TEMPERATUREHUMIDITYSENSOR,
85             THING_TYPE_GENERICTHING, THING_TYPE_ROLLERSHUTTER, THING_TYPE_OCCUPANCYSENSOR,
86             THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR, THING_TYPE_LIGHTSENSOR, THING_TYPE_ENVIRONMENTALSENSOR,
87             THING_TYPE_AUTOMATEDMETERSENSOR, THING_TYPE_THERMOSTAT, THING_TYPE_MULTFUNCTIONSMOKEDETECTOR));
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 Map<String, EnOceanChannelDescription> CHANNELID2CHANNELDESCRIPTION = Collections
183             .unmodifiableMap(new HashMap<String, EnOceanChannelDescription>() {
184                 private static final long serialVersionUID = 1L;
185
186                 {
187                     put(CHANNEL_GENERAL_SWITCHING, new EnOceanChannelDescription(
188                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERAL_SWITCHING), CoreItemFactory.SWITCH));
189
190                     put(CHANNEL_GENERAL_SWITCHINGA, new EnOceanChannelDescription(
191                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERAL_SWITCHINGA), CoreItemFactory.SWITCH));
192                     put(CHANNEL_GENERAL_SWITCHINGB, new EnOceanChannelDescription(
193                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERAL_SWITCHINGB), CoreItemFactory.SWITCH));
194
195                     put(CHANNEL_DIMMER, new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_DIMMER),
196                             CoreItemFactory.DIMMER));
197                     put(CHANNEL_ROLLERSHUTTER, new EnOceanChannelDescription(
198                             new ChannelTypeUID(BINDING_ID, CHANNEL_ROLLERSHUTTER), CoreItemFactory.ROLLERSHUTTER));
199                     put(CHANNEL_ANGLE, new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ANGLE),
200                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Angle.class.getSimpleName()));
201                     put(CHANNEL_TEMPERATURE, new EnOceanChannelDescription(
202                             new ChannelTypeUID(BINDING_ID, CHANNEL_TEMPERATURE),
203                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName()));
204                     put(CHANNEL_HUMIDITY, new EnOceanChannelDescription(
205                             new ChannelTypeUID(BINDING_ID, CHANNEL_HUMIDITY), CoreItemFactory.NUMBER));
206                     put(CHANNEL_FANSPEEDSTAGE, new EnOceanChannelDescription(
207                             new ChannelTypeUID(BINDING_ID, CHANNEL_FANSPEEDSTAGE), CoreItemFactory.STRING));
208                     put(CHANNEL_OCCUPANCY, new EnOceanChannelDescription(
209                             new ChannelTypeUID(BINDING_ID, CHANNEL_OCCUPANCY), CoreItemFactory.SWITCH));
210                     put(CHANNEL_MOTIONDETECTION, new EnOceanChannelDescription(
211                             DefaultSystemChannelTypeProvider.SYSTEM_MOTION.getUID(), CoreItemFactory.SWITCH));
212                     put(CHANNEL_VIBRATION, new EnOceanChannelDescription(
213                             new ChannelTypeUID(BINDING_ID, CHANNEL_VIBRATION), CoreItemFactory.SWITCH));
214                     put(CHANNEL_ILLUMINATION, new EnOceanChannelDescription(
215                             new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATION),
216                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName()));
217                     put(CHANNEL_ILLUMINATIONWEST, new EnOceanChannelDescription(
218                             new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATIONWEST),
219                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName()));
220                     put(CHANNEL_ILLUMINATIONSOUTHNORTH, new EnOceanChannelDescription(
221                             new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATIONSOUTHNORTH),
222                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName()));
223                     put(CHANNEL_ILLUMINATIONEAST, new EnOceanChannelDescription(
224                             new ChannelTypeUID(BINDING_ID, CHANNEL_ILLUMINATIONEAST),
225                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Illuminance.class.getSimpleName()));
226                     put(CHANNEL_WINDSPEED, new EnOceanChannelDescription(
227                             DefaultSystemChannelTypeProvider.SYSTEM_WIND_SPEED.getUID(),
228                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Speed.class.getSimpleName()));
229                     put(CHANNEL_RAINSTATUS, new EnOceanChannelDescription(
230                             new ChannelTypeUID(BINDING_ID, CHANNEL_RAINSTATUS), CoreItemFactory.SWITCH));
231                     put(CHANNEL_COUNTER, new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_COUNTER),
232                             CoreItemFactory.NUMBER));
233                     put(CHANNEL_CURRENTNUMBER, new EnOceanChannelDescription(
234                             new ChannelTypeUID(BINDING_ID, CHANNEL_CURRENTNUMBER), CoreItemFactory.NUMBER));
235                     put(CHANNEL_SMOKEDETECTION, new EnOceanChannelDescription(
236                             new ChannelTypeUID(BINDING_ID, CHANNEL_SMOKEDETECTION), CoreItemFactory.SWITCH));
237                     put(CHANNEL_SENSORFAULT, new EnOceanChannelDescription(
238                             new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT), CoreItemFactory.SWITCH));
239                     put(CHANNEL_MAINTENANCESTATUS, new EnOceanChannelDescription(
240                             new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT), CoreItemFactory.SWITCH));
241                     put(CHANNEL_SENSORANALYSISHUMIDITYRANGE, new EnOceanChannelDescription(
242                             new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT), CoreItemFactory.SWITCH));
243                     put(CHANNEL_SENSORANALYSISTEMPERATURRANGE, new EnOceanChannelDescription(
244                             new ChannelTypeUID(BINDING_ID, CHANNEL_SENSORFAULT), CoreItemFactory.SWITCH));
245                     put(CHANNEL_TIMESINCELASTMAINTENANCE, new EnOceanChannelDescription(
246                             new ChannelTypeUID(BINDING_ID, CHANNEL_TIMESINCELASTMAINTENANCE),
247                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Time.class.getSimpleName()));
248                     put(CHANNEL_REMAININGPLT, new EnOceanChannelDescription(
249                             new ChannelTypeUID(BINDING_ID, CHANNEL_REMAININGPLT),
250                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Time.class.getSimpleName()));
251                     put(CHANNEL_HYGROCOMFORTINDEX, new EnOceanChannelDescription(
252                             new ChannelTypeUID(BINDING_ID, CHANNEL_HYGROCOMFORTINDEX), CoreItemFactory.STRING));
253                     put(CHANNEL_INDOORAIRANALYSIS, new EnOceanChannelDescription(
254                             new ChannelTypeUID(BINDING_ID, CHANNEL_INDOORAIRANALYSIS), CoreItemFactory.STRING));
255                     put(CHANNEL_SETPOINT, new EnOceanChannelDescription(
256                             new ChannelTypeUID(BINDING_ID, CHANNEL_SETPOINT), CoreItemFactory.NUMBER));
257                     put(CHANNEL_CONTACT, new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CONTACT),
258                             CoreItemFactory.CONTACT));
259                     put(CHANNEL_WINDOWHANDLESTATE, new EnOceanChannelDescription(
260                             new ChannelTypeUID(BINDING_ID, CHANNEL_WINDOWHANDLESTATE), CoreItemFactory.STRING));
261                     put(CHANNEL_BATTERY_VOLTAGE,
262                             new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_BATTERY_VOLTAGE),
263                                     CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
264                                             + ElectricPotential.class.getSimpleName()));
265                     put(CHANNEL_ENERGY_STORAGE,
266                             new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ENERGY_STORAGE),
267                                     CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
268                                             + ElectricPotential.class.getSimpleName()));
269                     put(CHANNEL_BATTERY_LEVEL,
270                             new EnOceanChannelDescription(
271                                     DefaultSystemChannelTypeProvider.SYSTEM_CHANNEL_BATTERY_LEVEL.getUID(),
272                                     CoreItemFactory.NUMBER));
273                     put(CHANNEL_BATTERYLOW,
274                             new EnOceanChannelDescription(
275                                     DefaultSystemChannelTypeProvider.SYSTEM_CHANNEL_LOW_BATTERY.getUID(),
276                                     CoreItemFactory.SWITCH));
277                     put(CHANNEL_TEACHINCMD, new EnOceanChannelDescription(
278                             new ChannelTypeUID(BINDING_ID, CHANNEL_TEACHINCMD), CoreItemFactory.SWITCH));
279
280                     put(CHANNEL_PUSHBUTTON,
281                             new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWBUTTON.getUID(),
282                                     null, "Push button", false, true));
283                     put(CHANNEL_DOUBLEPRESS,
284                             new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWBUTTON.getUID(),
285                                     null, "Double press", false, true));
286                     put(CHANNEL_LONGPRESS,
287                             new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWBUTTON.getUID(),
288                                     null, "Long press", false, true));
289
290                     put(CHANNEL_ROCKERSWITCH_CHANNELA,
291                             new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWROCKER.getUID(),
292                                     null, "Rocker Switch - Channel A", false, false));
293                     put(CHANNEL_ROCKERSWITCH_CHANNELB,
294                             new EnOceanChannelDescription(DefaultSystemChannelTypeProvider.SYSTEM_RAWROCKER.getUID(),
295                                     null, "Rocker Switch - Channel B", false, false));
296
297                     put(CHANNEL_VIRTUALSWITCHA,
298                             new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VIRTUALSWITCHA),
299                                     CoreItemFactory.SWITCH, "", true, false));
300                     put(CHANNEL_VIRTUALROLLERSHUTTERA,
301                             new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VIRTUALROLLERSHUTTERA),
302                                     CoreItemFactory.ROLLERSHUTTER, "", true, false));
303                     put(CHANNEL_VIRTUALROCKERSWITCHB,
304                             new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VIRTUALROCKERSWITCHB),
305                                     CoreItemFactory.STRING, "Rocker Switch - Channel B", true, false));
306                     put(CHANNEL_ROCKERSWITCHLISTENERSWITCH,
307                             new EnOceanChannelDescription(
308                                     new ChannelTypeUID(BINDING_ID, CHANNEL_ROCKERSWITCHLISTENERSWITCH),
309                                     CoreItemFactory.SWITCH, "Rocker Switch Listener (Switch)", true, false));
310                     put(CHANNEL_ROCKERSWITCHLISTENERROLLERSHUTTER, new EnOceanChannelDescription(
311                             new ChannelTypeUID(BINDING_ID, CHANNEL_ROCKERSWITCHLISTENERROLLERSHUTTER),
312                             CoreItemFactory.ROLLERSHUTTER, "Rocker Switch Listener (Rollershutter)", true, false));
313
314                     put(CHANNEL_INSTANTPOWER, new EnOceanChannelDescription(
315                             new ChannelTypeUID(BINDING_ID, CHANNEL_INSTANTPOWER),
316                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Power.class.getSimpleName()));
317                     put(CHANNEL_TOTALUSAGE, new EnOceanChannelDescription(
318                             new ChannelTypeUID(BINDING_ID, CHANNEL_TOTALUSAGE),
319                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Energy.class.getSimpleName()));
320                     put(CHANNEL_CURRENTFLOW,
321                             new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CURRENTFLOW),
322                                     CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR
323                                             + VolumetricFlowRate.class.getSimpleName()));
324                     put(CHANNEL_CUMULATIVEVALUE, new EnOceanChannelDescription(
325                             new ChannelTypeUID(BINDING_ID, CHANNEL_CUMULATIVEVALUE),
326                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Volume.class.getSimpleName()));
327                     put(CHANNEL_AUTOOFF, new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_AUTOOFF),
328                             CoreItemFactory.NUMBER));
329                     put(CHANNEL_DELAYRADIOOFF, new EnOceanChannelDescription(
330                             new ChannelTypeUID(BINDING_ID, CHANNEL_DELAYRADIOOFF), CoreItemFactory.NUMBER));
331                     put(CHANNEL_EXTERNALINTERFACEMODE, new EnOceanChannelDescription(
332                             new ChannelTypeUID(BINDING_ID, CHANNEL_EXTERNALINTERFACEMODE), CoreItemFactory.STRING));
333                     put(CHANNEL_TWOSTATESWITCH, new EnOceanChannelDescription(
334                             new ChannelTypeUID(BINDING_ID, CHANNEL_TWOSTATESWITCH), CoreItemFactory.SWITCH));
335                     put(CHANNEL_ECOMODE, new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_ECOMODE),
336                             CoreItemFactory.SWITCH));
337
338                     put(CHANNEL_RSSI, new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_RSSI),
339                             CoreItemFactory.NUMBER));
340                     put(CHANNEL_REPEATCOUNT, new EnOceanChannelDescription(
341                             new ChannelTypeUID(BINDING_ID, CHANNEL_REPEATCOUNT), CoreItemFactory.NUMBER));
342                     put(CHANNEL_LASTRECEIVED, new EnOceanChannelDescription(
343                             new ChannelTypeUID(BINDING_ID, CHANNEL_LASTRECEIVED), CoreItemFactory.DATETIME));
344
345                     put(CHANNEL_GENERIC_SWITCH, new EnOceanChannelDescription(
346                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_SWITCH), CoreItemFactory.SWITCH));
347                     put(CHANNEL_GENERIC_ROLLERSHUTTER,
348                             new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_ROLLERSHUTTER),
349                                     CoreItemFactory.ROLLERSHUTTER));
350                     put(CHANNEL_GENERIC_DIMMER, new EnOceanChannelDescription(
351                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_DIMMER), CoreItemFactory.DIMMER));
352                     put(CHANNEL_GENERIC_NUMBER, new EnOceanChannelDescription(
353                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_NUMBER), CoreItemFactory.NUMBER));
354                     put(CHANNEL_GENERIC_STRING, new EnOceanChannelDescription(
355                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_STRING), CoreItemFactory.STRING));
356                     put(CHANNEL_GENERIC_COLOR, new EnOceanChannelDescription(
357                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_COLOR), CoreItemFactory.COLOR));
358                     put(CHANNEL_GENERIC_TEACHINCMD, new EnOceanChannelDescription(
359                             new ChannelTypeUID(BINDING_ID, CHANNEL_GENERIC_TEACHINCMD), CoreItemFactory.SWITCH));
360
361                     put(CHANNEL_VALVE_POSITION, new EnOceanChannelDescription(
362                             new ChannelTypeUID(BINDING_ID, CHANNEL_VALVE_POSITION), CoreItemFactory.NUMBER));
363                     put(CHANNEL_BUTTON_LOCK, new EnOceanChannelDescription(
364                             new ChannelTypeUID(BINDING_ID, CHANNEL_BUTTON_LOCK), CoreItemFactory.SWITCH));
365                     put(CHANNEL_DISPLAY_ORIENTATION, new EnOceanChannelDescription(
366                             new ChannelTypeUID(BINDING_ID, CHANNEL_DISPLAY_ORIENTATION), CoreItemFactory.NUMBER));
367                     put(CHANNEL_TEMPERATURE_SETPOINT, new EnOceanChannelDescription(
368                             new ChannelTypeUID(BINDING_ID, CHANNEL_TEMPERATURE_SETPOINT),
369                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName()));
370                     put(CHANNEL_FEED_TEMPERATURE, new EnOceanChannelDescription(
371                             new ChannelTypeUID(BINDING_ID, CHANNEL_FEED_TEMPERATURE),
372                             CoreItemFactory.NUMBER + ItemUtil.EXTENSION_SEPARATOR + Temperature.class.getSimpleName()));
373                     put(CHANNEL_MEASUREMENT_CONTROL, new EnOceanChannelDescription(
374                             new ChannelTypeUID(BINDING_ID, CHANNEL_MEASUREMENT_CONTROL), CoreItemFactory.SWITCH));
375                     put(CHANNEL_FAILURE_CODE, new EnOceanChannelDescription(
376                             new ChannelTypeUID(BINDING_ID, CHANNEL_FAILURE_CODE), CoreItemFactory.NUMBER));
377                     put(CHANNEL_WAKEUPCYCLE, new EnOceanChannelDescription(
378                             new ChannelTypeUID(BINDING_ID, CHANNEL_WAKEUPCYCLE), CoreItemFactory.NUMBER));
379                     put(CHANNEL_SERVICECOMMAND, new EnOceanChannelDescription(
380                             new ChannelTypeUID(BINDING_ID, CHANNEL_SERVICECOMMAND), CoreItemFactory.NUMBER));
381
382                     put(CHANNEL_STATUS_REQUEST_EVENT, new EnOceanChannelDescription(
383                             new ChannelTypeUID(BINDING_ID, CHANNEL_STATUS_REQUEST_EVENT), null, "", false, true));
384                     put(CHANNEL_SEND_COMMAND, new EnOceanChannelDescription(
385                             new ChannelTypeUID(BINDING_ID, CHANNEL_SEND_COMMAND), CoreItemFactory.SWITCH));
386
387                     put(CHANNEL_REPEATERMODE, new EnOceanChannelDescription(
388                             new ChannelTypeUID(BINDING_ID, CHANNEL_REPEATERMODE), CoreItemFactory.STRING));
389                 }
390             });
391
392     // List of all repeater mode states
393     public static final String REPEATERMODE_OFF = "OFF";
394     public static final String REPEATERMODE_LEVEL_1 = "LEVEL1";
395     public static final String REPEATERMODE_LEVEL_2 = "LEVEL2";
396
397     // Bridge config properties
398     public static final String SENDERID = "senderId";
399     public static final String PATH = "path";
400     public static final String HOST = "host";
401     public static final String RS485 = "rs485";
402     public static final String NEXTSENDERID = "nextSenderId";
403
404     // Bridge properties
405     public static final String PROPERTY_BASE_ID = "Base ID";
406     public static final String PROPERTY_REMAINING_WRITE_CYCLES_Base_ID = "Remaining Base ID Write Cycles";
407     public static final String PROPERTY_APP_VERSION = "APP Version";
408     public static final String PROPERTY_API_VERSION = "API Version";
409     public static final String PROPERTY_CHIP_ID = "Chip ID";
410     public static final String PROPERTY_DESCRIPTION = "Description";
411
412     // Thing properties
413     public static final String PROPERTY_ENOCEAN_ID = "enoceanId";
414
415     // Thing config parameter
416     public static final String PARAMETER_SENDERIDOFFSET = "senderIdOffset";
417     public static final String PARAMETER_SENDINGEEPID = "sendingEEPId";
418     public static final String PARAMETER_RECEIVINGEEPID = "receivingEEPId";
419     public static final String PARAMETER_EEPID = "eepId";
420
421     public static final String PARAMETER_BROADCASTMESSAGES = "broadcastMessages";
422     public static final String PARAMETER_ENOCEANID = "enoceanId";
423
424     // Channel config parameter
425     public static final String PARAMETER_CHANNEL_TeachInMSG = "teachInMSG";
426     public static final String PARAMETER_CHANNEL_Duration = "duration";
427     public static final String PARAMETER_CHANNEL_SwitchMode = "switchMode";
428
429     // Manufacturer Ids - used to recognize special EEPs during auto discovery
430     public static final int ELTAKOID = 0x00d;
431     public static final int NODONID = 0x046; // NodOn devices are designed by ID-RF hence use their ID
432     public static final int PERMUNDOID = 0x033;
433
434     public static final String EMPTYENOCEANID = "00000000";
435
436     public static final byte ZERO = (byte) 0;
437 }