2 * Copyright (c) 2010-2021 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_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");
78 public static final ThingTypeUID THING_TYPE_HEATRECOVERYVENTILATION = new ThingTypeUID(BINDING_ID,
79 "heatRecoveryVentilation");
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);
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";
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
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";
126 public static final String CHANNEL_PUSHBUTTON = "pushButton";
127 public static final String CHANNEL_DOUBLEPRESS = "doublePress";
128 public static final String CHANNEL_LONGPRESS = "longPress";
130 public static final String CHANNEL_ROCKERSWITCH_CHANNELA = "rockerswitchA";
131 public static final String CHANNEL_ROCKERSWITCH_CHANNELB = "rockerswitchB";
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";
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";
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";
158 public static final String CHANNEL_RSSI = "rssi";
159 public static final String CHANNEL_REPEATCOUNT = "repeatCount";
160 public static final String CHANNEL_LASTRECEIVED = "lastReceived";
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";
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";
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";
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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)),
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)),
447 Map.entry(CHANNEL_STATUS_REQUEST_EVENT,
448 new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_STATUS_REQUEST_EVENT), null,
450 Map.entry(CHANNEL_SEND_COMMAND,
451 new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_SEND_COMMAND),
452 CoreItemFactory.SWITCH)),
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())),
530 Map.entry(CHANNEL_REPEATERMODE, new EnOceanChannelDescription(
531 new ChannelTypeUID(BINDING_ID, CHANNEL_REPEATERMODE), CoreItemFactory.STRING)));
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";
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";
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";
554 public static final String PROPERTY_ENOCEAN_ID = "enoceanId";
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";
562 public static final String PARAMETER_BROADCASTMESSAGES = "broadcastMessages";
563 public static final String PARAMETER_ENOCEANID = "enoceanId";
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";
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;
575 public static final String EMPTYENOCEANID = "00000000";
577 public static final byte ZERO = (byte) 0;