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.

Versuchsaufbau

Versuchsaufbau (Kurzes Beinchen der LED ist oben)

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.

Der Flow des heutigen Tages

Der Flow des heutigen Tages

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.

 

43 Kommentare

  1. Philip

    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?

    Antworten
    1. paulaner

      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.

      Antworten
      1. paulaner

        kurze Bein an Minus/Masse/GND

        Antworten
  2. Andreas

    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).

    Antworten
    1. paulaner

      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.

      Antworten
    2. Sören

      Super Tipp Andreas, Vielen Dank!
      Hab mein Node auch auf nem Debiansystem laufen und so gings..

      Antworten
  3. Benzo

    Wie kriege ich das Licht per UI zum Leuchten? Was muss ich im Node-RED anklicken?

    Antworten
    1. paulaner

      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.

      Antworten
      1. paulaner

        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

        Antworten
        1. Benzo

          Hat geklappt, vielen Dank!

          Antworten
  4. thymjan

    Bei mir werden sämtliche Kommandos doppelt angezeigt. Ist das richtig?

    Antworten
    1. paulaner

      Nein.

      Antworten
  5. Kai Kramer

    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ß

    Antworten
    1. paulaner

      Pin 22 -> Widerstand (1kOhm)
      andere Seite Widerstand -> lange Bein LED
      kurze Bein LED -> GND

      Eventuell ein Pin neben Pin22?

      Antworten
  6. Rsoldie

    Danke,da hast du allerdings recht. Ich gehs gelassen und der reihe nach an.
    Mfg
    Rsoldie

    Antworten
  7. Kport

    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

    Antworten
    1. paulaner

      Ist es nicht ein bischen wenig was du uns vorwirfst?
      Wir sitzen alle mit einer Glaskugel hier!

      Antworten
    2. Hans-Joachim

      Falls Du das Board mit Batterien betreibst, Batterien wechseln!

      Antworten
  8. Rsoldie

    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

    Antworten
    1. paulaner

      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.

      Antworten
  9. paulaner

    Dann funktioniert Bonjour nicht. Oder?

    Antworten
  10. WOODO

    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

    Antworten
    1. paulaner

      Sendet der auch den CMD Befehl? Debuggen.

      Antworten
      1. WOODO

        Nein sendet keinen CMD Befehl irgend eine Ahnung was das sein kann ?

        Antworten
        1. paulaner

          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.

          Antworten
      2. paulaner

        solange der Trigger Baustein läuft hat er auch einen 'blauen' Punkt darunter.

        Antworten
    2. Hans-Joachim

      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

      Antworten
  11. Peter

    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".

    Antworten
    1. Eddie

      Der Button auf dem Board funktioniert nicht mehr, wenn Du die Verbindung trennst.

      Antworten
    2. paulaner

      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.

      Antworten
      1. Peter

        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 :-)

        Antworten
        1. Bernd

          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?

          Antworten
          1. paulaner

            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

          2. Bernd

            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…

  12. Michael

    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?

    Antworten
    1. paulaner

      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

      Antworten
    2. stan

      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.

      Antworten
      1. paulaner

        Keine Ahnung von OSX.

        Ich benutze Win8.1, Firefox 63.0.3 64-Bit

        Antworten
      2. Michael

        Hi Stan,

        das kann ich bestätigen. Wenn ich die Board-eigene IP benutze, dann funktioniert die Aufgabe

        Antworten
        1. stan

          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.

          Antworten
          1. thymjan

            Vielen Dank, Stan! Bin auch mit macOS unterwegs und dein Tip hat mir geholfen. Ohne diese Änderung hat bei mir das Treppenhauslicht nicht geleuchtet.

  13. wildi

    Guten Morgen
    Hat funktioniert. Musste allerdings die Adresse 192.168.178.255 im UDP-Node zum Senden löschen.
    :-)

    Antworten
    1. Daniel G

      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"

      Antworten

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.