NEWS
Anfängerfrage: DHT11 Sensor über MQTT in Node Red auslesen
-
Hallo an das Forum!
Ich beschäftige mich seit kurzem mit i-o Broker und Node Red. Also stehe ich hier noch ganz am Anfang!
Folgende Situation:
Ich habe einen DHT11 Temperatur Sensor an einer Node MCU ESP8266 angeschlossen. Die Node MCU habe ich mit Tasmota geflasht. Über MQTT wird das Signal an den io Broker gesendet. Im io Broker läuft die Node Red Instanz. Ich bekomme auch in Node Red einen Datenpunkt vom Sensor.Dieser Datenpunkt sieht wie folgt aus:
{"sn":{"Time":"2021-04-25T11:15:28","DHT11":{"Temperature":20.3,"Humidity":41.0,"DewPoint":6.6},"TempUnit":"C"},"ver":1}Kann dieser Wert auf die Temperatur gefiltert werden?
Oder muss vorher im Arduino der Wert so angepasst werden das er in Node Red weiter verarbeitet werden kann?Danke im Voraus
Gruß Bastel2021 -
warum so schwierig ?
Nimm doch den Sonoff Adapter dann kommt per Mqtt der Datenwert des DHT direkt an. -
@ralla66
Eigentlich hatte ich vor noch weitere Sensoren an den Arduiono zu betreiben -
@bastel2021
Was denn nun, Sensoren am Arduino oder am Node Mcu mit Tasmota betreiben ? -
@ralla66
Node MCU mit Tasmota meine ich! -
@bastel2021 Kannst Du direkt in Node Red weiterverarbeiten da braucht es überhaupt keinen Adapter und gar nichts.
Wenn Du den Datenpunkt direkt hast gehst Du im Debug Fenster darauf und kopierst den Pfad.Nimm ein Change Node und extrahiere den Punkt direkt:
Schaut einfach so aus:
msg.payload auf
msg.payload.sn.DHT11.Temperature
Ich installiere keinen Adapter nur weil ich einen Wert aus einem Objekt raus haben will.
-
@bastel2021
leben einfach machen mit dem Sonoff Adapter.
An der Node Mcu mit Tasmota kannst du viele Sensoren betreiben. -
@ralla66 oder einmal lernen wie es einfach auch anders geht. Ich bin kein Freund von Adapter, die mehr oder weniger nichts anderes machen, als einen JSON in einzelne Datenpunkte zu zerlegen. Sieht man ja in Parallelthreads was für Probleme das macht.
@Bastel2021 hier habe ich es auch mal mit Screenshot beschrieben, wie Du Werte extrahierst;
https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/2?_=1619367361438Außerdem wenn Du damit nicht zu Recht kommst - hier habe ich eine Node gebastelt, die zerlegt Dir so einen JSON auch in einzelne Datenpunkte musst das Objekt nur reinschicken:
https://forum.iobroker.net/topic/43856/json-string-oder-java-object-in-iobroker-struktur
EDIT: Ich hab nichts gegen den Adapter den kann man schon benutzen, aber man muss ihn nicht benutzen, wenn es vielleicht auch Alternativen gibt. Und genau das sollte man dem TE überlassen.
-
@mickym
also irgendwas mache ich noch falsch
bei den Regeln muss "Setze" stehen?
es kommt immert noch der gesammte String durch! -
@bastel2021 Wenn Du die Change Node meinst ja. Du setzt die neue payload auf den Wert den Du extrahieren möchtest. OK, dann ist das noch kein Objekt.
Dann mach noch ein JSON Node vorne dran, um das in ein Objekt zu wandeln. Ich zeigs Dir gleich.
-
@mickym
PERFEKT!!! das waren die richtigen Tips
das passt super
Besten Dank -
@bastel2021 OK - dann spare ich mir die Arbeit.
Viel Glück und bei weiteren Fragen ....
-
@mickym
Also bekomme ich vom Sensor ein Jason String und muss daraus ein JS-Objekt machen? -
@bastel2021 Genau der JSON String ist so was um quasi Objekte gut abspeichern zu können - ist wie ein Transportmedium. Wenn Du selbst ein JAVA Objekt wieder in einen Datenpunkt speichern wolltest, machst Du die gleiche JSON Node zum Schluß nochmal dran. Diese erkennt automatisch ob die payload ein JSON String ist und wandelt es in ein Objekt um, bzw. fütterst Du die mit einem Objekt wandelt sie das wieder einen JSON String um, den kannst Du dann in einem eigenen Datenpunkt abspeichern. JSON Strings sind einfach ein standardisiertes Mittel um Objekte als Strings abspeichern zu können. Arbeiten macht man aber mit Objekten.
-
@mickym
Das verstehe ich zwar noch nicht alles aber iich kann jetzt wieder etwas weiter.
Auf jedenfall danke für deine Unterstützung!Gruß Bastel2021
-
@bastel2021 Ich suche mal einen Link raus, da habe ich mal die Ganzen zusammenhänge gepostet und auch mit den Debug Nodes in Node Red veranschaulicht.
-
@mickym
Ja das wäre super! -
@bastel2021 So hier habe ich mal alle Zusammenhänge erläutert:
https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen/23?_=1619369346132 und in dem Beitrag habe ich den Flow mit den Debug Output dargestellt - war auch eine Tempartur:
Im letzten Posting siehst auch wie Du bei sehr komplexen Objekten über Pfad kopieren den richtigen Wert extrahierst.
Da sind auch paar Flows zum Üben drin.