NEWS
[Erledigt]BME280 mit ESP8266 von MQTT auf Webserver als Text
-
@jabba76 Und nochwas - was mir gerade einfällt. Natürlich bekommst Du die Werte erst, wenn diese von Deinen Sensoren aktualisiert werden in mqtt.
Du kannst das aber mit verschiedenen Möglichkeiten initialisieren:- Was man aber machen kann ist, dass Du die Inject Nodes nutzt/behälst, um diese bei Start von Node Red mit Initialwerten zu befüllen. Dann ist sichergestellt, dass auch nur wenn 1 Wert sich ändert bereits das ganze Objekt zusammengebaut wird.
- Du holst Dir die Daten über iobroker in Nodes bei Start raus und setzt diese anstelle der Inject Nodes
- Du speicherst die Nachrichten als retained im MQTT. Diese Möglichkeit ist zwar ein Standard, aber ich mag sie nicht besonders, da es ggf. schwer ist, die wieder wegzubekommen.
Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken.
-
@jabba76 Zur Vervollständigung hier nochmal der Flow ergänzt zum Aufruf des Webservers für die Ausgabe der Einzelsensoren mit /esp01 bzw. /esp02.
Die Zeilenumbrüche aus der Template Node werden hier nicht dargestellt. Falls Dein SAT Reciever damit nicht umgehen kann, musst das halt in der Template Node ändern.
-
@jabba76 sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
habe 2 BME 280 Sensoren die über ESP8266 an den iobroker (MQTT) senden.
Hi jabba76,
an welchen Pins hast Du die beiden BME280 angeschlossen? D3 (SDA) und D4 (SCL) ? und den zweiten -parallel oder an D1 & D2 ?
Danke Dir
Paul -
Hallo danke dir für die gute Arbeit war leider lange nicht da aus Zeitmangel.
Dein Flow so wie er ist funktioniert wunderbar das was da ausgegeben wird wird auch richtig Angezeigt.
Jetzt wollte ich die inject node durch meine iobroker in node ersetzen damit die Daten vom Sensor einfliessen können leider funktioniert das nicht, die ausgebe kann nicht gebaut werden.Fehler Meldung:
Message missing key property 'msg.topic' - cannot add to object
Meine Sensoren geben sowas raus
temperatur {"val":23.16,"ack":true,"ts":1637513514166,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1637513514166} Luftdruck {"val":1004.75,"ack":true,"ts":1637513514168,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1637513514168} Luftfeuchte {"val":42.69,"ack":true,"ts":1637513514169,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1637513514169}
könntest du noch mal drüber schauen wie ich das anpassen kann/soll damit die Daten übernomen werden und auch Angezeigt werden können dafür wäre ich dir sehr dankbar.
Es wird erst ausgabe gebaut wenn alle Sensoren alle Daten gesendet haben? weil jeder sendet alle 15 min wenn der erste gesendet hat und der zweite noch 5 min hat wird die ausgabe erst in 20min Online richtig?@PeterHansen soory das so spät erst ja das sind D1 und D2 Pins. bei Youtube das eingeben "ESP8266 Deep-Sleep, BME280 Daten über MQTT senden"
mfg
-
@jabba76 sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
Hallo danke dir für die gute Arbeit war leider lange nicht da aus Zeitmangel.
Dein Flow so wie er ist funktioniert wunderbar das was da ausgegeben wird wird auch richtig Angezeigt.
Jetzt wollte ich die inject node durch meine iobroker in node ersetzen damit die Daten vom Sensor einfliessen können leider funktioniert das nicht, die ausgebe kann nicht gebaut werden.Fehler Meldung:
Message missing key property 'msg.topic' - cannot add to object
Meine Sensoren geben sowas raus
temperatur {"val":23.16,"ack":true,"ts":1637513514166,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1637513514166} Luftdruck {"val":1004.75,"ack":true,"ts":1637513514168,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1637513514168} Luftfeuchte {"val":42.69,"ack":true,"ts":1637513514169,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1637513514169}
könntest du noch mal drüber schauen wie ich das anpassen kann/soll damit die Daten übernomen werden und auch Angezeigt werden können dafür wäre ich dir sehr dankbar.
Es wird erst ausgabe gebaut wenn alle Sensoren alle Daten gesendet haben? weil jeder sendet alle 15 min wenn der erste gesendet hat und der zweite noch 5 min hat wird die ausgabe erst in 20min Online richtig?@PeterHansen soory das so spät erst ja das sind D1 und D2 Pins. bei Youtube das eingeben ESP8266 Deep-Sleep, BME280 Daten über MQTT senden
mfg
Ja ursprünglich wolltest Du ja den Flow über HTTP mit NodeRed als WebServer ansprechen. Mit den iobroker In Nodes ist es eigentlich einfach.
Klar (s. Fehlermeldung) musst Du den Topic noch ergänzen, aber wichtig ist (hängt davon ab, wieviele Flows Du schon hast), wie ist Deine NodeRed Adapter Konfig eingestellt. Also:
- Hast Du schon viele Flows die mit iobroker In NOdes arbeiten?
- Wenn nicht - auf jeden Fall Zeichenkonvertierung in der Adapterkonfig ausschalten (empfehle ich immer zuerst)
- Wenn nicht musst Du alle Strings ggf. wieder umwandeln.
Am Besten ist Du postest hier mal direkt die Ausgabe Deines Strings - Objektes - das aus Deiner iobroker in Node rauskommt und zwar des kompleten NAchrichtenobjektes - die iobroker In Nodes setzen den msg.topic den vollständigen Pfad des Datenpunktes im iobroker und nicht die Objekte sondern den Value rausholen - wofür nimmst Du das Objekt????:
Also hier wieder auf value umstellen!
Entweder das komplette Nachricht als Screenshot oder wenn als JSON - dann bitte im Debugfenster auf Wert kopieren gehen und den JSON hier posten:
{"topic":"0_userdata/0/testType","payload":19.5,"acknowledged":false,"timestamp":1636835207813,"lastchange":1636835207813,"from":"system.adapter.node-red.0","_msgid":"2465ec6b.e48df4"}
-
Dann habe ich micht wohl nicht richtig ausgedrückt
esp mit sensoren senden an MQTT die werte wollte ich über NodeRed im Browser als Text nicht HTML das hast du ja gemacht so würde das auf LCD4Linux funktionieren, nur jetzt wollte ich in denem Flow die sensoren einbinden und Zonk.
ok die Object ausgebe steht schon oben mehr kommt da nicht raus "val" sind ja die Wrte und mein system ist sagen wir mal ganz frisch
ist noch nicht so viel drin
thx
das kommt dabei raus
23.52
-
@jabba76 sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
Dann habe ich micht wohl nicht richtig ausgedrückt
esp mit sensoren senden an MQTT die werte wollte ich über NodeRed im Browser als Text nicht HTML das hast du ja gemacht so würde das auf LCD4Linux funktionieren, nur jetzt wollte ich in denem Flow die sensoren einbinden und Zonk.
ok die Object ausgebe steht schon oben mehr kommt da nicht raus "val" sind ja die Wrte und mein system ist sagen wir mal ganz frisch
ist noch nicht so viel drin
thx
das kommt dabei raus
23.52
Das komplette Nachrichtenobjekt bitte:
-
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@jabba76 sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
Dann habe ich micht wohl nicht richtig ausgedrückt
esp mit sensoren senden an MQTT die werte wollte ich über NodeRed im Browser als Text nicht HTML das hast du ja gemacht so würde das auf LCD4Linux funktionieren, nur jetzt wollte ich in denem Flow die sensoren einbinden und Zonk.
ok die Object ausgebe steht schon oben mehr kommt da nicht raus "val" sind ja die Wrte und mein system ist sagen wir mal ganz frisch
ist noch nicht so viel drin
thx
das kommt dabei raus
23.52
Das komplette Nachrichtenobjekt bitte:
hee soorki habe ich vergessen umzustellen hier bitt
Temperatur {"topic":"mqtt/0/esp1/temperature","payload":"23.29","acknowledged":true,"timestamp":1637516687490,"lastchange":1637516687490,"from":"system.adapter.mqtt.0","_msgid":"f040134c.cbdcc"} Luftdruck {"topic":"mqtt/0/esp1/pressure","payload":"1005.47","acknowledged":true,"timestamp":1637516998692,"lastchange":1637516998692,"from":"system.adapter.mqtt.0","_msgid":"dbf9aa3b.50ede8"} Luftfeuchte {"topic":"mqtt/0/esp1/humidity","payload":"46.25","acknowledged":true,"timestamp":1637516998692,"lastchange":1637516998692,"from":"system.adapter.mqtt.0","_msgid":"f94a5ec3.dd7da"}
-
@jabba76 Super kannst Du mit das noch für die anderen 2 Parameter machen? - Also Feuchte und Druck?
-
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@jabba76 Super kannst Du mit das noch für die anderen 2 Parameter machen? - Also Feuchte und Druck?
Temperatur {"topic":"mqtt/0/esp1/temperature","payload":"23.29","acknowledged":true,"timestamp":1637516687490,"lastchange":1637516687490,"from":"system.adapter.mqtt.0","_msgid":"f040134c.cbdcc"} Luftdruck {"topic":"mqtt/0/esp1/pressure","payload":"1005.47","acknowledged":true,"timestamp":1637516998692,"lastchange":1637516998692,"from":"system.adapter.mqtt.0","_msgid":"dbf9aa3b.50ede8"} Luftfeuchte {"topic":"mqtt/0/esp1/humidity","payload":"46.25","acknowledged":true,"timestamp":1637516998692,"lastchange":1637516998692,"from":"system.adapter.mqtt.0","_msgid":"f94a5ec3.dd7da"}
-
@mickym
Also Du hast immer noch Strings drin - hast Du die Adapterkonfig geändert - na auch egal. Ich empfehle aber ggf. die Option auszumachen - aber wahrscheinlich sind die DP im mqtt bereits Zeichenketten - aber egal.Ich habs anhand des flows nun rekonstruiert:
Diesen Teil ersetzt Du
durch durch folgede Change Node und setzt die iobroker In Nodes davor:
Ach und schau dass Deine iobroker In Nodes auf
Du bekommst erst was raus, wenn alle Parameter einmal geschickt wurden, dann immer bei jeder Änderung - egal von welchem Parameter.
-
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@mickym
Also Du hast immer noch Strings drin - hast Du die Adapterkonfig geändert - na auch egal. Ich empfehle aber ggf. die Option auszumachen - aber wahrscheinlich sind die DP im mqtt bereits Zeichenketten - aber egal.Ich habs anhand des flows nun rekonstruiert:
Diesen Teil ersetzt Du
durch durch folgede Change Node und setzt die iobroker In Nodes davor:
Ach und schau dass Deine iobroker In Nodes auf
Du bekommst erst was raus, wenn alle Parameter einmal geschickt wurden, dann immer bei jeder Änderung - egal von welchem Parameter.
wenn ich importiern möchte zeigt er mit das: Error: Eingabe ist kein JSON-Array ? und zeichenkette ist jetzt aus.
Das mit dem Parameter schon nicht schlecht also der Text wird sich dann ändern wenn sich der Wert ändert ok.
-
@jabba76 Nein die Eingabe rauskommen sind normale skalare Werte Du musst aber aufhören Objekte einzugeben:
also bitte auf value und sende msg bei start in deinen iobroker in NOdes umstellen.
{"topic":"0_userdata/0/testType","payload":19.5,"acknowledged":false,"timestamp":1636835207813,"lastchange":1636835207813,"from":"system.adapter.node-red.0","_msgid":"2465ec6b.e48df4"}
Wenn Du auf value einstellst, dann wird die payload genau 19.5. Also ein normaler nummerischer Wert kein JSON oder sonst was.
-
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@jabba76 Nein die Eingabe rauskommen sind normale skalare Werte Du musst aber aufhören Objekte einzugeben:
also bitte auf value und sende msg bei start in deinen iobroker in NOdes umstellen.
ok verstanden das mache ich, aber dein spoiler kann ich nicht importieren Error: Eingabe ist kein JSON-Array ? makieren kopieren importieren geht nicht
-
@jabba76 sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@jabba76 Nein die Eingabe rauskommen sind normale skalare Werte Du musst aber aufhören Objekte einzugeben:
also bitte auf value und sende msg bei start in deinen iobroker in NOdes umstellen.
ok verstanden das mache ich, aber dein spoiler kann ich nicht importieren Error: Eingabe ist kein JSON-Array ? makieren kopieren importieren geht nicht
Dann hast Du nicht alles kopiert - und es fehlt entweder die ECKIGE Klammer oben oder unten beim Import.
Ist eh nur eine Change Node - kannst auch selbst machen - ist ja relativ einfach:
-
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@jabba76 sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@jabba76 Nein die Eingabe rauskommen sind normale skalare Werte Du musst aber aufhören Objekte einzugeben:
also bitte auf value und sende msg bei start in deinen iobroker in NOdes umstellen.
ok verstanden das mache ich, aber dein spoiler kann ich nicht importieren Error: Eingabe ist kein JSON-Array ? makieren kopieren importieren geht nicht
Dann hast Du nicht alles kopiert - und es fehlt entweder die ECKIGE Klammer oben oder unten beim Import.
Ist eh nur eine Change Node - kannst auch selbst machen - ist ja relativ einfach:
hast du recht gehabt nicht richtig kopiert
obwohl select all gedrückt
das funktioniert mit dem esp1 jetzt habe ich noch esp2 ist aber noch nicht angeschlossen muss ich das genauso machen wie für den ersten ? bin mal gespannt ob sich die Werte aktualisieren werden -
@jabba76 Ja geht genauso. siehst ja dass Du noch mal topic setzen musst im originalen Flow - wenn das dann in eine Ausgabe soll. Ich habe die nächsten paar Stunden bissi wenig Zeit - kann nur sporadisch helfen. Wie gesagt die Ausgabe solltest Du bereits bekommen, wenn Du sende msg bei Start.
-
@mickym sagte in BME280 mit ESP8266 von MQTT auf Webserver als Text:
@jabba76 Ja geht genauso. siehst ja dass Du noch mal topic setzen musst im originalen Flow - wenn das dann in eine Ausgabe soll. Ich habe die nächsten paar Stunden bissi wenig Zeit - kann nur sporadisch helfen. Wie gesagt die Ausgabe solltest Du bereits bekommen, wenn Du sende msg bei Start.
ok noch eine Frage wozu ist das unten im Bild ?
da steht was von esp3 usw brauche ich das -
@jabba76 nein esp03 nicht.
-
@mickym
ok wenn ich den esp2 noch nicht habe sollten sich die werte auch jetzt schon automatisch ändern ?
oder funktioniert das dann erst wenn alles da ist?mfg