From eba6d80ddc88f339cf080248a868afdb4abd093f Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Fri, 25 Sep 2020 19:37:22 +0200 Subject: [PATCH] aggregate all json elements and send all --- gateway/gateway.ino | 85 +++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/gateway/gateway.ino b/gateway/gateway.ino index 27e8d1a..5cea8a8 100644 --- a/gateway/gateway.ino +++ b/gateway/gateway.ino @@ -4,8 +4,6 @@ #include #include -#define DEBUG 0 - #define RESET_PIN 10 #define SEND_PIN 11 #define RECEIVE_PIN 2 @@ -19,7 +17,6 @@ unsigned long lastReadTime = -READ_INTERVAL(10); RCSwitch mySwitch = RCSwitch(); DHT dht = DHT(DHT11_PIN, DHT11); - void setup() { pinMode(LED_BUILTIN, OUTPUT); pinMode(RESET_PIN, INPUT_PULLUP); @@ -36,27 +33,51 @@ void setup() { } void loop() { - unsigned long currentTime = millis(); - if ((currentTime - lastReadTime) > readInterval) { - lastReadTime = currentTime; - StaticJsonDocument<256> jsonDoc; - JsonObject dht11 = jsonDoc.createNestedObject("dht11"); - dht11["temperature"] = dht.readTemperature(); - dht11["humidity"] = dht.readHumidity(); + StaticJsonDocument<200> jsonDoc; + readCommand(); + readRcSwitch(jsonDoc); + readDht(jsonDoc); + if (!jsonDoc.isNull()) { serializeJson(jsonDoc, Serial); Serial.println(); } +} + +void readRcSwitch(JsonDocument& jsonDoc) { + if (mySwitch.available()) { + unsigned long value = mySwitch.getReceivedValue(); + mySwitch.resetAvailable(); + + if (mySwitch.getReceivedProtocol() == 2) { + if (value == 637541753L || value == 771759481L) { + JsonObject motion = jsonDoc.createNestedObject("motion"); + motion["kitchen"] = value == 637541753L ? "on" : "off"; + return; + } + if (value == 1879048230L || value == 1879048198L) { + JsonObject motion = jsonDoc.createNestedObject("motion"); + motion["basement"] = value == 1879048230L ? "on" : "off"; + return; + } + } + JsonObject rcSwitch = jsonDoc.createNestedObject("rcSwitch"); + rcSwitch["protocol"] = mySwitch.getReceivedProtocol(); + rcSwitch["value"] = value; + } +} + +void readCommand() { if (Serial.available() > 0) { String cmd = Serial.readStringUntil('\n'); if (cmd == "reset") { pinMode(RESET_PIN, OUTPUT); digitalWrite(RESET_PIN, LOW); } - StaticJsonDocument<256> jsonBuffer; - DeserializationError err = deserializeJson(jsonBuffer, cmd); + StaticJsonDocument<256> jsonDoc; + DeserializationError err = deserializeJson(jsonDoc, cmd); if (err == DeserializationError::Ok) { - if (jsonBuffer.containsKey("rcSwitch")) { - JsonObject rcSwitch = jsonBuffer["rcSwitch"]; + if (jsonDoc.containsKey("rcSwitch")) { + JsonObject rcSwitch = jsonDoc["rcSwitch"]; unsigned int protocol = rcSwitch["protocol"]; if (protocol == 1) { mySwitch.setProtocol(protocol); @@ -76,32 +97,14 @@ void loop() { Serial.println(err.c_str()); } } - if (mySwitch.available()) { - unsigned long value = mySwitch.getReceivedValue(); - mySwitch.resetAvailable(); -#if DEBUG - StaticJsonDocument<100> json1; - JsonObject rcSwitch = json1.createNestedObject("rcSwitch"); - rcSwitch["protocol"] = mySwitch.getReceivedProtocol(); - rcSwitch["value"] = value; - serializeJson(json1, Serial); - Serial.println(); -#endif - if (mySwitch.getReceivedProtocol() == 2) { - if (value == 637541753L || value == 771759481L) { - StaticJsonDocument<100> jsonBuffer; - JsonObject motion = jsonBuffer.createNestedObject("motion"); - motion["kitchen"] = value == 637541753L ? "on" : "off"; - serializeJson(jsonBuffer, Serial); - Serial.println(); - } - if (value == 1879048230L || value == 1879048198L) { - StaticJsonDocument<100> jsonBuffer; - JsonObject motion = jsonBuffer.createNestedObject("motion"); - motion["basement"] = value == 1879048230L ? "on" : "off"; - serializeJson(jsonBuffer, Serial); - Serial.println(); - } - } +} + +void readDht(JsonDocument& jsonDoc) { + unsigned long currentTime = millis(); + if ((currentTime - lastReadTime) > readInterval) { + lastReadTime = currentTime; + JsonObject dht11 = jsonDoc.createNestedObject("dht11"); + dht11["temperature"] = dht.readTemperature(); + dht11["humidity"] = dht.readHumidity(); } }