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,