From db34ed96e585aef04c50f92393319b0c3664d3df Mon Sep 17 00:00:00 2001 From: Markus Kirberg Date: Mon, 10 Jun 2024 20:00:20 +0200 Subject: [PATCH] Check DHT Sensor values for errors (#1392) * checkval * bump to beta3 * fix and parenthesis --- mos.yml | 2 +- src/DHT/shelly_dht_sensor.cpp | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/mos.yml b/mos.yml index aa44a9a0..114a8867 100644 --- a/mos.yml +++ b/mos.yml @@ -1,6 +1,6 @@ author: Shelly-HomeKit contributors description: A HomeKit firmware for Shelly switches -version: 2.12.0-beta2 +version: 2.12.0-beta3 libs_version: latest modules_version: latest diff --git a/src/DHT/shelly_dht_sensor.cpp b/src/DHT/shelly_dht_sensor.cpp index 7ac61b79..97bab0e3 100644 --- a/src/DHT/shelly_dht_sensor.cpp +++ b/src/DHT/shelly_dht_sensor.cpp @@ -83,9 +83,20 @@ StatusOr DHTSensor::GetHumidity() { } void DHTSensor::UpdateTemperatureCB() { - // std::nan - result_ = mgos_dht_get_temp(dht); - result_humidity_ = mgos_dht_get_humidity(dht); + float result = mgos_dht_get_temp(dht); + float result_humidity = mgos_dht_get_humidity(dht); + + // check values for validity + if (((result == 0) and (result_humidity == 0)) or isnan(result) or + isnan(result_humidity)) { + // error during readout do nothing for now + LOG(LL_INFO, ("DHT: invalid value received")); + return; + } + + result_ = result; + result_humidity_ = result_humidity; + if (notifier_) { notifier_(); }