[enocean] Add support for EEP in group A5_09 (#13793)

* [enocean] Support for gas sensors from A5_09 group

Implementing support for gas sensors with EEP A5_09_02, 04, 05, 08, 09,
0C, 0D, adding new changels - CO, CO2, VOC, VOCId, TVOC and regenerate
I18N properties file

Fixes #13785, #13472

Signed-off-by: Zhivka Dimova <zhivka.dimova@myforest.net>
This commit is contained in:
Zhivka Dimova 2023-03-29 23:00:31 +02:00 committed by GitHub
parent bc03e8c5cf
commit b6004a77de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 1525 additions and 109 deletions

View File

@ -48,6 +48,7 @@ This binding is developed on and tested with the following devices
- TF-FKB (window contact)
- TF-AHDSB (outdoor brightness sensor)
- FAFT60 (outdoor temperature & humidity sensor)
- FLGTF55 (air quality & temperature & humidity sensor)
- The following Opus actuators:
- GN-A-R12V-SR-4 (light)
- GN-A-R12V-MF-2 (light)
@ -70,32 +71,34 @@ This binding is developed on and tested with the following devices
- Rocker switches (NodOn, Eltako FT55 etc)
- Siegenia Senso Secure window sensors
- Soda window handles
- Nexelec INSAFE+ Carbon
However, because of the standardized EnOcean protocol it is more important which EEP this binding supports.
Hence if your device supports one of the following EEPs the chances are good that your device is also supported by this binding.
|Thing type | EEP family | EEP Types | Channels¹ | Devices² | Pairing |
|---------------------------------|-------------|---------------|------------------------------|--------------------------------|-----------|
| bridge | - | - | repeaterMode, setBaseId | USB300, EnOceanPi | - |
| pushButton | F6-01/D2-03 | 0x01/0x0A | pushButton, doublePress,<br/>longPress, batteryLevel | NodOn soft button | Manually/Discovery |
| rockerSwitch | F6-02 | 0x01-02 | rockerswitchA, rockerswitchB,<br/>rockerSwitchAction | Eltako FT55 | Discovery |
| mechanicalHandle | F6-10/D2-06 | 0x00-01/0x01 | windowHandleState, contact and a lot more for soda handles³ | Hoppe SecuSignal handles, Eltako TF-FGB, Soda handles | Discovery |
| contact | D5-00 | 0x01 | contact | Eltako FTK(E) & TF-FKB | Discovery |
| temperatureSensor | A5-02 | 0x01-30 | temperature | Thermokon SR65 | Discovery |
| temperatureHumiditySensor | A5-04 | 0x01-03 | humidity, temperature | Eltako FTSB | Discovery |
| occupancySensor | A5-07 | 0x01-03 | illumination, batteryVoltage,<br/>motionDetection | NodON PIR-2-1-01 | Discovery |
| lightTemperatureOccupancySensor | A5-08 | 0x01-03 | illumination, temperature,<br/>occupancy, motionDetection | Eltako FABH | Discovery |
| lightSensor | A5-06 | 0x01 | illumination | Eltako TF-AHDSB | Discovery |
| roomOperatingPanel | A5-10 | 0x01-23 | temperature, setPoint, fanSpeedStage,<br/>occupancy | Thermokon SR04 | Discovery |
| automatedMeterSensor | A5-12 | 0x00-03 | counter, currentNumber, instantpower,<br/>totalusage, amrLitre, amrCubicMetre | FWZ12 | Discovery |
| environmentalSensor | A5-13 | 0x01-02 | temperature, windspeed, illumination,<br/>rainStatus | FWS61 | Discovery |
| centralCommand | A5-38 | 0x08 | dimmer, generalSwitch | Eltako FUD14, FSR14 | Teach-in |
| rollershutter | A5-3F/D2-05/A5-38 | 0x7F/00/08 | rollershutter | Eltako FSB14, NodOn SIN-2-RS-01| Teach-in/Discovery |
| measurementSwitch | D2-01 | 0x00-0F,11,12 | generalSwitch(/A/B), instantpower,<br/>totalusage, repeaterMode | NodOn In Wall Switch | Discovery |
| windowSashHandleSensor | D2-06 | 0x50 | windowHandleState, windowSashState, batteryLevel, batteryLow, windowBreachEvent, windowCalibrationState, windowCalibrationStep | Siegenia Senso Secure | Discovery |
| multiFunctionSmokeDetector | D2-14/F6-05 | 0x30/02 | smokeDetection, batteryLow | Insafe+, Afriso ASD | Discovery |
| heatRecoveryVentilation | D2-50 | 0x00,01,10,11 | a lot of different state channels | Dimplex DL WE2 | Discovery |
| classicDevice | F6-02 | 0x01-02 | virtualRockerswitchA, virtualRockerswitchB | - | Teach-in |
|Thing type | EEP family | EEP Types | Channels¹ | Devices² | Pairing |
|---------------------------------|-------------------|-------------------------|-------------------------------------------------------------|-------------------------|-----------|
| bridge | - | - | repeaterMode, setBaseId | USB300, EnOceanPi | - |
| pushButton | F6-01/D2-03 | 0x01/0x0A | pushButton, doublePress, longPress, batteryLevel | NodOn soft button | Manually/Discovery |
| rockerSwitch | F6-02 | 0x01-02 | rockerswitchA, rockerswitchB, rockerSwitchAction | Eltako FT55 | Discovery |
| mechanicalHandle | F6-10/D2-06 | 0x00-01/0x01 | windowHandleState, contact and a lot more for soda handles³ | Hoppe SecuSignal handles, Eltako TF-FGB, Soda handles | Discovery |
| contact | D5-00 | 0x01 | contact | Eltako FTK(E) & TF-FKB | Discovery |
| temperatureSensor | A5-02 | 0x01-30 | temperature | Thermokon SR65 | Discovery |
| temperatureHumiditySensor | A5-04 | 0x01-03 | humidity, temperature | Eltako FTSB | Discovery |
| gasSensor | A5-09 | 0x02,04,05, 08,09,0C,0D | co, co2, totalVolatileOrganicCompounds, volatileOrganicCompounds, volatileOrganicCompoundsId, humidity, temperature | Nexelec, Eltako FLGTF55 | Discovery |
| occupancySensor | A5-07 | 0x01-03 | illumination, batteryVoltage, motionDetection | NodON PIR-2-1-01 | Discovery |
| lightTemperatureOccupancySensor | A5-08 | 0x01-03 | illumination, temperature, occupancy, motionDetection | Eltako FABH | Discovery |
| lightSensor | A5-06 | 0x01 | illumination | Eltako TF-AHDSB | Discovery |
| roomOperatingPanel | A5-10 | 0x01-23 | temperature, setPoint, fanSpeedStage, occupancy | Thermokon SR04 | Discovery |
| automatedMeterSensor | A5-12 | 0x00-03 | counter, currentNumber, instantpower, totalusage, amrLitre, amrCubicMetre | FWZ12 | Discovery |
| environmentalSensor | A5-13 | 0x01-02 | temperature, windspeed, illumination, rainStatus | FWS61 | Discovery |
| centralCommand | A5-38 | 0x08 | dimmer, generalSwitch | Eltako FUD14, FSR14 | Teach-in |
| rollershutter | A5-3F/D2-05/A5-38 | 0x7F/00/08 | rollershutter | Eltako FSB14, NodOn SIN-2-RS-01| Teach-in/Discovery |
| measurementSwitch | D2-01 | 0x00-0F,11,12 | generalSwitch(/A/B), instantpower, totalusage, repeaterMode | NodOn In Wall Switch | Discovery |
| windowSashHandleSensor | D2-06 | 0x50 | windowHandleState, windowSashState, batteryLevel, batteryLow, windowBreachEvent, windowCalibrationState, windowCalibrationStep | Siegenia Senso Secure | Discovery |
| multiFunctionSmokeDetector | D2-14/F6-05 | 0x30/02 | smokeDetection, batteryLow | Insafe+, Afriso ASD | Discovery |
| heatRecoveryVentilation | D2-50 | 0x00,01,10,11 | a lot of different state channels | Dimplex DL WE2 | Discovery |
| classicDevice | F6-02 | 0x01-02 | virtualRockerswitchA, virtualRockerswitchB | - | Teach-in |
¹ Not all channels are supported by all devices, it depends which specific EEP type is used by the device, all thing types additionally support `rssi`, `repeatCount` and `lastReceived` channels
@ -202,6 +205,9 @@ If you change the SenderId of your thing, you have to pair again the thing with
| temperatureHumiditySensor | receivingEEPId | | A5_04_01-03 |
| | enoceanId | | |
| | receivingSIGEEP | | |
| gasSensor | receivingEEPId | | A5_09_02, A5_09_04, A5_09_05, A5_09_08, A5_09_09, A5_09_0C, A5_09_0D |
| | enoceanId | | |
| | receivingSIGEEP | | |
| occupancySensor | receivingEEPId | | A5_07_01-03 |
| | enoceanId | | |
| | receivingSIGEEP | | |
@ -260,85 +266,90 @@ If you want to receive messages of your EnOcean devices you have to set **the en
The channels of a thing are determined automatically based on the chosen EEP.
|Channel | Item | Description |
|---------------------|--------------------|---------------------------------|
| repeaterMode | String | Set repeater level to 1, 2 or disable |
| setBaseId | String | Changes the BaseId of your gateway. This can only be done 10 times! So use it with care. |
| pushButton | Trigger | Channel type system:rawbutton, emits PRESSED and RELEASED events |
| pushButton2 | Trigger | Channel type system:rawbutton, emits PRESSED and RELEASED events |
| doublePress | Trigger | Channel type system:rawbutton, emits PRESSED |
| longPress | Trigger | Channel type system:rawbutton, emits PRESSED and RELEASED events |
| rockerswitchA/B | Trigger | Channel type system:rawrocker, emits DIR1_PRESSED, DIR1_RELEASED, DIR2_PRESSED, DIR2_RELEASED events |
| rockerSwitchAction | Trigger | Emits combined rocker switch actions for channel A and B and RELEASED events |
| windowHandleState | String | Textual representation of handle position (UP, DOWN, LEFT, RIGHT for the D2_06_01 EEP and OPEN, CLOSED, TILTED for all others) |
| windowSashState | String | Textual representation of sash position (TILTED or NOT TILTED for the D2_06_01 EEP and OPEN, CLOSED, TILTED for all others) |
| windowCalibrationState | String | Textual representation of the calibration state (OK, ERROR, INVALID) |
| windowCalibrationStep | String | Textual representation of the next step that must be performed for calibrating the device (e.g. NONE, SASH CLOSED HANDLE CLOSED, SASH CLOSED HANDLE OPEN, SASH OPEN HANDLE TILTED, and so on) |
| contact | Contact | State OPEN/CLOSED (tilted handle => OPEN) |
| temperature | Number:Temperature | Temperature in degree Celsius |
| humidity | Number | Relative humidity level in percentages |
| illumination | Number:Illuminance | Illumination in lux |
| illuminationWest | Number:Illuminance | Illumination in lux |
| illuminationSouthNorth| Number:Illuminance | Illumination in lux |
| illuminationEast | Number:Illuminance | Illumination in lux |
| rainStatus | Switch | Rain indicator |
| windspeed | Number:Speed | windspeed in m/s |
| occupancy | Switch | Occupancy button pressed (ON) or released (OFF) |
| motionDetection | Switch | On=Motion detected, Off=not |
| setPoint | Number | linear set point |
| fanSpeedStage | String | Fan speed: -1 (Auto), 0, 1, 2, 3 |
| dimmer | Dimmer | Dimmer value in percent |
| generalSwitch(/A/B) | Switch | Switch something (channel A/B) ON/OFF |
| rollershutter | Rollershutter | Shut time (shutTime) in seconds can be configured |
| angle | Number:Angle | The angle for blinds |
| instantpower | Number:Power | Instant power consumption in Watts |
| totalusage | Number:Energy | Used energy in Kilowatt hours |
| teachInCMD | Switch | Sends a teach-in msg, content can configured with parameter teachInMSG |
| virtualSwitchA | Switch | Used to convert switch item commands into rocker switch messages (channel A used)<br/>Time in ms between sending a pressed and release message can be defined with channel parameter duration.<br/>The switch mode (rocker switch: use DIR1 and DIR2, toggle: use just one DIR) can be set with channel parameter switchMode (rockerSwitch, toggleButtonDir1, toggleButtonDir2) |
| virtualRollershutterA | Rollershutter | Used to convert rollershutter item commands into rocker switch messages (channel A used) |
| rockerswitchListenerSwitch | Switch | Used to convert rocker switch messages into switch item state updates |
| rockerswitchListenerRollershutter | Rollershutter | Used to convert rocker switch messages into rollershutter item state updates |
| virtualRockerswitchB | String | Used to send plain rocker switch messages (channel B used) |
| batteryVoltage | Number:ElectricPotential | Battery voltage for things with battery |
| energyStorage | Number:ElectricPotential | Energy storage, don't know what this means... |
| batterLevel | Number | Battery level in percent |
| batterLow | Switch | Battery low indicator |
| smokeDetection | Switch | Smoke detected |
| sensorFault | Switch | Smoke sensor fault |
| timeSinceLastMaintenance | Number:Time | Time since last maintenance |
| remainingPLT | Number:Time | Remaining product life time |
| hygroComfortIndex | String | Hygrothermal Comfort Index |
| indoorAirAnalysis | String | Indoor Air Analysis |
| ventilationOperationMode | String | Direct Operation Mode Control |
| fireplaceSafetyMode | Switch | Fireplace Safety Mode |
| heatExchangerBypassStatus | Contact | Heat Exchanger Bypass Status |
| supplyAirFlapStatus | Contact | Supply Air Flap Position |
| exhaustAirFlapStatus | Contact | Exhaust Air Flap Position |
| defrostMode | Switch | Defrost Mode |
| coolingProtectionMode | Switch | Cooling Protection Mode |
| outdoorAirHeaterStatus | Switch | Outdoor Air Heater Status |
| supplyAirHeaterStatus | Switch | Supply Air Heater Status |
| drainHeaterStatus | Switch | Drain Heater Status |
| timerOperationMode | Switch | Timer Operation Mode |
| weeklyTimerProgramStatus | Switch | Weekly Timer Program Status |
| roomTemperatureControlStatus | Switch | Room Temperature Control Status |
| airQualityValue1 | Number:Dimensionless | Air Quality Value in percent |
| airQualityValue2 | Number:Dimensionless | Air Quality Value in percent |
| outdoorAirTemperature | Number:Temperature | Outdoor Temperature |
| supplyAirTemperature | Number:Temperature | Supply Air Temperature |
| indoorAirTemperature | Number:Temperature | Indoor Temperature |
| exhaustAirTemperature | Number:Temperature | Exhaust Air Temperature |
| supplyAirFanAirFlowRate | Number:VolumetricFlowRate | Supply Air Fan Air Flow Rate |
| exhaustAirFanAirFlowRate | Number:VolumetricFlowRate | Exhaust Air Fan Air Flow Rate |
| supplyFanSpeed | Number:Dimensionless | Supply Fan Speed in rpm |
| exhaustFanSpeed | Number:Dimensionless | Exhaust Fan Speed |
| rssi | Number | Received Signal Strength Indication (dBm) of last received message |
| repeatCount | Number | Number of repeaters involved in the transmission of the telegram |
| lastReceived | DateTime | Date and time the last telegram was received |
| statusRequestEvent | Trigger | Emits event 'requestAnswer' |
| windowBreachEvent | Trigger | Emits event 'ALARM' |
| protectionPlusEvent | Trigger | Emits event 'ALARM' |
| vacationModeToggleEvent | Trigger | Emits events 'ACTIVATED', 'DEACTIVATED' |
|Channel | Item | Description |
|-----------------------------------|---------------------------|---------------------------------|
| repeaterMode | String | Set repeater level to 1, 2 or disable |
| setBaseId | String | Changes the BaseId of your gateway. This can only be done 10 times! So use it with care. |
| pushButton | Trigger | Channel type system:rawbutton, emits PRESSED and RELEASED events |
| pushButton2 | Trigger | Channel type system:rawbutton, emits PRESSED and RELEASED events |
| doublePress | Trigger | Channel type system:rawbutton, emits PRESSED |
| longPress | Trigger | Channel type system:rawbutton, emits PRESSED and RELEASED events |
| rockerswitchA/B | Trigger | Channel type system:rawrocker, emits DIR1_PRESSED, DIR1_RELEASED, DIR2_PRESSED, DIR2_RELEASED events |
| rockerSwitchAction | Trigger | Emits combined rocker switch actions for channel A and B and RELEASED events |
| windowHandleState | String | Textual representation of handle position (UP, DOWN, LEFT, RIGHT for the D2_06_01 EEP and OPEN, CLOSED, TILTED for all others) |
| windowSashState | String | Textual representation of sash position (TILTED or NOT TILTED for the D2_06_01 EEP and OPEN, CLOSED, TILTED for all others) |
| windowCalibrationState | String | Textual representation of the calibration state (OK, ERROR, INVALID) |
| windowCalibrationStep | String | Textual representation of the next step that must be performed for calibrating the device (e.g. NONE, SASH CLOSED HANDLE CLOSED, SASH CLOSED HANDLE OPEN, SASH OPEN HANDLE TILTED, and so on) |
| contact | Contact | State OPEN/CLOSED (tilted handle => OPEN) |
| temperature | Number:Temperature | Temperature in degree Celsius |
| humidity | Number | Relative humidity level in percentages |
| co | Number:Dimensionless | Carbonmonoxide level in ppm |
| co2 | Number:Dimensionless | Carbondioxide level in ppm |
| totalVolatileOrganicCompounds | Number:Dimensionless | Total volatile organic compounds in ppb |
| volatileOrganicCompounds | Number:Dimensionless | VOC level |
| volatileOrganicCompoundsId | String | VOC Identification |
| illumination | Number:Illuminance | Illumination in lux |
| illuminationWest | Number:Illuminance | Illumination in lux |
| illuminationSouthNorth | Number:Illuminance | Illumination in lux |
| illuminationEast | Number:Illuminance | Illumination in lux |
| rainStatus | Switch | Rain indicator |
| windspeed | Number:Speed | windspeed in m/s |
| occupancy | Switch | Occupancy button pressed (ON) or released (OFF) |
| motionDetection | Switch | On=Motion detected, Off=not |
| setPoint | Number | linear set point |
| fanSpeedStage | String | Fan speed: -1 (Auto), 0, 1, 2, 3 |
| dimmer | Dimmer | Dimmer value in percent |
| generalSwitch(/A/B) | Switch | Switch something (channel A/B) ON/OFF |
| rollershutter | Rollershutter | Shut time (shutTime) in seconds can be configured |
| angle | Number:Angle | The angle for blinds |
| instantpower | Number:Power | Instant power consumption in Watts |
| totalusage | Number:Energy | Used energy in Kilowatt hours |
| teachInCMD | Switch | Sends a teach-in msg, content can configured with parameter teachInMSG |
| virtualSwitchA | Switch | Used to convert switch item commands into rocker switch messages (channel A used)<br/>Time in ms between sending a pressed and release message can be defined with channel parameter duration.<br/>The switch mode (rocker switch: use DIR1 and DIR2, toggle: use just one DIR) can be set with channel parameter switchMode (rockerSwitch, toggleButtonDir1, toggleButtonDir2) |
| virtualRollershutterA | Rollershutter | Used to convert rollershutter item commands into rocker switch messages (channel A used) |
| rockerswitchListenerSwitch | Switch | Used to convert rocker switch messages into switch item state updates |
| rockerswitchListenerRollershutter | Rollershutter | Used to convert rocker switch messages into rollershutter item state updates |
| virtualRockerswitchB | String | Used to send plain rocker switch messages (channel B used) |
| batteryVoltage | Number:ElectricPotential | Battery voltage for things with battery |
| energyStorage | Number:ElectricPotential | Energy storage, don't know what this means... |
| batterLevel | Number | Battery level in percent |
| batterLow | Switch | Battery low indicator |
| smokeDetection | Switch | Smoke detected |
| sensorFault | Switch | Smoke sensor fault |
| timeSinceLastMaintenance | Number:Time | Time since last maintenance |
| remainingPLT | Number:Time | Remaining product life time |
| hygroComfortIndex | String | Hygrothermal Comfort Index |
| indoorAirAnalysis | String | Indoor Air Analysis |
| ventilationOperationMode | String | Direct Operation Mode Control |
| fireplaceSafetyMode | Switch | Fireplace Safety Mode |
| heatExchangerBypassStatus | Contact | Heat Exchanger Bypass Status |
| supplyAirFlapStatus | Contact | Supply Air Flap Position |
| exhaustAirFlapStatus | Contact | Exhaust Air Flap Position |
| defrostMode | Switch | Defrost Mode |
| coolingProtectionMode | Switch | Cooling Protection Mode |
| outdoorAirHeaterStatus | Switch | Outdoor Air Heater Status |
| supplyAirHeaterStatus | Switch | Supply Air Heater Status |
| drainHeaterStatus | Switch | Drain Heater Status |
| timerOperationMode | Switch | Timer Operation Mode |
| weeklyTimerProgramStatus | Switch | Weekly Timer Program Status |
| roomTemperatureControlStatus | Switch | Room Temperature Control Status |
| airQualityValue1 | Number:Dimensionless | Air Quality Value in percent |
| airQualityValue2 | Number:Dimensionless | Air Quality Value in percent |
| outdoorAirTemperature | Number:Temperature | Outdoor Temperature |
| supplyAirTemperature | Number:Temperature | Supply Air Temperature |
| indoorAirTemperature | Number:Temperature | Indoor Temperature |
| exhaustAirTemperature | Number:Temperature | Exhaust Air Temperature |
| supplyAirFanAirFlowRate | Number:VolumetricFlowRate | Supply Air Fan Air Flow Rate |
| exhaustAirFanAirFlowRate | Number:VolumetricFlowRate | Exhaust Air Fan Air Flow Rate |
| supplyFanSpeed | Number:Dimensionless | Supply Fan Speed in rpm |
| exhaustFanSpeed | Number:Dimensionless | Exhaust Fan Speed |
| rssi | Number | Received Signal Strength Indication (dBm) of last received message |
| repeatCount | Number | Number of repeaters involved in the transmission of the telegram |
| lastReceived | DateTime | Date and time the last telegram was received |
| statusRequestEvent | Trigger | Emits event 'requestAnswer' |
| windowBreachEvent | Trigger | Emits event 'ALARM' |
| protectionPlusEvent | Trigger | Emits event 'ALARM' |
| vacationModeToggleEvent | Trigger | Emits events 'ACTIVATED', 'DEACTIVATED' |
Items linked to bi-directional actuators (actuator sends status messages back) should always disable the `autoupdate`.
This is especially true for Eltako rollershutter, as their position is calculated out of the current position and the moving time.

View File

@ -61,6 +61,7 @@ public class EnOceanBindingConstants {
public static final ThingTypeUID THING_TYPE_TEMPERATURESENSOR = new ThingTypeUID(BINDING_ID, "temperatureSensor");
public static final ThingTypeUID THING_TYPE_TEMPERATUREHUMIDITYSENSOR = new ThingTypeUID(BINDING_ID,
"temperatureHumiditySensor");
public static final ThingTypeUID THING_TYPE_GASSENSOR = new ThingTypeUID(BINDING_ID, "gasSensor");
public static final ThingTypeUID THING_TYPE_AUTOMATEDMETERSENSOR = new ThingTypeUID(BINDING_ID,
"automatedMeterSensor");
public static final ThingTypeUID THING_TYPE_THERMOSTAT = new ThingTypeUID(BINDING_ID, "thermostat");
@ -83,10 +84,10 @@ public class EnOceanBindingConstants {
public static final Set<ThingTypeUID> SUPPORTED_DEVICE_THING_TYPES_UIDS = Set.of(THING_TYPE_PUSHBUTTON,
THING_TYPE_ROCKERSWITCH, THING_TYPE_CLASSICDEVICE, THING_TYPE_CENTRALCOMMAND, THING_TYPE_ROOMOPERATINGPANEL,
THING_TYPE_MECHANICALHANDLE, THING_TYPE_CONTACT, THING_TYPE_MEASUREMENTSWITCH, THING_TYPE_TEMPERATURESENSOR,
THING_TYPE_TEMPERATUREHUMIDITYSENSOR, THING_TYPE_GENERICTHING, THING_TYPE_ROLLERSHUTTER,
THING_TYPE_OCCUPANCYSENSOR, THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR, THING_TYPE_LIGHTSENSOR,
THING_TYPE_ENVIRONMENTALSENSOR, THING_TYPE_AUTOMATEDMETERSENSOR, THING_TYPE_THERMOSTAT,
THING_TYPE_MULTFUNCTIONSMOKEDETECTOR, THING_TYPE_HEATRECOVERYVENTILATION,
THING_TYPE_TEMPERATUREHUMIDITYSENSOR, THING_TYPE_GASSENSOR, THING_TYPE_GENERICTHING,
THING_TYPE_ROLLERSHUTTER, THING_TYPE_OCCUPANCYSENSOR, THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR,
THING_TYPE_LIGHTSENSOR, THING_TYPE_ENVIRONMENTALSENSOR, THING_TYPE_AUTOMATEDMETERSENSOR,
THING_TYPE_THERMOSTAT, THING_TYPE_MULTFUNCTIONSMOKEDETECTOR, THING_TYPE_HEATRECOVERYVENTILATION,
THING_TYPE_WINDOWSASHHANDLESENSOR);
// List of all Channel Type Ids, these type ids are also used as channel ids during dynamic creation of channels
@ -103,6 +104,11 @@ public class EnOceanBindingConstants {
public static final String CHANNEL_ANGLE = "angle";
public static final String CHANNEL_TEMPERATURE = "temperature";
public static final String CHANNEL_HUMIDITY = "humidity";
public static final String CHANNEL_CO2 = "co2";
public static final String CHANNEL_CO = "co";
public static final String CHANNEL_TVOC = "totalVolatileOrganicCompounds";
public static final String CHANNEL_VOC = "volatileOrganicCompounds";
public static final String CHANNEL_VOC_ID = "volatileOrganicCompoundsId";
public static final String CHANNEL_SETPOINT = "setPoint";
public static final String CHANNEL_FANSPEEDSTAGE = "fanSpeedStage";
public static final String CHANNEL_OCCUPANCY = "occupancy";
@ -243,6 +249,18 @@ public class EnOceanBindingConstants {
Map.entry(CHANNEL_HUMIDITY,
new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_HUMIDITY),
CoreItemFactory.NUMBER)),
Map.entry(CHANNEL_CO2,
new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CO2), CoreItemFactory.NUMBER)),
Map.entry(CHANNEL_CO,
new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_CO), CoreItemFactory.NUMBER)),
Map.entry(CHANNEL_VOC,
new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VOC), CoreItemFactory.NUMBER)),
Map.entry(CHANNEL_VOC_ID,
new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_VOC_ID),
CoreItemFactory.STRING)),
Map.entry(CHANNEL_TVOC,
new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_TVOC),
CoreItemFactory.NUMBER)),
Map.entry(CHANNEL_FANSPEEDSTAGE,
new EnOceanChannelDescription(new ChannelTypeUID(BINDING_ID, CHANNEL_FANSPEEDSTAGE),
CoreItemFactory.STRING)),

View File

@ -0,0 +1,170 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import static org.openhab.binding.enocean.internal.EnOceanBindingConstants.*;
import java.util.function.Function;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.eep.Base._4BSMessage;
import org.openhab.binding.enocean.internal.eep.EEPHelper;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
import org.openhab.core.config.core.Configuration;
import org.openhab.core.library.types.DecimalType;
import org.openhab.core.library.unit.SIUnits;
import org.openhab.core.library.unit.Units;
import org.openhab.core.types.State;
import org.openhab.core.types.UnDefType;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public abstract class A5_09 extends _4BSMessage {
public A5_09(ERP1Message packet) {
super(packet);
}
// CO
protected double getUnscaledCOMin() {
return 0;
}
protected double getUnscaledCOMax() {
return 255;
}
protected double getScaledCOMin() {
return 0;
}
protected double getScaledCOMax() {
return 1020;
}
protected int getUnscaledCOValue() {
return getDB2Value();
}
// CO2
protected double getUnscaledCO2Min() {
return 0;
}
protected double getUnscaledCO2Max() {
return 255;
}
protected double getScaledCO2Min() {
return 0;
}
protected double getScaledCO2Max() {
return 2550;
}
protected int getUnscaledCO2Value() {
return getDB2Value();
}
// Temperature
protected double getUnscaledTemperatureMin() {
return 0;
}
protected double getUnscaledTemperatureMax() {
return 255;
}
protected double getScaledTemperatureMin() {
return 0;
}
protected double getScaledTemperatureMax() {
return 51;
}
protected int getUnscaledTemperatureValue() {
return getDB1Value();
}
// Humidity
protected double getUnscaledHumidityMin() {
return 0;
}
protected double getUnscaledHumidityMax() {
return 200;
}
protected double getScaledHumidityMin() {
return 0;
}
protected double getScaledHumidityMax() {
return 100;
}
protected int getUnscaledHumidityValue() {
return getDB3Value();
}
// Battery
protected double getUnscaledBatteryVoltageMin() {
return 0;
}
protected double getUnscaledBatteryVoltageMax() {
return 255;
}
protected double getScaledBatteryVoltageMin() {
return 0;
}
protected double getScaledBatteryVoltageMax() {
return 5.1;
}
private int getUnscaledBatteryVoltageValue() {
return getDB3Value();
}
@Override
protected State convertToStateImpl(String channelId, String channelTypeId,
Function<String, State> getCurrentStateFunc, Configuration config) {
if (CHANNEL_CO.equals(channelId)) {
return EEPHelper.calculateState(getUnscaledCOValue(), getScaledCOMin(), getScaledCOMax(),
getUnscaledCOMin(), getUnscaledCOMax(), Units.PARTS_PER_MILLION);
} else if (CHANNEL_CO2.equals(channelId)) {
return EEPHelper.calculateState(getUnscaledCO2Value(), getScaledCO2Min(), getScaledCO2Max(),
getUnscaledCO2Min(), getUnscaledCO2Max(), Units.PARTS_PER_MILLION);
} else if (CHANNEL_TEMPERATURE.equals(channelId)) {
return EEPHelper.calculateState(getUnscaledTemperatureValue(), getScaledTemperatureMin(),
getScaledTemperatureMax(), getUnscaledTemperatureMin(), getUnscaledTemperatureMax(),
SIUnits.CELSIUS);
} else if (CHANNEL_HUMIDITY.equals(channelId)) {
return new DecimalType((getUnscaledHumidityValue() * 100.0) / getUnscaledHumidityMax());
} else if (CHANNEL_BATTERY_VOLTAGE.equals(channelId)) {
return EEPHelper.calculateState(getUnscaledBatteryVoltageValue(), getScaledBatteryVoltageMin(),
getScaledBatteryVoltageMax(), getUnscaledBatteryVoltageMin(), getUnscaledBatteryVoltageMax(),
Units.VOLT);
}
return UnDefType.UNDEF;
}
}

View File

@ -0,0 +1,28 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public class A5_09_02 extends A5_09 {
public A5_09_02(ERP1Message packet) {
super(packet);
}
}

View File

@ -0,0 +1,33 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public class A5_09_04 extends A5_09 {
public A5_09_04(ERP1Message packet) {
super(packet);
}
@Override
protected double getScaledCO2Max() {
return 2550;
}
}

View File

@ -0,0 +1,89 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import static org.openhab.binding.enocean.internal.EnOceanBindingConstants.*;
import java.util.function.Function;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
import org.openhab.core.config.core.Configuration;
import org.openhab.core.library.types.QuantityType;
import org.openhab.core.library.types.StringType;
import org.openhab.core.library.unit.Units;
import org.openhab.core.types.State;
import org.openhab.core.types.UnDefType;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public class A5_09_05 extends A5_09 {
public A5_09_05(ERP1Message packet) {
super(packet);
}
protected double[] ScaleMultiplier = new double[] { 0.01, 0.1, 1, 10 };
protected String[] getVOCIdentifications() {
return new String[] { "VOCT", "Formaldehyde", "Benzene", "Styrene", "Toluene", "Tetrachloroethylene", "Xylene",
"n-Hexane", "n-Octane", "Cyclopentane", "Methanol", "Ethanol", "1-Pentanol", "Acetone",
"ethylene Oxide", "Acetaldehyde ue", "Acetic Acid", "Propionine Acid", "Valeric Acid", "Butyric Acid",
"Ammoniac", "Hidrogen Sulfide", "Dimethylsulfide", "2-Butanol", "2-Methylpropanol", "Diethyl ether",
"VOC-Index", "Ozone" };
}
protected long getUnscaledVOCValue() {
return getDBByOffsetSizeValue(0, 16);
}
protected double getScalingFactor() {
int smid = Long.valueOf(getDBByOffsetSizeValue(30, 2)).intValue();
if (smid < 0 || smid >= ScaleMultiplier.length) {
logger.debug("Invalid value according to enocean specification for A5_09 Scale Multiplier {}", smid);
return 1;
}
return ScaleMultiplier[smid];
}
protected String getVOCID() {
int vocId = getDB1Value();
String[] VOCIdentifications = getVOCIdentifications();
if (vocId == 255) {
return VOCIdentifications[VOCIdentifications.length - 1];
} else if (vocId < 0 || vocId >= VOCIdentifications.length - 1) {
logger.debug("Invalid value according to enocean specification for A5_09 VOC Identification {}", vocId);
return "";
}
return VOCIdentifications[vocId];
}
@Override
protected State convertToStateImpl(String channelId, String channelTypeId,
Function<String, State> getCurrentStateFunc, Configuration config) {
if (CHANNEL_VOC.equals(channelId)) {
double scaledVOC = getUnscaledVOCValue() * getScalingFactor();
return new QuantityType<>(scaledVOC, Units.PARTS_PER_BILLION);
} else if (CHANNEL_VOC_ID.equals(channelId)) {
return new StringType(getVOCID());
}
return UnDefType.UNDEF;
}
}

View File

@ -0,0 +1,38 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public class A5_09_08 extends A5_09 {
public A5_09_08(ERP1Message packet) {
super(packet);
}
@Override
protected double getScaledCO2Max() {
return 2000;
}
@Override
protected int getUnscaledCO2Value() {
return getDB1Value();
}
}

View File

@ -0,0 +1,38 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public class A5_09_09 extends A5_09 {
public A5_09_09(ERP1Message packet) {
super(packet);
}
@Override
protected double getScaledCO2Max() {
return 2000;
}
@Override
protected int getUnscaledCO2Value() {
return getDB1Value();
}
}

View File

@ -0,0 +1,65 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import static org.openhab.binding.enocean.internal.EnOceanBindingConstants.*;
import java.util.function.Function;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
import org.openhab.core.config.core.Configuration;
import org.openhab.core.library.types.QuantityType;
import org.openhab.core.library.unit.Units;
import org.openhab.core.types.State;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public class A5_09_0C extends A5_09_05 {
public A5_09_0C(ERP1Message packet) {
super(packet);
}
@Override
protected String[] getVOCIdentifications() {
String[] VOCIdsSuper = super.getVOCIdentifications();
int elFromSuper = VOCIdsSuper.length - 2;
String[] VOCIdsExtension = new String[] { "Naphthalene", "4-Phenylcyclohexene", "Limonene", "Trichloroethylene",
"Isovaleric acid", "Indole", "Cadaverine", "Putrescine", "Caproic acid", "Ozone" };
String[] VOCIdsExtended = new String[elFromSuper + VOCIdsExtension.length];
System.arraycopy(VOCIdsSuper, 0, VOCIdsExtended, 0, elFromSuper);
System.arraycopy(VOCIdsExtension, 0, VOCIdsExtended, elFromSuper, VOCIdsExtension.length);
return VOCIdsExtended;
}
@Override
protected State convertToStateImpl(String channelId, String channelTypeId,
Function<String, State> getCurrentStateFunc, Configuration config) {
if (CHANNEL_VOC.equals(channelId)) {
double scaledVOC = getUnscaledVOCValue() * getScalingFactor();
if (getBit(getDB0(), 2)) {
return new QuantityType<>(scaledVOC, Units.MICROGRAM_PER_CUBICMETRE);
}
return new QuantityType<>(scaledVOC, Units.PARTS_PER_BILLION);
}
return super.convertToStateImpl(channelId, channelTypeId, getCurrentStateFunc, config);
}
}

View File

@ -0,0 +1,52 @@
/**
* Copyright (c) 2010-2023 Contributors to the openHAB project
*
* See the NOTICE file(s) distributed with this work for additional
* information.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.openhab.binding.enocean.internal.eep.A5_09;
import static org.openhab.binding.enocean.internal.EnOceanBindingConstants.*;
import java.util.function.Function;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.binding.enocean.internal.eep.EEPHelper;
import org.openhab.binding.enocean.internal.messages.ERP1Message;
import org.openhab.core.config.core.Configuration;
import org.openhab.core.library.unit.Units;
import org.openhab.core.types.State;
/**
*
* @author Zhivka Dimova - Initial contribution
*/
@NonNullByDefault
public class A5_09_0D extends A5_09 {
public A5_09_0D(ERP1Message packet) {
super(packet);
}
@Override
protected double getUnscaledTemperatureMax() {
return 250;
}
@Override
protected State convertToStateImpl(String channelId, String channelTypeId,
Function<String, State> getCurrentStateFunc, Configuration config) {
if (CHANNEL_TVOC.equals(channelId)) {
return EEPHelper.calculateState(getDB2Value(), 0, 100, 0, 200, Units.PERCENT);
}
return super.convertToStateImpl(channelId, channelTypeId, getCurrentStateFunc, config);
}
}

View File

@ -45,6 +45,22 @@ public abstract class _4BSMessage extends EEP {
public static final byte TEACHIN_BIT = 0x08;
public static final byte LRN_TYPE_MASK = (byte) 0x80;
public long getDBByOffsetSizeValue(int offset, int size) {
if ((offset < 0 || offset > 31) || (size < 1 || size > 32 - offset)) {
logger.warn("4BSMessage get DB value by offset: {} and size: {}", offset, size);
return 0;
}
long msg = (((long) bytes[0] & 0xFF) << 24) | (((long) bytes[1] & 0xFF) << 16) | (((long) bytes[2] & 0xFF) << 8)
| bytes[3];
msg = (msg >> (32 - offset - size)) & ((1 << size) - 1);
logger.debug("_4BSMessage get DB value message bytes {} {} {} {} resulted in {} with offset: {} and size: {}",
bytes[0], bytes[1], bytes[2], bytes[3], msg, offset, size);
return msg;
}
public byte getDB0() {
return bytes[3];
}

View File

@ -12,6 +12,7 @@
*/
package org.openhab.binding.enocean.internal.eep;
import javax.measure.Unit;
import javax.measure.quantity.Energy;
import org.eclipse.jdt.annotation.NonNullByDefault;
@ -22,6 +23,8 @@ import org.openhab.core.library.types.QuantityType;
import org.openhab.core.library.unit.Units;
import org.openhab.core.types.State;
import org.openhab.core.types.UnDefType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
@ -30,6 +33,8 @@ import org.openhab.core.types.UnDefType;
*/
@NonNullByDefault
public abstract class EEPHelper {
private static final Logger logger = LoggerFactory.getLogger(EEPHelper.class);
public static State validateTotalUsage(State value, @Nullable State currentState, Configuration config) {
EnOceanChannelTotalusageConfig c = config.as(EnOceanChannelTotalusageConfig.class);
@ -63,4 +68,27 @@ public abstract class EEPHelper {
return value;
}
public static boolean validateUnscaledValue(int unscaledValue, double unscaledMin, double unscaledMax) {
if (unscaledValue < unscaledMin) {
logger.debug("Unscaled value ({}) lower than the minimum allowed ({})", unscaledValue, unscaledMin);
return false;
} else if (unscaledValue > unscaledMax) {
logger.debug("Unscaled value ({}) bigger than the maximum allowed ({})", unscaledValue, unscaledMax);
return false;
}
return true;
}
public static State calculateState(int unscaledValue, double scaledMin, double scaledMax, double unscaledMin,
double unscaledMax, Unit<?> unit) {
if (!validateUnscaledValue(unscaledValue, unscaledMin, unscaledMax)) {
return UnDefType.UNDEF;
}
double scaledValue = scaledMin + ((unscaledValue * (scaledMax - scaledMin)) / (unscaledMax - unscaledMin));
return new QuantityType<>(scaledValue, unit);
}
}

View File

@ -60,6 +60,13 @@ import org.openhab.binding.enocean.internal.eep.A5_08.A5_08_01;
import org.openhab.binding.enocean.internal.eep.A5_08.A5_08_01_FXBH;
import org.openhab.binding.enocean.internal.eep.A5_08.A5_08_02;
import org.openhab.binding.enocean.internal.eep.A5_08.A5_08_03;
import org.openhab.binding.enocean.internal.eep.A5_09.A5_09_02;
import org.openhab.binding.enocean.internal.eep.A5_09.A5_09_04;
import org.openhab.binding.enocean.internal.eep.A5_09.A5_09_05;
import org.openhab.binding.enocean.internal.eep.A5_09.A5_09_08;
import org.openhab.binding.enocean.internal.eep.A5_09.A5_09_09;
import org.openhab.binding.enocean.internal.eep.A5_09.A5_09_0C;
import org.openhab.binding.enocean.internal.eep.A5_09.A5_09_0D;
import org.openhab.binding.enocean.internal.eep.A5_10.A5_10_01;
import org.openhab.binding.enocean.internal.eep.A5_10.A5_10_02;
import org.openhab.binding.enocean.internal.eep.A5_10.A5_10_03;
@ -300,6 +307,17 @@ public enum EEPType {
LightSensor02(RORG._4BS, 0x06, 0x01, false, "ELTAKO", ELTAKOID, A5_06_01_ELTAKO.class, THING_TYPE_LIGHTSENSOR,
CHANNEL_ILLUMINATION),
GasSensor_A5_09_02(RORG._4BS, 0x09, 0x02, false, A5_09_02.class, THING_TYPE_GASSENSOR, CHANNEL_CO,
CHANNEL_TEMPERATURE, CHANNEL_BATTERY_VOLTAGE),
GasSensor_A5_09_04(RORG._4BS, 0x09, 0x04, false, A5_09_04.class, THING_TYPE_GASSENSOR, CHANNEL_CO2,
CHANNEL_TEMPERATURE, CHANNEL_HUMIDITY),
GasSensor_A5_09_05(RORG._4BS, 0x09, 0x05, false, A5_09_05.class, THING_TYPE_GASSENSOR, CHANNEL_VOC, CHANNEL_VOC_ID),
GasSensor_A5_09_08(RORG._4BS, 0x09, 0x08, false, A5_09_08.class, THING_TYPE_GASSENSOR, CHANNEL_CO2),
GasSensor_A5_09_09(RORG._4BS, 0x09, 0x09, false, A5_09_09.class, THING_TYPE_GASSENSOR, CHANNEL_CO2),
GasSensor_A5_09_0C(RORG._4BS, 0x09, 0x0C, false, A5_09_0C.class, THING_TYPE_GASSENSOR, CHANNEL_VOC, CHANNEL_VOC_ID),
GasSensor_A5_09_0D(RORG._4BS, 0x09, 0x0D, false, A5_09_0D.class, THING_TYPE_GASSENSOR, CHANNEL_HUMIDITY,
CHANNEL_TVOC, CHANNEL_TEMPERATURE),
RoomPanel_A5_10_01(RORG._4BS, 0x10, 0x01, false, A5_10_01.class, THING_TYPE_ROOMOPERATINGPANEL, CHANNEL_TEMPERATURE,
CHANNEL_SETPOINT, CHANNEL_FANSPEEDSTAGE, CHANNEL_OCCUPANCY),
RoomPanel_A5_10_02(RORG._4BS, 0x10, 0x02, false, A5_10_02.class, THING_TYPE_ROOMOPERATINGPANEL, CHANNEL_TEMPERATURE,

View File

@ -56,10 +56,10 @@ public class EnOceanBaseSensorHandler extends EnOceanBaseThingHandler implements
// List of all thing types which support receiving of eep messages
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.of(THING_TYPE_ROOMOPERATINGPANEL,
THING_TYPE_MECHANICALHANDLE, THING_TYPE_CONTACT, THING_TYPE_TEMPERATURESENSOR,
THING_TYPE_TEMPERATUREHUMIDITYSENSOR, THING_TYPE_ROCKERSWITCH, THING_TYPE_OCCUPANCYSENSOR,
THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR, THING_TYPE_LIGHTSENSOR, THING_TYPE_PUSHBUTTON,
THING_TYPE_AUTOMATEDMETERSENSOR, THING_TYPE_ENVIRONMENTALSENSOR, THING_TYPE_MULTFUNCTIONSMOKEDETECTOR,
THING_TYPE_WINDOWSASHHANDLESENSOR);
THING_TYPE_TEMPERATUREHUMIDITYSENSOR, THING_TYPE_GASSENSOR, THING_TYPE_ROCKERSWITCH,
THING_TYPE_OCCUPANCYSENSOR, THING_TYPE_LIGHTTEMPERATUREOCCUPANCYSENSOR, THING_TYPE_LIGHTSENSOR,
THING_TYPE_PUSHBUTTON, THING_TYPE_AUTOMATEDMETERSENSOR, THING_TYPE_ENVIRONMENTALSENSOR,
THING_TYPE_MULTFUNCTIONSMOKEDETECTOR, THING_TYPE_WINDOWSASHHANDLESENSOR);
protected final Hashtable<RORG, EEPType> receivingEEPTypes = new Hashtable<>();

View File

@ -0,0 +1,714 @@
# add-on
addon.enocean.name = EnOcean Binding
addon.enocean.description = The EnOcean binding integrates the EnOcean system into openHAB.
# thing types
thing-type.enocean.automatedMeterSensor.label = Automated Meter Sensor
thing-type.enocean.automatedMeterSensor.description = Sensor for different meters like energy measurement (EEP: A5-12)
thing-type.enocean.bridge.label = EnOcean Gateway
thing-type.enocean.bridge.description = The EnOcean gateway connects to an ESP3 device.
thing-type.enocean.centralCommand.label = Switching/Dimming Actuator
thing-type.enocean.centralCommand.description = Controls a switching or dimming actuator (EEP: A5-38)
thing-type.enocean.classicDevice.label = Classic Device
thing-type.enocean.classicDevice.description = This thing lets you control classic EnOcean devices by rocker switch messages (EEP: F6-02)
thing-type.enocean.contact.label = Single Input Contact
thing-type.enocean.contact.description = Single input contact sensor (EEP: D5-00)
thing-type.enocean.environmentalSensor.label = Environmental Sensor
thing-type.enocean.environmentalSensor.description = Sensor for different environmental sensors like a weather station (EEP: A5-13)
thing-type.enocean.gasSensor.label = Gas Sensor
thing-type.enocean.gasSensor.description = Sensor which sends gas measurement data (EEP: A5-09)
thing-type.enocean.genericThing.label = Generic Thing
thing-type.enocean.genericThing.description = Thing whose EEP is unsupported. Use a TRANSFORM to convert things messages.
thing-type.enocean.heatRecoveryVentilation.label = Heat Recovery Ventilation
thing-type.enocean.heatRecoveryVentilation.description = Sensor and actuator to control heat recovery ventilation units (EEP: D2-50)
thing-type.enocean.lightSensor.label = Light Sensor
thing-type.enocean.lightSensor.description = Sensor which sends light data (EEP: A5-06)
thing-type.enocean.lightTemperatureOccupancySensor.label = Light/Temperature/Occupancy Sensor
thing-type.enocean.lightTemperatureOccupancySensor.description = Sensor which sends light, temperature and occupancy data (EEP: A5-08)
thing-type.enocean.measurementSwitch.label = Energy Measurement Switch
thing-type.enocean.measurementSwitch.description = Electronic switches and dimmers with energy measurement and local control (EEP: D2-01)
thing-type.enocean.mechanicalHandle.label = Mechanical Handle
thing-type.enocean.mechanicalHandle.description = Mechanical handle sensor for window/door handles
thing-type.enocean.multiFunctionSmokeDetector.label = Multi Function Smoke Detector
thing-type.enocean.multiFunctionSmokeDetector.description = Multi Function Sensor like a Smoke Detector (EEP: F6-05, D2-14)
thing-type.enocean.occupancySensor.label = Occupancy Sensor
thing-type.enocean.occupancySensor.description = Sensor which sends light, supply voltage and occupancy data (EEP: A5-07)
thing-type.enocean.pushButton.label = Simple Push Button
thing-type.enocean.pushButton.description = Represents a physical Push Button (EEP: F6-01, D2-03)
thing-type.enocean.rockerSwitch.label = Rocker Switch
thing-type.enocean.rockerSwitch.description = Represents a physical Rocker Switch (EEP: F6-02)
thing-type.enocean.rockerSwitch.channel.rockerSwitchAction.label = Rocker Switch Action
thing-type.enocean.rockerSwitch.channel.rockerswitchA.label = Rocker Switch - Channel A
thing-type.enocean.rockerSwitch.channel.rockerswitchB.label = Rocker Switch - Channel B
thing-type.enocean.rollershutter.label = Rollershutter Actuator
thing-type.enocean.rollershutter.description = Rollershutter like Eltako FSB14/61/71 or NodOn SIN-2-RS-01 (EEP: A5-37, D2-05)
thing-type.enocean.roomOperatingPanel.label = Room Operating Panel
thing-type.enocean.roomOperatingPanel.description = Room operating panel with different kinds of sensors (EEP: A5-10)
thing-type.enocean.temperatureHumiditySensor.label = Temperature/Humidity Sensor
thing-type.enocean.temperatureHumiditySensor.description = Sensor which sends temperature and humidity data (EEP: A5-04)
thing-type.enocean.temperatureSensor.label = Temperature Sensor
thing-type.enocean.temperatureSensor.description = Sensor which send temperature data (EEP: A5-02)
thing-type.enocean.thermostat.label = Thermostat
thing-type.enocean.thermostat.description = Sensor and actuator to control radiator thermostats
thing-type.enocean.windowSashHandleSensor.label = Sash Handle Sensor
thing-type.enocean.windowSashHandleSensor.description = Combined sensor for window/door sash state and handle state
# thing types config
thing-type.config.enocean.automatedMeterSensor.enoceanId.label = EnOceanId
thing-type.config.enocean.automatedMeterSensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.automatedMeterSensor.receivingEEPId.label = EEP
thing-type.config.enocean.automatedMeterSensor.receivingEEPId.description = EEP which is used by panel
thing-type.config.enocean.automatedMeterSensor.receivingEEPId.option.A5_12_00 = A5-12-00 Counter
thing-type.config.enocean.automatedMeterSensor.receivingEEPId.option.A5_12_01 = A5-12-01 Electricity
thing-type.config.enocean.automatedMeterSensor.receivingEEPId.option.A5_12_02 = A5-12-02 Gas
thing-type.config.enocean.automatedMeterSensor.receivingEEPId.option.A5_12_03 = A5-12-03 Water
thing-type.config.enocean.bridge.enableSmack.label = Handle SMACK Messages
thing-type.config.enocean.bridge.enableSmack.description = Declare Gateway as a SMACK Postmaster and handle SMACK messages
thing-type.config.enocean.bridge.espVersion.label = ESP version of received and transmitting messages
thing-type.config.enocean.bridge.espVersion.option.ESP3 = ESP3
thing-type.config.enocean.bridge.espVersion.option.ESP2 = ESP2
thing-type.config.enocean.bridge.nextSenderId.label = Next Sender Id Offset
thing-type.config.enocean.bridge.nextSenderId.description = Defines the next device Id, if empty, the next device id is automatically determined
thing-type.config.enocean.bridge.path.label = Path
thing-type.config.enocean.bridge.path.description = Path to the EnOcean gateway
thing-type.config.enocean.bridge.rs485.label = Gateway Connected Directly to RS485 BUS
thing-type.config.enocean.bridge.rs485BaseId.label = Use following BaseId when connected directly to RS485 BUS
thing-type.config.enocean.bridge.sendTeachOuts.label = Send TeachOuts
thing-type.config.enocean.bridge.sendTeachOuts.description = Should a learned in or teach out response been send on a repeated smack teach in request
thing-type.config.enocean.centralCommand.broadcastMessages.label = Send Broadcast Messages
thing-type.config.enocean.centralCommand.enoceanId.label = EnOceanId
thing-type.config.enocean.centralCommand.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.centralCommand.receivingEEPId.label = EEP for Receiving States
thing-type.config.enocean.centralCommand.receivingEEPId.option.F6_00_00 = PTM200 (F6 message widely used by Eltako devices)
thing-type.config.enocean.centralCommand.receivingEEPId.option.A5_38_08_02 = Message with dimming value (A5_38_08 sub command 0x02)
thing-type.config.enocean.centralCommand.receivingEEPId.option.A5_11_04 = Extended lighting status (A5-11-04)
thing-type.config.enocean.centralCommand.senderIdOffset.label = Sender Id
thing-type.config.enocean.centralCommand.senderIdOffset.description = Id is used to generate the EnOcean Id (Int between [1-127]). If not specified the next free Id will be determined by bridge
thing-type.config.enocean.centralCommand.sendingEEPId.label = EEP for Sending Commands
thing-type.config.enocean.centralCommand.sendingEEPId.option.A5_38_08_01 = Gateway command - switching (A5_38_08 sub command 0x01)
thing-type.config.enocean.centralCommand.sendingEEPId.option.A5_38_08_02 = Gateway command - dimming (A5_38_08 sub command 0x02)
thing-type.config.enocean.centralCommand.suppressRepeating.label = Suppress Repeating of Messages
thing-type.config.enocean.classicDevice.receivingEEPId.label = EEP for Receiving States
thing-type.config.enocean.classicDevice.receivingEEPId.description = EEP which is used by rocker switch listener(s)
thing-type.config.enocean.classicDevice.receivingEEPId.option.F6_02_01 = F6-02-01 (upper rocker => DIR1)
thing-type.config.enocean.classicDevice.receivingEEPId.option.F6_02_02 = F6-02-02 (upper rocker => DIR2)
thing-type.config.enocean.classicDevice.senderIdOffset.label = Sender Id
thing-type.config.enocean.classicDevice.senderIdOffset.description = Id is used to generate the EnOcean Id (Int between [1-127]). If not specified the next free Id will be determined by bridge
thing-type.config.enocean.classicDevice.sendingEEPId.label = EEP for Sending Commands
thing-type.config.enocean.classicDevice.sendingEEPId.description = EEP which is used to control the device
thing-type.config.enocean.classicDevice.sendingEEPId.option.F6_02_01 = F6-02-01 (upper rocker => DIR1)
thing-type.config.enocean.classicDevice.sendingEEPId.option.F6_02_02 = F6-02-02 (upper rocker => DIR2)
thing-type.config.enocean.classicDevice.suppressRepeating.label = Suppress Repeating of Messages
thing-type.config.enocean.contact.enoceanId.label = EnOceanId
thing-type.config.enocean.contact.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.contact.receivingEEPId.label = EEP
thing-type.config.enocean.contact.receivingEEPId.description = EEP which is used by contact
thing-type.config.enocean.contact.receivingEEPId.option.D5_00_01 = D5-00-01 single input
thing-type.config.enocean.contact.receivingEEPId.option.A5_14_01 = A5-14-01 Single input contact, supply voltage monitor
thing-type.config.enocean.contact.receivingEEPId.option.A5_14_01_ELTAKO = Eltako battery status
thing-type.config.enocean.contact.receivingEEPId.option.F6_10_00_EltakoFPE = F6-10-00 Eltako FPE-X
thing-type.config.enocean.contact.receivingSIGEEP.label = Receive Battery Status Signal Messages
thing-type.config.enocean.environmentalSensor.enoceanId.label = EnOceanId
thing-type.config.enocean.environmentalSensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.environmentalSensor.receivingEEPId.label = EEP
thing-type.config.enocean.environmentalSensor.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.environmentalSensor.receivingEEPId.option.A5_13_01 = A5-13-01 Weather station
thing-type.config.enocean.gasSensor.enoceanId.label = EnOceanId
thing-type.config.enocean.gasSensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.gasSensor.receivingEEPId.label = EEP
thing-type.config.enocean.gasSensor.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.gasSensor.receivingEEPId.option.A5_09_02 = A5-09-02 CO sensor (temperature sensor optional)
thing-type.config.enocean.gasSensor.receivingEEPId.option.A5_09_04 = A5-09-04 CO2 sensor (temperature and humidity sensor optional)
thing-type.config.enocean.gasSensor.receivingEEPId.option.A5_09_05 = A5-09-05 VOC Sensor
thing-type.config.enocean.gasSensor.receivingEEPId.option.A5_09_08 = A5-09-08 Pure CO2 sensor
thing-type.config.enocean.gasSensor.receivingEEPId.option.A5_09_09 = A5-09-09 Pure CO2 sensor with Power Failure Detection
thing-type.config.enocean.gasSensor.receivingEEPId.option.A5_09_0C = A5-09-0C VOC Sensor
thing-type.config.enocean.gasSensor.receivingEEPId.option.A5_09_0D = A5-09-0D VOC, humidity + temperature
thing-type.config.enocean.genericThing.broadcastMessages.label = Send Broadcast Messages
thing-type.config.enocean.genericThing.enoceanId.label = EnOceanId
thing-type.config.enocean.genericThing.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.genericThing.receivingEEPId.label = EEP for Receiving States
thing-type.config.enocean.genericThing.receivingEEPId.option.F6_FF_FF = Generic RPS (F6)
thing-type.config.enocean.genericThing.receivingEEPId.option.A5_FF_FF = Generic 4BS (A5)
thing-type.config.enocean.genericThing.receivingEEPId.option.D2_FF_FF = Generic VLD (D2)
thing-type.config.enocean.genericThing.senderIdOffset.label = Sender Id
thing-type.config.enocean.genericThing.senderIdOffset.description = Id is used to generate the EnOcean Id (Int between [1-127]). If not specified the next free Id will be determined by bridge
thing-type.config.enocean.genericThing.sendingEEPId.label = EEP for Sending Commands
thing-type.config.enocean.genericThing.sendingEEPId.option.F6_FF_FF = Generic RPS (F6)
thing-type.config.enocean.genericThing.sendingEEPId.option.A5_FF_FF = Generic 4BS (A5)
thing-type.config.enocean.genericThing.sendingEEPId.option.D2_FF_FF = Generic VLD (D2)
thing-type.config.enocean.genericThing.suppressRepeating.label = Suppress Repeating of Messages
thing-type.config.enocean.heatRecoveryVentilation.broadcastMessages.label = Send Broadcast Messages
thing-type.config.enocean.heatRecoveryVentilation.enoceanId.label = EnOceanId
thing-type.config.enocean.heatRecoveryVentilation.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.heatRecoveryVentilation.receivingEEPId.label = EEP
thing-type.config.enocean.heatRecoveryVentilation.receivingEEPId.description = EEP which is used by Ventilation Unit
thing-type.config.enocean.heatRecoveryVentilation.receivingEEPId.option.D2_50_00 = D2-50-00 Single Room Ventilation Unit
thing-type.config.enocean.heatRecoveryVentilation.receivingEEPId.option.D2_50_01 = D2-50-01 Single Room Ventilation Unit With Pre-Heater
thing-type.config.enocean.heatRecoveryVentilation.receivingEEPId.option.D2_50_10 = D2-50-10 Multi Room Ventilation Unit Without Bypass
thing-type.config.enocean.heatRecoveryVentilation.receivingEEPId.option.D2_50_11 = D2-50-11 Multi Room Ventilation Unit With Bypass
thing-type.config.enocean.heatRecoveryVentilation.senderIdOffset.label = Sender Id
thing-type.config.enocean.heatRecoveryVentilation.senderIdOffset.description = Id is used to generate the EnOcean Id (Int between [1-127]). If not specified the next free Id will be determined by bridge
thing-type.config.enocean.heatRecoveryVentilation.sendingEEPId.label = EEP for Sending Commands
thing-type.config.enocean.heatRecoveryVentilation.sendingEEPId.option.D2_50_00 = D2-50-00 Single Room Ventilation Unit
thing-type.config.enocean.heatRecoveryVentilation.sendingEEPId.option.D2_50_01 = D2-50-01 Single Room Ventilation Unit With Pre-Heater
thing-type.config.enocean.heatRecoveryVentilation.sendingEEPId.option.D2_50_10 = D2-50-10 Multi Room Ventilation Unit Without Bypass
thing-type.config.enocean.heatRecoveryVentilation.sendingEEPId.option.D2_50_11 = D2-50-11 Multi Room Ventilation Unit With Bypass
thing-type.config.enocean.heatRecoveryVentilation.suppressRepeating.label = Suppress Repeating of Messages
thing-type.config.enocean.lightSensor.enoceanId.label = EnOceanId
thing-type.config.enocean.lightSensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.lightSensor.receivingEEPId.label = EEP
thing-type.config.enocean.lightSensor.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.lightSensor.receivingEEPId.option.A5_06_01 = A5-06-01
thing-type.config.enocean.lightSensor.receivingEEPId.option.A5_06_01_ELTAKO = A5-06-01 ELTAKO
thing-type.config.enocean.lightSensor.receivingSIGEEP.label = Receive Battery Status Signal Messages
thing-type.config.enocean.lightTemperatureOccupancySensor.enoceanId.label = EnOceanId
thing-type.config.enocean.lightTemperatureOccupancySensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.lightTemperatureOccupancySensor.receivingEEPId.label = EEP
thing-type.config.enocean.lightTemperatureOccupancySensor.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.lightTemperatureOccupancySensor.receivingEEPId.option.A5_08_01 = A5-08-01 temperature range [0;51], lux range [0;510]
thing-type.config.enocean.lightTemperatureOccupancySensor.receivingEEPId.option.A5_08_02 = A5-08-02 temperature range [0;51], lux range [0;1020]
thing-type.config.enocean.lightTemperatureOccupancySensor.receivingEEPId.option.A5_08_03 = A5-08-03 temperature range [-30;50], lux range [0;1530]
thing-type.config.enocean.lightTemperatureOccupancySensor.receivingEEPId.option.A5_08_01_FXBH = Eltako FxBH lux range [0;2048]
thing-type.config.enocean.lightTemperatureOccupancySensor.receivingSIGEEP.label = Receive Battery Status Signal Messages
thing-type.config.enocean.measurementSwitch.broadcastMessages.label = Send Broadcast Messages
thing-type.config.enocean.measurementSwitch.enoceanId.label = EnOceanId
thing-type.config.enocean.measurementSwitch.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.measurementSwitch.pollingInterval.label = Polling Interval
thing-type.config.enocean.measurementSwitch.pollingInterval.description = Time in seconds after a refresh is triggerd, 0 to disable
thing-type.config.enocean.measurementSwitch.receivingEEPId.label = EEP for Receiving Commands
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_00 = Switching and energy measurement (EEP: D2_01_00)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_01 = Switching (EEP: D2_01_01)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_02 = Switching, dimming and energy measurement (EEP: D2_01_02)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_03 = Switching and dimming (EEP: D2_01_03)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_04 = Switching, dimming and energy measurement (EEP: D2_01_04)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_05 = Switching, dimming and energy measurement (EEP: D2_01_05)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_06 = Switching and energy measurement (EEP: D2_01_06)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_07 = Switching (EEP: D2_01_07)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_08 = Switching, dimming and energy measurement (EEP: D2_01_08)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_09 = Switching, dimming and energy measurement (EEP: D2_01_09)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_09_PERMUNDO = Permundo PSC
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_0A = Switching and energy measurement (EEP: D2_01_0A)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_0B = Switching and energy measurement (EEP: D2_01_0B)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_0C = Switching and energy measurement (EEP: D2_01_0C)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_0D = Switching (EEP: D2_01_0D)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_0E = Switching and energy measurement (EEP: D2_01_0E)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_0F = Switching (EEP: D2_01_0F)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_0F_NODON = NodON SIN-2-1-00 (EEP: D2_01_0F)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_11 = Switching (EEP: D2_01_11)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_12 = Switching (EEP: D2_01_12)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.D2_01_12_NODON = NodON SIN-2-2-0x (EEP: D2_01_12)
thing-type.config.enocean.measurementSwitch.receivingEEPId.option.A5_12_01 = AMR Electricity (EEP: A5_12_01)
thing-type.config.enocean.measurementSwitch.senderIdOffset.label = Sender Id
thing-type.config.enocean.measurementSwitch.senderIdOffset.description = Id is used to generate the EnOcean Id (Int between [1-127]). If not specified the next free Id will be determined by bridge
thing-type.config.enocean.measurementSwitch.sendingEEPId.label = EEP for Sending Commands
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_00 = Switching and energy measurement (EEP: D2_01_00)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_01 = Switching (EEP: D2_01_01)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_02 = Switching, dimming and energy measurement (EEP: D2_01_02)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_03 = Switching and dimming (EEP: D2_01_03)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_04 = Switching, dimming and energy measurement (EEP: D2_01_04)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_05 = Switching, dimming and energy measurement (EEP: D2_01_05)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_06 = Switching and energy measurement (EEP: D2_01_06)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_07 = Switching (EEP: D2_01_07)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_08 = Switching, dimming and energy measurement (EEP: D2_01_08)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_09 = Switching, dimming and energy measurement (EEP: D2_01_09)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_09_PERMUNDO = Permundo PSC
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_0A = Switching and energy measurement (EEP: D2_01_0A)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_0B = Switching and energy measurement (EEP: D2_01_0B)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_0C = Switching and energy measurement (EEP: D2_01_0C)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_0D = Switching (EEP: D2_01_0D)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_0E = Switching and energy measurement (EEP: D2_01_0E)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_0F = Switching (EEP: D2_01_0F)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_0F_NODON = NodON SIN-2-1-00 (EEP: D2_01_0F)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_11 = Switching (EEP: D2_01_11)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_12 = Switching (EEP: D2_01_12)
thing-type.config.enocean.measurementSwitch.sendingEEPId.option.D2_01_12_NODON = NodON SIN-2-2-0x (EEP: D2_01_12)
thing-type.config.enocean.measurementSwitch.suppressRepeating.label = Suppress Repeating of Messages
thing-type.config.enocean.mechanicalHandle.enoceanId.label = EnOceanId
thing-type.config.enocean.mechanicalHandle.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.mechanicalHandle.receivingEEPId.label = EEP
thing-type.config.enocean.mechanicalHandle.receivingEEPId.description = EEP which is used by handle
thing-type.config.enocean.mechanicalHandle.receivingEEPId.option.F6_10_00 = F6-10-00
thing-type.config.enocean.mechanicalHandle.receivingEEPId.option.F6_10_01 = F6-10-01
thing-type.config.enocean.mechanicalHandle.receivingEEPId.option.A5_14_09 = A5-14-09
thing-type.config.enocean.mechanicalHandle.receivingEEPId.option.A5_14_0A = A5-14-0A
thing-type.config.enocean.mechanicalHandle.receivingEEPId.option.D2_06_01_Soda = D2_06_01 (Soda handle)
thing-type.config.enocean.mechanicalHandle.receivingSIGEEP.label = Receive Battery Status Signal Messages
thing-type.config.enocean.multiFunctionSmokeDetector.enoceanId.label = EnOceanId
thing-type.config.enocean.multiFunctionSmokeDetector.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.multiFunctionSmokeDetector.receivingEEPId.label = EEP
thing-type.config.enocean.multiFunctionSmokeDetector.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.multiFunctionSmokeDetector.receivingEEPId.option.F6_05_02 = F6-05-02 smoke detector
thing-type.config.enocean.multiFunctionSmokeDetector.receivingEEPId.option.D2_14_30 = D2-14-30 multi function sensor for smoke
thing-type.config.enocean.multiFunctionSmokeDetector.receivingEEPId.option.A5_30_03_ELTAKO = A5-30-03 Eltako smoke detectors (FHMB, FRWB)
thing-type.config.enocean.occupancySensor.enoceanId.label = EnOceanId
thing-type.config.enocean.occupancySensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.occupancySensor.receivingEEPId.label = EEP
thing-type.config.enocean.occupancySensor.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.occupancySensor.receivingEEPId.option.A5_07_01 = A5-07-01 battery voltage (optional)
thing-type.config.enocean.occupancySensor.receivingEEPId.option.A5_07_02 = A5-07-02 battery voltage
thing-type.config.enocean.occupancySensor.receivingEEPId.option.A5_07_03 = A5-07-03 battery voltage, lux range [0;1000]
thing-type.config.enocean.occupancySensor.receivingSIGEEP.label = Receive Battery Status Signal Messages
thing-type.config.enocean.pushButton.enoceanId.label = EnOceanId
thing-type.config.enocean.pushButton.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.pushButton.receivingEEPId.label = EEP
thing-type.config.enocean.pushButton.receivingEEPId.description = EEP which is used by push button
thing-type.config.enocean.pushButton.receivingEEPId.option.F6_01_01 = F6-01-01
thing-type.config.enocean.pushButton.receivingEEPId.option.D2_03_0A = D2-03-0A
thing-type.config.enocean.rockerSwitch.enoceanId.label = EnOceanId
thing-type.config.enocean.rockerSwitch.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.rockerSwitch.receivingEEPId.label = EEP
thing-type.config.enocean.rockerSwitch.receivingEEPId.description = EEP which is used by rocker switch
thing-type.config.enocean.rockerSwitch.receivingEEPId.option.F6_02_01 = F6-02-01 (upper rocker => DIR1)
thing-type.config.enocean.rockerSwitch.receivingEEPId.option.F6_02_02 = F6-02-02 (upper rocker => DIR2)
thing-type.config.enocean.rollershutter.broadcastMessages.label = Send Broadcast Messages
thing-type.config.enocean.rollershutter.enoceanId.label = EnOceanId
thing-type.config.enocean.rollershutter.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.rollershutter.pollingInterval.label = Polling Interval
thing-type.config.enocean.rollershutter.pollingInterval.description = Time in seconds after a refresh is triggered, 0 to disable
thing-type.config.enocean.rollershutter.receivingEEPId.label = EEP for Receiving States
thing-type.config.enocean.rollershutter.receivingEEPId.option.A5_3F_7F_EltakoFSB = Eltako FSB14/61/71
thing-type.config.enocean.rollershutter.receivingEEPId.option.A5_3F_7F_EltakoFRM = Eltako FRM60
thing-type.config.enocean.rollershutter.receivingEEPId.option.D2_05_00 = D2-05-00 Rollershutter
thing-type.config.enocean.rollershutter.receivingEEPId.option.D2_05_00_NODON = NODON SIN-2-RS-01 (EEP: D2-05-00)
thing-type.config.enocean.rollershutter.receivingEEPId.option.A5_11_03 = A5-11-03 Rollershutter status
thing-type.config.enocean.rollershutter.receivingEEPId.option.F6_00_00 = PTM200 Rollershutter status
thing-type.config.enocean.rollershutter.senderIdOffset.label = Sender Id
thing-type.config.enocean.rollershutter.senderIdOffset.description = Id is used to generate the EnOcean Id (Int between [1-127]). If not specified the next free Id will be determined by bridge
thing-type.config.enocean.rollershutter.sendingEEPId.label = EEP for Sending Commands
thing-type.config.enocean.rollershutter.sendingEEPId.option.A5_3F_7F_EltakoFSB = Eltako FSB14/61/71
thing-type.config.enocean.rollershutter.sendingEEPId.option.A5_3F_7F_EltakoFRM = Eltako FRM60
thing-type.config.enocean.rollershutter.sendingEEPId.option.D2_05_00 = D2-05-00 Rollershutter
thing-type.config.enocean.rollershutter.sendingEEPId.option.D2_05_00_NODON = NODON SIN-2-RS-01 (EEP: D2-05-00)
thing-type.config.enocean.rollershutter.sendingEEPId.option.A5_38_08_07 = Gateway command - blinds (A5_38_08 sub command 0x07)
thing-type.config.enocean.rollershutter.suppressRepeating.label = Suppress Repeating of Messages
thing-type.config.enocean.roomOperatingPanel.enoceanId.label = EnOceanId
thing-type.config.enocean.roomOperatingPanel.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.label = EEP
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.description = EEP which is used by panel
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_01 = A5-10-01 temperature sensor, set point, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_02 = A5-10-02 temperature sensor, set point, fan speed and day/night control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_03 = A5-10-03 temperature sensor, set point control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_04 = A5-10-04 temperature sensor, set point and fan speed control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_05 = A5-10-05 temperature sensor, set point and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_06 = A5-10-06 temperature sensor, set point and day/night control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_07 = A5-10-07 temperature sensor, fan speed control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_08 = A5-10-08 temperature sensor, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_09 = A5-10-09 temperature sensor, fan speed and day/night control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_0A = A5-10-0A temperature sensor, set point and single input contact
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_0B = A5-10-0B temperature sensor, single input contact
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_0C = A5-10-0C temperature sensor, occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_0D = A5-10-0D temperature sensor, day/night control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_10 = A5-10-10 temperature and humidity sensor, set point and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_11 = A5-10-11 temperature and humidity sensor, set point and day/night control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_12 = A5-10-12 temperature and humidity sensor, set point control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_13 = A5-10-13 temperature and humidity sensor, occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_14 = A5-10-14 temperature and humidity sensor, day/night control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_15 = A5-10-15 10 bit temperature sensor, 6 bit set point control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_16 = A5-10-16 10 bit temperature sensor, 6 bit set point, occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_17 = A5-10-17 10 bit temperature sensor, occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_18 = A5-10-18 illumination and temperature sensor, set point, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_19 = A5-10-19 temperature and humidity sensor, set point, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_1A = A5-10-1A supply voltage, temperature sensor, set point, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_1B = A5-10-1B supply voltage, illumination and temperature sensor, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_1C = A5-10-1C illumination and temperature sensor, illumination set point, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_1D = A5-10-1D temperature and humidity sensor, humidity set point, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_1E = A5-10-1E supply voltage, illumination and temperature sensor, fan speed and occupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_1F = A5-10-1F temperature sensor, set point, fan speed, occupancy and unoccupancy control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_20 = A5-10-20 temperature sensor, set point with special heating states
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_21 = A5-10-21 temperature and humidity sensor, set point with special heating states
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_22 = A5-10-22 temperature and humidity sensor, set point and fan speed control
thing-type.config.enocean.roomOperatingPanel.receivingEEPId.option.A5_10_23 = A5-10-23 temperature and humidity sensor, set point, fan speed and occupancy control
thing-type.config.enocean.temperatureHumiditySensor.enoceanId.label = EnOceanId
thing-type.config.enocean.temperatureHumiditySensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.temperatureHumiditySensor.receivingEEPId.label = EEP
thing-type.config.enocean.temperatureHumiditySensor.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.temperatureHumiditySensor.receivingEEPId.option.A5_04_01 = A5-04-01 temperature sensor range [0;40]
thing-type.config.enocean.temperatureHumiditySensor.receivingEEPId.option.A5_04_02 = A5-04-02 temperature sensor range [-20;60]
thing-type.config.enocean.temperatureHumiditySensor.receivingEEPId.option.A5_04_02_ELTAKO = A5-04-02 temperature sensor range [-20;60] with battery indicator
thing-type.config.enocean.temperatureHumiditySensor.receivingEEPId.option.A5_04_03 = A5-04-03 temperature sensor range (10 bit) [-20;60]
thing-type.config.enocean.temperatureHumiditySensor.receivingSIGEEP.label = Receive Battery Status Signal Messages
thing-type.config.enocean.temperatureSensor.enoceanId.label = EnOceanId
thing-type.config.enocean.temperatureSensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.temperatureSensor.receivingEEPId.label = EEP
thing-type.config.enocean.temperatureSensor.receivingEEPId.description = EEP which is used by panel
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_01 = A5-02-01 temperature sensor range [-40;0]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_02 = A5-02-02 temperature sensor range [-30;10]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_03 = A5-02-03 temperature sensor range [-20;20]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_04 = A5-02-04 temperature sensor range [-10;30]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_05 = A5-02-05 temperature sensor range [0;40]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_06 = A5-02-06 temperature sensor range [10;50]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_07 = A5-02-07 temperature sensor range [20;60]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_08 = A5-02-08 temperature sensor range [30;70]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_09 = A5-02-09 temperature sensor range [40;80]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_0A = A5-02-0A temperature sensor range [50;90]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_0B = A5-02-0B temperature sensor range [60;100]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_10 = A5-02-10 temperature sensor range [-60;20]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_11 = A5-02-11 temperature sensor range [-50;30]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_12 = A5-02-12 temperature sensor range [-40;40]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_13 = A5-02-13 temperature sensor range [-30;50]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_14 = A5-02-14 temperature sensor range [-20;60]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_15 = A5-02-15 temperature sensor range [-10;70]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_16 = A5-02-16 temperature sensor range [0;80]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_17 = A5-02-17 temperature sensor range [1;90]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_18 = A5-02-18 temperature sensor range [20;100]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_19 = A5-02-19 temperature sensor range [30;110]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_1A = A5-02-1A temperature sensor range [40;120]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_1B = A5-02-1B temperature sensor range [50;130]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_20 = A5-02-20 temperature sensor range [-10;41.2]
thing-type.config.enocean.temperatureSensor.receivingEEPId.option.A5_02_30 = A5-02-30 temperature sensor range [-40;62.3]
thing-type.config.enocean.temperatureSensor.receivingSIGEEP.label = Receive Battery Status Signal Messages
thing-type.config.enocean.thermostat.broadcastMessages.label = Send Broadcast Messages
thing-type.config.enocean.thermostat.enoceanId.label = EnOceanId
thing-type.config.enocean.thermostat.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.thermostat.receivingEEPId.label = EEP
thing-type.config.enocean.thermostat.receivingEEPId.description = EEP which is used by sensor
thing-type.config.enocean.thermostat.receivingEEPId.option.A5_20_04 = Heating radiator valve actuating drive with feed and room temperature measurement, local set point control and display
thing-type.config.enocean.thermostat.senderIdOffset.label = Sender Id
thing-type.config.enocean.thermostat.senderIdOffset.description = Id is used to generate the EnOcean Id (Int between [1-127]). If not specified the next free Id will be determined by bridge
thing-type.config.enocean.thermostat.sendingEEPId.label = EEP for Sending Commands
thing-type.config.enocean.thermostat.sendingEEPId.option.A5_20_04 = Heating radiator valve actuating drive with feed and room temperature measurement, local set point control and display
thing-type.config.enocean.thermostat.suppressRepeating.label = Suppress Repeating of Messages
thing-type.config.enocean.windowSashHandleSensor.enoceanId.label = EnOceanId
thing-type.config.enocean.windowSashHandleSensor.enoceanId.description = EnOceanId of device this thing belongs to
thing-type.config.enocean.windowSashHandleSensor.receivingEEPId.label = EEP
thing-type.config.enocean.windowSashHandleSensor.receivingEEPId.description = EEP which is used by device
thing-type.config.enocean.windowSashHandleSensor.receivingEEPId.option.D2_06_50_Siegenia = D2_06_50 (Siegenia Senso Secure)
thing-type.config.enocean.windowSashHandleSensor.receivingSIGEEP.label = Receive Battery Status Signal Messages
# channel types
channel-type.enocean.airQualityValue1.label = Air Quality Value
channel-type.enocean.airQualityValue1.description = Air quality value of first sensor in percentages
channel-type.enocean.airQualityValue2.label = Air Quality Value
channel-type.enocean.airQualityValue2.description = Air quality value of second sensor in percentages
channel-type.enocean.angle.label = Angle
channel-type.enocean.angle.description = Blind Angle
channel-type.enocean.autoOFF.label = Auto Off
channel-type.enocean.autoOFF.description = Automatically switch to off
channel-type.enocean.batteryVoltage.label = Battery Voltage
channel-type.enocean.batteryVoltage.description = Voltage of the battery
channel-type.enocean.buttonLock.label = Button Lock
channel-type.enocean.buttonLock.description = Enables or disables buttons on the device.
channel-type.enocean.co.label = CO
channel-type.enocean.co.description = CO level in ppm
channel-type.enocean.co2.label = CO2
channel-type.enocean.co2.description = CO2 level in ppm
channel-type.enocean.contact.label = Contact
channel-type.enocean.contact.description = Contact channel
channel-type.enocean.coolingProtectionMode.label = Cooling Protection Mode
channel-type.enocean.coolingProtectionMode.description = Indicates if device is running in cooling protection mode
channel-type.enocean.counter.label = Counter
channel-type.enocean.counter.description = Counter
channel-type.enocean.cumulativeValue.label = Cumulative Value
channel-type.enocean.currentFlow.label = Current Flow
channel-type.enocean.currentNumber.label = Current
channel-type.enocean.currentNumber.description = Current
channel-type.enocean.defrostMode.label = Defrost Mode
channel-type.enocean.defrostMode.description = Indicates if defrosting of heat exchanger is active or not
channel-type.enocean.delayRadioOFF.label = Delay Radio Off
channel-type.enocean.delayRadioOFF.description = Delay switch off by radio for given seconds
channel-type.enocean.dimmer.label = Dimmer
channel-type.enocean.dimmer.description = Dimmer
channel-type.enocean.displayOrientation.label = Display Orientation
channel-type.enocean.displayOrientation.description = Orientation of the display.
channel-type.enocean.displayOrientation.state.option.0 = 0
channel-type.enocean.displayOrientation.state.option.90 = 90
channel-type.enocean.displayOrientation.state.option.180 = 180
channel-type.enocean.displayOrientation.state.option.270 = 270
channel-type.enocean.drainHeaterStatus.label = Drain Heater Status
channel-type.enocean.drainHeaterStatus.description = Indicates if drain heater is active or not
channel-type.enocean.ecoMode.label = Eco Mode
channel-type.enocean.ecoMode.description = Activates eco mode (disables certain messages)
channel-type.enocean.energyStorage.label = Energy Storage
channel-type.enocean.energyStorage.description = ?
channel-type.enocean.exhaustAirFanAirFlowRate.label = Exhaust Air Fan Air Flow Rate
channel-type.enocean.exhaustAirFanAirFlowRate.description = Current exhaust air fan air flow rate
channel-type.enocean.exhaustAirFlapStatus.label = Exhaust Air Flap Position
channel-type.enocean.exhaustAirFlapStatus.description = Indicates if exhaust air flap is open or closed
channel-type.enocean.exhaustAirTemperature.label = Exhaust Air Temperature
channel-type.enocean.exhaustAirTemperature.description = Current exhaust air temperature in degree Celsius
channel-type.enocean.exhaustFanSpeed.label = Exhaust Fan Speed
channel-type.enocean.exhaustFanSpeed.description = Exhaust fan speed in revolutions per minutes
channel-type.enocean.externalInterfaceMode.label = External Interface Mode
channel-type.enocean.externalInterfaceMode.description = This option is to selected the type of the wired switch
channel-type.enocean.externalInterfaceMode.state.option.EXTERNALSWITCH = Switch
channel-type.enocean.externalInterfaceMode.state.option.EXTERNALBUTTON = Push button
channel-type.enocean.externalInterfaceMode.state.option.EXTERNALAUTO = Auto detect
channel-type.enocean.failureCode.label = Failure Code
channel-type.enocean.failureCode.description = Failure code
channel-type.enocean.fanSpeedStage.label = Fan Speed
channel-type.enocean.fanSpeedStage.state.option.-1 = Auto
channel-type.enocean.fanSpeedStage.state.option.0 = Stage 0
channel-type.enocean.fanSpeedStage.state.option.1 = Stage 1
channel-type.enocean.fanSpeedStage.state.option.2 = Stage 2
channel-type.enocean.fanSpeedStage.state.option.3 = Stage 3
channel-type.enocean.feedTemperature.label = Feed Temperature
channel-type.enocean.feedTemperature.description = Water temperature in the radiator input
channel-type.enocean.fireplaceSafetyMode.label = Fireplace Safety Mode
channel-type.enocean.fireplaceSafetyMode.description = Indicates if device is running in fireplace safety mode
channel-type.enocean.generalSwitch.label = Switch
channel-type.enocean.generalSwitch.description = The switch channel allows to switch something on and off.
channel-type.enocean.generalSwitchA.label = Switch Channel A
channel-type.enocean.generalSwitchA.description = The switch channel allows to switch channel A on and off.
channel-type.enocean.generalSwitchB.label = Switch Channel B
channel-type.enocean.generalSwitchB.description = The switch channel allows to switch channel B on and off.
channel-type.enocean.genericColor.label = Color
channel-type.enocean.genericDimmer.label = Dimmer
channel-type.enocean.genericDimmer.description = Dimmer
channel-type.enocean.genericNumber.label = Number
channel-type.enocean.genericNumber.description = Number
channel-type.enocean.genericRollershutter.label = Rollershutter
channel-type.enocean.genericRollershutter.description = Rollershutter
channel-type.enocean.genericString.label = String
channel-type.enocean.genericSwitch.label = Switch
channel-type.enocean.genericSwitch.description = The switch channel allows to switch something on and off.
channel-type.enocean.genericTeachInCMD.label = Teach In
channel-type.enocean.genericTeachInCMD.description = The teach in channel allows to send a teach in msg.
channel-type.enocean.heatExchangerBypassStatus.label = Heat Exchanger Bypass Status
channel-type.enocean.heatExchangerBypassStatus.description = Indicates if heat exchanger bypass is open (heat recovery inactive) or closed (heat recovery active)
channel-type.enocean.humidity.label = Humidity
channel-type.enocean.humidity.description = Relative humidity level in percentages
channel-type.enocean.hygroComfortIndex.label = Hygrothermal Comfort Index
channel-type.enocean.hygroComfortIndex.description = Comfort index based on temperature and humidity
channel-type.enocean.hygroComfortIndex.state.option.GOOD = Good
channel-type.enocean.hygroComfortIndex.state.option.MEDIUM = Medium
channel-type.enocean.hygroComfortIndex.state.option.BAD = Bad
channel-type.enocean.hygroComfortIndex.state.option.ERROR = Error
channel-type.enocean.illumination.label = Lux
channel-type.enocean.illumination.description = Illumination in lux
channel-type.enocean.illuminationEast.label = Sun East
channel-type.enocean.illuminationEast.description = Illumination in lux
channel-type.enocean.illuminationSouthNorth.label = Sun South/North
channel-type.enocean.illuminationSouthNorth.description = Illumination in lux
channel-type.enocean.illuminationWest.label = Sun West
channel-type.enocean.illuminationWest.description = Illumination in lux
channel-type.enocean.indoorAirAnalysis.label = Indoor Air Analysis
channel-type.enocean.indoorAirAnalysis.description = Indoor air quality analysis based on temperature and humidity
channel-type.enocean.indoorAirAnalysis.state.option.OPTIMAL = Optimal air range
channel-type.enocean.indoorAirAnalysis.state.option.DRY = Dry air range
channel-type.enocean.indoorAirAnalysis.state.option.HIGH_HUMIDITY = High humidity range
channel-type.enocean.indoorAirAnalysis.state.option.HIGH_TEMPHUMI = High humidity and temperature range
channel-type.enocean.indoorAirAnalysis.state.option.OUT_OF_RANGE = Humidity or temperature out of range
channel-type.enocean.indoorAirAnalysis.state.option.RESERVED1 = Reserved1
channel-type.enocean.indoorAirAnalysis.state.option.RESERVED2 = Reserved2
channel-type.enocean.indoorAirAnalysis.state.option.ERROR = Error
channel-type.enocean.indoorAirTemperature.label = Indoor Temperature
channel-type.enocean.indoorAirTemperature.description = Current indoor air temperature in degree Celsius
channel-type.enocean.instantpower.label = Instant Power
channel-type.enocean.instantpower.description = Instant power consumption in Watts
channel-type.enocean.lastReceived.label = LastReceived
channel-type.enocean.lastReceived.description = Date and time the last telegram was received
channel-type.enocean.maintenanceStatus.label = Maintenance Neccessary
channel-type.enocean.maintenanceStatus.description = Sensor maintenance status.
channel-type.enocean.measurementControl.label = Measurement Control
channel-type.enocean.measurementControl.description = Enables or disables temperature measurement on the device.
channel-type.enocean.occupancy.label = Occupancy
channel-type.enocean.occupancy.description = Occupancy button pressed or released.
channel-type.enocean.outdoorAirHeaterStatus.label = Outdoor Air Heater Status
channel-type.enocean.outdoorAirHeaterStatus.description = Indicates if outdoor air heater is active or not
channel-type.enocean.outdoorAirTemperature.label = Outdoor Temperature
channel-type.enocean.outdoorAirTemperature.description = Current outdoor air temperature in degree Celsius
channel-type.enocean.protectionPlusEvent.label = Protection Plus Event
channel-type.enocean.protectionPlusEvent.description = Triggered when a Protection Plus capable device detects a break-in attempt.
channel-type.enocean.rainStatus.label = Rain
channel-type.enocean.rainStatus.description = Rain indicator
channel-type.enocean.remainingPLT.label = Remaining Product Life Time
channel-type.enocean.remainingPLT.description = Countdown time until product end of life.
channel-type.enocean.repeatCount.label = RepeatCount
channel-type.enocean.repeatCount.description = Number of repeaters involved in the transmission of the telegram
channel-type.enocean.repeaterMode.label = Repeater Mode
channel-type.enocean.repeaterMode.description = Repeater mode of EnOcean gateway/device
channel-type.enocean.repeaterMode.state.option.OFF = Repeater off
channel-type.enocean.repeaterMode.state.option.LEVEL1 = Level-1
channel-type.enocean.repeaterMode.state.option.LEVEL2 = Level-2
channel-type.enocean.rockerSwitchAction.label = Rocker Switch Action
channel-type.enocean.rockerSwitchAction.description = Is triggered when a certain combination of rockers is pressed or released.
channel-type.enocean.rockerswitchListenerRollershutter.label = Rocker Switch Listener (Rollershutter)
channel-type.enocean.rockerswitchListenerSwitch.label = Rocker Switch Listener (Switch)
channel-type.enocean.rollershutter.label = Rollershutter
channel-type.enocean.rollershutter.description = Rollershutter
channel-type.enocean.roomTemperatureControlStatus.label = Room Temperature Control Status
channel-type.enocean.roomTemperatureControlStatus.description = Indicates if room temperature control is active or not
channel-type.enocean.rssi.label = RSSI
channel-type.enocean.rssi.description = Received Signal Strength Indication
channel-type.enocean.saHumidityRange.label = Out of Humidity Range
channel-type.enocean.saHumidityRange.description = Sensor analysis status: humidity out of range
channel-type.enocean.saTemperatureRange.label = Out of Temperature Range
channel-type.enocean.saTemperatureRange.description = Sensor analysis status: temperature out of range
channel-type.enocean.sensorFault.label = Sensor Fault Mode
channel-type.enocean.sensorFault.description = Sensor activated fault mode.
channel-type.enocean.serviceCommand.label = Service Command
channel-type.enocean.serviceCommand.description = Command to be sent to actuator
channel-type.enocean.serviceCommand.state.option.0 = no change
channel-type.enocean.serviceCommand.state.option.1 = open valve
channel-type.enocean.serviceCommand.state.option.2 = run initialisation
channel-type.enocean.serviceCommand.state.option.3 = close valve
channel-type.enocean.setBaseId.label = Set Base Id
channel-type.enocean.setBaseId.description = Set base id of EnOcean gateway. Use this with care! Must be between 0xFF800000 and 0xFFFFFF80
channel-type.enocean.setPoint.label = Set Point
channel-type.enocean.setPoint.description = linear set point
channel-type.enocean.smokeDetection.label = Smoke Detected
channel-type.enocean.smokeDetection.description = Smoke detection sensor state.
channel-type.enocean.statusRequestEvent.label = Status Request Event
channel-type.enocean.statusRequestEvent.description = Is triggered when the actuator wakes up from sleep and asks for the current status.
channel-type.enocean.supplyAirFanAirFlowRate.label = Supply Air Fan Air Flow Rate
channel-type.enocean.supplyAirFanAirFlowRate.description = Current supply air fan air flow rate
channel-type.enocean.supplyAirFlapStatus.label = Supply Air Flap Position
channel-type.enocean.supplyAirFlapStatus.description = Indicates if supply air flap is open or closed
channel-type.enocean.supplyAirHeaterStatus.label = Supply Air Heater Status
channel-type.enocean.supplyAirHeaterStatus.description = Indicates if supply air heater is active or not
channel-type.enocean.supplyAirTemperature.label = Supply Air Temperature
channel-type.enocean.supplyAirTemperature.description = Current supply air temperature in degree Celsius
channel-type.enocean.supplyFanSpeed.label = Supply Fan Speed
channel-type.enocean.supplyFanSpeed.description = Supply fan speed in revolutions per minutes
channel-type.enocean.teachInCMD.label = Teach In
channel-type.enocean.teachInCMD.description = The teach in channel allows to send a teach in msg.
channel-type.enocean.temperature.label = Temperature
channel-type.enocean.temperature.description = Current temperature in degree Celsius
channel-type.enocean.temperatureSetPoint.label = Set Point
channel-type.enocean.temperatureSetPoint.description = Desired temperature
channel-type.enocean.timeSinceLastMaintenance.label = Time Since Last Maintenance
channel-type.enocean.timeSinceLastMaintenance.description = Time since last maintenance was done.
channel-type.enocean.timerOperationMode.label = Timer Operation Mode
channel-type.enocean.timerOperationMode.description = Indicates if timer operation mode is active or not
channel-type.enocean.totalVolatileOrganicCompounds.label = TVOC
channel-type.enocean.totalVolatileOrganicCompounds.description = Total volatile organic compounds level in ppb/
channel-type.enocean.totalusage.label = Total Usage
channel-type.enocean.totalusage.description = Used energy in Kilowatt hours
channel-type.enocean.twoStateSwitch.label = Switching State
channel-type.enocean.twoStateSwitch.description = Switch state according to specific on/off positions (otherwise toggle)
channel-type.enocean.vacationModeToggleEvent.label = Vacation Mode Toggle Event
channel-type.enocean.vacationModeToggleEvent.description = Triggered when the vacation mode has been toggled on the device.
channel-type.enocean.valvePosition.label = Valve Position
channel-type.enocean.valvePosition.description = Indicates the actual percent position of the valve.
channel-type.enocean.ventilationOperationMode.label = Direct Operation Mode Control
channel-type.enocean.ventilationOperationMode.description = Sets the ventilation mode/level.
channel-type.enocean.ventilationOperationMode.state.option.0 = Off
channel-type.enocean.ventilationOperationMode.state.option.1 = Level 1
channel-type.enocean.ventilationOperationMode.state.option.2 = Level 2
channel-type.enocean.ventilationOperationMode.state.option.3 = Level 3
channel-type.enocean.ventilationOperationMode.state.option.4 = Level 4
channel-type.enocean.ventilationOperationMode.state.option.5 = Reserved
channel-type.enocean.ventilationOperationMode.state.option.6 = Reserved
channel-type.enocean.ventilationOperationMode.state.option.7 = Reserved
channel-type.enocean.ventilationOperationMode.state.option.8 = Reserved
channel-type.enocean.ventilationOperationMode.state.option.9 = Reserved
channel-type.enocean.ventilationOperationMode.state.option.10 = Reserved
channel-type.enocean.ventilationOperationMode.state.option.11 = Automatic
channel-type.enocean.ventilationOperationMode.state.option.12 = Automatic on demand
channel-type.enocean.ventilationOperationMode.state.option.13 = Supply air only
channel-type.enocean.ventilationOperationMode.state.option.14 = Exhaust air only
channel-type.enocean.ventilationOperationMode.state.option.15 = Reserved
channel-type.enocean.vibration.label = Vibration Alarm
channel-type.enocean.vibration.description = Vibration alarm state.
channel-type.enocean.virtualRockerswitchB.label = Rocker Switch - Channel B
channel-type.enocean.virtualRockerswitchB.description = The virtual rocker switch channel allows to send rocker msg with channel B.
channel-type.enocean.virtualRollershutterA.label = Rollershutter
channel-type.enocean.virtualRollershutterA.description = This channels allows to control a rollershutter through rocker msg.
channel-type.enocean.virtualSwitchA.label = Rocker Switch
channel-type.enocean.virtualSwitchA.description = The virtual rocker switch channel allows to send rocker msg.
channel-type.enocean.volatileOrganicCompounds.label = VOC
channel-type.enocean.volatileOrganicCompounds.description = Volatile organic compounds level in ppm/
channel-type.enocean.volatileOrganicCompoundsId.label = VOC ID
channel-type.enocean.volatileOrganicCompoundsId.description = Volatile organic compounds identification
channel-type.enocean.wakeUpCycle.label = Wakeup Cycle
channel-type.enocean.wakeUpCycle.description = Defines the cyclic wake-up time. The time corresponding to the number has to be looked up.
channel-type.enocean.weeklyTimerProgramStatus.label = Weekly Timer Program Status
channel-type.enocean.weeklyTimerProgramStatus.description = Indicates if device is running according to configured program or not
channel-type.enocean.windowBreachEvent.label = Window Breach Event
channel-type.enocean.windowBreachEvent.description = Is triggered 10 times in 5 seconds when the sensor detects a break-in attempt.
channel-type.enocean.windowCalibrationState.label = Window Calibration State
channel-type.enocean.windowCalibrationState.description = Describes the window calibration state
channel-type.enocean.windowCalibrationState.state.option.OK = Ok
channel-type.enocean.windowCalibrationState.state.option.ERROR = Error
channel-type.enocean.windowCalibrationState.state.option.INVALID = Invalid
channel-type.enocean.windowCalibrationStep.label = Window Calibration Step
channel-type.enocean.windowCalibrationStep.description = Calibration step that should be performed next
channel-type.enocean.windowCalibrationStep.state.option.NONE = None
channel-type.enocean.windowCalibrationStep.state.option.SASH\ CLOSED\ HANDLE\ CLOSED = Sash closed handle closed
channel-type.enocean.windowCalibrationStep.state.option.SASH\ CLOSED\ HANDLE\ OPEN = Sash closed handle open
channel-type.enocean.windowCalibrationStep.state.option.SASH\ CLOSED\ HANDLE\ TILTED = Sash closed handle tilted
channel-type.enocean.windowCalibrationStep.state.option.SASH\ OPEN\ HANDLE\ CLOSED = Sash open handle closed
channel-type.enocean.windowCalibrationStep.state.option.SASH\ OPEN\ HANDLE\ OPEN = Sash open handle open
channel-type.enocean.windowCalibrationStep.state.option.SASH\ OPEN\ HANDLE\ TILTED = Sash open handle tilted
channel-type.enocean.windowCalibrationStep.state.option.SASH\ TILTED\ HANDLE\ CLOSED = Sash tilted handle closed
channel-type.enocean.windowCalibrationStep.state.option.SASH\ TILTED\ HANDLE\ OPEN = Sash tilted handle open
channel-type.enocean.windowCalibrationStep.state.option.SASH\ TILTED\ HANDLE\ TILTED = Sash tilted handle tilted
channel-type.enocean.windowCalibrationStep.state.option.FRAME\ MAGNET\ VALIDATION = Frame magnet validation
channel-type.enocean.windowHandleState.label = Window Handle State
channel-type.enocean.windowHandleState.description = Describes the window handle state
channel-type.enocean.windowHandleState.state.option.OPEN = Open
channel-type.enocean.windowHandleState.state.option.TILTED = Tilted
channel-type.enocean.windowHandleState.state.option.CLOSED = Closed
channel-type.enocean.windowHandleState.state.option.UP = Up
channel-type.enocean.windowHandleState.state.option.DOWN = Down
channel-type.enocean.windowHandleState.state.option.LEFT = Left
channel-type.enocean.windowHandleState.state.option.RIGHT = Right
channel-type.enocean.windowSashState.label = Window Sash State
channel-type.enocean.windowSashState.description = Describes the window sash state
channel-type.enocean.windowSashState.state.option.OPEN = Open
channel-type.enocean.windowSashState.state.option.TILTED = Tilted
channel-type.enocean.windowSashState.state.option.NOT\ TILTED = Not Tilted
channel-type.enocean.windowSashState.state.option.CLOSED = Closed
# channel types config
channel-type.config.enocean.contact.inverted.label = Invert Open/Closed
channel-type.config.enocean.contact.inverted.description = True for Eltako FPE-2, false otherwise.
channel-type.config.enocean.counter.tariff.label = Tariff info
channel-type.config.enocean.counter.tariff.description = Number of tariff this channel listens to
channel-type.config.enocean.cumulativeValue.tariff.label = Tariff info
channel-type.config.enocean.cumulativeValue.tariff.description = Number of tariff this channel listens to
channel-type.config.enocean.currentFlow.tariff.label = Tariff info
channel-type.config.enocean.currentFlow.tariff.description = Number of tariff this channel listens to
channel-type.config.enocean.currentNumber.tariff.label = Tariff info
channel-type.config.enocean.currentNumber.tariff.description = Number of tariff this channel listens to
channel-type.config.enocean.dimmer.eltakoDimmer.label = Eltako Dimmer
channel-type.config.enocean.dimmer.eltakoDimmer.description = True for Eltako dimmer, false otherwise. Defaults to true for compatibility purpose.
channel-type.config.enocean.dimmer.rampingTime.label = Ramping Time
channel-type.config.enocean.dimmer.rampingTime.description = A5-38-08: Ramping Time (in seconds), 0 = no ramping, 1..255 = seconds to 100%; D2-01-01: 0 = switch, 1-3 = timer 1-3, 4 = stop
channel-type.config.enocean.dimmer.storeValue.label = Store Value
channel-type.config.enocean.dimmer.storeValue.description = Store final value
channel-type.config.enocean.genericChannel.transformationFunction.label = Transformation Function
channel-type.config.enocean.genericChannel.transformationFunction.description = The transformation function, e.g. for transformation type map => filename of mapping file
channel-type.config.enocean.genericChannel.transformationType.label = Transformation Type
channel-type.config.enocean.genericChannel.transformationType.description = The type of the transformation, e.g. "MAP"
channel-type.config.enocean.instantpower.tariff.label = Tariff info
channel-type.config.enocean.instantpower.tariff.description = Number of tariff this channel listens to
channel-type.config.enocean.instantpower.validateValue.label = Validate Value
channel-type.config.enocean.instantpower.validateValue.description = Filter out increases more than 10.0 kWh and decreases less than 1.0 kWh
channel-type.config.enocean.listeningRockerChannel.channel.label = Channel
channel-type.config.enocean.listeningRockerChannel.channel.description = Channel of rocker switch to listen to
channel-type.config.enocean.listeningRockerChannel.channel.option.channelA = Channel A
channel-type.config.enocean.listeningRockerChannel.channel.option.channelB = Channel B
channel-type.config.enocean.listeningRockerChannel.enoceanId.label = EnOceanId
channel-type.config.enocean.listeningRockerChannel.enoceanId.description = EnOcean Id to listen to
channel-type.config.enocean.listeningRockerChannel.handleSecondAction.label = Handle Second Action
channel-type.config.enocean.listeningRockerChannel.handleSecondAction.description = React if selected channel is pressed as second action too
channel-type.config.enocean.listeningRockerChannel.switchMode.label = Switch Mode
channel-type.config.enocean.listeningRockerChannel.switchMode.option.rockerSwitch = Rocker switch
channel-type.config.enocean.listeningRockerChannel.switchMode.option.toggleButtonDir1 = Toggle button (upper button)
channel-type.config.enocean.listeningRockerChannel.switchMode.option.toggleButtonDir2 = Toggle button (lower button)
channel-type.config.enocean.rollershutter.shutTime.label = Shut Time
channel-type.config.enocean.rollershutter.shutTime.description = Time (in seconds) to completely close the rollershutter
channel-type.config.enocean.teachInCMD.manufacturerId.label = Manufacturer Id
channel-type.config.enocean.teachInCMD.manufacturerId.description = Id is used for 4BS teach in with EEP
channel-type.config.enocean.teachInCMD.teachInMSG.label = Teach in Message
channel-type.config.enocean.teachInCMD.teachInMSG.description = Use this message if teach in type and/or manufacturer id are unknown
channel-type.config.enocean.totalusage.tariff.label = Tariff info
channel-type.config.enocean.totalusage.tariff.description = Number of tariff this channel listens to
channel-type.config.enocean.totalusage.validateValue.label = Validate Value
channel-type.config.enocean.totalusage.validateValue.description = Filter out increases more than 10.0 kWh and decreases less than 1.0 kWh
channel-type.config.enocean.virtualRockerChannel.duration.label = Time Between Press and Release Message
channel-type.config.enocean.virtualRockerChannel.switchMode.label = Switch Mode
channel-type.config.enocean.virtualRockerChannel.switchMode.option.rockerSwitch = Rocker switch
channel-type.config.enocean.virtualRockerChannel.switchMode.option.toggleButtonDir1 = Toggle button (upper button)
channel-type.config.enocean.virtualRockerChannel.switchMode.option.toggleButtonDir2 = Toggle button (lower button)
channel-type.config.enocean.virtualRockerswitchB.switchMode.label = Switch Mode
channel-type.config.enocean.virtualRockerswitchB.switchMode.option.rockerSwitch = Rocker Switch
channel-type.config.enocean.virtualRockerswitchB.switchMode.option.toggleButtonDir1 = Toggle Button (upper button)
channel-type.config.enocean.virtualRockerswitchB.switchMode.option.toggleButtonDir2 = Toggle Button (lower button)

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="enocean"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
<thing-type id="gasSensor">
<supported-bridge-type-refs>
<bridge-type-ref id="bridge"/>
</supported-bridge-type-refs>
<label>Gas Sensor</label>
<description>Sensor which sends gas measurement data (EEP: A5-09)</description>
<config-description>
<parameter name="enoceanId" type="text" required="true">
<label>EnOceanId</label>
<description>EnOceanId of device this thing belongs to</description>
</parameter>
<parameter name="receivingEEPId" type="text" required="true">
<label>EEP</label>
<description>EEP which is used by sensor</description>
<options>
<option value="A5_09_02">A5-09-02 CO sensor (temperature sensor optional)</option>
<option value="A5_09_04">A5-09-04 CO2 sensor (temperature and humidity sensor optional)</option>
<option value="A5_09_05">A5-09-05 VOC Sensor</option>
<option value="A5_09_08">A5-09-08 Pure CO2 sensor</option>
<option value="A5_09_09">A5-09-09 Pure CO2 sensor with Power Failure Detection</option>
<option value="A5_09_0C">A5-09-0C VOC Sensor</option>
<option value="A5_09_0D">A5-09-0D VOC, humidity + temperature</option>
</options>
<limitToOptions>true</limitToOptions>
</parameter>
</config-description>
</thing-type>
</thing:thing-descriptions>

View File

@ -103,6 +103,66 @@
<state min="0" max="100" pattern="%.1f %%" readOnly="true"/>
</channel-type>
<channel-type id="co2">
<item-type>Number:Dimensionless</item-type>
<label>CO2</label>
<description>CO2 level in ppm</description>
<category>Carbondioxide</category>
<tags>
<tag>Measurement</tag>
<tag>CO2</tag>
</tags>
<state pattern="%.1f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="co">
<item-type>Number:Dimensionless</item-type>
<label>CO</label>
<description>CO level in ppm</description>
<category>Gas</category>
<tags>
<tag>Measurement</tag>
<tag>CO</tag>
</tags>
<state pattern="%.1f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="volatileOrganicCompounds">
<item-type>Number:Dimensionless</item-type>
<label>VOC</label>
<description>Volatile organic compounds level in ppm/</description>
<category>Gas</category>
<tags>
<tag>Measurement</tag>
<tag>Gas</tag>
</tags>
<state pattern="%.2f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="volatileOrganicCompoundsId">
<item-type>String</item-type>
<label>VOC ID</label>
<description>Volatile organic compounds identification</description>
<category>Gas</category>
<tags>
<tag>Measurement</tag>
<tag>Gas</tag>
</tags>
<state pattern="%s" readOnly="true"/>
</channel-type>
<channel-type id="totalVolatileOrganicCompounds">
<item-type>Number:Dimensionless</item-type>
<label>TVOC</label>
<description>Total volatile organic compounds level in ppb/</description>
<category>Gas</category>
<tags>
<tag>Measurement</tag>
<tag>Gas</tag>
</tags>
<state pattern="%.2f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="setPoint">
<item-type>Number</item-type>
<label>Set Point</label>