V 1.5.2 Versionszeit anzeigen, Offsets per MQTT einstellbar

This commit is contained in:
rxf
2024-08-22 14:17:14 +02:00
parent e66633186b
commit c57572262f
8 changed files with 57 additions and 29 deletions

View File

@@ -339,8 +339,8 @@ void drawChart()
// Versionsnummer und Datum
lv_obj_t *version_label = lv_label_create(lv_screen_active());
char ver[20];
sprintf(ver, "V %s %s", VERSION, VDATE);
char ver[40];
sprintf(ver, "V %s %s %s", VERSION, VDATE, VTIME);
lv_label_set_text(version_label, ver);
lv_obj_align(version_label, LV_ALIGN_BOTTOM_MID, 0, 0);
lv_obj_add_style(version_label, &style_info_label, LV_PART_MAIN);

View File

@@ -4,6 +4,8 @@
// Feuchte immer deutlich zu niedrig. Mit Hilfe der Sättigungs-Tabelle wird nun die absolute Feuchte bei der
// wahren Temperatur (Tmess - 3.2°C) ermittelt und dann die relative Feuchte berechnet.
#define INTERPOL
#include <math.h>
#include "interpolation.h"

View File

@@ -13,9 +13,14 @@ const float dampftabelle[] = {
// 30, 31, 32, 33, 34, 35 36
30.35, 32.05, 33, 85, 35.70, 37.65, 39.6, 41.7};
const int indexOffset = 15;
const float tempOffset = 3.2;
const float humOffset = 5.0;
#ifdef INTERPOL
float tempOffset = 3.2;
float humOffset = 5.0;
#else
extern float tempOffset;
extern float humOffset;
#endif
float getDampfgehalt(float temp);
int getRelativeFeuchte(float temp, float hum);

View File

@@ -72,6 +72,7 @@ void setup() {
bmedata = readBME280();
bmedata.hum = getRelativeFeuchte(bmedata.temp, bmedata.hum);
bmedata.temp = bmedata.temp - tempOffset;
arcTemp.value = bmedata.temp;
arcHum.value = bmedata.hum;
delay(1000);
@@ -126,8 +127,11 @@ void loop() {
if (millis() - bmeReadtimer > bmeReadTime) {
bmeReadtimer = millis();
bmedata = readBME280();
float tmess = bmedata.temp;
float hmess = bmedata.hum;
bmedata.hum = getRelativeFeuchte(bmedata.temp, bmedata.hum);
doPublish(bmedata.temp+arcTemp.value_offset, bmedata.hum+arcHum.value_offset, bmedata.temp, bmedata.hum);
bmedata.temp = bmedata.temp - tempOffset;
doPublish(bmedata.temp, bmedata.hum, tmess, hmess);
}
if (millis() - updatetimer > updateTime) {
updatetimer = millis();
@@ -136,11 +140,12 @@ void loop() {
setValuetoArc(arcHum, bmedata.hum+arcHum.value_offset);
}
if (!client.connected())
{
reconnect();
}
client.loop();
checkMQTT();
// if (!client.connected())
// {
// reconnect();
// }
// client.loop();
server.handleClient();

View File

@@ -3,6 +3,7 @@
#include "grafik.h"
#include "main.h"
#include "weifi.h"
#include "interpolation.h"
#include "mqtt.h"
@@ -44,13 +45,13 @@ void onmessage(char *tp, byte *msg, unsigned int length)
setBMEreadtime(doc["updaterate"]);
// showRate(doc["updaterate"]);
}
if(doc.containsKey("isttemp")) {
arcTemp.value_offset = (float)doc["isttemp"] - arcTemp.value;
if(doc.containsKey("tempoffset")) {
tempOffset = (float)doc["tempoffset"];
}
if(doc.containsKey("isthum")) {
arcHum.value_offset = (float)doc["isthum"] - arcHum.value;
if(doc.containsKey("humoffset")) {
humOffset = (float)doc["humoffset"];
}
Serial.printf("tempoffset: %.1f, humoffset: %.1f\n", arcTemp.value_offset, arcHum.value_offset);
Serial.printf("tempoffset: %.1f, humoffset: %.1f\n",tempOffset, humOffset);
}
}
@@ -60,10 +61,11 @@ void reconnect(void)
while (!client.connected())
{
Serial.print("Reconnecting...");
bool erg = client.connect(CLIENT_ID, MQTT_USER, MQTT_PASSWD);
char * chipID = getChipID();
bool erg = client.connect(chipID, MQTT_USER, MQTT_PASSWD);
Serial.println(erg);
if (!client.connect(CLIENT_ID, MQTT_USER, MQTT_PASSWD))
if (!client.connect(chipID, MQTT_USER, MQTT_PASSWD))
{
Serial.print("failed, rc=");
Serial.print(client.state());
@@ -76,8 +78,8 @@ void reconnect(void)
}
void doPublish(float temp, float hum, float tm, float hm) {
char payload[50];
sprintf(payload, "{\"temperature\":%.1f,\"tempmess\":%.1f,\"humidity\":%.1f,\"hummess\":%.1f}", temp, hum, tm, hm);
char payload[80];
sprintf(payload, "{\"temperature\":%.1f,\"tempmess\":%.1f,\"humidity\":%.1f,\"hummess\":%.1f}", temp, tm, hum, hm);
char * chipID = getChipID();
char topic[50];
sprintf(topic, "CYD/get/%s/bme280", chipID);
@@ -88,8 +90,6 @@ void doPublish(float temp, float hum, float tm, float hm) {
// check MQTT in the loop
void checkMQTT(void) {
Serial.println("Try connected ...");
if (!client.connected())
{

View File

@@ -15,8 +15,6 @@
#define MQTT_TOPIC "CYD/set/"
#define MQTT_PUB_TEMP "CYD/get/bme280"
#define CLIENT_ID "ESP32Client7"
#ifdef MQTT
WiFiClient espClient;
PubSubClient client(espClient);

View File

@@ -1,10 +1,20 @@
// Versionsgeschichte
#define VERSION "1.5.0"
#define VERSION "1.5.2"
#define VDATE "2024-08-21"
#define VTIME "12:15 UTC"
/*
Version Date Author
1.5.2 2024-08-21 rxf
- Payloadbuffer für MQTT auf 80 Byte vergrößert
- Version-Time zu version.h hinzugefügt und zur Anzeige
- tempoffset und humoffset per MQTT einstellbar
1.5.1 2024-08-21 rxf
- Temperaturanzeige ebenfalls angepasst (-3.2°C)
- via MQTT gemessen und berechte Werte ausgeben
1.5.0 2024-08-21 rxf
- Mit Hilfe von Interpolation werde die echten Feuchtewerte ausgerechnet und angezeigt
- Die Werte sind jetzt (soweit) korrekt