Skip to content

Commit 32966a6

Browse files
committed
feat(zigbee): Add humidity support for Thermostat
1 parent 8db8b55 commit 32966a6

File tree

5 files changed

+459
-38
lines changed

5 files changed

+459
-38
lines changed

libraries/Zigbee/examples/Zigbee_Thermostat/Zigbee_Thermostat.ino

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void setup() {
9090
#endif
9191

9292
// Set callback function for receiving sensor configuration
93-
zbThermostat.onConfigReceive(receiveSensorConfig);
93+
zbThermostat.onTempConfigReceive(receiveSensorConfig);
9494

9595
//Optional: set Zigbee device name and model
9696
zbThermostat.setManufacturerAndModel("Espressif", "ZigbeeThermostat");
@@ -138,10 +138,10 @@ void setup() {
138138
"Device on endpoint %d, IEEE Address: %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X\r\n", device->endpoint, device->ieee_addr[7], device->ieee_addr[6],
139139
device->ieee_addr[5], device->ieee_addr[4], device->ieee_addr[3], device->ieee_addr[2], device->ieee_addr[1], device->ieee_addr[0]
140140
);
141-
zbThermostat.getSensorSettings(device->endpoint, device->ieee_addr);
141+
zbThermostat.getTemperatureSettings(device->endpoint, device->ieee_addr);
142142
} else {
143143
Serial.printf("Device on endpoint %d, short address: 0x%x\r\n", device->endpoint, device->short_addr);
144-
zbThermostat.getSensorSettings(device->endpoint, device->short_addr);
144+
zbThermostat.getTemperatureSettings(device->endpoint, device->short_addr);
145145
}
146146
}
147147
}

libraries/Zigbee/keywords.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,17 @@ onLightColorChangeWithSource KEYWORD2
142142

143143
# ZigbeeThermostat
144144
onTempRecieve KEYWORD2
145-
onConfigRecieve KEYWORD2
146145
onTempReceiveWithSource KEYWORD2
146+
onTempConfigReceive KEYWORD2
147147
getTemperature KEYWORD2
148-
getSensorSettings KEYWORD2
148+
getTemperatureSettings KEYWORD2
149149
setTemperatureReporting KEYWORD2
150+
onHumidityReceive KEYWORD2
151+
onHumidityReceiveWithSource KEYWORD2
152+
onHumidityConfigReceive KEYWORD2
153+
getHumidity KEYWORD2
154+
getHumiditySettings KEYWORD2
155+
setHumidityReporting KEYWORD2
150156

151157
# Common Zigbee Sensor
152158
setMinMaxValue KEYWORD2

libraries/Zigbee/src/ep/ZigbeeTempSensor.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,10 @@ bool ZigbeeTempSensor::reportTemperature() {
127127
}
128128

129129
void ZigbeeTempSensor::addHumiditySensor(float min, float max, float tolerance) {
130-
int16_t zb_min = zb_float_to_s16(min);
131-
int16_t zb_max = zb_float_to_s16(max);
130+
uint16_t zb_min = (uint16_t)(min * 100);
131+
uint16_t zb_max = (uint16_t)(max * 100);
132132
uint16_t zb_tolerance = (uint16_t)(tolerance * 100);
133-
int16_t default_hum = ESP_ZB_ZCL_REL_HUMIDITY_MEASUREMENT_MEASURED_VALUE_DEFAULT;
133+
uint16_t default_hum = ESP_ZB_ZCL_REL_HUMIDITY_MEASUREMENT_MEASURED_VALUE_DEFAULT;
134134
esp_zb_attribute_list_t *humidity_cluster = esp_zb_zcl_attr_list_create(ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT);
135135
esp_zb_humidity_meas_cluster_add_attr(humidity_cluster, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, &default_hum);
136136
esp_zb_humidity_meas_cluster_add_attr(humidity_cluster, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_MIN_VALUE_ID, &zb_min);
@@ -142,7 +142,7 @@ void ZigbeeTempSensor::addHumiditySensor(float min, float max, float tolerance)
142142

143143
bool ZigbeeTempSensor::setHumidity(float humidity) {
144144
esp_zb_zcl_status_t ret = ESP_ZB_ZCL_STATUS_SUCCESS;
145-
int16_t zb_humidity = zb_float_to_s16(humidity);
145+
uint16_t zb_humidity = (uint16_t)(humidity * 100);
146146
log_v("Updating humidity sensor value...");
147147
/* Update humidity sensor measured value */
148148
log_d("Setting humidity to %d", zb_humidity);

0 commit comments

Comments
 (0)