Messwerte nun von ZigBee-Sensor per MQTT

This commit is contained in:
rxf
2025-06-09 14:00:12 +02:00
parent 664d91d6f4
commit 91e98d7c89
6 changed files with 47 additions and 25 deletions

View File

@@ -32,7 +32,7 @@ Hiermit können divere Parameter des Gerätes gesetzt werden. Unterschieden werd
Einstellen der Updaterate der Grafik (in Sekunden). Einstellen der Updaterate der Grafik (in Sekunden).
* **{"tempoffset":ttt}** * **{"tempoffset":ttt}**
Einstellen des Offset für die Temperatur (in den Gehäuse ist es zu warm) Einstellen des Offset für die Temperatur (in den Gehäuse ist es zu warm)
* **{"humoffset":hhh}** Einstellen des Feuchte-Offsets (der BME misst etwas zu wenig) * **{"humoffset":hhh}** Einstellen des Feuchte-Offsets (der BME misst etwas zu wenig)
Alle Wert sind Float-Werte! Alle Wert sind Float-Werte!

View File

@@ -1,7 +1,7 @@
// Grafik Routinen // Grafik Routinen
#define GRAFIK #define GRAFIK
#include "handlebme280.h" // #include "handlebme280.h"
#include "main.h" #include "main.h"
#include "grafik.h" #include "grafik.h"

View File

@@ -24,9 +24,9 @@
#include "weifi.h" #include "weifi.h"
#include "mqtt.h" #include "mqtt.h"
#include "handlebme280.h" // #include "handlebme280.h"
#include "grafik.h" #include "grafik.h"
#include "interpolation.h" // #include "interpolation.h"
#include "main.h" #include "main.h"
#include <locale.h> #include <locale.h>
@@ -36,7 +36,6 @@
long bmeReadtimer = 0; long bmeReadtimer = 0;
long updatetimer = 0; long updatetimer = 0;
BME280Data bmedata;
int currentSecond = -1; int currentSecond = -1;
@@ -57,15 +56,15 @@ void setup() {
delay (1000); delay (1000);
Serial.println(LVGL_Arduino); Serial.println(LVGL_Arduino);
initBME280(); // initBME280();
// Start LVGL // Start LVGL
setup_grafik(); setup_grafik();
Serial.println("LVGL started"); Serial.println("LVGL started");
bmedata = readBME280(); // bmedata = readBME280();
bmedata.hum = getRelativeFeuchte(bmedata.temp, bmedata.hum); // bmedata.hum = getRelativeFeuchte(bmedata.temp, bmedata.hum);
bmedata.temp = bmedata.temp - tempOffset; // bmedata.temp = bmedata.temp - tempOffset;
arcTemp.value = bmedata.temp; arcTemp.value = bmedata.temp;
arcHum.value = bmedata.hum; arcHum.value = bmedata.hum;
delay(1000); delay(1000);
@@ -120,12 +119,12 @@ void loop() {
} }
if (millis() - bmeReadtimer > bmeReadTime) { if (millis() - bmeReadtimer > bmeReadTime) {
bmeReadtimer = millis(); bmeReadtimer = millis();
bmedata = readBME280(); // bmedata = readBME280();
float tmess = bmedata.temp; // float tmess = bmedata.temp;
float hmess = bmedata.hum; // float hmess = bmedata.hum;
bmedata.hum = getRelativeFeuchte(bmedata.temp, bmedata.hum); // bmedata.hum = getRelativeFeuchte(bmedata.temp, bmedata.hum);
bmedata.temp = bmedata.temp - tempOffset; // bmedata.temp = bmedata.temp - tempOffset;
doPublish(bmedata.temp, bmedata.hum, tmess, hmess); // doPublish(bmedata.temp, bmedata.hum, tmess, hmess);
} }
if (millis() - updatetimer > updateTime) { if (millis() - updatetimer > updateTime) {
updatetimer = millis(); updatetimer = millis();

View File

@@ -12,6 +12,12 @@ extern "C" {
//#define MAXREADINGS 224 //#define MAXREADINGS 224
#define MAXREADINGS 200 #define MAXREADINGS 200
typedef struct {
float temp;
float hum;
float pres;
} BME280Data;
#ifdef MAIN #ifdef MAIN
const char* wday[] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"}; const char* wday[] = {"Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"};
const char* month[] = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; const char* month[] = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
@@ -21,6 +27,8 @@ int bmeReadTime = 10000;
int updateTime = 30000; int updateTime = 30000;
struct tm timeinfo; struct tm timeinfo;
int oldDay = 0; int oldDay = 0;
BME280Data bmedata;
#else #else
extern const char* wday[7]; extern const char* wday[7];
extern const char* month[12]; extern const char* month[12];
@@ -29,6 +37,7 @@ extern TimerHandle_t wifiReconnectTimer;
extern int bmeReadTime; extern int bmeReadTime;
extern int updateTime; extern int updateTime;
extern struct tm timeinfo; extern struct tm timeinfo;
extern BME280Data bmedata;
#endif #endif
void setBMEreadtime(int time); void setBMEreadtime(int time);

View File

@@ -1,9 +1,10 @@
#define MQTT #define MQTT
#include "grafik.h" #include "grafik.h"
// #include "handlebme280.h"
#include "main.h" #include "main.h"
#include "weifi.h" #include "weifi.h"
#include "interpolation.h" // #include "interpolation.h"
#include "mqtt.h" #include "mqtt.h"
@@ -45,13 +46,21 @@ void onmessage(char *tp, byte *msg, unsigned int length)
setBMEreadtime(doc["updaterate"]); setBMEreadtime(doc["updaterate"]);
// showRate(doc["updaterate"]); // showRate(doc["updaterate"]);
} }
if(doc.containsKey("tempoffset")) { // if(doc.containsKey("tempoffset")) {
tempOffset = (float)doc["tempoffset"]; // tempOffset = (float)doc["tempoffset"];
// }
// if(doc.containsKey("humoffset")) {
// humOffset = (float)doc["humoffset"];
// }
// Serial.printf("tempoffset: %.1f, humoffset: %.1f\n",tempOffset, humOffset);
} else if (topic == MQTT_TOPIC "set/messwerte") {
// aktuelle Messwerte kommen rein
if (doc.containsKey("temperature")) {
bmedata.temp = doc["temperature"];
} }
if(doc.containsKey("humoffset")) { if (doc.containsKey("humidity")) {
humOffset = (float)doc["humoffset"]; bmedata.hum = doc["humidity"];
} }
Serial.printf("tempoffset: %.1f, humoffset: %.1f\n",tempOffset, humOffset);
} else if (topic == MQTT_TOPIC "get") { } else if (topic == MQTT_TOPIC "get") {
if(doc.containsKey("send")) { if(doc.containsKey("send")) {
if(doc["send"] == "ip") { if(doc["send"] == "ip") {
@@ -83,6 +92,7 @@ void reconnect(void)
} }
Serial.println("Connected"); Serial.println("Connected");
client.subscribe(MQTT_TOPIC "set/parameter"); client.subscribe(MQTT_TOPIC "set/parameter");
client.subscribe(MQTT_TOPIC "set/messwerte");
client.subscribe(MQTT_TOPIC "get"); client.subscribe(MQTT_TOPIC "get");
client.subscribe("hm/status/Aussen_Temp:1/#"); client.subscribe("hm/status/Aussen_Temp:1/#");
} }

View File

@@ -1,11 +1,15 @@
// Versionsgeschichte // Versionsgeschichte
#define VERSION "1.6.5" #define VERSION "2.0.0"
#define VDATE "2025-04-12" #define VDATE "2025-06-09"
#define VTIME "23:00 UTC" #define VTIME "09:00 UTC"
/* /*
Version Date Author Version Date Author
2.0.0 2025-06-09 rxf
- Messwerte werden nun vom ZigBee-Sensor per MQTT empfangen,
d.h. der BME280 wird nicht mehr verwendet
1.6.4 2025-04-12 rxf 1.6.4 2025-04-12 rxf
- Neuer Versuchmit DST - Neuer Versuchmit DST
- täglich um 0h00 Restart - täglich um 0h00 Restart