]> git.basschouten.com Git - openhab-addons.git/commitdiff
[comfoair] Re-implement device options as channels (#8829)
authorboehan <boehan@users.noreply.github.com>
Mon, 2 Nov 2020 08:19:39 +0000 (09:19 +0100)
committerGitHub <noreply@github.com>
Mon, 2 Nov 2020 08:19:39 +0000 (09:19 +0100)
Signed-off-by: Hans Böhm <h.boehm@gmx.at>
bundles/org.openhab.binding.comfoair/README.md
bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirBindingConstants.java
bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirCommandType.java
bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirHandler.java
bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirSerialConnector.java
bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/ComfoAirDataType.java
bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/DataTypeTemperature.java
bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/i18n/comfoair_de.properties
bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/thing/thing-types.xml

index 25d9ccb3c401db8d91036a9bfea73d0a07701e0c..4d867fc468d9bda0843bcc73dfbc503f2fbb1723 100644 (file)
@@ -47,8 +47,6 @@ For the thing creation, the appropriate serial port has to be set.
 ## Channels
 
 The ComfoAir binding supports the following channels.
-Some channels are added dynamically based on installed device options.
-Available device options are shown in thing properties.
 
 | Channel ID                         | Item Type                | Label                           | Description                                                                                 | Read Only | Advanced |
 |------------------------------------|--------------------------|---------------------------------|---------------------------------------------------------------------------------------------|-----------|----------|
@@ -78,10 +76,10 @@ Available device options are shown in thing properties.
 | temperatures#isT2Sensor            | Switch                   | Sensor T2 Available             | Availability of temperature sensor T2 (indoor in)                                           | true      | yes      |
 | temperatures#isT3Sensor            | Switch                   | Sensor T3 Available             | Availability of temperature sensor T3 (indoor out)                                          | true      | yes      |
 | temperatures#isT4Sensor            | Switch                   | Sensor T4 Available             | Availability of temperature sensor T4 (outdoor out)                                         | true      | yes      |
-| temperatures#isEWTSensor           | Switch                   | EWT Sensor Available            | Availability of EWT temperature sensor                                                      | true      | yes      |
+| temperatures#isEWTSensor           | Switch                   | GHX Sensor Available            | Availability of geothermal heat exchanger temperature sensor                                | true      | yes      |
 | temperatures#isHeaterSensor        | Switch                   | Heater Sensor Available         | Availability of heater temperature sensor                                                   | true      | yes      |
 | temperatures#isCookerhoodSensor    | Switch                   | Cookerhood Sensor Available     | Availability of cookerhood temperature sensor                                               | true      | yes      |
-| temperatures#ewtTemperature        | Number:Temperature       | EWT Temperature                 | Temperature of geothermal heat exchanger sensor                                             | true      | yes      |
+| temperatures#ewtTemperature        | Number:Temperature       | GHX Temperature                 | Temperature of geothermal heat exchanger sensor                                             | true      | yes      |
 | temperatures#heaterTemperature     | Number:Temperature       | Heater Temperature              | Temperature of heater sensor                                                                | true      | yes      |
 | temperatures#cookerhoodTemperature | Number:Temperature       | Cookerhood Temperature          | Temperature of cookerhood sensor                                                            | true      | yes      |
 | **Uptimes**                        |                          |                                 |                                                                                             |           |          |
@@ -114,46 +112,57 @@ Available device options are shown in thing properties.
 | menuP2#RFLongDelay                 | Number                   | Menu P26                        | End delay (RF long actuation) for ventilation level 3 (min)                                 | false     | yes      |
 | menuP2#cookerhoodDelay             | Number                   | Menu P20                        | End delay for cooker hood control (min)                                                     | false     | yes      |
 | **Menu P9: Option States**         |                          |                                 |                                                                                             |           |          |
-| menuP9#chimneyState (dynamic)      | Switch                   | Chimney Control State           | State of the chimney control                                                                | true      | yes      |
-| menuP9#bypassState (dynamic)       | Switch                   | Bypass State                    | State of the bypass (ON = open / OFF = closed)                                              | true      | yes      |
-| menuP9#ewtState (dynamic)          | Switch                   | EWT State                       | State of the EWT valve (ON = open / OFF = closed)                                           | true      | yes      |
-| menuP9#heaterState (dynamic)       | Switch                   | Heater State                    | State of the heater                                                                         | true      | yes      |
+| menuP9#chimneyState                | Switch                   | Chimney Control State           | State of the chimney control                                                                | true      | yes      |
+| menuP9#bypassState                 | Switch                   | Bypass State                    | State of the bypass (ON = open / OFF = closed)                                              | true      | yes      |
+| menuP9#ewtState                    | Switch                   | GHX State                       | State of the geothermal heat exchanger valve (ON = open / OFF = closed)                     | true      | yes      |
+| menuP9#heaterState                 | Switch                   | Heater State                    | State of the heater                                                                         | true      | yes      |
 | menuP9#vControlState               | Switch                   | 0-10V Control State             | State of the 0-10V control                                                                  | true      | yes      |
-| menuP9#frostState (dynamic)        | Switch                   | Antifrost State                 | State of the antifrost control                                                              | true      | yes      |
-| menuP9#cookerhoodState (dynamic)   | Switch                   | Cookerhood State                | State of the cookerhood control                                                             | true      | yes      |
-| menuP9#enthalpyState (dynamic)     | Switch                   | Enthalpy State                  | State of the enthalpy module                                                                | true      | yes      |
+| menuP9#frostState                  | Switch                   | Antifrost State                 | State of the antifrost control                                                              | true      | yes      |
+| menuP9#cookerhoodState             | Switch                   | Cookerhood State                | State of the cookerhood control                                                             | true      | yes      |
+| menuP9#enthalpyState               | Switch                   | Enthalpy State                  | State of the enthalpy module                                                                | true      | yes      |
 | **Error States**                   |                          |                                 |                                                                                             |           |          |
 | errors#filterError                 | Switch                   | Filter Error                    | Filter full                                                                                 | true      | no       |
 | errors#errorsCurrent               | String                   | Errors Current                  | Current errors                                                                              | true      | no       |
 | errors#errorsLast                  | String                   | Errors Last                     | Last errors                                                                                 | true      | yes      |
 | errors#errorsPrelast               | String                   | Errors Prelast                  | Prelast errors                                                                              | true      | yes      |
 | errors#errorsPrePrelast            | String                   | Errors Pre-Prelast              | Pre-Prelast errors                                                                          | true      | yes      |
-| **Bypass Values (dynamic)**        |                          |                                 |                                                                                             |           |          |
+| **Bypass Values**                  |                          |                                 |                                                                                             |           |          |
 | bypass#bypassFactor                | Number                   | Bypass Factor                   | Bypass factor value                                                                         | true      | yes      |
 | bypass#bypassLevel                 | Number                   | Bypass Level                    | Bypass level state                                                                          | true      | yes      |
 | bypass#bypassCorrection            | Number                   | Bypass Correction               | Bypass correction state                                                                     | true      | yes      |
 | bypass#bypassSummer                | Switch                   | Bypass Summer Mode              | Bypass summer mode                                                                          | true      | yes      |
-| **Preheater Values (dynamic)**     |                          |                                 |                                                                                             |           |          |
+| **Preheater Values**               |                          |                                 |                                                                                             |           |          |
 | preheater#preheaterValve           | Number                   | Preheater Valve                 | State of the preheater valve                                                                | true      | yes      |
 | preheater#preheaterFrostProtect    | Switch                   | Frost Protection                | State of the frost protection                                                               | true      | yes      |
 | preheater#preheaterHeating         | Switch                   | Preheater                       | State of the preheater                                                                      | true      | yes      |
 | preheater#preheaterFrostTime       | Number                   | Preheater Frost Time            | Frost minutes                                                                               | true      | yes      |
 | preheater#preheaterSafety          | Number                   | Preheater Frost Safety          | Frost safety setting                                                                        | true      | yes      |
-| **EWT Values (dynamic)**           |                          |                                 |                                                                                             |           |          |
-| ewt#ewtTemperatureLow              | Number:Temperature       | EWT Temperature (low)           | Lower temperature of the geothermal heat exchanger                                          | true      | yes      |
-| ewt#ewtTemperatureHigh             | Number:Temperature       | EWT Temperature (high)          | Upper temperature of the geothermal heat exchanger                                          | true      | yes      |
-| ewt#ewtSpeed                       | Number                   | EWT Speed Up (%)                | Speed up of the geothermal heat exchanger                                                   | true      | yes      |
-| **Heater Values (dynamic)**        |                          |                                 |                                                                                             |           |          |
+| **GHX Values**                     |                          |                                 |                                                                                             |           |          |
+| ewt#ewtTemperatureLow              | Number:Temperature       | GHX Temperature (low)           | Lower temperature of the geothermal heat exchanger                                          | true      | yes      |
+| ewt#ewtTemperatureHigh             | Number:Temperature       | GHX Temperature (high)          | Upper temperature of the geothermal heat exchanger                                          | true      | yes      |
+| ewt#ewtSpeed                       | Number                   | GHX Speed Up (%)                | Speed up of the geothermal heat exchanger                                                   | true      | yes      |
+| **Heater Values**                  |                          |                                 |                                                                                             |           |          |
 | heater#heaterPower                 | Number                   | Heater Power                    | Heater power value                                                                          | true      | yes      |
 | heater#heaterPowerI                | Number                   | Heater Power I-parameter        | Heater power I-parameter value                                                              | true      | yes      |
 | heater#heaterTargetTemperature     | Number:Temperature       | Heater Target Temperature       | Target temperature of the heater                                                            | true      | yes      |
-| **Cookerhood Values (dynamic)**    |                          |                                 |                                                                                             |           |          |
+| **Cookerhood Values**              |                          |                                 |                                                                                             |           |          |
 | cookerhood#cookerhoodSpeed         | Number                   | Cookerhood Speed Up (%)         | Speed up of the cookerhood                                                                  | true      | yes      |
-| **Enthalpy Values (dynamic)**      |                          |                                 |                                                                                             |           |          |
+| **Enthalpy Values**                |                          |                                 |                                                                                             |           |          |
 | enthalpy#enthalpyTemperature       | Number:Temperature       | Enthalpy Sensor Temperature     | Temperature of the enthalpy sensor                                                          | true      | yes      |
 | enthalpy#enthalpyHumidity          | Number                   | Enthalpy Sensor Humidity        | Humidity of the enthalpy sensor                                                             | true      | yes      |
 | enthalpy#enthalpyLevel             | Number                   | Enthalpy Sensor Level           | Level of the enthalpy sensor                                                                | true      | yes      |
 | enthalpy#enthalpyTime              | Number                   | Enthalpy Sensor Timer           | Timer state of the enthalpy sensor                                                          | true      | yes      |
+| **Option Settings**                |                          |                                 |                                                                                             |           |          |
+| options#isPreheater                | Switch                   | Preheater                       | Preheater option installed                                                                  | true      | yes      |
+| options#isBypass                   | Switch                   | Bypass                          | Bypass option installed                                                                     | true      | yes      |
+| options#recuType                   | Number                   | ComfoAir Type                   | Type of the ComfoAir (1 = left / 2 = right)                                                 | true      | yes      |
+| options#recuSize                   | Number                   | ComfoAir Size                   | Size of the ComfoAir (1 = big / 2 = small)                                                  | true      | yes      |
+| options#isChimney                  | Switch                   | Chimney                         | Chimney option installed                                                                    | true      | yes      |
+| options#isCookerhood               | Switch                   | Cookerhood                      | Cookerhood option installed                                                                 | true      | yes      |
+| options#isHeater                   | Switch                   | Heater                          | Heater option installed                                                                     | true      | yes      |
+| options#isEnthalpy                 | Number                   | Enthalpy                        | Enthalpy option installed                                                                   | true      | yes      |
+| options#isEWT                      | Number                   | Geothermal Heat Exchanger       | Geothermal heat exchanger option installed                                                  | true      | yes      |
+| options#analogPriority             | Number                   | Analog Priority                 | Priority of analog inputs for highest fan level                                             | true      | yes      |
 | **Inputs**                         |                          |                                 |                                                                                             |           |          |
 | inputs#isL1Switch                  | Switch                   | L1 Switch                       | Availability of L1 step switch                                                              | true      | yes      |
 | inputs#isL2Switch                  | Switch                   | L2 Switch                       | Availability of L2 step switch                                                              | true      | yes      |
@@ -214,7 +223,7 @@ Number      comfoairOutgoingFan                     "Exhaust capacity [%d %%]"                      <fan_out>       (ComfoAir)
 Number comfoairFanIn0                          "Supply capacity - level 0 [%d %%]"             <fan_in>        (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:ventilation#fanIn0"}
 Number comfoairFanOut0                         "Exhaust capacity - level 0 [%d %%]"            <fan_out>       (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:ventilation#fanOut0"}
 Switch comfoairBypassMode                      "Bypass [MAP(comfoair_bypass.map):%s]"          <climate>       (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:menuP9#bypassState"}
-Switch comfoairEWTMode                         "EWT [MAP(comfoair_on-off.map):%s]"             <climate>       (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:menuP9#ewtState"}
+Switch comfoairGHXMode                         "GHX [MAP(comfoair_on-off.map):%s]"             <climate>       (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:menuP9#ewtState"}
 Switch comfoairChimneyMode                     "Fire programme [MAP(comfoair_on-off.map):%s]"  <climate>       (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:menuP9#chimneyState"}
 Switch comfoairHeaterMode                      "Heater [MAP(comfoair_on-off.map):%s]"          <climate>       (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:menuP9#heaterState"}
 Switch comfoairCookerHoodMode                  "Extractor hood [MAP(comfoair_on-off.map):%s]"  <climate>       (ComfoAir)                      {channel="comfoair:comfoair:myComfoAir:menuP9#cookerhoodState"}
@@ -246,7 +255,7 @@ sitemap comfoair label="ComfoAir" {
                Text item=comfoairIncomingFan valuecolor=["black"]
                Text item=comfoairBypassMode valuecolor=["black"]
                Text item=comfoairOutgoingFan valuecolor=["black"]
-               Text item=comfoairEWTMode valuecolor=[OFF="silver", ON="black"]
+               Text item=comfoairGHXMode valuecolor=[OFF="silver", ON="black"]
                Text item=comfoairEfficiency valuecolor=["black"]
                Text item=comfoairFreezeMode valuecolor=[OFF="black", ON="red"]
                Text item=comfoairFilterRuntime_Message valuecolor=["black"]
index 8909b6e70dba9440b16100fdc3cf52125dcfe7e3..955a145b266be6e1afc924e9544aa2ed7571be50 100644 (file)
@@ -29,22 +29,9 @@ public class ComfoAirBindingConstants {
     public static final ThingTypeUID THING_TYPE_COMFOAIR_GENERIC = new ThingTypeUID(BINDING_ID, "comfoair");
 
     // Thing properties
-    // General properties
     public static final String PROPERTY_SOFTWARE_MAIN_VERSION = "SOFTWARE_VERSION_MAIN";
     public static final String PROPERTY_SOFTWARE_MINOR_VERSION = "SOFTWARE_VERSION_MINOR";
     public static final String PROPERTY_DEVICE_NAME = "DEVICE_NAME";
-    // Installed options
-    public static final String PROPERTY_OPTION_PREHEATER = "OPTION_PREHEATER";
-    public static final String PROPERTY_OPTION_BYPASS = "OPTION_BYPASS";
-    public static final String PROPERTY_OPTION_RECU_TYPE = "DEVICE_TYPE";
-    public static final String PROPERTY_OPTION_RECU_SIZE = "DEVICE_SIZE";
-    public static final String PROPERTY_OPTION_CHIMNEY = "OPTION_CHIMNEY";
-    public static final String PROPERTY_OPTION_COOKERHOOD = "OPTION_COOKERHOOD";
-    public static final String PROPERTY_OPTION_HEATER = "OPTION_HEATER";
-    public static final String PROPERTY_OPTION_ENTHALPY = "OPTION_ENTHALPY";
-    public static final String PROPERTY_OPTION_EWT = "OPTION_EWT";
-    // Common option states
-    public static final String[] COMMON_OPTION_STATES = { "Not installed", "Installed" };
 
     // Channel groups
     public static final String CG_CONTROL_PREFIX = "bindingControl#";
@@ -53,7 +40,7 @@ public class ComfoAirBindingConstants {
     public static final String CG_TIMES_PREFIX = "times#";
     public static final String CG_BYPASS_PREFIX = "bypass#";
     public static final String CG_PREHEATER_PREFIX = "preheater#";
-    public static final String CG_EWT_PREFIX = "ewt#";
+    public static final String CG_GHX_PREFIX = "ewt#";
     public static final String CG_HEATER_PREFIX = "heater#";
     public static final String CG_COOKERHOOD_PREFIX = "cookerhood#";
     public static final String CG_ENTHALPY_PREFIX = "enthalpy#";
@@ -97,10 +84,10 @@ public class ComfoAirBindingConstants {
     public static final String CHANNEL_IS_SENSOR_T2 = "isT2Sensor";
     public static final String CHANNEL_IS_SENSOR_T3 = "isT3Sensor";
     public static final String CHANNEL_IS_SENSOR_T4 = "isT4Sensor";
-    public static final String CHANNEL_IS_SENSOR_EWT = "isEWTSensor";
+    public static final String CHANNEL_IS_SENSOR_GHX = "isEWTSensor";
     public static final String CHANNEL_IS_SENSOR_HEATER = "isHeaterSensor";
     public static final String CHANNEL_IS_SENSOR_COOKERHOOD = "isCookerhoodSensor";
-    public static final String CHANNEL_TEMP_EWT = "ewtTemperature";
+    public static final String CHANNEL_TEMP_GHX = "ewtTemperature";
     public static final String CHANNEL_TEMP_HEATER = "heaterTemperature";
     public static final String CHANNEL_TEMP_COOKERHOOD = "cookerhoodTemperature";
     // Time channels
@@ -123,10 +110,10 @@ public class ComfoAirBindingConstants {
     public static final String CHANNEL_PREHEATER_HEATING = "preheaterHeating";
     public static final String CHANNEL_PREHEATER_FROST_TIME = "preheaterFrostTime";
     public static final String CHANNEL_PREHEATER_SAFETY = "preheaterSafety";
-    // EWT channels
-    public static final String CHANNEL_EWT_TEMP_LOW = "ewtTemperatureLow";
-    public static final String CHANNEL_EWT_TEMP_HIGH = "ewtTemperatureHigh";
-    public static final String CHANNEL_EWT_SPEED = "ewtSpeed";
+    // GHX channels
+    public static final String CHANNEL_GHX_TEMP_LOW = "ewtTemperatureLow";
+    public static final String CHANNEL_GHX_TEMP_HIGH = "ewtTemperatureHigh";
+    public static final String CHANNEL_GHX_SPEED = "ewtSpeed";
     // Heater channels
     public static final String CHANNEL_HEATER_POWER = "heaterPower";
     public static final String CHANNEL_HEATER_POWER_I = "heaterPowerI";
@@ -138,6 +125,17 @@ public class ComfoAirBindingConstants {
     public static final String CHANNEL_ENTHALPY_HUMIDITY = "enthalpyHumidity";
     public static final String CHANNEL_ENTHALPY_LEVEL = "enthalpyLevel";
     public static final String CHANNEL_ENTHALPY_TIME = "enthalpyTime";
+    // Options channels
+    public static final String CHANNEL_OPTION_PREHEATER = "isPreheater";
+    public static final String CHANNEL_OPTION_BYPASS = "isBypass";
+    public static final String CHANNEL_OPTION_RECU_TYPE = "recuType";
+    public static final String CHANNEL_OPTION_RECU_SIZE = "recuSize";
+    public static final String CHANNEL_OPTION_CHIMNEY = "isChimney";
+    public static final String CHANNEL_OPTION_COOKERHOOD = "isCookerhood";
+    public static final String CHANNEL_OPTION_HEATER = "isHeater";
+    public static final String CHANNEL_OPTION_ENTHALPY = "isEnthalpy";
+    public static final String CHANNEL_OPTION_GHX = "isEWT";
+    public static final String CHANNEL_OPTION_PRIORITY = "analogPriority";
     // Menu P1 channels
     public static final String CHANNEL_MENU20_MODE = "menu20Mode";
     public static final String CHANNEL_MENU21_MODE = "menu21Mode";
@@ -161,7 +159,7 @@ public class ComfoAirBindingConstants {
     // Menu P9 channels
     public static final String CHANNEL_CHIMNEY_STATE = "chimneyState";
     public static final String CHANNEL_BYPASS_STATE = "bypassState";
-    public static final String CHANNEL_EWT_STATE = "ewtState";
+    public static final String CHANNEL_GHX_STATE = "ewtState";
     public static final String CHANNEL_HEATER_STATE = "heaterState";
     public static final String CHANNEL_VCONTROL_STATE = "vControlState";
     public static final String CHANNEL_FROST_STATE = "frostState";
@@ -189,7 +187,6 @@ public class ComfoAirBindingConstants {
     public static final String CHANNEL_RF_MIN = "RFMin";
     public static final String CHANNEL_RF_MAX = "RFMax";
     public static final String CHANNEL_RF_VALUE = "RFValue";
-    public static final String CHANNEL_ANALOG_PRIORITY = "analogPriority";
     // Error channels
     public static final String CHANNEL_FILTER_ERROR = "filterError";
     public static final String CHANNEL_ERRORS_CURRENT = "errorsCurrent";
index aab1d3404091db44120a968c0d296356198487c0..29f3a7f98493c57bd9e059177f8a10f526371954 100644 (file)
@@ -136,7 +136,7 @@ public enum ComfoAirCommandType {
     BYPASS_STATE(ComfoAirBindingConstants.CG_MENUP9_PREFIX + ComfoAirBindingConstants.CHANNEL_BYPASS_STATE,
             DataTypeBoolean.getInstance(), Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 8 },
             0x02),
-    EWT_STATE(ComfoAirBindingConstants.CG_MENUP9_PREFIX + ComfoAirBindingConstants.CHANNEL_EWT_STATE,
+    GHX_STATE(ComfoAirBindingConstants.CG_MENUP9_PREFIX + ComfoAirBindingConstants.CHANNEL_GHX_STATE,
             DataTypeBoolean.getInstance(), Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 8 },
             0x04),
     HEATER_STATE(ComfoAirBindingConstants.CG_MENUP9_PREFIX + ComfoAirBindingConstants.CHANNEL_HEATER_STATE,
@@ -272,7 +272,7 @@ public enum ComfoAirCommandType {
     IS_T4_SENSOR(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_IS_SENSOR_T4,
             DataTypeBoolean.getInstance(), Constants.REQUEST_GET_TEMPS, Constants.REPLY_GET_TEMPS, new int[] { 5 },
             0x08),
-    IS_EWT_SENSOR(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_IS_SENSOR_EWT,
+    IS_GHX_SENSOR(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_IS_SENSOR_GHX,
             DataTypeBoolean.getInstance(), Constants.REQUEST_GET_TEMPS, Constants.REPLY_GET_TEMPS, new int[] { 5 },
             0x10),
     IS_HEATER_SENSOR(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_IS_SENSOR_HEATER,
@@ -282,76 +282,77 @@ public enum ComfoAirCommandType {
             ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_IS_SENSOR_COOKERHOOD,
             DataTypeBoolean.getInstance(), Constants.REQUEST_GET_TEMPS, Constants.REPLY_GET_TEMPS, new int[] { 5 },
             0x40),
-    EWT_TEMPERATURE(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_TEMP_EWT,
+    GHX_TEMPERATURE(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_TEMP_GHX,
             DataTypeTemperature.getInstance(), Constants.REQUEST_GET_TEMPS, Constants.REPLY_GET_TEMPS, new int[] { 6 }),
     HEATER_TEMPERATURE(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_TEMP_HEATER,
             DataTypeTemperature.getInstance(), Constants.REQUEST_GET_TEMPS, Constants.REPLY_GET_TEMPS, new int[] { 7 }),
     COOKERHOOD_TEMPERATURE(ComfoAirBindingConstants.CG_TEMPS_PREFIX + ComfoAirBindingConstants.CHANNEL_TEMP_COOKERHOOD,
             DataTypeTemperature.getInstance(), Constants.REQUEST_GET_TEMPS, Constants.REPLY_GET_TEMPS, new int[] { 8 }),
-    EWT_SPEED(ComfoAirBindingConstants.CG_EWT_PREFIX + ComfoAirBindingConstants.CHANNEL_EWT_SPEED,
-            DataTypeNumber.getInstance(), Constants.REQUEST_SET_EWT, 5, 2,
-            new ComfoAirCommandType[] { EWT_STATE, EWT_TEMPERATURE }, Constants.REQUEST_GET_EWT,
-            Constants.REPLY_GET_EWT, new int[] { 2 }),
-    EWT_TEMPERATURE_LOW(ComfoAirBindingConstants.CG_EWT_PREFIX + ComfoAirBindingConstants.CHANNEL_EWT_TEMP_LOW,
-            DataTypeTemperature.getInstance(), Constants.REQUEST_SET_EWT, 5, 0, new ComfoAirCommandType[] { EWT_STATE },
-            Constants.REQUEST_GET_EWT, Constants.REPLY_GET_EWT, new int[] { 0 }),
-    EWT_TEMPERATURE_HIGH(ComfoAirBindingConstants.CG_EWT_PREFIX + ComfoAirBindingConstants.CHANNEL_EWT_TEMP_HIGH,
-            DataTypeTemperature.getInstance(), Constants.REQUEST_SET_EWT, 5, 1, new ComfoAirCommandType[] { EWT_STATE },
-            Constants.REQUEST_GET_EWT, Constants.REPLY_GET_EWT, new int[] { 1 }),
+    GHX_SPEED(ComfoAirBindingConstants.CG_GHX_PREFIX + ComfoAirBindingConstants.CHANNEL_GHX_SPEED,
+            DataTypeNumber.getInstance(), Constants.REQUEST_SET_GHX, 5, 2,
+            new ComfoAirCommandType[] { GHX_STATE, GHX_TEMPERATURE }, Constants.REQUEST_GET_GHX,
+            Constants.REPLY_GET_GHX, new int[] { 2 }),
+    GHX_TEMPERATURE_LOW(ComfoAirBindingConstants.CG_GHX_PREFIX + ComfoAirBindingConstants.CHANNEL_GHX_TEMP_LOW,
+            DataTypeTemperature.getInstance(), Constants.REQUEST_SET_GHX, 5, 0, new ComfoAirCommandType[] { GHX_STATE },
+            Constants.REQUEST_GET_GHX, Constants.REPLY_GET_GHX, new int[] { 0 }),
+    GHX_TEMPERATURE_HIGH(ComfoAirBindingConstants.CG_GHX_PREFIX + ComfoAirBindingConstants.CHANNEL_GHX_TEMP_HIGH,
+            DataTypeTemperature.getInstance(), Constants.REQUEST_SET_GHX, 5, 1, new ComfoAirCommandType[] { GHX_STATE },
+            Constants.REQUEST_GET_GHX, Constants.REPLY_GET_GHX, new int[] { 1 }),
     COOKERHOOD_SPEED(ComfoAirBindingConstants.CG_COOKERHOOD_PREFIX + ComfoAirBindingConstants.CHANNEL_COOKERHOOD_SPEED,
-            DataTypeNumber.getInstance(), Constants.REQUEST_SET_EWT, 5, 3,
-            new ComfoAirCommandType[] { COOKERHOOD_STATE, COOKERHOOD_TEMPERATURE }, Constants.REQUEST_GET_EWT,
-            Constants.REPLY_GET_EWT, new int[] { 3 }),
+            DataTypeNumber.getInstance(), Constants.REQUEST_SET_GHX, 5, 3,
+            new ComfoAirCommandType[] { COOKERHOOD_STATE, COOKERHOOD_TEMPERATURE }, Constants.REQUEST_GET_GHX,
+            Constants.REPLY_GET_GHX, new int[] { 3 }),
     HEATER_POWER(ComfoAirBindingConstants.CG_HEATER_PREFIX + ComfoAirBindingConstants.CHANNEL_HEATER_POWER,
-            DataTypeNumber.getInstance(), Constants.REQUEST_GET_EWT, Constants.REPLY_GET_EWT, new int[] { 4 }),
+            DataTypeNumber.getInstance(), Constants.REQUEST_GET_GHX, Constants.REPLY_GET_GHX, new int[] { 4 }),
     HEATER_POWER_I(ComfoAirBindingConstants.CG_HEATER_PREFIX + ComfoAirBindingConstants.CHANNEL_HEATER_POWER_I,
-            DataTypeNumber.getInstance(), Constants.REQUEST_GET_EWT, Constants.REPLY_GET_EWT, new int[] { 5 }),
+            DataTypeNumber.getInstance(), Constants.REQUEST_GET_GHX, Constants.REPLY_GET_GHX, new int[] { 5 }),
     HEATER_TARGET_TEMPERATURE(
             ComfoAirBindingConstants.CG_HEATER_PREFIX + ComfoAirBindingConstants.CHANNEL_HEATER_TEMP_TARGET,
-            DataTypeTemperature.getInstance(), Constants.REQUEST_SET_EWT, 5, 4,
-            new ComfoAirCommandType[] { HEATER_STATE, HEATER_POWER, HEATER_TEMPERATURE }, Constants.REQUEST_GET_EWT,
-            Constants.REPLY_GET_EWT, new int[] { 6 }),
-    IS_PREHEATER(ComfoAirBindingConstants.PROPERTY_OPTION_PREHEATER, DataTypeBoolean.getInstance(),
-            Constants.REQUEST_SET_STATES, 8, 0,
+            DataTypeTemperature.getInstance(), Constants.REQUEST_SET_GHX, 5, 4,
+            new ComfoAirCommandType[] { HEATER_STATE, HEATER_POWER, HEATER_TEMPERATURE }, Constants.REQUEST_GET_GHX,
+            Constants.REPLY_GET_GHX, new int[] { 6 }),
+    IS_PREHEATER(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_PREHEATER,
+            DataTypeBoolean.getInstance(), Constants.REQUEST_SET_STATES, 8, 0,
             new ComfoAirCommandType[] { OUTDOOR_TEMPERATURE_IN, INDOOR_TEMPERATURE_IN, PREHEATER_FROST_PROTECT,
                     PREHEATER_FROST_TIME, PREHEATER_HEATING, FROST_STATE, PREHEATER_OPTION, PREHEATER_TIME,
                     PREHEATER_VALVE },
             Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 0 }),
-    IS_BYPASS(ComfoAirBindingConstants.PROPERTY_OPTION_BYPASS, DataTypeBoolean.getInstance(),
-            Constants.REQUEST_SET_STATES, 8, 1,
+    IS_BYPASS(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_BYPASS,
+            DataTypeBoolean.getInstance(), Constants.REQUEST_SET_STATES, 8, 1,
             new ComfoAirCommandType[] { INDOOR_TEMPERATURE_IN, OUTDOOR_TEMPERATURE_OUT }, Constants.REQUEST_GET_STATES,
             Constants.REPLY_GET_STATES, new int[] { 1 }),
-    RECU_TYPE(ComfoAirBindingConstants.PROPERTY_OPTION_RECU_TYPE, DataTypeNumber.getInstance(),
-            new int[] { 0x01, 0x02 }, Constants.REQUEST_SET_STATES, 8, 2,
+    RECU_TYPE(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_RECU_TYPE,
+            DataTypeNumber.getInstance(), new int[] { 0x01, 0x02 }, Constants.REQUEST_SET_STATES, 8, 2,
             new ComfoAirCommandType[] { FAN_IN_PERCENT, FAN_OUT_PERCENT, INDOOR_TEMPERATURE_IN, INDOOR_TEMPERATURE_OUT,
                     OUTDOOR_TEMPERATURE_IN, OUTDOOR_TEMPERATURE_OUT },
             Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 2 }),
-    RECU_SIZE(ComfoAirBindingConstants.PROPERTY_OPTION_RECU_SIZE, DataTypeNumber.getInstance(),
-            new int[] { 0x01, 0x02 }, Constants.REQUEST_SET_STATES, 8, 3,
+    RECU_SIZE(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_RECU_SIZE,
+            DataTypeNumber.getInstance(), new int[] { 0x01, 0x02 }, Constants.REQUEST_SET_STATES, 8, 3,
             new ComfoAirCommandType[] { FAN_IN_PERCENT, FAN_OUT_PERCENT, FAN_IN_0, FAN_IN_1, FAN_IN_2, FAN_IN_3,
                     FAN_OUT_0, FAN_OUT_1, FAN_OUT_2, FAN_OUT_3 },
             Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 3 }),
-    IS_CHIMNEY(ComfoAirBindingConstants.PROPERTY_OPTION_CHIMNEY, DataTypeBoolean.getInstance(), new int[] { 0x01 },
-            Constants.REQUEST_SET_STATES, 8, 4, Constants.EMPTY_TYPE_ARRAY, Constants.REQUEST_GET_STATES,
-            Constants.REPLY_GET_STATES, new int[] { 4 }, 0x01),
-    IS_COOKERHOOD(ComfoAirBindingConstants.PROPERTY_OPTION_COOKERHOOD, DataTypeBoolean.getInstance(),
-            new int[] { 0x02 }, Constants.REQUEST_SET_STATES, 8, 4,
+    IS_CHIMNEY(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_CHIMNEY,
+            DataTypeBoolean.getInstance(), new int[] { 0x01 }, Constants.REQUEST_SET_STATES, 8, 4,
+            Constants.EMPTY_TYPE_ARRAY, Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 4 },
+            0x01),
+    IS_COOKERHOOD(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_COOKERHOOD,
+            DataTypeBoolean.getInstance(), new int[] { 0x02 }, Constants.REQUEST_SET_STATES, 8, 4,
             new ComfoAirCommandType[] { COOKERHOOD_DELAY, COOKERHOOD_STATE, COOKERHOOD_SPEED, COOKERHOOD_TEMPERATURE },
             Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 4 }, 0x02),
-    IS_HEATER(ComfoAirBindingConstants.PROPERTY_OPTION_HEATER, DataTypeBoolean.getInstance(), new int[] { 0x04 },
-            Constants.REQUEST_SET_STATES, 8, 4,
+    IS_HEATER(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_HEATER,
+            DataTypeBoolean.getInstance(), new int[] { 0x04 }, Constants.REQUEST_SET_STATES, 8, 4,
             new ComfoAirCommandType[] { HEATER_TARGET_TEMPERATURE, HEATER_POWER, HEATER_STATE, HEATER_POWER_I,
                     HEATER_TEMPERATURE },
             Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 4 }, 0x04),
-    IS_ENTHALPY(ComfoAirBindingConstants.PROPERTY_OPTION_ENTHALPY, DataTypeNumber.getInstance(),
-            new int[] { 0x00, 0x01, 0x02 }, Constants.REQUEST_SET_STATES, 8, 6,
+    IS_ENTHALPY(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_ENTHALPY,
+            DataTypeNumber.getInstance(), new int[] { 0x00, 0x01, 0x02 }, Constants.REQUEST_SET_STATES, 8, 6,
             new ComfoAirCommandType[] { ENTHALPY_TEMPERATURE, ENTHALPY_HUMIDITY, ENTHALPY_LEVEL, ENTHALPY_STATE,
                     ENTHALPY_TIME },
             Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 9 }),
-    IS_EWT(ComfoAirBindingConstants.PROPERTY_OPTION_EWT, DataTypeNumber.getInstance(), new int[] { 0x00, 0x01, 0x02 },
-            Constants.REQUEST_SET_STATES, 8, 7,
-            new ComfoAirCommandType[] { EWT_SPEED, EWT_TEMPERATURE_LOW, EWT_TEMPERATURE_HIGH, EWT_STATE,
-                    EWT_TEMPERATURE },
+    IS_GHX(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_GHX,
+            DataTypeNumber.getInstance(), new int[] { 0x00, 0x01, 0x02 }, Constants.REQUEST_SET_STATES, 8, 7,
+            new ComfoAirCommandType[] { GHX_SPEED, GHX_TEMPERATURE_LOW, GHX_TEMPERATURE_HIGH, GHX_STATE,
+                    GHX_TEMPERATURE },
             Constants.REQUEST_GET_STATES, Constants.REPLY_GET_STATES, new int[] { 10 }),
     SOFTWARE_MAIN_VERSION(ComfoAirBindingConstants.PROPERTY_SOFTWARE_MAIN_VERSION, DataTypeNumber.getInstance(),
             Constants.REQUEST_GET_FIRMWARE, Constants.REPLY_GET_FIRMWARE, new int[] { 0 }),
@@ -448,7 +449,7 @@ public enum ComfoAirCommandType {
     RF_VALUE(ComfoAirBindingConstants.CG_ANALOGRF_PREFIX + ComfoAirBindingConstants.CHANNEL_RF_VALUE,
             DataTypeNumber.getInstance(), Constants.REQUEST_SET_ANALOGS, 19, 17, Constants.EMPTY_TYPE_ARRAY,
             Constants.REQUEST_GET_ANALOGS, Constants.REPLY_GET_ANALOGS, new int[] { 17 }),
-    ANALOG_MODE(ComfoAirBindingConstants.CG_ANALOGRF_PREFIX + ComfoAirBindingConstants.CHANNEL_ANALOG_PRIORITY,
+    ANALOG_MODE(ComfoAirBindingConstants.CG_OPTIONS_PREFIX + ComfoAirBindingConstants.CHANNEL_OPTION_PRIORITY,
             DataTypeNumber.getInstance(), new int[] { 0x00, 0x01 }, Constants.REQUEST_SET_ANALOGS, 19, 18,
             Constants.EMPTY_TYPE_ARRAY, Constants.REQUEST_GET_ANALOGS, Constants.REPLY_GET_ANALOGS, new int[] { 18 }),
     ANALOG1_VOLT(ComfoAirBindingConstants.CG_ANALOG1_PREFIX + ComfoAirBindingConstants.CHANNEL_ANALOG_VOLT,
@@ -684,9 +685,9 @@ public enum ComfoAirCommandType {
         public static final int REPLY_GET_PREHEATER = 0xe2;
         public static final int REQUEST_GET_RF = 0xe5;
         public static final int REPLY_GET_RF = 0xe6;
-        public static final int REQUEST_GET_EWT = 0xeb;
-        public static final int REPLY_GET_EWT = 0xec;
-        public static final int REQUEST_SET_EWT = 0xed;
+        public static final int REQUEST_GET_GHX = 0xeb;
+        public static final int REPLY_GET_GHX = 0xec;
+        public static final int REQUEST_SET_GHX = 0xed;
 
         public static final String[] EMPTY_STRING_ARRAY = new String[0];
         public static final int[] EMPTY_INT_ARRAY = new int[0];
index f11d20ff7f6c4439f4b3e5ca3c9ea65303aaeec0..144d242ef6d8c1bb96ad03d91dffacc1f332a06c 100644 (file)
@@ -12,7 +12,6 @@
  */
 package org.openhab.binding.comfoair.internal;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -31,7 +30,6 @@ import org.openhab.core.thing.Thing;
 import org.openhab.core.thing.ThingStatus;
 import org.openhab.core.thing.ThingStatusDetail;
 import org.openhab.core.thing.binding.BaseThingHandler;
-import org.openhab.core.thing.binding.builder.ThingBuilder;
 import org.openhab.core.types.Command;
 import org.openhab.core.types.RefreshType;
 import org.openhab.core.types.State;
@@ -116,79 +114,6 @@ public class ComfoAirHandler extends BaseThingHandler {
                 if (comfoAirConnector != null) {
                     updateStatus(ThingStatus.ONLINE);
                     pullDeviceProperties();
-                    Map<String, String> properties = thing.getProperties();
-
-                    List<Channel> toBeRemovedChannels = new ArrayList<>();
-                    if (properties.get(ComfoAirBindingConstants.PROPERTY_OPTION_PREHEATER)
-                            .equals(ComfoAirBindingConstants.COMMON_OPTION_STATES[0])) {
-                        toBeRemovedChannels.addAll(getThing()
-                                .getChannelsOfGroup(ComfoAirBindingConstants.CG_PREHEATER_PREFIX.replaceAll("#$", "")));
-                        Channel stateChannel = getThing().getChannel(ComfoAirBindingConstants.CG_MENUP9_PREFIX
-                                + ComfoAirBindingConstants.CHANNEL_FROST_STATE);
-                        if (stateChannel != null) {
-                            toBeRemovedChannels.add(stateChannel);
-                        }
-                    }
-                    if (properties.get(ComfoAirBindingConstants.PROPERTY_OPTION_BYPASS)
-                            .equals(ComfoAirBindingConstants.COMMON_OPTION_STATES[0])) {
-                        toBeRemovedChannels.addAll(getThing()
-                                .getChannelsOfGroup(ComfoAirBindingConstants.CG_BYPASS_PREFIX.replaceAll("#$", "")));
-                        Channel stateChannel = getThing().getChannel(ComfoAirBindingConstants.CG_MENUP9_PREFIX
-                                + ComfoAirBindingConstants.CHANNEL_BYPASS_STATE);
-                        if (stateChannel != null) {
-                            toBeRemovedChannels.add(stateChannel);
-                        }
-                    }
-                    if (properties.get(ComfoAirBindingConstants.PROPERTY_OPTION_CHIMNEY)
-                            .equals(ComfoAirBindingConstants.COMMON_OPTION_STATES[0])) {
-                        Channel stateChannel = getThing().getChannel(ComfoAirBindingConstants.CG_MENUP9_PREFIX
-                                + ComfoAirBindingConstants.CHANNEL_CHIMNEY_STATE);
-                        if (stateChannel != null) {
-                            toBeRemovedChannels.add(stateChannel);
-                        }
-                    }
-                    if (properties.get(ComfoAirBindingConstants.PROPERTY_OPTION_COOKERHOOD)
-                            .equals(ComfoAirBindingConstants.COMMON_OPTION_STATES[0])) {
-                        toBeRemovedChannels.addAll(getThing().getChannelsOfGroup(
-                                ComfoAirBindingConstants.CG_COOKERHOOD_PREFIX.replaceAll("#$", "")));
-                        Channel stateChannel = getThing().getChannel(ComfoAirBindingConstants.CG_MENUP9_PREFIX
-                                + ComfoAirBindingConstants.CHANNEL_COOKERHOOD_STATE);
-                        if (stateChannel != null) {
-                            toBeRemovedChannels.add(stateChannel);
-                        }
-                    }
-                    if (properties.get(ComfoAirBindingConstants.PROPERTY_OPTION_HEATER)
-                            .equals(ComfoAirBindingConstants.COMMON_OPTION_STATES[0])) {
-                        toBeRemovedChannels.addAll(getThing()
-                                .getChannelsOfGroup(ComfoAirBindingConstants.CG_HEATER_PREFIX.replaceAll("#$", "")));
-                        Channel stateChannel = getThing().getChannel(ComfoAirBindingConstants.CG_MENUP9_PREFIX
-                                + ComfoAirBindingConstants.CHANNEL_HEATER_STATE);
-                        if (stateChannel != null) {
-                            toBeRemovedChannels.add(stateChannel);
-                        }
-                    }
-                    if (properties.get(ComfoAirBindingConstants.PROPERTY_OPTION_ENTHALPY)
-                            .equals(ComfoAirBindingConstants.COMMON_OPTION_STATES[0])) {
-                        toBeRemovedChannels.addAll(getThing()
-                                .getChannelsOfGroup(ComfoAirBindingConstants.CG_ENTHALPY_PREFIX.replaceAll("#$", "")));
-                        Channel stateChannel = getThing().getChannel(ComfoAirBindingConstants.CG_MENUP9_PREFIX
-                                + ComfoAirBindingConstants.CHANNEL_ENTHALPY_STATE);
-                        if (stateChannel != null) {
-                            toBeRemovedChannels.add(stateChannel);
-                        }
-                    }
-                    if (properties.get(ComfoAirBindingConstants.PROPERTY_OPTION_EWT)
-                            .equals(ComfoAirBindingConstants.COMMON_OPTION_STATES[0])) {
-                        toBeRemovedChannels.addAll(getThing()
-                                .getChannelsOfGroup(ComfoAirBindingConstants.CG_EWT_PREFIX.replaceAll("#$", "")));
-                        Channel stateChannel = getThing().getChannel(
-                                ComfoAirBindingConstants.CG_MENUP9_PREFIX + ComfoAirBindingConstants.CHANNEL_EWT_STATE);
-                        if (stateChannel != null) {
-                            toBeRemovedChannels.add(stateChannel);
-                        }
-                    }
-                    ThingBuilder builder = editThing().withoutChannels(toBeRemovedChannels);
-                    updateThing(builder.build());
 
                     List<Channel> channels = this.thing.getChannels();
 
@@ -275,9 +200,9 @@ public class ComfoAirHandler extends BaseThingHandler {
                         preRequestCmd = ComfoAirCommandType.Constants.REQUEST_GET_STATES;
                         preReplyCmd = ComfoAirCommandType.Constants.REPLY_GET_STATES;
                         break;
-                    case ComfoAirCommandType.Constants.REQUEST_SET_EWT:
-                        preRequestCmd = ComfoAirCommandType.Constants.REQUEST_GET_EWT;
-                        preReplyCmd = ComfoAirCommandType.Constants.REPLY_GET_EWT;
+                    case ComfoAirCommandType.Constants.REQUEST_SET_GHX:
+                        preRequestCmd = ComfoAirCommandType.Constants.REQUEST_GET_GHX;
+                        preReplyCmd = ComfoAirCommandType.Constants.REPLY_GET_GHX;
                         break;
                     default:
                         preRequestCmd = requestCmd;
@@ -330,13 +255,6 @@ public class ComfoAirHandler extends BaseThingHandler {
             String[] namedProperties = new String[] { ComfoAirBindingConstants.PROPERTY_SOFTWARE_MAIN_VERSION,
                     ComfoAirBindingConstants.PROPERTY_SOFTWARE_MINOR_VERSION,
                     ComfoAirBindingConstants.PROPERTY_DEVICE_NAME };
-            String[] optionProperties = new String[] { ComfoAirBindingConstants.PROPERTY_OPTION_PREHEATER,
-                    ComfoAirBindingConstants.PROPERTY_OPTION_BYPASS, ComfoAirBindingConstants.PROPERTY_OPTION_RECU_TYPE,
-                    ComfoAirBindingConstants.PROPERTY_OPTION_RECU_SIZE,
-                    ComfoAirBindingConstants.PROPERTY_OPTION_CHIMNEY,
-                    ComfoAirBindingConstants.PROPERTY_OPTION_COOKERHOOD,
-                    ComfoAirBindingConstants.PROPERTY_OPTION_HEATER, ComfoAirBindingConstants.PROPERTY_OPTION_ENTHALPY,
-                    ComfoAirBindingConstants.PROPERTY_OPTION_EWT };
 
             for (String prop : namedProperties) {
                 ComfoAirCommand readCommand = ComfoAirCommandType.getReadCommand(prop);
@@ -359,55 +277,6 @@ public class ComfoAirHandler extends BaseThingHandler {
                     }
                 }
             }
-
-            ComfoAirCommand optionsReadCommand = new ComfoAirCommand(ComfoAirBindingConstants.PROPERTY_OPTION_PREHEATER,
-                    ComfoAirCommandType.Constants.REQUEST_GET_STATES, ComfoAirCommandType.Constants.REPLY_GET_STATES,
-                    ComfoAirCommandType.Constants.EMPTY_INT_ARRAY, null, null);
-            int[] response = comfoAirConnector.sendCommand(optionsReadCommand,
-                    ComfoAirCommandType.Constants.EMPTY_INT_ARRAY);
-            if (response.length > 0) {
-                for (String prop : optionProperties) {
-                    ComfoAirCommandType comfoAirCommandType = ComfoAirCommandType.getCommandTypeByKey(prop);
-                    String value = "";
-
-                    if (comfoAirCommandType != null) {
-                        ComfoAirDataType dataType = comfoAirCommandType.getDataType();
-                        int intValue = dataType.calculateNumberValue(response, comfoAirCommandType);
-
-                        switch (prop) {
-                            case ComfoAirBindingConstants.PROPERTY_OPTION_RECU_TYPE:
-                                value = intValue == 1 ? "LEFT" : "RIGHT";
-                                break;
-                            case ComfoAirBindingConstants.PROPERTY_OPTION_RECU_SIZE:
-                                value = intValue == 1 ? "BIG" : "SMALL";
-                                break;
-                            case ComfoAirBindingConstants.PROPERTY_OPTION_ENTHALPY:
-                                if (intValue == 1) {
-                                    value = ComfoAirBindingConstants.COMMON_OPTION_STATES[1];
-                                } else if (intValue == 2) {
-                                    value = "Installed w\\o sensor";
-                                } else {
-                                    value = ComfoAirBindingConstants.COMMON_OPTION_STATES[0];
-                                }
-                                break;
-                            case ComfoAirBindingConstants.PROPERTY_OPTION_EWT:
-                                if (intValue == 1) {
-                                    value = "Regulated";
-                                } else if (intValue == 2) {
-                                    value = "Unregulated";
-                                } else {
-                                    value = ComfoAirBindingConstants.COMMON_OPTION_STATES[0];
-                                }
-                                break;
-                            default:
-                                value = intValue > 0 ? ComfoAirBindingConstants.COMMON_OPTION_STATES[1]
-                                        : ComfoAirBindingConstants.COMMON_OPTION_STATES[0];
-                                break;
-                        }
-                    }
-                    properties.put(prop, value);
-                }
-            }
             thing.setProperties(properties);
         }
     }
index 04e90206cc2a09208c396d5d7be5c5246cb0677f..6477edad83878df2cb179d22fa7649cc7e0d6b80 100644 (file)
@@ -495,7 +495,7 @@ public class ComfoAirSerialConnector {
                         return ComfoAirCommandType.Constants.EMPTY_INT_ARRAY;
                     }
                     break;
-                case ComfoAirCommandType.Constants.REQUEST_SET_EWT:
+                case ComfoAirCommandType.Constants.REQUEST_SET_GHX:
                     newRequestData = new int[5];
 
                     if (preRequestData.length > 0 && newRequestData.length <= preRequestData.length) {
index 6beecb16dd051926fad2fb0f42b4d6fda41f6231..e0ee7796314e3fa727448ab770041aa12110139b 100644 (file)
@@ -46,17 +46,23 @@ public interface ComfoAirDataType {
 
     default int calculateNumberValue(int[] data, ComfoAirCommandType commandType) {
         int[] readReplyDataPos = commandType.getReadReplyDataPos();
+        int readReplyDataBits = commandType.getReadReplyDataBits();
+
         int value = 0;
         if (readReplyDataPos != null) {
-            int base = 0;
+            if (readReplyDataBits == 0) {
+                int base = 0;
 
-            for (int i = readReplyDataPos.length - 1; i >= 0; i--) {
-                if (readReplyDataPos[i] < data.length) {
-                    value += data[readReplyDataPos[i]] << base;
-                    base += 8;
-                } else {
-                    return -1;
+                for (int i = readReplyDataPos.length - 1; i >= 0; i--) {
+                    if (readReplyDataPos[i] < data.length) {
+                        value += data[readReplyDataPos[i]] << base;
+                        base += 8;
+                    } else {
+                        return -1;
+                    }
                 }
+            } else {
+                value = (data[readReplyDataPos[0]] & readReplyDataBits) == readReplyDataBits ? 1 : 0;
             }
         } else {
             value = -1;
index cbe5ce7cc7c3725d7185b56278e6169147a1a4eb..e11a7bc3d0074f67ecf6131f21ea3fe865f472b5 100644 (file)
@@ -49,7 +49,7 @@ public class DataTypeTemperature implements ComfoAirDataType {
         } else {
             int[] readReplyDataPos = commandType.getReadReplyDataPos();
             if (readReplyDataPos != null && readReplyDataPos[0] < data.length) {
-                if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_EWT) {
+                if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_GHX) {
                     return new QuantityType<>((double) data[readReplyDataPos[0]], SIUnits.CELSIUS);
                 } else {
                     return new QuantityType<>((((double) data[readReplyDataPos[0]]) / 2) - 20, SIUnits.CELSIUS);
@@ -66,7 +66,7 @@ public class DataTypeTemperature implements ComfoAirDataType {
         QuantityType<?> celsius = ((QuantityType<?>) value).toUnit(SIUnits.CELSIUS);
 
         if (celsius != null) {
-            if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_EWT) {
+            if (commandType.getReadCommand() == ComfoAirCommandType.Constants.REQUEST_GET_GHX) {
                 template[commandType.getChangeDataPos()] = celsius.intValue();
             } else {
                 template[commandType.getChangeDataPos()] = (int) (celsius.doubleValue() + 20) * 2;
index 65a889cc63b89f150fd27bf5d62567c9d910f5d4..7ba4eadbf81facfa1e3052e7d6391be4cd33f81b 100644 (file)
@@ -1,46 +1,73 @@
 # binding
 binding.comfoair.comfoair.name = ComfoAir Binding
-binding.comfoair.comfoair.description = ComfoAir Wohnraumlüftung
+binding.comfoair.comfoair.description = ComfoAir Wohnraumlüftung
 
 # thing types
-thing-type.comfoair.comfoair.label = ComfoAir Wohnraumlüftung
-thing-type.comfoair.comfoair.description = Serielle Verbindung zu einer ComfoAir-kompatiblen Lüftungsanlage
+thing-type.comfoair.comfoair.label = ComfoAir Wohnraumlüftung
+thing-type.comfoair.comfoair.description = Serielle Verbindung zu einer ComfoAir-kompatiblen Lüftungsanlage
 
 # thing type configuration
 thing-type.config.comfoair.comfoair.serialPort.label = Serieller Port
-thing-type.config.comfoair.comfoair.serialPort.description = Serieller Port über den die Lüftungsanlage verbunden ist
+thing-type.config.comfoair.comfoair.serialPort.description = Serieller Port über den die Lüftungsanlage verbunden ist
 thing-type.config.comfoair.comfoair.refreshInterval.label = Aktualisierungsinterval
 thing-type.config.comfoair.comfoair.refreshInterval.description = Aktualisierungsinterval in Sekunden
 
+# channel group type
+channel-group-type.comfoair.bindingControl.label = Binding-Kontrolle
+channel-group-type.comfoair.ventilation.label = Lüftungswerte
+channel-group-type.comfoair.temperatures.label = Temperaturwerte
+channel-group-type.comfoair.times.label = Laufzeiten
+channel-group-type.comfoair.bypass.label = Bypasswerte
+channel-group-type.comfoair.preheater.label = Vorheizerwerte
+channel-group-type.comfoair.ghx.label = Erdwärmetauscherwerte
+channel-group-type.comfoair.heater.label = Nachheizerwerte
+channel-group-type.comfoair.cookerhood.label = Küchenhaubenwerte
+channel-group-type.comfoair.enthalpy.label = Enthalpietauscherwerte
+channel-group-type.comfoair.options.label = Moduleinstellungen
+channel-group-type.comfoair.menuP1.label = Menü P1: Status Regelungen
+channel-group-type.comfoair.menuP2.label = Menü P2: Einstellung Zeitverzögerungen
+channel-group-type.comfoair.menuP9.label = Menü P9: Status Zusatzregelungen
+channel-group-type.comfoair.inputs.label = Eingänge
+channel-group-type.comfoair.analog.label = Analoge Eingänge
+channel-group-type.comfoair.analogRF.label = RF Eingänge
+channel-group-type.comfoair.errors.label = Fehlerstatus
+channel-group-type.comfoair.resets.label = Reset
+
 # channel type
 channel-type.comfoair.activate.label = Steuerung aktivieren
-channel-type.comfoair.activate.description = Kontrolle aktivieren (über openHAB) oder deaktivieren (zurück auf CCEase)
-channel-type.comfoair.fan_evel.label = Lüftungsstufe
-channel-type.comfoair.fan_evel.description = Lüftungsstufe
+channel-type.comfoair.activate.description = Kontrolle aktivieren (über openHAB) oder deaktivieren (zurück auf CCEase)
+channel-type.comfoair.fan_evel.label = Lüftungsstufe
+channel-type.comfoair.fan_evel.description = Lüftungsstufe
+channel-type.comfoair.fan_evel.state.option.1 = Abwesend
+channel-type.comfoair.fan_evel.state.option.2 = Stufe 1
+channel-type.comfoair.fan_evel.state.option.3 = Stufe 2
+channel-type.comfoair.fan_evel.state.option.4 = Stufe 3
 channel-type.comfoair.target_temperature.label = Zieltemperatur
 channel-type.comfoair.target_temperature.description = Ziel- bzw. Komforttemperatur
 channel-type.comfoair.filter_error.label = Filterfehler
 channel-type.comfoair.filter_error.description = Filter voll
-channel-type.comfoair.filter_reset.label = Filterzähler Zurücksetzen
-channel-type.comfoair.filter_reset.description = Zurücksetzen der Filterlaufzeit
-channel-type.comfoair.error_reset.label = Fehler Zurücksetzen
-channel-type.comfoair.error_reset.description = Zurücksetzen der Fehlermeldungen
+channel-type.comfoair.filter_reset.label = Filterzähler Zurücksetzen
+channel-type.comfoair.filter_reset.description = Zurücksetzen der Filterlaufzeit
+channel-type.comfoair.filter_reset.state.option.1 = Reset
+channel-type.comfoair.error_reset.label = Fehler Zurücksetzen
+channel-type.comfoair.error_reset.description = Zurücksetzen der Fehlermeldungen
+channel-type.comfoair.error_reset.state.option.1 = Reset
 channel-type.comfoair.fan_out_0.label = Abluftstufe 0 (abwesend)
-channel-type.comfoair.fan_out_0.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 0
+channel-type.comfoair.fan_out_0.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 0
 channel-type.comfoair.fan_out_1.label = Abluftstufe 1
-channel-type.comfoair.fan_out_1.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 1
+channel-type.comfoair.fan_out_1.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 1
 channel-type.comfoair.fan_out_2.label = Abluftstufe 2
-channel-type.comfoair.fan_out_2.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 2
+channel-type.comfoair.fan_out_2.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 2
 channel-type.comfoair.fan_out_3.label = Abluftstufe 3
-channel-type.comfoair.fan_out_3.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 3
+channel-type.comfoair.fan_out_3.description = Lüftungsleistung (%) des Abluftventilators auf Stufe 3
 channel-type.comfoair.fan_in_0.label = Zuluftstufe 0 (abwesend)
-channel-type.comfoair.fan_in_0.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 0
+channel-type.comfoair.fan_in_0.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 0
 channel-type.comfoair.fan_in_1.label = Zuluftstufe 1
-channel-type.comfoair.fan_in_1.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 1
+channel-type.comfoair.fan_in_1.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 1
 channel-type.comfoair.fan_in_2.label = Zuluftstufe 2
-channel-type.comfoair.fan_in_2.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 2
+channel-type.comfoair.fan_in_2.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 2
 channel-type.comfoair.fan_in_3.label = Zuluftstufe 3
-channel-type.comfoair.fan_in_3.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 3
+channel-type.comfoair.fan_in_3.description = Lüftungsleistung (%) des Zuluftventilators auf Stufe 3
 channel-type.comfoair.fan_in_percent.label = Zuluftventilator (%)
 channel-type.comfoair.fan_in_percent.description = Aktuelle Geschwindigkeit (%) des Zuluftventilators
 channel-type.comfoair.fan_out_percent.label = Abluftventilator (%)
@@ -49,34 +76,34 @@ channel-type.comfoair.fan_in_RPM.label = Zuluftventilator (U/min)
 channel-type.comfoair.fan_in_RPM.description = Aktuelle Drehzahl des Zuluftventilators
 channel-type.comfoair.fan_out_RPM.label = Abluftventilator (U/min)
 channel-type.comfoair.fan_out_RPM.description = Aktuelle Drehzahl des Abluftventilators
-channel-type.comfoair.outdoor_temperature_in.label = Außenlufttemperatur
-channel-type.comfoair.outdoor_temperature_in.description = Temperatur der Außenzuluft
+channel-type.comfoair.outdoor_temperature_in.label = Außenlufttemperatur
+channel-type.comfoair.outdoor_temperature_in.description = Temperatur der Außenzuluft
 channel-type.comfoair.outdoor_temperature_out.label = Fortlufttemperatur
-channel-type.comfoair.outdoor_temperature_out.description = Temperatur der Außenabluft
+channel-type.comfoair.outdoor_temperature_out.description = Temperatur der Außenabluft
 channel-type.comfoair.indoor_temperature_in.label = Zulufttemperatur
 channel-type.comfoair.indoor_temperature_in.description = Temperatur der Raumzuluft
 channel-type.comfoair.indoor_temperature_out.label = Ablufttemperatur
 channel-type.comfoair.indoor_temperature_out.description = Temperatur der Raumabluft
-channel-type.comfoair.is_T1_sensor.label = Sensor T1 Verfügbarkeit
-channel-type.comfoair.is_T1_sensor.description = Verfügbarkeit des Temperatursensors T1 (Außenluft)
-channel-type.comfoair.is_T2_sensor.label = Sensor T2 Verfügbarkeit
-channel-type.comfoair.is_T2_sensor.description = Verfügbarkeit des Temperatursensors T2 (Zuluft)
-channel-type.comfoair.is_T3_sensor.label = Sensor T3 Verfügbarkeit
-channel-type.comfoair.is_T3_sensor.description = Verfügbarkeit des Temperatursensors T3 (Abluft)
-channel-type.comfoair.is_T4_sensor.label = Sensor T4 Verfügbarkeit
-channel-type.comfoair.is_T4_sensor.description = Verfügbarkeit des Temperatursensors T4 (Fortluft)
-channel-type.comfoair.is_EWT_sensor.label = Sensor EWT Verfügbarkeit
-channel-type.comfoair.is_EWT_sensor.description = Verfügbarkeit des EWT-Temperatursensors
-channel-type.comfoair.is_heater_sensor.label = Sensor Nachheizung Verfügbarkeit
-channel-type.comfoair.is_heater_sensor.description = Verfügbarkeit des Nachheizung-Temperatursensors
-channel-type.comfoair.is_cookerhood_sensor.label = Sensor Dunstabzugshaube Verfügbarkeit
-channel-type.comfoair.is_cookerhood_sensor.description = Verfügbarkeit des Dunstabzugshauben-Temperatursensors
+channel-type.comfoair.is_T1_sensor.label = Sensor T1 Verfügbarkeit
+channel-type.comfoair.is_T1_sensor.description = Verfügbarkeit des Temperatursensors T1 (Außenluft)
+channel-type.comfoair.is_T2_sensor.label = Sensor T2 Verfügbarkeit
+channel-type.comfoair.is_T2_sensor.description = Verfügbarkeit des Temperatursensors T2 (Zuluft)
+channel-type.comfoair.is_T3_sensor.label = Sensor T3 Verfügbarkeit
+channel-type.comfoair.is_T3_sensor.description = Verfügbarkeit des Temperatursensors T3 (Abluft)
+channel-type.comfoair.is_T4_sensor.label = Sensor T4 Verfügbarkeit
+channel-type.comfoair.is_T4_sensor.description = Verfügbarkeit des Temperatursensors T4 (Fortluft)
+channel-type.comfoair.is_GHX_sensor.label = Sensor EWT Verfügbarkeit
+channel-type.comfoair.is_GHX_sensor.description = Verfügbarkeit des Erdwärmetauscher-Temperatursensors
+channel-type.comfoair.is_heater_sensor.label = Sensor Nachheizung Verfügbarkeit
+channel-type.comfoair.is_heater_sensor.description = Verfügbarkeit des Nachheizung-Temperatursensors
+channel-type.comfoair.is_cookerhood_sensor.label = Sensor Dunstabzugshaube Verfügbarkeit
+channel-type.comfoair.is_cookerhood_sensor.description = Verfügbarkeit des Dunstabzugshauben-Temperatursensors
 channel-type.comfoair.chimney_state.label = Schornsteinfegerregelung Status
 channel-type.comfoair.chimney_state.description = Status der Schornsteinfegerregelung
 channel-type.comfoair.bypass_state.label = Bypass Status
 channel-type.comfoair.bypass_state.description = Status der Bypassklappe (ON = offen / OFF = geschlossen)
-channel-type.comfoair.ewt_state.label = EWT Status
-channel-type.comfoair.ewt_state.description = Status des EWT-Ventils (ON = offen / OFF = geschlossen)
+channel-type.comfoair.ghx_state.label = EWT Status
+channel-type.comfoair.ghx_state.description = Status des Erdwärmetauscher-Ventils (ON = offen / OFF = geschlossen)
 channel-type.comfoair.heater_state.label = Nacherhitzer Status
 channel-type.comfoair.heater_state.description = Status des Nacherhitzers
 channel-type.comfoair.v_control_state.label = 0-10V-Regelung Status
@@ -87,8 +114,8 @@ channel-type.comfoair.cookerhood_state.label = Dunstabzugshaube Status
 channel-type.comfoair.cookerhood_state.description = Status der Dunstabzugshaubenregelung
 channel-type.comfoair.enthalpy_state.label = Enthalpietauscher Status
 channel-type.comfoair.enthalpy_state.description = Status des Enthalpietauschers
-channel-type.comfoair.ewt_temperature.label = EWT Temperatur
-channel-type.comfoair.ewt_temperature.description = Temperatur des Erdwärmetauschers
+channel-type.comfoair.ghx_temperature.label = Erdwärmetauscher Temperatur
+channel-type.comfoair.ghx_temperature.description = Temperatur des Erdwärmetauschers
 channel-type.comfoair.heater_temperature.label = Nacherhitzer Temperatur
 channel-type.comfoair.heater_temperature.description = Temperatur des Nacherhitzers
 channel-type.comfoair.cookerhood_temperature.label = Dunstabzugshaube Temperatur
@@ -106,7 +133,7 @@ channel-type.comfoair.freeze_time.description = Betriebsstunden der Frostschutzr
 channel-type.comfoair.preheater_time.label = Vorheizung Laufzeit
 channel-type.comfoair.preheater_time.description = Betriebsstunden der Vorheizung
 channel-type.comfoair.bypass_time.label = Bypass Laufzeit
-channel-type.comfoair.bypass_time.description = Öffnungsstunden der Bypassklappe
+channel-type.comfoair.bypass_time.description = Öffnungsstunden der Bypassklappe
 channel-type.comfoair.filter_hours.label = Filter Laufzeit
 channel-type.comfoair.filter_hours.description = Betriebsstunden seit Filterwechsel
 channel-type.comfoair.bypass_factor.label = Bypass Faktor
@@ -116,7 +143,7 @@ channel-type.comfoair.bypass_level.description = Aktuelle Bypassstufe
 channel-type.comfoair.bypass_correction.label = Bypass Korrektur
 channel-type.comfoair.bypass_correction.description = Status der Bypasskorrektur
 channel-type.comfoair.bypass_summer.label = Bypass Sommermodus
-channel-type.comfoair.bypass_summer.description = Aktivität des Sommermodus
+channel-type.comfoair.bypass_summer.description = Aktivität des Sommermodus
 channel-type.comfoair.preheater_valve.label = Vorheizer Klappe
 channel-type.comfoair.preheater_valve.description = Status der Vorheizerklappe
 channel-type.comfoair.preheater_frost_protect.label = Frostschutz Status
@@ -127,12 +154,12 @@ channel-type.comfoair.preheater_frost_time.label = Frostminuten
 channel-type.comfoair.preheater_frost_time.description = Gesamtfrostdauer in Minuten
 channel-type.comfoair.preheater_safety.label = Frostsicherheit
 channel-type.comfoair.preheater_safety.description = Einstellung der Frostsicherheit
-channel-type.comfoair.ewt_temperature_low.label = EWT Temperatur (niedrig)
-channel-type.comfoair.ewt_temperature_low.description = Untere Temperatur des Erdwärmetauschers
-channel-type.comfoair.ewt_temperature_high.label = EWT Temperatur (hoch)
-channel-type.comfoair.ewt_temperature_high.description = Obere Temperatur des Erdwärmetauschers
-channel-type.comfoair.ewt_speed.label = EWT Hochlauf (%)
-channel-type.comfoair.ewt_speed.description = Hochlauf des Erdwärmetauschers
+channel-type.comfoair.ghx_temperature_low.label = Erdwärmetauscher Temperatur (niedrig)
+channel-type.comfoair.ghx_temperature_low.description = Untere Temperatur des Erdwärmetauschers
+channel-type.comfoair.ghx_temperature_high.label = Erdwärmetauscher Temperatur (hoch)
+channel-type.comfoair.ghx_temperature_high.description = Obere Temperatur des Erdwärmetauschers
+channel-type.comfoair.ghx_speed.label = Erdwärmetauscher Hochlauf (%)
+channel-type.comfoair.ghx_speed.description = Hochlauf des Erdwärmetauschers
 channel-type.comfoair.heater_power.label = Nachheizung Leistung
 channel-type.comfoair.heater_power.description = Leistung der Nachheizung
 channel-type.comfoair.heater_power_I.label = Nachheizung Leistung I-Parameter
@@ -149,60 +176,88 @@ channel-type.comfoair.enthalpy_level.label = Enthalpietauscher Koeffizient
 channel-type.comfoair.enthalpy_level.description = Koeffizient des Enthalpietauscher
 channel-type.comfoair.enthalpy_time.label = Enthalpietauscher Timer
 channel-type.comfoair.enthalpy_time.description = Timerstatus des Enthalpietauschers
+channel-type.comfoair.is_preheater.label = Frostschutzelement
+channel-type.comfoair.is_preheater.description = Frostschutzelement installiert
+channel-type.comfoair.is_bypass.label = Bypass
+channel-type.comfoair.is_bypass.description = Bypass installiert
+channel-type.comfoair.recu_type.label = Comfoair Typ
+channel-type.comfoair.recu_type.description = Typ der ComfoAir (1 = links / 2 = rechts)
+channel-type.comfoair.recu_type.state.option.1 = Links
+channel-type.comfoair.recu_type.state.option.2 = Rechts
+channel-type.comfoair.recu_size.label = Comfoair Luftmenge
+channel-type.comfoair.recu_size.description = Luftmengeneinstellung der ComfoAir (1 = hohe Luftmenge / 2 = normale Luftmenge)
+channel-type.comfoair.recu_size.state.option.1 = hohe Luftmenge
+channel-type.comfoair.recu_size.state.option.2 = normale Luftmenge
+channel-type.comfoair.is_chimney.label = Schornsteinfegerregelung
+channel-type.comfoair.is_chimney.description = Schornsteinfegerregelung aktiviert
+channel-type.comfoair.is_cookerhood.label = Dunstabzughaube
+channel-type.comfoair.is_cookerhood.description = Dunstabzughaube installiert
+channel-type.comfoair.is_heater.label = Nacherhitzer
+channel-type.comfoair.is_heater.description = Nacherhitzer installiert
+channel-type.comfoair.is_enthalpy.label = Enthalpietauscher
+channel-type.comfoair.is_enthalpy.description = Enthalpietauscher installiert
+channel-type.comfoair.is_enthalpy.state.option.0 = Nicht installiert
+channel-type.comfoair.is_enthalpy.state.option.1 = Mit Sensor
+channel-type.comfoair.is_enthalpy.state.option.2 = Ohne Sensor
+channel-type.comfoair.is_ghx.label = Erdwärmetauscher
+channel-type.comfoair.is_ghx.description = Erdwärmetauscher installiert
+channel-type.comfoair.is_ghx.state.option.0 = Nicht installiert
+channel-type.comfoair.is_ghx.state.option.1 = Reguliert
+channel-type.comfoair.is_ghx.state.option.2 = Unreguliert
 channel-type.comfoair.is_L1_switch.label = L1-Schalter
-channel-type.comfoair.is_L1_switch.description = Verfügbarkeit des L1-Schalters
+channel-type.comfoair.is_L1_switch.description = Verfügbarkeit des L1-Schalters
 channel-type.comfoair.is_L2_switch.label = L2-Schalter
-channel-type.comfoair.is_L2_switch.description = Verfügbarkeit des L2-Schalters
+channel-type.comfoair.is_L2_switch.description = Verfügbarkeit des L2-Schalters
 channel-type.comfoair.is_bathroom_switch.label = Badezimmerschalter
-channel-type.comfoair.is_bathroom_switch.description = Verfügbarkeit eines Badezimmerchalters
+channel-type.comfoair.is_bathroom_switch.description = Verfügbarkeit eines Badezimmerchalters
 channel-type.comfoair.is_cookerhood_switch.label = Dunstabzugshaubenschalter
-channel-type.comfoair.is_cookerhood_switch.description = Verfügbarkeit eines Dunstabzugshaubenschalters
+channel-type.comfoair.is_cookerhood_switch.description = Verfügbarkeit eines Dunstabzugshaubenschalters
 channel-type.comfoair.is_external_filter.label = Externer Filter
-channel-type.comfoair.is_external_filter.description = Verfügbarkeit eines externen Filters
-channel-type.comfoair.is_wtw.label = Wärmerückgewinnung
-channel-type.comfoair.is_wtw.description = Verfügbarkeit der Wärmerückgewinnung
+channel-type.comfoair.is_external_filter.description = Verfügbarkeit eines externen Filters
+channel-type.comfoair.is_wtw.label = Wärmerückgewinnung
+channel-type.comfoair.is_wtw.description = Verfügbarkeit der Wärmerückgewinnung
 channel-type.comfoair.is_bathroom2_switch.label = Badezimmerschalter 2
-channel-type.comfoair.is_bathroom2_switch.description = Verfügbarkeit eines zweiten Badezimmerchalters (luxe)
-channel-type.comfoair.menu20_mode.label = Menü 20 Status (P10)
-channel-type.comfoair.menu20_mode.description = Menü 20 zurzeit aktiv? (P10)
-channel-type.comfoair.menu21_mode.label = Menü 21 Status (P11)
-channel-type.comfoair.menu21_mode.description = Menü 21 zurzeit aktiv? (P11)
-channel-type.comfoair.menu22_mode.label = Menü 22 Status (P12)
-channel-type.comfoair.menu22_mode.description = Menü 22 zurzeit aktiv? (P12)
-channel-type.comfoair.menu23_mode.label = Menü 23 Status (P13)
-channel-type.comfoair.menu23_mode.description = Menü 23 zurzeit aktiv? (P13)
-channel-type.comfoair.menu24_mode.label = Menü 24 Status (P14)
-channel-type.comfoair.menu24_mode.description = Menü 24 zurzeit aktiv? (P14)
-channel-type.comfoair.menu25_mode.label = Menü 25 Status (P15)
-channel-type.comfoair.menu25_mode.description = Menü 25 zurzeit aktiv? (P15)
-channel-type.comfoair.menu26_mode.label = Menü 26 Status (P16)
-channel-type.comfoair.menu26_mode.description = Menü 26 zurzeit aktiv? (P16)
-channel-type.comfoair.menu27_mode.label = Menü 27 Status (P17)
-channel-type.comfoair.menu27_mode.description = Menü 27 zurzeit aktiv? (P17)
-channel-type.comfoair.menu28_mode.label = MMenü 28 Status (P18)
-channel-type.comfoair.menu28_mode.description = Menü 28 zurzeit aktiv? (P18)
-channel-type.comfoair.menu29_mode.label = Menü 29 Status (P19)
-channel-type.comfoair.menu29_mode.description = Menü 29 zurzeit aktiv? (P19)
-channel-type.comfoair.cookerhood_delay.label = Ausschaltverzögerung Dunstabzugshaube (P20)
-channel-type.comfoair.cookerhood_delay.description = Ausschaltverzögerung für die Dunstabzugshaubenregelung (min)
-channel-type.comfoair.bathroom_start_delay.label = Einschaltverzögerung Badezimmerschalter (P21)
-channel-type.comfoair.bathroom_start_delay.description = Einschaltverzögerung für den Badezimmerschalter (min)
-channel-type.comfoair.bathroom_end_delay.label = Ausschaltverzögerung Badezimmerschalter (P22)
-channel-type.comfoair.bathroom_end_delay.description = Ausschaltverzögerung für den Badezimmerschalter (min)
-channel-type.comfoair.L1_end_delay.label = Ausschaltverzögerung L1-Schalter (P23)
-channel-type.comfoair.L1_end_delay.description = Ausschaltverzögerung für den L1-Schalter (min)
+channel-type.comfoair.is_bathroom2_switch.description = Verfügbarkeit eines zweiten Badezimmerchalters (luxe)
+channel-type.comfoair.menu20_mode.label = Menü 20 Status (P10)
+channel-type.comfoair.menu20_mode.description = Menü 20 zurzeit aktiv? (P10)
+channel-type.comfoair.menu21_mode.label = Menü 21 Status (P11)
+channel-type.comfoair.menu21_mode.description = Menü 21 zurzeit aktiv? (P11)
+channel-type.comfoair.menu22_mode.label = Menü 22 Status (P12)
+channel-type.comfoair.menu22_mode.description = Menü 22 zurzeit aktiv? (P12)
+channel-type.comfoair.menu23_mode.label = Menü 23 Status (P13)
+channel-type.comfoair.menu23_mode.description = Menü 23 zurzeit aktiv? (P13)
+channel-type.comfoair.menu24_mode.label = Menü 24 Status (P14)
+channel-type.comfoair.menu24_mode.description = Menü 24 zurzeit aktiv? (P14)
+channel-type.comfoair.menu25_mode.label = Menü 25 Status (P15)
+channel-type.comfoair.menu25_mode.description = Menü 25 zurzeit aktiv? (P15)
+channel-type.comfoair.menu26_mode.label = Menü 26 Status (P16)
+channel-type.comfoair.menu26_mode.description = Menü 26 zurzeit aktiv? (P16)
+channel-type.comfoair.menu27_mode.label = Menü 27 Status (P17)
+channel-type.comfoair.menu27_mode.description = Menü 27 zurzeit aktiv? (P17)
+channel-type.comfoair.menu28_mode.label = Menü 28 Status (P18)
+channel-type.comfoair.menu28_mode.description = Menü 28 zurzeit aktiv? (P18)
+channel-type.comfoair.menu29_mode.label = Menü 29 Status (P19)
+channel-type.comfoair.menu29_mode.description = Menü 29 zurzeit aktiv? (P19)
+channel-type.comfoair.cookerhood_delay.label = Ausschaltverzögerung Dunstabzugshaube (P20)
+channel-type.comfoair.cookerhood_delay.description = Ausschaltverzögerung für die Dunstabzugshaubenregelung (min)
+channel-type.comfoair.bathroom_start_delay.label = Einschaltverzögerung Badezimmerschalter (P21)
+channel-type.comfoair.bathroom_start_delay.description = Einschaltverzögerung für den Badezimmerschalter (min)
+channel-type.comfoair.bathroom_end_delay.label = Ausschaltverzögerung Badezimmerschalter (P22)
+channel-type.comfoair.bathroom_end_delay.description = Ausschaltverzögerung für den Badezimmerschalter (min)
+channel-type.comfoair.L1_end_delay.label = Ausschaltverzögerung L1-Schalter (P23)
+channel-type.comfoair.L1_end_delay.description = Ausschaltverzögerung für den L1-Schalter (min)
 channel-type.comfoair.filter_weeks.label = Filterlaufzeit (P24)
 channel-type.comfoair.filter_weeks.description = Laufzeit bis "Filter verschmutzt"-Meldung (weeks)
-channel-type.comfoair.RF_short_delay.label = Ausschaltverzögerung RF Kurz (P25)
-channel-type.comfoair.RF_short_delay.description = Ausschaltverzögerung für Lüftungsstufe 3 bei kurzer Betätigung des RF-Schalters (min)
-channel-type.comfoair.RF_long_delay.label = Ausschaltverzögerung RF Lang (P26)
-channel-type.comfoair.RF_long_delay.description = Ausschaltverzögerung für Lüftungsstufe 3 bei langer Betätigung des RF-Schalters (min)
-channel-type.comfoair.pulse_ventilation.label = Zeit Stoßlüftung (P27)
-channel-type.comfoair.pulse_ventilation.description = Dauer für die Stoßlüftung (min)
-channel-type.comfoair.is_analog.label = Verfügbarkeit Analoger Eingang
-channel-type.comfoair.is_analog.description = Verfügbarkeit eines analogen Eingangs
-channel-type.comfoair.is_RF.label = Verfügbarkeit RF Eingang
-channel-type.comfoair.is_RF.description = Verfügbarkeit eines RF-Eingangs
+channel-type.comfoair.RF_short_delay.label = Ausschaltverzögerung RF Kurz (P25)
+channel-type.comfoair.RF_short_delay.description = Ausschaltverzögerung für Lüftungsstufe 3 bei kurzer Betätigung des RF-Schalters (min)
+channel-type.comfoair.RF_long_delay.label = Ausschaltverzögerung RF Lang (P26)
+channel-type.comfoair.RF_long_delay.description = Ausschaltverzögerung für Lüftungsstufe 3 bei langer Betätigung des RF-Schalters (min)
+channel-type.comfoair.pulse_ventilation.label = Zeit Stoßlüftung (P27)
+channel-type.comfoair.pulse_ventilation.description = Dauer für die Stoßlüftung (min)
+channel-type.comfoair.is_analog.label = Verfügbarkeit Analoger Eingang
+channel-type.comfoair.is_analog.description = Verfügbarkeit eines analogen Eingangs
+channel-type.comfoair.is_RF.label = Verfügbarkeit RF Eingang
+channel-type.comfoair.is_RF.description = Verfügbarkeit eines RF-Eingangs
 channel-type.comfoair.analog_mode.label = Status Analoger Eingang
 channel-type.comfoair.analog_mode.description = Status des analogen Eingangs
 channel-type.comfoair.RF_mode.label = Status RF Eingang
@@ -225,8 +280,10 @@ channel-type.comfoair.RF_max.label = RF Eingang Maximum
 channel-type.comfoair.RF_max.description = Maximaleinstellung des RF-Eingangs
 channel-type.comfoair.RF_value.label = RF Eingang Zielwert
 channel-type.comfoair.RF_value.description = Zielwert des RF-Eingangs
-channel-type.comfoair.analog_priority.label = Controller Priorität
-channel-type.comfoair.analog_priority.description = Priorität der analogen Eingänge für die höchste Lufteinstellung
+channel-type.comfoair.analog_priority.label = Controller Priorität
+channel-type.comfoair.analog_priority.description = Priorität der analogen Eingänge für die höchste Lufteinstellung
+channel-type.comfoair.analog_priority.state.option.0 = Analoge Eingänge
+channel-type.comfoair.analog_priority.state.option.1 = Zeitplan
 channel-type.comfoair.errors_current.label = Fehler Aktuell
 channel-type.comfoair.errors_current.description = Aktuelle Fehler
 channel-type.comfoair.errors_last.label = Fehler Letzte
index d12408e616cd38250dc4e7c32d37617c6a5c076a..d600617279ba317fd9859bd0afff479908198b0d 100644 (file)
                        <channel-group id="times" typeId="times"/>
                        <channel-group id="bypass" typeId="bypass"/>
                        <channel-group id="preheater" typeId="preheater"/>
-                       <channel-group id="ewt" typeId="ewt"/>
+                       <channel-group id="ewt" typeId="ghx"/>
                        <channel-group id="heater" typeId="heater"/>
                        <channel-group id="cookerhood" typeId="cookerhood"/>
                        <channel-group id="enthalpy" typeId="enthalpy"/>
+                       <channel-group id="options" typeId="options"/>
                        <channel-group id="menuP1" typeId="menuP1"/>
                        <channel-group id="menuP2" typeId="menuP2"/>
                        <channel-group id="menuP9" typeId="menuP9"/>
                        <channel id="isT2Sensor" typeId="is_T2_sensor"/>
                        <channel id="isT3Sensor" typeId="is_T3_sensor"/>
                        <channel id="isT4Sensor" typeId="is_T4_sensor"/>
-                       <channel id="isEWTSensor" typeId="is_EWT_sensor"/>
+                       <channel id="isEWTSensor" typeId="is_ghx_sensor"/>
                        <channel id="isHeaterSensor" typeId="is_heater_sensor"/>
                        <channel id="isCookerhoodSensor" typeId="is_cookerhood_sensor"/>
-                       <channel id="ewtTemperature" typeId="ewt_temperature"/>
+                       <channel id="ewtTemperature" typeId="ghx_temperature"/>
                        <channel id="heaterTemperature" typeId="heater_temperature"/>
                        <channel id="cookerhoodTemperature" typeId="cookerhood_temperature"/>
                </channels>
                </channels>
        </channel-group-type>
 
-       <channel-group-type id="ewt">
-               <label>EWT Values</label>
+       <channel-group-type id="ghx">
+               <label>Geothermal Heat Exchanger Values</label>
                <channels>
-                       <channel id="ewtTemperatureLow" typeId="ewt_temperature_low"/>
-                       <channel id="ewtTemperatureHigh" typeId="ewt_temperature_high"/>
-                       <channel id="ewtSpeed" typeId="ewt_speed"/>
+                       <channel id="ewtTemperatureLow" typeId="ghx_temperature_low"/>
+                       <channel id="ewtTemperatureHigh" typeId="ghx_temperature_high"/>
+                       <channel id="ewtSpeed" typeId="ghx_speed"/>
                </channels>
        </channel-group-type>
 
                </channels>
        </channel-group-type>
 
+       <channel-group-type id="options">
+               <label>Option Settings</label>
+               <channels>
+                       <channel id="isPreheater" typeId="is_preheater"/>
+                       <channel id="isBypass" typeId="is_bypass"/>
+                       <channel id="recuType" typeId="recu_type"/>
+                       <channel id="recuSize" typeId="recu_size"/>
+                       <channel id="isChimney" typeId="is_chimney"/>
+                       <channel id="isCookerhood" typeId="is_cookerhood"/>
+                       <channel id="isHeater" typeId="is_heater"/>
+                       <channel id="isEnthalpy" typeId="is_enthalpy"/>
+                       <channel id="isEWT" typeId="is_ghx"/>
+                       <channel id="analogPriority" typeId="analog_priority"/>
+               </channels>
+       </channel-group-type>
+
        <channel-group-type id="menuP1">
                <label>Menu P1: Control States</label>
                <channels>
                <channels>
                        <channel id="chimneyState" typeId="chimney_state"/>
                        <channel id="bypassState" typeId="bypass_state"/>
-                       <channel id="ewtState" typeId="ewt_state"/>
+                       <channel id="ewtState" typeId="ghx_state"/>
                        <channel id="heaterState" typeId="heater_state"/>
                        <channel id="vControlState" typeId="v_control_state"/>
                        <channel id="frostState" typeId="frost_state"/>
                        <channel id="RFMin" typeId="RF_min"/>
                        <channel id="RFMax" typeId="RF_max"/>
                        <channel id="RFValue" typeId="RF_value"/>
-                       <channel id="analogPriority" typeId="analog_priority"/>
                </channels>
        </channel-group-type>
 
                <state readOnly="true"/>
        </channel-type>
 
-       <channel-type id="is_EWT_sensor" advanced="true">
+       <channel-type id="is_ghx_sensor" advanced="true">
                <item-type>Switch</item-type>
-               <label>EWT Sensor Available</label>
-               <description>Availability of EWT temperature sensor</description>
+               <label>GHX Sensor Available</label>
+               <description>Availability of geothermal heat exchanger temperature sensor</description>
                <category>Temperature</category>
                <state readOnly="true"/>
        </channel-type>
                <state readOnly="true"/>
        </channel-type>
 
-       <channel-type id="ewt_state" advanced="true">
+       <channel-type id="ghx_state" advanced="true">
                <item-type>Switch</item-type>
-               <label>EWT State</label>
-               <description>State of the EWT valve (ON = open / OFF = closed)</description>
+               <label>Geothermal Heat exchanger State</label>
+               <description>State of the geothermal heat exchanger valve (ON = open / OFF = closed)</description>
                <category>Switch</category>
                <state readOnly="true"/>
        </channel-type>
                <state readOnly="true"/>
        </channel-type>
 
-       <channel-type id="ewt_temperature" advanced="true">
+       <channel-type id="ghx_temperature" advanced="true">
                <item-type>Number:Temperature</item-type>
-               <label>EWT Temperature</label>
+               <label>GHX Temperature</label>
                <description>Temperature of geothermal heat exchanger sensor</description>
                <category>Temperature</category>
                <state readOnly="true" pattern="%.1f %unit%"/>
                <state readOnly="true"/>
        </channel-type>
 
-       <channel-type id="ewt_temperature_low" advanced="true">
+       <channel-type id="ghx_temperature_low" advanced="true">
                <item-type>Number:Temperature</item-type>
-               <label>EWT Temperature (low)</label>
+               <label>GHX Temperature (low)</label>
                <description>Lower temperature of the geothermal heat exchanger</description>
                <category>Temperature</category>
                <state readOnly="true" pattern="%.1f %unit%"/>
        </channel-type>
 
-       <channel-type id="ewt_temperature_high" advanced="true">
+       <channel-type id="ghx_temperature_high" advanced="true">
                <item-type>Number:Temperature</item-type>
-               <label>EWT Temperature (high)</label>
+               <label>GHX Temperature (high)</label>
                <description>Upper temperature of the geothermal heat exchanger</description>
                <category>Temperature</category>
                <state readOnly="true" pattern="%.1f %unit%"/>
        </channel-type>
 
-       <channel-type id="ewt_speed" advanced="true">
+       <channel-type id="ghx_speed" advanced="true">
                <item-type>Number</item-type>
-               <label>EWT Speed Up (%)</label>
+               <label>GHX Speed Up (%)</label>
                <description>Speed up of the geothermal heat exchanger</description>
                <category>Number</category>
                <state readOnly="true"/>
                <state readOnly="true"/>
        </channel-type>
 
+       <channel-type id="is_preheater" advanced="true">
+               <item-type>Switch</item-type>
+               <label>Preheater</label>
+               <description>Preheater option installed</description>
+               <category>Switch</category>
+               <state readOnly="false"/>
+       </channel-type>
+
+       <channel-type id="is_bypass" advanced="true">
+               <item-type>Switch</item-type>
+               <label>Bypass</label>
+               <description>Bypass option installed</description>
+               <category>Switch</category>
+               <state readOnly="false"/>
+       </channel-type>
+
+       <channel-type id="recu_type" advanced="true">
+               <item-type>Number</item-type>
+               <label>Comfoair Type</label>
+               <description>Type of the ComfoAir (1 = left / 2 = right)</description>
+               <category>Number</category>
+               <state readOnly="false">
+                       <options>
+                               <option value="1">Left</option>
+                               <option value="2">Right</option>
+                       </options>
+               </state>
+       </channel-type>
+
+       <channel-type id="recu_size" advanced="true">
+               <item-type>Number</item-type>
+               <label>Comfoair Size</label>
+               <description>Size of the ComfoAir (1 = big / 2 = small)</description>
+               <category>Number</category>
+               <state readOnly="false">
+                       <options>
+                               <option value="1">Big</option>
+                               <option value="2">Small</option>
+                       </options>
+               </state>
+       </channel-type>
+
+       <channel-type id="is_chimney" advanced="true">
+               <item-type>Switch</item-type>
+               <label>Chimney</label>
+               <description>Chimney option installed</description>
+               <category>Switch</category>
+               <state readOnly="false"/>
+       </channel-type>
+
+       <channel-type id="is_cookerhood" advanced="true">
+               <item-type>Switch</item-type>
+               <label>Cookerhood</label>
+               <description>Cookerhood option installed</description>
+               <category>Switch</category>
+               <state readOnly="false"/>
+       </channel-type>
+
+       <channel-type id="is_heater" advanced="true">
+               <item-type>Switch</item-type>
+               <label>Heater</label>
+               <description>Heater option installed</description>
+               <category>Switch</category>
+               <state readOnly="false"/>
+       </channel-type>
+
+       <channel-type id="is_enthalpy" advanced="true">
+               <item-type>Number</item-type>
+               <label>Enthalpy</label>
+               <description>Enthalpy option installed</description>
+               <category>Number</category>
+               <state readOnly="false">
+                       <options>
+                               <option value="0">Not installed</option>
+                               <option value="1">With sensor</option>
+                               <option value="2">Without sensor</option>
+                       </options>
+               </state>
+       </channel-type>
+
+       <channel-type id="is_ghx" advanced="true">
+               <item-type>Number</item-type>
+               <label>Geothermal Heat Exchanger</label>
+               <description>Geothermal heat exchanger option installed</description>
+               <category>Number</category>
+               <state readOnly="false">
+                       <options>
+                               <option value="0">Not installed</option>
+                               <option value="1">Regulated</option>
+                               <option value="2">Not regulated</option>
+                       </options>
+               </state>
+       </channel-type>
+
        <channel-type id="is_L1_switch" advanced="true">
                <item-type>Switch</item-type>
                <label>L1 Switch</label>
        <channel-type id="analog_priority" advanced="true">
                <item-type>Number</item-type>
                <label>Analog Priority</label>
-               <description>Priority of control</description>
+               <description>Priority of analog inputs for highest fan level</description>
                <category>Number</category>
                <state readOnly="false">
                        <options>