From c084a8c5be9294372181bb706922d30470fc84bc Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Thu, 13 Oct 2022 12:13:13 +0200 Subject: [PATCH] use builtin NaN for 0 voltage --- gateway/src/gateway.cpp | 18 +++++++++--------- libraries/Tiny/Tiny.h | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gateway/src/gateway.cpp b/gateway/src/gateway.cpp index b975d36..935ad09 100644 --- a/gateway/src/gateway.cpp +++ b/gateway/src/gateway.cpp @@ -1,8 +1,10 @@ #include #include #include -#include #include "Tiny.h" + +#define ARDUINOJSON_ENABLE_NAN 1 +#include #include "Dht.h" @@ -48,20 +50,18 @@ bool buildSensorJson(JsonDocument& jsonDoc, unsigned long value) { JsonObject sensor = jsonDoc.createNestedObject("sensor"); - float voltage = (float)GET_VCC(value)/1000; - if (voltage != 0) { - sensor["voltage"] = voltage; - } + unsigned long voltage = GET_VCC(value); + sensor["voltage"] = voltage == 0 ? NAN : (float)voltage / 1000; switch (GET_TYPE(value)) { case SensorType::GENERIC: sensor["value"] = GET_VALUE(value); break; case SensorType::TEMPERATURE: - sensor["temperature"] = (float)GET_TEMP(value)/10; + sensor["temperature"] = (float)GET_TEMP(value) / 10; break; case SensorType::HUMIDITY: - sensor["humidity"] = (float)GET_HUMIDITY(value)/10; + sensor["humidity"] = (float)GET_HUMIDITY(value) / 10; break; case SensorType::CONTACT: sensor["state"] = GET_STATE(value) ? "on" : "off"; @@ -69,7 +69,7 @@ bool buildSensorJson(JsonDocument& jsonDoc, unsigned long value) { default: return false; } - + return true; } @@ -110,7 +110,7 @@ void runJsonCommand(String cmd) { DeserializationError err = deserializeJson(jsonArray, cmd); if (err == DeserializationError::Ok) { JsonArray array = jsonArray.as(); - for(JsonVariant jsonDoc : array) { + for (JsonVariant jsonDoc : array) { if (jsonDoc.containsKey("rcSwitch")) { JsonObject rcSwitch = jsonDoc["rcSwitch"]; unsigned int protocol = rcSwitch["protocol"]; diff --git a/libraries/Tiny/Tiny.h b/libraries/Tiny/Tiny.h index 67dc4c4..bf3ed9d 100644 --- a/libraries/Tiny/Tiny.h +++ b/libraries/Tiny/Tiny.h @@ -13,7 +13,7 @@ #define GET_TEMP(value) (((unsigned long)value >> 18) & 0x2FF) #define GET_HUMIDITY(value) (((unsigned long)value >> 18) & 0x2FF) #define GET_VALUE(value) (((unsigned long)value >> 18) & 0x2FF) -#define GET_VCC(value) ((value >> 5) & 0x1FFF) +#define GET_VCC(value) (((unsigned long)value >> 5) & 0x1FFF) enum SensorType { GENERIC = 4,