From 87c16da527d8c587386d56f87e157639cd1fa6f3 Mon Sep 17 00:00:00 2001 From: boehan Date: Mon, 2 Nov 2020 09:19:39 +0100 Subject: [PATCH] [comfoair] Re-implement device options as channels (#8829) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hans Böhm --- .../org.openhab.binding.comfoair/README.md | 53 ++-- .../internal/ComfoAirBindingConstants.java | 41 ++- .../internal/ComfoAirCommandType.java | 93 +++---- .../comfoair/internal/ComfoAirHandler.java | 137 +--------- .../internal/ComfoAirSerialConnector.java | 2 +- .../internal/datatypes/ComfoAirDataType.java | 20 +- .../datatypes/DataTypeTemperature.java | 4 +- .../OH-INF/i18n/comfoair_de.properties | 249 +++++++++++------- .../resources/OH-INF/thing/thing-types.xml | 160 +++++++++-- 9 files changed, 404 insertions(+), 355 deletions(-) diff --git a/bundles/org.openhab.binding.comfoair/README.md b/bundles/org.openhab.binding.comfoair/README.md index 25d9ccb3c..4d867fc46 100644 --- a/bundles/org.openhab.binding.comfoair/README.md +++ b/bundles/org.openhab.binding.comfoair/README.md @@ -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 %%]" (ComfoAir) Number comfoairFanIn0 "Supply capacity - level 0 [%d %%]" (ComfoAir) {channel="comfoair:comfoair:myComfoAir:ventilation#fanIn0"} Number comfoairFanOut0 "Exhaust capacity - level 0 [%d %%]" (ComfoAir) {channel="comfoair:comfoair:myComfoAir:ventilation#fanOut0"} Switch comfoairBypassMode "Bypass [MAP(comfoair_bypass.map):%s]" (ComfoAir) {channel="comfoair:comfoair:myComfoAir:menuP9#bypassState"} -Switch comfoairEWTMode "EWT [MAP(comfoair_on-off.map):%s]" (ComfoAir) {channel="comfoair:comfoair:myComfoAir:menuP9#ewtState"} +Switch comfoairGHXMode "GHX [MAP(comfoair_on-off.map):%s]" (ComfoAir) {channel="comfoair:comfoair:myComfoAir:menuP9#ewtState"} Switch comfoairChimneyMode "Fire programme [MAP(comfoair_on-off.map):%s]" (ComfoAir) {channel="comfoair:comfoair:myComfoAir:menuP9#chimneyState"} Switch comfoairHeaterMode "Heater [MAP(comfoair_on-off.map):%s]" (ComfoAir) {channel="comfoair:comfoair:myComfoAir:menuP9#heaterState"} Switch comfoairCookerHoodMode "Extractor hood [MAP(comfoair_on-off.map):%s]" (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"] diff --git a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirBindingConstants.java b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirBindingConstants.java index 8909b6e70..955a145b2 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirBindingConstants.java +++ b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirBindingConstants.java @@ -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"; diff --git a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirCommandType.java b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirCommandType.java index aab1d3404..29f3a7f98 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirCommandType.java +++ b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirCommandType.java @@ -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]; diff --git a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirHandler.java b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirHandler.java index f11d20ff7..144d242ef 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirHandler.java +++ b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirHandler.java @@ -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 properties = thing.getProperties(); - - List 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 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); } } diff --git a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirSerialConnector.java b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirSerialConnector.java index 04e90206c..6477edad8 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirSerialConnector.java +++ b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/ComfoAirSerialConnector.java @@ -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) { diff --git a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/ComfoAirDataType.java b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/ComfoAirDataType.java index 6beecb16d..e0ee77963 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/ComfoAirDataType.java +++ b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/ComfoAirDataType.java @@ -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; diff --git a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/DataTypeTemperature.java b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/DataTypeTemperature.java index cbe5ce7cc..e11a7bc3d 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/DataTypeTemperature.java +++ b/bundles/org.openhab.binding.comfoair/src/main/java/org/openhab/binding/comfoair/internal/datatypes/DataTypeTemperature.java @@ -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; diff --git a/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/i18n/comfoair_de.properties b/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/i18n/comfoair_de.properties index 65a889cc6..7ba4eadbf 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/i18n/comfoair_de.properties +++ b/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/i18n/comfoair_de.properties @@ -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 diff --git a/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/thing/thing-types.xml index d12408e61..d60061727 100644 --- a/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.comfoair/src/main/resources/OH-INF/thing/thing-types.xml @@ -15,10 +15,11 @@ - + + @@ -93,10 +94,10 @@ - + - + @@ -137,12 +138,12 @@ - - + + - - - + + + @@ -172,6 +173,22 @@ + + + + + + + + + + + + + + + + @@ -207,7 +224,7 @@ - + @@ -251,7 +268,6 @@ - @@ -497,10 +513,10 @@ - + Switch - - Availability of EWT temperature sensor + + Availability of geothermal heat exchanger temperature sensor Temperature @@ -537,10 +553,10 @@ - + Switch - - State of the EWT valve (ON = open / OFF = closed) + + State of the geothermal heat exchanger valve (ON = open / OFF = closed) Switch @@ -585,9 +601,9 @@ - + Number:Temperature - + Temperature of geothermal heat exchanger sensor Temperature @@ -745,25 +761,25 @@ - + Number:Temperature - + Lower temperature of the geothermal heat exchanger Temperature - + Number:Temperature - + Upper temperature of the geothermal heat exchanger Temperature - + Number - + Speed up of the geothermal heat exchanger Number @@ -833,6 +849,100 @@ + + Switch + + Preheater option installed + Switch + + + + + Switch + + Bypass option installed + Switch + + + + + Number + + Type of the ComfoAir (1 = left / 2 = right) + Number + + + + + + + + + + Number + + Size of the ComfoAir (1 = big / 2 = small) + Number + + + + + + + + + + Switch + + Chimney option installed + Switch + + + + + Switch + + Cookerhood option installed + Switch + + + + + Switch + + Heater option installed + Switch + + + + + Number + + Enthalpy option installed + Number + + + + + + + + + + + Number + + Geothermal heat exchanger option installed + Number + + + + + + + + + Switch @@ -1140,7 +1250,7 @@ Number - Priority of control + Priority of analog inputs for highest fan level Number