Tag 7: Treppenhauslicht
Hinter dem heutigen Türchen befindet sich eine rote LED. Damit wollen wir nun ein einfaches Treppenhauslicht mit Webinterface realisieren. Dazu müssen Sie die folgende Schaltung aufbauen und das heutige Programm aktivieren.
Den Node-RED-Flow zum Importieren finden Sie in dem unteren Pastebin Frame. Deaktivieren Sie nach dem Importieren den Flow von gestern, damit sich die UDP-Empfangs-Nodes nicht in die Quere kommen. Im Flow selbst finden Sie diesmal neben dem Empfangsnode einen Sende-Node. Diesen müssen Sie wahrscheinlich an Ihre Broadcast-IP anpassen. Wenn am UDP-Note eine Nachricht ankommt, wird sie wieder von einem JSON-String, also reinem Text, in ein JSON-Objekt konvertiert. Der Unterschied ist, dass man nun direkt auf einzelne Attribute zugreifen kann.
Der folgende Switch-Node ist vergleichbar mit einer IF-Abfrage. Es wird überprüft, ob das Kommando trigger gesendet wurde. Dieses Kommando wird durch Drücken des Buttons ausgelöst. Ein Trigger-Node übernimmt daraufhin die Arbeit. Wird der Trigger-Node aktiviert, sendet er den Befehl light_on für „Licht an“. Diese Nachricht, ebenfalls im JSON-Format, wird vom NodeESP-Board interpretiert, und entsprechend wird das Licht angeschaltet. Nach weiteren vier Sekunden sendet der Trigger-Node die Nachricht: light_off für „Licht aus“. Auch hierauf reagiert das Board entsprechend. Die Off-Nachricht kann verzögert werden, indem der Trigger-Node erneut ausgelöst wird. Dafür wurde in dem Modul eine entsprechende Option aktiviert. Zusätzlich kann der Trigger-Node auch über die Web-UI aktiviert werden. Also können Sie das Treppenlicht auch über das Smartphone aktivieren, ganz im Sinne von Smarthome.
Hinweis: In der Windows-Version von Node-RED funktionierte der UDP-Node zum Senden nicht mit der Einstellung broadcast message (in den Node-Properties unter send a). In der Node-RED-Version, die ich auf einem Raspberry getestet habe, funktionierte allerdings das Senden nur mit dieser Einstellung. Das bedeutet, Raspberry-Nutzer müssen an dieser Stelle wahrscheinlich den UDP-Node zum Senden anpassen.
Ich kann das scrit nicht importieren bzw. deployen, da mit ui_group fehlt.
Erst hat das ganze ui zeug gefehlt, habe dann über die Verwaltung ui nachinstalliert,
jetzt ist alles dabei ausser ui_group.
Das kommt auch direkt beim starten von node-red:
8 Dec 16:20:05 – [info] Warten auf fehlende Typen, die registriert werden sol:
8 Dec 16:20:05 – [info] – ui_group
Was kann ich machen?
Node-Red läuft bei mir in einer Debian VM
Also ich hab jetzt mal alles versucht, ich bekomme es nicht hin das ich den ui_group node erhalte.
Es kommt jedesmal die Fehlermeldung das der Typ ui_group fehlt.
Was muss ich machen? Dadurch dass der Typ fehlt startet Node-Red den flow auch nicht :(
Hi hast du das Dashboard über „Palette verwalten“ erfolgreich installiert?
Hi,
ja, ging aber nicht. Habe fast alles was mit ui zu tun hatte dann per Hand nachinstalliert, ohne Erfolg. Es hat immer ui_group gefehlt, keine Ahnung wieso.
Hab es mittlerweile aber gelöst bekommen, ich habe node-red nochmal komplett deinstalliert und danach nochmal komplett neu installiert.
Danach nochmal alle flows importiert und dann ging es auf einmal ohne Fehlermeldung.
Mein Taster ist defekt.
Wie kann ich einen neuen bekommmen?
(SPOILER: An Tag 12 Gibts einen weiteren Button. Du kannst aber auch einfach nur kurz eine Drahtbrücke zwischen den Kontakten aufbauen)
hallo,
bei mir reagiert er nicht auf den knopf
bei mir auch nicht, der taster is nicht defekt.
Und der LED arbeited aus das dashboard.
Manchmal sitzt der Button nicht richtig. Funktioniert es wenn ihr den Kontakt mit einer Drahtbrücke aufbaut?
Nein, das functioniert leider auch nicht.
Bei tage 5 gibt es ein selbe problem.
Das script uber der UDP funktioniert ohne problem.
Bei mir hat er auch nicht funktioniert, ich habe daraufhin die SD-Card herausgenommen (auf welche ich nie zugreifen konnte). Jetzt funktioniert der Taster :)
Es funktioniert mal wieder nicht. Ich habe den Flow in Node-Red importiert. Aber wenn ich den Button drücke passiert nichts (war auch an den letzten beiden Tagen so). Wenn ich in der UI den button drücke kommt die Fehlermeldung „udp : Error: getaddrinfo ENOTFOUND http://192.168.188.255„.
Was mache ich falsch?
Das ist die Broadcast-Adresse! Die 178 die vom Past-Bin kopiert wird, steht fürs Subnetz. Bei FritzBoxen i.d.R. 178 – das auf jeden Fall prüfen. Ansonsten mal nicht die Broadcast-Adresse sondern die IP-Adresse des NodeESP eintragen (bei UDP-out) – dann sollte es in jedem Fall funktionieren.
Hallo, Ich habe es nun mit der direkten IP-Adresse versucht. Jetzt kommt, wenn ich den Staircase-Trigger im Dashboard benutze, die meldung „{„cmd“:“ack“}“. Das bedeutet doch theoretisch dass das Board zwar den Befehl empfangen hat aber nichts damit anfangen kann, oder?
Hallo, wenn ich hier den Dashboard-Button drücke erscheint {„cmd“:“ack“} u. die Lampe leuchtet u. dann nochmal {„cmd“:“ack“} – d.h. das Board kann den Befehl bearbeiten.
Wenn ich den Button auf dem Breadboard drücke, dann erscheint {„cmd“:“trigger“}, {„cmd“:“ack“} die Lampe leuchtet ein paar Sekunden u. dann {„cmd“:“ack“}
Wenn das „ack“ erscheint, sollte eigtl. alles OK sein, d.h. die Kommunikation zwischen dem NodeRed-Server u. dem Board scheint zu funktionieren. Evtl. mal die Firewall abschalten u. die „Verkabelung“ bzw. LED prüfen? Und darauf achten, dass immer nur ein Flow aktiv ist?
Nutze ich Linux, funktioniert es nur wenn ich die IP des NodeRed in UDP-out eintrage. Mit Windows reicht auch die Broadcast Adresse (.255)
Viel Erfolg!
Der Flow gibt mir einige Rätsel auf. Reduziert man den Flow auf bottom-node, trigger-node und udp-output-node funktioniert alles wunderbar.
Frage: Welchen Zweck erfüllt die udp-input-node, json-node und switch-node?
Der udp-input-node, json-node und der switch-node verarbeiten eine Betätigung des Tasters am NodeESP. Der NodeESP sendet diese Information per UDP an den Flow.
Die anderen Nodes verarbeiten nur die Klicks auf den Dashboard-Button.
Wenn die drei genannten Nodes weggelassen werden, schaltet ein Druck auf den Taster die LED nicht mehr ein.
genau!
Zitat f.k.:
Der folgende Switch-Node ist vergleichbar mit einer IF-Abfrage. Es wird überprüft, ob das Kommando trigger gesendet wurde. Dieses Kommando wird durch Drücken des Buttons ausgelöst. Ein Trigger-Node übernimmt daraufhin die Arbeit. Wird der Trigger-Node aktiviert, sendet er den Befehl light_on für „Licht an“. Diese Nachricht, ebenfalls im JSON-Format, wird vom NodeESP-Board interpretiert, und entsprechend wird das Licht angeschaltet. Nach weiteren vier Sekunden sendet der Trigger-Node die Nachricht: light_off für „Licht aus“. Auch hierauf reagiert das Board entsprechend. Die Off-Nachricht kann verzögert werden, indem der Trigger-Node erneut ausgelöst wird. Dafür wurde in dem Modul eine entsprechende Option aktiviert. Zusätzlich kann der Trigger-Node auch über die Web-UI aktiviert werden.
Danke, das hat funktioniert. So stelle ich mir das vor.
Meine Irritation war das Wort „Button“. Der Button (separater Taster) auf dem NodeESP und die button-node des dashboard.
Dazu kommt der Trick, das das NodeESP beim betätigen des NodeESP-buttons die Zeichenketter „trigger“ schickt, die vom switch ausgewertet wird. Danke :-)
Bei mir funktioniert die Lampe leider nicht. Ich sehe im Node Red alle Kommandos, ich habe die ZielIP schon auf den NodeESP direkt umgestellt habe auch schon im Node-Red als Quellport auf Random gewechselt – Keine Änderung.
Kann mir einer sagen wie ich testen kann ob die Lampe überhaupt funktioniert?
Hallo,
1. die Lampe ist eine LED!
googlen kannst du sicher?
siehe Bild
Oder willst du den Ausgang/Output des Board prüfen? Pin 22?
Der führt nur 4 Sekunden Spannung gegen Masse/GND wenn du den Butten drückst auf dem Steckbrett oder ‚Staircase‘ auf dem Dashbord/UI, vorraus gesetzt du hast auch den Button richtig auf den Steckbord gepinnt, Pin 18 gegen Masse/GND.
kurze Bein an Minus/Masse/GND
Hallo, ich habe im NodeESP unter Board Configuration bei den UDP-Settings einfach den sendenden und empfangenen Port auf 55056 gesetzt, dann ging die LED an. Ist hier ein bisschen schlecht erklärt.
Bezüglich dem udp : Error: send EACCES 192.168.178.255:55056 Fehler – mit scheint es so, dass NodeRED nicht gleichzeitig auf Port 55056 lauschen *und* broadcasten kann (zumindest auf meinem Linux-System).
Was bei mit geklappt hat, ist, den Sende-UDP Node auf „broadcast message“ umzustellen, und „bind to random local port“ auf „bind to local port 55057“ (oder irgendeinen anderen Port).
Nein hat bei mir nicht geholfen.
Win 8.1
Erst ersten Schritt -> kein Erfolg
Zweiten Schritt -> kein Erfolg
Bleibt so, ab und zu ein ‚Ausreiser‘ macht bei mir nichts an den Farben/Helligkeit der LED.
Ist ja auch nur sporadisch, ca. aller 50-100 Massages 1 mal.
Super Tipp Andreas, Vielen Dank!
Hab mein Node auch auf nem Debiansystem laufen und so gings..
Super Tipp, Danke
habe mein Node auf OSX laufen.
Jetzt klappts
Wie kriege ich das Licht per UI zum Leuchten? Was muss ich im Node-RED anklicken?
Hall,
f.k. hat doch alles schon geschrieben.
Die UI hat damit nix zu tun.
Die Schaltung (der Phototransistor) ist es und das Progamm welches du in dein NodeESP lädst.
Anschließend den Flow des heutigen Tages aufgerufen und deployed.
Den gestrigen, sollte er noch im Editor stehen, deaktivieren und den heutigen aktivieren.
Das wars.
Korrektur, sorry ich war schon weiter.
Zweiten Browsertab/Browser aufmachen und dort die URI
127.0.0.1/ui eingeben.
Sollte dort ein Button mit der Bezeichnung Staicas Trigger zu sehen sein. Drücken. viola
Hat geklappt, vielen Dank!
Bei mir werden sämtliche Kommandos doppelt angezeigt. Ist das richtig?
Nein.
Hallo, bei uns leuchtet die LED nicht. In Nodered werden die JSON Nachrichten alle angezeigt. triger,light_on,light_off. Die LED leuchtet auch wenn wir sie an 3,3V verbinden nur nicht über das Program Tag 7? Wie kann man prüfen ob das Programm korrekt läuft?
Gruß
Pin 22 -> Widerstand (1kOhm)
andere Seite Widerstand -> lange Bein LED
kurze Bein LED -> GND
Eventuell ein Pin neben Pin22?
Danke,da hast du allerdings recht. Ich gehs gelassen und der reihe nach an.
Mfg
Rsoldie
mein Board funktioniert gar nicht mehr. ich hab schon probiert die Firmware neu zu laden. wenn ich den Boot Button drücke und halte startet es nicht
Ist es nicht ein bischen wenig was du uns vorwirfst?
Wir sitzen alle mit einer Glaskugel hier!
Falls Du das Board mit Batterien betreibst, Batterien wechseln!
Ein freundliches hallo in die runde. Hab heute erst meinen kalender bekommen und allem anschein nach schon eine menge nachzuholen. Irgendwas, worauf ich besonders achten sollte? Falls es schon probleme gab? Wenn nicht um so besser. Dann werd ich mal.mfg
Rsoldie
Hallo,
Du solltest dir fk’s Anleitung richtig durchlesen, die Kommentare lesen und selbst ein wenig deinen Grips benutzen.
Dann posten.
Aber ich denke viel Aktivitäten werden bei vergangenen Tagen nicht mehr drin sein.
Viele sind schon bei Tag 24, was wiederum einen Adventskalender ad absurdum führt.
Aber dir viel Spaß, wie uns Allen.
Dann funktioniert Bonjour nicht. Oder?
Der Button im UI geht einwandfrei nur der Button auf dem Board möchte nicht so richtig. Hab im Paket sender die Button State abgefragt da ändert sich bei Tastendruck der Logische Zustand des Schalters. Die Frage ist nur warum löst der Schalter druck den Trigger der Lampe nicht aus ?
MFG
WOODO
Sendet der auch den CMD Befehl? Debuggen.
Nein sendet keinen CMD Befehl irgend eine Ahnung was das sein kann ?
das grüne Feldchen rechts neben den msg.payload hast du aber aktiviert?
Ich habe testweise alle Kabel entfernt, wenn ich den Button betätige kommt wenigsten die Meldung, siehe Bild.
solange der Trigger Baustein läuft hat er auch einen ‚blauen‘ Punkt darunter.
empfehlendswert: Beim Gebrauch der Mikrotaster auf dem Breadbord Kontaktbeinchen vorsichtig mit der Zange Krümmung glätten. Die Beinchen des Tasters werden dadurch etwas länger und stecken sicherer im Breadbord bzw. Kontakt wird sicherer
Hat auf Anhieb alles funktioniert, ohne dass ich eine Änderung machen musste. :-)
Nachdem ich mir den Flow angeschaut habe, fragte ich mich welchen Zweck der Teil
UDP in -> Json -> Switch erfüllt und einfach die Verbindung zwischen Switch und Trigger getrennt und festgestellt, dass Button in der UI weiterhin fehlerfrei funktioniert. An sich sollte es reichen den Flow auf
Button -> Trigger -> UDP send zu reduzieren. Man bekommt dann nur keine Debug-Meldung zu den Kommandos „light_on“, „light_off“ und „ACK“.
Der Button auf dem Board funktioniert nicht mehr, wenn Du die Verbindung trennst.
Hallo,
gut erklärt, wenn ich auch erst etwas darüber nachdenken musste.
UDP in -> Json -> Switch
der Switch wandelt das Eingangssignal in dem Fall in ein Triggersignal um.
Button -> Trigger -> UDP send
Kann man dann als zwei eigenständige Flows sehen die hier kombiniert wurden.
Jetzt habe auch ich den Zusammenhang verstanden. Ich kann die LED also per click im UI starten oder per Taster auf dem Board. Das funktioniert nur, weil UDP -> Jason -> Switch den Tastendruck in ein Trigger verwandeln.
Gefällt mir :-)
Ich verstehe es immer noch nicht ganz. Beim Taster wird am Switch-Ausgang ein Objekt cmd: „trigger“ an den Trigger geschickt, der UI-Button schickt einen String „d84643c4.e5adf“ an den Trigger. Beides akzeptiert der Trigger. Warum dann erst die Wandlung mit json –> switch beim Taster?
fk schreibt dazu:
Wenn am UDP-Note eine Nachricht ankommt, wird sie wieder von einem JSON-String, also reinem Text, in ein JSON-Objekt konvertiert. Der Unterschied ist, dass man nun direkt auf einzelne Attribute zugreifen kann.
Der folgende Switch-Node ist vergleichbar mit einer IF-Abfrage. Es wird überprüft, ob das Kommando trigger gesendet wurde. Dieses Kommando wird durch Drücken des Buttons ausgelöst. Ein Trigger-Node übernimmt daraufhin die Arbeit. Wird der Trigger-Node aktiviert, sendet er den Befehl light_on für „Licht an“. Diese Nachricht, ebenfalls im JSON-Format, wird vom NodeESP-Board interpretiert, und entsprechend wird das Licht angeschaltet. Nach weiteren vier Sekunden sendet der Trigger-Node die Nachricht: light_off für „Licht aus“. Auch hierauf reagiert das Board entsprechend
Ist schon klar, aber warum sendet der „Staircase Trigger“ an den „Trigger 4s“ etwas ganz anderes (siehe Debug) und der „Trigger 4s“ reagiert genau so darauf wie über das, was er vom „switch“-Ausgang bekommt…
Moin zusammen,
bei mir leider nicht. Egal was ich einstelle, ich bekomme immer die Log-Ausgabe: „udp : Error: send EACCES
Hat jemand eine Idee warum?
hast du den Node Server laufen?
Beachte den Hinweis am Ende von fk’s Ausführungen.
Ich mußte die UPD Adresse ändern, dann funktionierte der Button, sowie die Web GUI
Keine Ahnung, habe alles mögliche ausprobiert. Es funktioniert nur dann, wenn ich direkt die IP-Addresse des NodeESP eingebe. Über Broadcast geht es bei mir gar nicht. Habe OSX, Netzwerk über fritz.
Keine Ahnung von OSX.
Ich benutze Win8.1, Firefox 63.0.3 64-Bit
Hi Stan,
das kann ich bestätigen. Wenn ich die Board-eigene IP benutze, dann funktioniert die Aufgabe
habe es lösen können…
Das Problem war in der Einstellung „bind random local port“ bei dem UDP-Output. Habe einen festen Bind-Port definieren – danach ging.
Vielen Dank, Stan! Bin auch mit macOS unterwegs und dein Tip hat mir geholfen. Ohne diese Änderung hat bei mir das Treppenhauslicht nicht geleuchtet.
Guten Morgen
Hat funktioniert. Musste allerdings die Adresse 192.168.178.255 im UDP-Node zum Senden löschen.
:-)
Danke für den Tipp wildi,
bei mir hat es auf dem Raspberry mit send udp message geklappt als ich dort nodeesp.local eingetragen habe.
Broadcast ging leider nicht wegen eines Fehlers
„udp : Error: send EACCES 192.168.0.255:55056“