From 60c9adf677537165a41a264a32553d1554b35440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Tue, 7 Jan 2025 11:10:05 +0100 Subject: [PATCH] state json refactored --- src/NodeTest.h | 7 +++++-- src/patrix/mqtt.cpp | 6 ++++-- src/patrix/mqtt.h | 2 +- src/patrix/sensor/DHT22.h | 15 +++++++++------ src/patrix/sensor/DallasSensor.h | 2 +- src/patrix/sensor/Max6675Sensor.h | 2 +- 6 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/NodeTest.h b/src/NodeTest.h index 75795ec..38668f3 100644 --- a/src/NodeTest.h +++ b/src/NodeTest.h @@ -36,10 +36,13 @@ public: dallas.loop(); test.loop(); testraum.loop(); - if (test.isDue() || testraum.isDue()) { + const auto tt = test.isDue(); + const auto tr = testraum.isDue(); + if (tt || tr) { JsonDocument json; + json["timestamp"] = time(nullptr); toJson(json); - if (mqttPublish(WiFiClass::getHostname(), json)) { + if (mqttPublish(WiFiClass::getHostname(), "state", json)) { test.markSent(); testraum.markSent(); } diff --git a/src/patrix/mqtt.cpp b/src/patrix/mqtt.cpp index fce9d66..10ebe79 100644 --- a/src/patrix/mqtt.cpp +++ b/src/patrix/mqtt.cpp @@ -46,9 +46,11 @@ void mqttLoop() { } } -bool mqttPublish(const char *topic, const JsonDocument& json) { +bool mqttPublish(const char *topic0, const char *topic1, const JsonDocument& json) { + char topic[256]; + snprintf(topic, sizeof(topic), "%s/%s", topic0, topic1); + char buffer[512]; serializeJson(json, buffer); - info(buffer); return mqtt.publish(topic, buffer); } diff --git a/src/patrix/mqtt.h b/src/patrix/mqtt.h index 624deee..6c259fa 100644 --- a/src/patrix/mqtt.h +++ b/src/patrix/mqtt.h @@ -5,6 +5,6 @@ void mqttLoop(); -bool mqttPublish(const char *topic, const JsonDocument& json); +bool mqttPublish(const char *topic0, const char *topic1, const JsonDocument& json); #endif diff --git a/src/patrix/sensor/DHT22.h b/src/patrix/sensor/DHT22.h index 567cf78..d070517 100644 --- a/src/patrix/sensor/DHT22.h +++ b/src/patrix/sensor/DHT22.h @@ -27,8 +27,8 @@ public: ) : Sensor(name), sensor(pin, DHT_TYPE_22), temperature(name, "temperature", temperatureThreshold, maxAgeSeconds, overdueSeconds), - humidityRelative(name, "humidityRelative", humidityRelativeThreshold, maxAgeSeconds, overdueSeconds), - humidityAbsolute(name, "humidityAbsolute", humidityAbsoluteThreshold, maxAgeSeconds, overdueSeconds) { + humidityRelative(name, "humidity/relative", humidityRelativeThreshold, maxAgeSeconds, overdueSeconds), + humidityAbsolute(name, "humidity/absolute", humidityAbsoluteThreshold, maxAgeSeconds, overdueSeconds) { // } @@ -44,13 +44,16 @@ public: } void toJson(JsonDocument& json) override { - json[name][temperature.getName()] = temperature.getCurrentValue(); - json[name][humidityRelative.getName()] = humidityRelative.getCurrentValue(); - json[name][humidityAbsolute.getName()] = humidityAbsolute.getCurrentValue(); + json[String(name) + "/" + temperature.getName()] = temperature.getCurrentValue(); + json[String(name) + "/" + humidityRelative.getName()] = humidityRelative.getCurrentValue(); + json[String(name) + "/" + humidityAbsolute.getName()] = humidityAbsolute.getCurrentValue(); } bool isDue() override { - return temperature.isDue() || humidityRelative.isDue() || humidityAbsolute.isDue(); + const auto tp = temperature.isDue(); + const auto hr = humidityRelative.isDue(); + const auto ha = humidityAbsolute.isDue(); + return tp || hr || ha; } void markSent() override { diff --git a/src/patrix/sensor/DallasSensor.h b/src/patrix/sensor/DallasSensor.h index 11d5149..48e1d56 100644 --- a/src/patrix/sensor/DallasSensor.h +++ b/src/patrix/sensor/DallasSensor.h @@ -38,7 +38,7 @@ public: } void toJson(JsonDocument& json) override { - json[name][temperature.getName()] = temperature.getCurrentValue(); + json[String(name) + "/" + temperature.getName()] = temperature.getCurrentValue(); } bool isDue() override { diff --git a/src/patrix/sensor/Max6675Sensor.h b/src/patrix/sensor/Max6675Sensor.h index cb0c079..e52db41 100644 --- a/src/patrix/sensor/Max6675Sensor.h +++ b/src/patrix/sensor/Max6675Sensor.h @@ -37,7 +37,7 @@ public: } void toJson(JsonDocument& json) override { - json[name][temperature.getName()] = temperature.getCurrentValue(); + json[String(name) + "/" + temperature.getName()] = temperature.getCurrentValue(); } bool isDue() override {