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