Seite drucken - MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?

windigipet.de

Win-Digipet - deutsche Foren => Tipps & Tricks - Hardware-Bastelei - Workshops => Hardware-Bastelei => Thema gestartet von: Krogsgaard in 02. Juli 2025, 21:31:38

Titel: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 02. Juli 2025, 21:31:38
Hallo WDP Freunde,

Ich habe angefangen, ein bisschen mit MQTT in Windigipet 2025 zu experimentieren. Ich fange ganz einfach an – mit einem NodeMCU, an dem ein DHT-Sensor (für Temperatur und Luftfeuchtigkeit) angeschlossen ist. Die Daten kommen auch schön im MQTT an – siehe Screenshot ,,MQTT Explorer".

Jetzt möchte ich die Werte in Windigipet anzeigen lassen. Ich habe die beiden Demo-Projekte durchgespielt und gesehen, dass sie funktionieren – die Verbindung passt also. Aber wie bekomme ich die Werte z. B. in die beiden angezeigten grafischen Instrumente übertragen?

Ich habe versucht, sie als Magnetartikel mit MQTT-Anbindung zu konfigurieren – aber es kommen keine Daten an. Muss man dafür vielleicht STW benutzen? Oder wie macht man das am besten?

Viele Grüße
Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 02. Juli 2025, 22:03:08
Hallo Jens,

wenn Du einen Sensor in WDP sehen möchtest, dann muß dieser im Arduino-Sketch mit der MA-Adresse an den MQTT-Broker gesendet werden. Kannst Du Dir im Beispiel-Sketch ansehen. Dort wird mit dem Poti der Spannungswert an den Zähler mit der Adresse 3 gesendet und kann in WDP angezeigt werden.
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 02. Juli 2025, 22:19:22
Hallo Sven,

Nett von dir, dass du dir das anschauen willst.

Ich habe dir die Ino-Datei per Mail geschickt :)

Viele Grüße, Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 03. Juli 2025, 08:09:48
Hallo Sven nochmal,

Entschuldige, dass ich dich falsch verstanden habe – ich schaue mir gerade den Beispiel-sketch an und versuche herauszufinden, wie es funktioniert.

Viele Grüße, Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 03. Juli 2025, 11:02:47
Hallo WDP Freunde,

Ich kämpfe immer noch mit MQTT und damit, Werte von einem ESP32 in Windigipet anzuzeigen. Ich habe mir den Beispiel-Sketch angeschaut, den Sven vorgeschlagen hat. Ich habe einiges ausprobiert – aber ich kriege es einfach nicht zum Laufen.

Im angehängten Screenshot vom MQTT Explorer sieht man die Daten genau aus dem Beispiel-Sketch. Wenn ich zum Beispiel die Temperatur in Windigipet anzeigen möchte – wie macht man das eigentlich?
Wie man sieht, hat die Temperatur folgendes Topic:  WDP/Evt/PwSen/10/T_C

Hat jemand so ein einfaches Beispiel wie meins zum Laufen gebracht – und könnte vielleicht eine kleine Schritt-für-Schritt-Anleitung machen?

Viele Grüße, Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 03. Juli 2025, 12:12:24
Hallo Jens,

ich weis noch nicht, ob ich heute schaffe. Aber ich werde Dir mal ein Beispiel fertig machen.
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 03. Juli 2025, 12:25:11
Vielen Dank Sven  :)
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 03. Juli 2025, 18:37:33
Hallo Jens,

Du suchst an der falschen Stelle. Der rot eingerahmte Ausschnitt aus dem MQTT-Explorer, zeigt die Daten für einen Booster an.

MQTT Explorer.png

Diese werden dem Booster-Management zur Verfügung gestellt und sind fest in WDP integriert. Im Demoprojekt hat der Booster die Adresse 10.

Image2.png

Wenn Du einen beliebigen Wert in einem Zähler darstellen möchtest, dann siehe Dir den Zähler mit der Adresse 3 an. Der Poti hat eine Doppelfunktion. Einmal wird er zur Anzeige der Spannung im Booster-Management genutzt. Siehe Code des ESP32.

const int PwSen_Address=10;                     // PwSen-Adresse an die gemeldet wird
                                                // Spannung in V gemessen welche am Poti eingestellt wird am Anschluss A0
                                                // simulierte Strom in mA zyklisch gesendet von 0..3000mA
                                                // Temperatur in °C gemessen via DHT22

Die zweite Funktion ist, das der Wert des Poti im Zähler 3 angezeigt wird. Siehe wieder Code des ESP32.

const int VoltageReport_SD_Address=3;           // Magnetartikeladresse an die die Stellung des Potis gemeldet wird an A0, AD-Rohwert 0..1023
      val=analogRead(PotiPin);                            // Spannung an Poti an A0 auslesen und als Magnetartikelstellung an VoltageReport_SD_Address
                                                          // melden und als PwSen-Spannungswert
      if (val!=ADCValueOld){
        ADCValueOld=val;
        Serial.println("ADC Value: "+ val);
        sendSD(VoltageReport_SD_Address,val);
        float voltage=val;
        voltage /= 4096;
        voltage *= 3.2;
        sendVoltage(PwSen_Address,voltage);
      }

Und hier musst Du einsetzen. Statt des Poti-Wertes kannst Du alles mögliche an den Zähler senden. Zum Beispiel Temperatur, Helligkeit und vieles mehr.




Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 03. Juli 2025, 21:21:00
Hallo Sven,

vielen Dank für deine Erklärung – da habe ich ja was zum Anschauen am Wochenende :).
Ich muss das Konzept erstmal richtig verstehen, und wie gesagt ist das Ziel einfach, die Temperatur vom DHT22 grafisch darzustellen.

Was mich wahrscheinlich etwas verwirrt hat, ist euer Umgang mit Adressen – also z. B. Adresse 10 für den Booster. Das funktioniert ja ganz gut, wenn man seinen Sketch selbst programmiert – aber was macht man, wenn man Daten über MQTT holen will, die keine Adresse haben?

Ich dachte eigentlich, dass das Topic als eindeutiger Schlüssel dienen kann, wenn man Daten über MQTT in Windigipet einlesen will.
Na ja – zum Glück gibt's noch viel zu lernen für mich :)

Ein schönes Wochenende und viele Grüße
Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 04. Juli 2025, 18:56:31
Hallo Jens,

Zitataber was macht man, wenn man Daten über MQTT holen will, die keine Adresse haben?

So etwas gibt es nicht in der Computerwelt. Da hat alles eine Adresse, ID oder Kennung. Anders  geht es auch nicht. Selbst das Internet besteht nur aus Adressen (IP). Auch unsere Booster haben in irgendeiner Art und Weise eine Adresse. Das ist mit MQTT nicht anders. Die Adresse 10 in unserem Beispiel ist willkürlich gewählt. Es hätte auch jede andere sein können. Die Adresse ist auch wichtig, wenn mehrere gleich Geräte im Einsatz sind. Booster sind durchaus auch mehr als einer im Einsatz.


ZitatIch dachte eigentlich, dass das Topic als eindeutiger Schlüssel dienen kann, wenn man Daten über MQTT in Windigipet einlesen will.

Der Topic besteht aus mehreren Teilen. Siehe auch dazu die PDF zum MQTT-Projekt auf dem USB-Stick (MQTT in Win-Digipet.pdf). Dort findest Du alle von WDP verwendeten Topic's. Bleiben wir mal bei dem Zähler, der eine Temperatur anzeigen soll. Dafür ist der Topic für Magnetartikel zuständig. Denn ab WDP2025 können Zähler auch eine Magnetartikel-Adresse besitzen.

WDP/Evt/SD/Nr/State


WDP - Ist das Haupt-Topic, welches in der Systemsteuerung von WDP gewählt werden kann und auch änderbar ist. Normalerweise muß hier nichts geändert werden. Es gibt aber Fälle, wo das nötig ist. Gehe ich jetzt aber nicht weiter darauf ein.
Evt - Das bedeutet, das eine Nachricht an WDP gehen soll. Das Gegenstück ist 'Cmd', wenn WDP an den ESP32 sendet.
SD - Hier handelt es sich um einen Magnetartikel.
Nr - Das ist die Magnetartikel-Adresse.
State - Und zum Schluss kommt der Wert für den Magnetartikel. Bei einer Weiche sind '0' und '1' zulässig. Bei einem Zähler kann das ein fast beliebiger Wert sein.

Du siehst also, das die beiden letzten Elemente des Topic variabel sind. Im Sketch des ESP32 sieht die Routine dafür so aus.
void sendSD(int SDNum, int SDState){
  //Sende Magnetartikel-Stellung an WDP
  mqtt.publish(String(wdpMQTTTopic)+"/Evt/SD/"+String(SDNum)+"/State", String(SDState));
}

Man muss natürlich etwas lesen und probieren. Vor allem, wenn man zuvor noch keine Erfahrung mit ESP32 hatte. Aber das sollte bei entsprechendem Interesse kein Hexenwerk sein. Bei weiteren Fragen stehe ich Dir gerne zur Verfügung.
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 05. Juli 2025, 08:34:50
Hallo Jens,

ich habe im Anhang den Sketch eingestellt. Er ist auf ein Minimum reduziert und steuert nur die 3 Status-LED's und den Temperatursensor aus dem Demoprojekt an. Ich hoffe das alles funktioniert, denn ich konnte aus Zeitgründen noch nicht testen. Trage Deine Netzwerkdaten ein und programmiere den ESP32. Das Breadboard kannst Du einfach weiterverwenden.

Im Sketch wurde die Magnetartikel-Adresse für den Zähler auf 100 eingestellt. Kannst Du natürlich ändern.
const int TempSensor_SD_Address=100;            // Magnetartikeladresse für den Zähler Temperaturanzeige
Die Übergabe des Temperaturwertes erfolgt alle 500ms in der Loop-Schleife.
  if ((tick % 500)==0){
    //Temperatur-Sensor auslesen ~ alle 0,5 Sekunden

    float temp = dht.readTemperature();
    float humidity = dht.readHumidity();
     
    Serial.print("Reading temperatre... ");           // Kontrollausgabe der Werte via seriellem Interface
    if (!isnan(humidity) || !isnan(temp)) {
         
      sendSD(TempSensor_SD_Address,temp);
 
      Serial.print("Temp: ");
      Serial.print(String(temp));
      Serial.print(" Humidity: ");
      Serial.print(String(humidity));
    }
    Serial.println("");
       
  }

Im WDP-Demoprojekt trägst Du einen Zähler mit Adresse 100 ein und schon sollte er die Temperatur anzeigen.
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 05. Juli 2025, 10:50:14
Hallo Sven,

Vielen Dank für deine ganze Arbeit – ich freue mich schon darauf, das Projekt auszuprobieren!
Wir sind am Wochenende im Ferienhaus, und weil's angefangen hat zu regnen, habe ich das MQTT/WDP-Projekt einfach mitgenommen.
Gestern habe ich mir einen kostenlosen Account bei HiveMQ eingerichtet, um mal zu testen, wie das mit deren Broker läuft – anstatt dem, den ich lokal auf meinem Rechner installiert habe.

Viele Grüße
Jens

Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 05. Juli 2025, 11:43:36
Hallo Sven,

Ich habe das Projekt heruntergeladen und geladen – läuft alles super!
Wie du im MQTT Browser sehen kannst, werden die Werte richtig angezeigt.

State = 23 – das passt, hier sind's gerade 23 Grad – viel angenehmer als am Mittwoch, da hatten wir 32 Grad :)
Von WDP aus besteht eine Verbindung zum Board, aber ich kriege es nicht hin, einen Zähler zu erstellen und die Adresse 100 mit den aktuellen 23 Grad anzuzeigen.

Wie du sehen kannst, hab ich's genauso versucht wie bei dem Zähler mit Adresse 3 – aber bei meinem Zähler mit Adresse 100 kommt kein Wert an.
Was mache ich da falsch?

Viele Grüße
Jens

Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 05. Juli 2025, 11:49:02
Hallo Jens,

schicke mir bitte mal das Projekt rüber.
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 05. Juli 2025, 11:57:47
Hallo Sven,

Hier ist ein Backup des Demo 2025-Projekts, in dem ich versucht habe, einen Zähler mit der Adresse 100 hinzuzufügen

Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 05. Juli 2025, 12:05:08
Hallo Jens,

Du hast die Adresse 100 zweimal vergeben. Kannst Du bitte mal einen Zähler deaktivieren.
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 05. Juli 2025, 15:14:42
Hallo Sven,

Ich habe einen Zähler mit Adr 100 entfernt. Aber leider hat das nicht geholfen.

Ich habe daraufhin drei verschiedene Tests mit der Konfiguration des MA/Zählers gemacht, wie unten gezeigt – keiner davon funktioniert.
Ich habe mir angeschaut, wie der Zähler mit Adresse 3 konfiguriert ist, und versucht, das genauso zu machen – funktioniert aber auch nicht.
Und den Zähler mit Adresse 3 habe ich übrigens bisher auch noch nie in Aktion gesehen...

Muss man vielleicht STW verwenden?
Vielleicht kann ich dich ja dazu überreden, im beigefügten Projekt einen MA/Zähler mit Adresse 100 zum Laufen zu bringen – mir gehen langsam die Ideen aus :)

Viele Grüße
Jens

Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Markus Herzog in 05. Juli 2025, 15:32:22
Hello Jens,

I think I can help you. Take a look at your first picture.

There you have entered address 100. Correct.
And in the lower part you entered unter der 1,2,3 box the value 110. Thus you say, that the counter value should be send to adress 100+110=210.....
Change the 110 to 0....
This address offset in the lower part is used to send e.g. the counter value to address 100+0 and (if also wanted the red value of the backcolor to address 100+1, the green value to 100+2 and so on)

Regards
Markus
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 05. Juli 2025, 16:04:44
Hallo Markus,

I have tried it - but it didnt seems to help - see below

I am - here in the summerhouse :) running til Demo-2025 version - could that be the reason ?

Regards Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 05. Juli 2025, 17:31:45
Hallo

And I have tried to make a new project with only one connection - MQTT - and only one MA - still no luck - I will try with a glass of red wine 🍷

Regards Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Peter Ploch in 05. Juli 2025, 18:14:17
Hello Jens,

good luck, maybe another glass of red wine will also help. :)
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Markus Herzog in 05. Juli 2025, 19:31:29
Hi Jens

Did you activate the Option Stellungsanzeige der Magnetartikel... for this digital System in the system settings?

Regards
Markus
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Markus Herzog in 05. Juli 2025, 19:33:44
Hallo Jens

Wenn das letzte nicht hilft bitte nochmal ne Datensicherung hochladen

Grüße
Markus
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 05. Juli 2025, 22:14:46
Hallo Markus,

Now I have activate the Option Stellungsanzeige der Magnetartikel... with the same result - no answer.

I have attached the projekt - very simple - one connection to MQTT and one MA :)


Regards Jens
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Markus Herzog in 06. Juli 2025, 00:35:29
Hallo Jens,

schau mal auf das letzte Bild von dir mit den Systemeinstellungen.

Und schau mal was in der MQTT-Anleitung steht:
"In allen folgenden Beispielen wurde als (Ober-)Topic in den Systemeinstellungen Win-Digipet der Text ,,WDP" hinterlegt."

Und bei dir steht unter MQTT-Topic das Wort WDP ein....und schon geht es bei mir mit deinem Projekt.

Zusammengefasst nochmal was wir alles jetzt bei dir über die letzten Beiträge korrigiert haben:
1. Magnetartikel-Dialog bei 1,2,3 statt +110 -> +0
2. Systemsteuerung Haken bei "Stellungsanzeige der Magnetartikel.."
3. MQTT-Topic -> WDP

Grüße
Markus

Grüße
Markus
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 06. Juli 2025, 08:01:20
Hallo Markus and Sven,

Now it is working !! - 22 degree celsius is the temperature right now in the suumerhouse

Thanks a lot for all your help  :)

I think I will make a litte how-to step-by-step instructions on this topic.

have a nice sunday

Regards from
Jens

Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Sven Spiegelhauer in 06. Juli 2025, 09:37:19
Hallo Jens,

der erste Erfolg ist da. Ab jetzt wird es einfacher.  ;)
Titel: Aw: MQTT – Wie zeigt man Temperatur und Luftfeuchtigkeit im WDP an?
Beitrag von: Krogsgaard in 06. Juli 2025, 13:12:59
Hallo Sven und Markus,

Ich sehe, dass es wichtig ist, dass die Syntax des MQTT-Topics korrekt ist – also es muss WDP/Evt/SD/{MA-Adresse}/State heißen.
Hierbei kann {MA-Adresse} eine beliebige, eindeutige Adresse sein – zum Beispiel 110.

Ich habe jetzt meine kleine Testaufstellung mit einem ESP8266, DHT11 und OLED-Display erfolgreich auf HiveMQ zum Laufen gebracht.
Sie ist auch mit Windigipet verbunden, wie ihr sehen könnt – und es funktioniert perfekt!

Das wird ein schöner Sonntag!

Viele Grüße
Jens