From 045de1b5891017d8fb7ecc52bb8f632d263588bf Mon Sep 17 00:00:00 2001 From: robnielsen Date: Wed, 8 Jun 2022 01:52:07 -0500 Subject: [PATCH] [ecobee] Add support for Smart Thermostat Premium (#12892) Signed-off-by: Rob Nielsen --- bundles/org.openhab.binding.ecobee/README.md | 22 ++++++++++++------- .../handler/EcobeeSensorThingHandler.java | 20 +++++++++++++++++ 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/bundles/org.openhab.binding.ecobee/README.md b/bundles/org.openhab.binding.ecobee/README.md index 1ba91fa6b9..1e478bc93c 100644 --- a/bundles/org.openhab.binding.ecobee/README.md +++ b/bundles/org.openhab.binding.ecobee/README.md @@ -407,14 +407,20 @@ The following channels are available on the Ecobee Remote Sensor. Some or all of the following Remote Sensor channels will be added dynamically depending on the capabilities of the sensor. -| Channel | Type | ReadWrite | Description | -|--------------|-----------------------|-----------|--------------| -| temperature | Number:Temperature | | Temperature reported by the sensor | -| humidity | Number:Dimensionless | | Humidity reported by the sensor | -| occupancy | Switch | | Occupancy status reported by the sensor | -| co2 | String | | CO2 reported by the sensor | -| dryContact | String | | Dry contact status reported by the sensor | -| adc | String | | ADC reported by the sensor | +| Channel | Type | ReadWrite | Description | +|--------------------|-----------------------|-----------|--------------| +| temperature | Number:Temperature | | Temperature reported by the sensor | +| humidity | Number:Dimensionless | | Humidity reported by the sensor | +| occupancy | Switch | | Occupancy status reported by the sensor | +| adc | String | | ADC reported by the sensor | +| airPressure | String | | Air Pressure reported by the sensor | +| airQuality | String | | Air Quality reported by the sensor (clean-poor) | +| airQualityAccuracy | String | | Air Quality Accuracy reported by the sensor | +| co2 | String | | CO2 reported by the sensor | +| co2PPM | String | | CO2 level reported by the sensor (low-high) | +| dryContact | String | | Dry contact status reported by the sensor | +| vocPPM | String | | Volatile organic compounds (VOC) reported by the sensor (low-high) | + ## Thing Actions diff --git a/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/handler/EcobeeSensorThingHandler.java b/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/handler/EcobeeSensorThingHandler.java index 8822587f9b..b31ec14a99 100644 --- a/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/handler/EcobeeSensorThingHandler.java +++ b/bundles/org.openhab.binding.ecobee/src/main/java/org/openhab/binding/ecobee/internal/handler/EcobeeSensorThingHandler.java @@ -50,11 +50,16 @@ import org.slf4j.LoggerFactory; public class EcobeeSensorThingHandler extends BaseThingHandler { public static final String CAPABILITY_ADC = "adc"; + public static final String CAPABILITY_AIR_PRESSURE = "airPressure"; + public static final String CAPABILITY_AIR_QUALITY = "airQuality"; + public static final String CAPABILITY_AIR_QUALITY_ACCURACY = "airQualityAccuracy"; public static final String CAPABILITY_CO2 = "co2"; + public static final String CAPABILITY_CO2_PPM = "co2PPM"; public static final String CAPABILITY_DRY_CONTACT = "dryContact"; public static final String CAPABILITY_HUMIDITY = "humidity"; public static final String CAPABILITY_OCCUPANCY = "occupancy"; public static final String CAPABILITY_TEMPERATURE = "temperature"; + public static final String CAPABILITY_VOC_PPM = "vocPPM"; public static final String CAPABILITY_UNKNOWN = "unknown"; private final Logger logger = LoggerFactory.getLogger(EcobeeSensorThingHandler.class); @@ -144,9 +149,14 @@ public class EcobeeSensorThingHandler extends BaseThingHandler { acceptedItemType = "Switch"; break; case CAPABILITY_ADC: + case CAPABILITY_AIR_PRESSURE: + case CAPABILITY_AIR_QUALITY: + case CAPABILITY_AIR_QUALITY_ACCURACY: case CAPABILITY_CO2: + case CAPABILITY_CO2_PPM: case CAPABILITY_DRY_CONTACT: case CAPABILITY_UNKNOWN: + case CAPABILITY_VOC_PPM: default: acceptedItemType = "String"; break; @@ -167,9 +177,14 @@ public class EcobeeSensorThingHandler extends BaseThingHandler { channelTypeUID = CHANNELTYPEUID_OCCUPANCY; break; case CAPABILITY_ADC: + case CAPABILITY_AIR_PRESSURE: + case CAPABILITY_AIR_QUALITY: + case CAPABILITY_AIR_QUALITY_ACCURACY: case CAPABILITY_CO2: + case CAPABILITY_CO2_PPM: case CAPABILITY_DRY_CONTACT: case CAPABILITY_UNKNOWN: + case CAPABILITY_VOC_PPM: default: channelTypeUID = CHANNELTYPEUID_GENERIC; break; @@ -198,9 +213,14 @@ public class EcobeeSensorThingHandler extends BaseThingHandler { state = EcobeeUtils.undefOrOnOff("true".equals(value)); break; case CAPABILITY_ADC: + case CAPABILITY_AIR_PRESSURE: + case CAPABILITY_AIR_QUALITY: + case CAPABILITY_AIR_QUALITY_ACCURACY: case CAPABILITY_CO2: + case CAPABILITY_CO2_PPM: case CAPABILITY_DRY_CONTACT: case CAPABILITY_UNKNOWN: + case CAPABILITY_VOC_PPM: default: state = EcobeeUtils.undefOrString(value); break; -- 2.47.3