From 6b20f577be70b9a5a560855acdffbdbc8505b6d7 Mon Sep 17 00:00:00 2001 From: Timo Volkmann Date: Fri, 3 Jul 2020 19:08:38 +0200 Subject: [PATCH] improved sensor data structure --- src/peripherals.cpp | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/peripherals.cpp b/src/peripherals.cpp index db4aa27..6d93cf9 100644 --- a/src/peripherals.cpp +++ b/src/peripherals.cpp @@ -1,5 +1,6 @@ -#include +#include #include +#include #include //using namespace std; @@ -8,12 +9,9 @@ extern "C" { #include "freertos/task.h" } -#define MQTT_MOISTURE MQTT_PATH_PUB "moisture" -#define MQTT_TEMPERATURE MQTT_PATH_PUB "temperature" -#define MQTT_HUMIDITY MQTT_PATH_PUB "humidity" -#define MQTT_BRIGHTNESS MQTT_PATH_PUB "brightness" +#define MQTT_SENSOR_DATA MQTT_PATH_PUB "data" -char buffer[16]; +char buffer[128]; // Feldkapazität des Bodens in Prozent: Standard ist Humus int fieldCapacity = 44; @@ -23,31 +21,38 @@ int permanentWiltingPoint = 25; int soilSaturation = 69; void readSensors() { + StaticJsonDocument<128> doc; float lxValue = readLightSensorValue(); Serial.print("Light intensity: "); Serial.print(lxValue); Serial.println(" lx"); - sprintf(buffer, "%f", lxValue); - publishMessage(MQTT_BRIGHTNESS, buffer); + doc["brightness"] = lxValue; + //sprintf(buffer, "%f", lxValue); + //publishMessage(MQTT_BRIGHTNESS, buffer); int mstValue = readCapacitiveSoilMoistureSensor(); Serial.print("Soil moisture: "); Serial.println(mstValue); - sprintf(buffer, "%i", mstValue); - publishMessage(MQTT_MOISTURE, buffer); + // sprintf(buffer, "%i", mstValue); + // publishMessage(MQTT_MOISTURE, buffer); + doc["moisture"] = mstValue; float humidityValue = readHumidity(); Serial.print("Humidity: "); Serial.println(humidityValue); - sprintf(buffer, "%f", humidityValue); - publishMessage(MQTT_HUMIDITY, buffer); + // sprintf(buffer, "%f", humidityValue); + // publishMessage(MQTT_HUMIDITY, buffer); + doc["humidity"] = humidityValue; float temperatureValue = readTemperature(); Serial.print("Temperature: "); Serial.println(temperatureValue); - sprintf(buffer, "%f", temperatureValue); - publishMessage(MQTT_TEMPERATURE, buffer); + // sprintf(buffer, "%f", temperatureValue); + // publishMessage(MQTT_TEMPERATURE, buffer); + doc["temperature"] = temperatureValue; Serial.print("\n"); + serializeJson(doc, buffer); + publishMessage(MQTT_SENSOR_DATA, buffer); } bool openValve() {