From 9f477a61de7a6e1752311eecece59edbe002c9b0 Mon Sep 17 00:00:00 2001 From: Nigreon Date: Tue, 30 Dec 2025 22:33:22 +0100 Subject: [PATCH] Report on air DHT22 errors --- src/main.ino | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main.ino b/src/main.ino index fa3d21a..8248f4c 100644 --- a/src/main.ino +++ b/src/main.ino @@ -77,14 +77,19 @@ JsonDocument analyzeTH_type1(JsonArray payloadrh) { JsonDocument analyzeTH_type2(JsonArray payloadrh) { JsonDocument doc; - int16_t payloadtemp = payloadrh[2].as(); - payloadtemp += payloadrh[1].as() << 8; - doc["temperature_C"] = payloadtemp / 100.0; - uint8_t payloadhumidity = payloadrh[3].as(); - doc["humidity"] = payloadhumidity; + uint8_t errcode = payloadrh[1].as(); + doc["errcode"] = errcode; + if(errcode == 0) { + int16_t payloadtemp = payloadrh[3].as(); + payloadtemp += payloadrh[2].as() << 8; + doc["temperature_C"] = payloadtemp / 100.0; + uint8_t payloadhumidity = payloadrh[4].as(); + doc["humidity"] = payloadhumidity; + } return doc; } + void logJson(JsonDocument jsondata) { if(jsondata["model"].is()) { @@ -107,11 +112,14 @@ void logJson(JsonDocument jsondata) { jsondata["battery_V"] = adoc["battery_V"]; jsondata["battery_percent"] = adoc["battery_percent"]; jsondata["temperature_C"] = adoc["temperature_C"]; - } else if(jsondata["len"].as() == 4 && ((payloadrh[0].as() & 0b00100000 ) > 0)) { + } else if(jsondata["len"].as() == 5 && ((payloadrh[0].as() & 0b00100000 ) > 0)) { treatrh = true; JsonDocument adoc = analyzeTH_type2(payloadrh); - jsondata["temperature_C"] = adoc["temperature_C"]; - jsondata["humidity"] = adoc["humidity"]; + jsondata["errcode"] = adoc["errcode"]; + if(jsondata["errcode"] == 0) { + jsondata["temperature_C"] = adoc["temperature_C"]; + jsondata["humidity"] = adoc["humidity"]; + } } if(treatrh == true) { jsondata.remove("from");