Report on air DHT22 errors

This commit is contained in:
Nigreon 2025-12-30 22:33:22 +01:00
parent 9a715056f1
commit 9f477a61de
1 changed files with 16 additions and 8 deletions

View File

@ -77,14 +77,19 @@ JsonDocument analyzeTH_type1(JsonArray payloadrh) {
JsonDocument analyzeTH_type2(JsonArray payloadrh) { JsonDocument analyzeTH_type2(JsonArray payloadrh) {
JsonDocument doc; JsonDocument doc;
int16_t payloadtemp = payloadrh[2].as<unsigned char>(); uint8_t errcode = payloadrh[1].as<unsigned char>();
payloadtemp += payloadrh[1].as<unsigned char>() << 8; doc["errcode"] = errcode;
doc["temperature_C"] = payloadtemp / 100.0; if(errcode == 0) {
uint8_t payloadhumidity = payloadrh[3].as<unsigned char>(); int16_t payloadtemp = payloadrh[3].as<unsigned char>();
doc["humidity"] = payloadhumidity; payloadtemp += payloadrh[2].as<unsigned char>() << 8;
doc["temperature_C"] = payloadtemp / 100.0;
uint8_t payloadhumidity = payloadrh[4].as<unsigned char>();
doc["humidity"] = payloadhumidity;
}
return doc; return doc;
} }
void logJson(JsonDocument jsondata) { void logJson(JsonDocument jsondata) {
if(jsondata["model"].is<String>()) if(jsondata["model"].is<String>())
{ {
@ -107,11 +112,14 @@ void logJson(JsonDocument jsondata) {
jsondata["battery_V"] = adoc["battery_V"]; jsondata["battery_V"] = adoc["battery_V"];
jsondata["battery_percent"] = adoc["battery_percent"]; jsondata["battery_percent"] = adoc["battery_percent"];
jsondata["temperature_C"] = adoc["temperature_C"]; jsondata["temperature_C"] = adoc["temperature_C"];
} else if(jsondata["len"].as<int>() == 4 && ((payloadrh[0].as<unsigned char>() & 0b00100000 ) > 0)) { } else if(jsondata["len"].as<int>() == 5 && ((payloadrh[0].as<unsigned char>() & 0b00100000 ) > 0)) {
treatrh = true; treatrh = true;
JsonDocument adoc = analyzeTH_type2(payloadrh); JsonDocument adoc = analyzeTH_type2(payloadrh);
jsondata["temperature_C"] = adoc["temperature_C"]; jsondata["errcode"] = adoc["errcode"];
jsondata["humidity"] = adoc["humidity"]; if(jsondata["errcode"] == 0) {
jsondata["temperature_C"] = adoc["temperature_C"];
jsondata["humidity"] = adoc["humidity"];
}
} }
if(treatrh == true) { if(treatrh == true) {
jsondata.remove("from"); jsondata.remove("from");