Tag 5: Node-RED

Hinter dem fünften Türchen des Adventskalenders finden Sie einen Taster, der in dem heutigen Versuch anstelle des Boot-Buttons eingesetzt werden soll. Der Button wird so an Pin 18 und GND angeschlossen, dass er beim Drücken den Pin auf Masse, also LOW, zieht. Wenn Sie nun das Programm des Tages auswählen und den Button drücken, wird wieder eine Nachricht über UDP übermittelt.

Versuchsaufbau

Versuchsaufbau

Heute werden Sie das Programm Node-RED kennenlernen, mit dem Sie Ihre eigenen kleinen Programmabläufe erstellen und Vorgänge automatisieren können. Node-RED ist eine kostenlose Software, die es uns ermöglicht, verschiedene Geräte, Onlinedienste und APIs (Programmierschnittstellen) über eine einfache grafische Oberfläche zu verbinden. Die Verbindungen, Flows genannt, werden dabei einfach per Mausklick gezogen.

Node-RED gibt es für Linux, Windows und macOS. Sinnvoll ist die Verwendung eines Raspberry Pi, da dieser ohne großen Energiebedarf immer aktiv sein kann, ganz im Sinne des Smarthome. Außerdem ist Node-RED dort unter Raspbian bereits vorinstalliert.

Ich stelle die Installation beispielhaft für Windows 10 vor. Die meisten dieser Befehle sind aber auf andere Systeme übertragbar.

Im ersten Schritt muss Node.js installiert werden. Diese Software bekommen Sie von der Webseite https://nodejs.org/, auf der auch eine genaue Installationsanweisung zu finden ist. Installieren Sie die ca. 16 MByte große MSI-Datei per Doppelklick. Um sicherzugehen, dass alles korrekt installiert wurde, sollten Sie nun das Windows-Terminal, auch Kommandozeile oder Shell genannt (Windows-Taste + [R] und dann cmd eingeben), öffnen und

node –version && npm –version

eingeben. Das Ergebnis lautet z. B. v8.10.0 und 5.6.0, Sie könnten aber bereits eine neuere Version haben. In der Kommandozeile müssen Sie dann den Befehl zur Installation von Node-RED eingeben:

npm install -g –unsafe-perm node-red

Das kann eine Weile dauern. Anschließend starten Sie Node-RED mit diesem Kommandozeilenbefehl:

node-red

Die Firewall meldet sich. Im Hintergrund startet Node-RED in der Konsole

Die Firewall meldet sich. Im Hintergrund startet Node-RED in der Konsole

Sofort meldet sich die Firewall, die wissen möchte, wie mit der neuen Verbindung vorgegangen werden soll. Wichtig ist, dass Sie Private Netzwerke und Zugriff zulassen wählen. Nur dann kann Node-RED richtig arbeiten. Wichtig ist auch, dass Sie das Terminal jetzt nicht schließen, denn damit beenden Sie auch Node-RED wieder.

Nun haben Sie Node-RED installiert und gestartet, aber außer ein paar Zeilen im Terminal noch nicht viel Nützliches gesehen. Das liegt daran, dass die Bedienoberfläche der Software über den Browser geöffnet wird. Dazu öffnen Sie die Adresse http://127.0.0.1:1880/. Dabei handelt es sich um die localhost-Adresse, mit der Sie Ihren Rechner adressieren. Die Zahl 1880 steht für den Port, über den Sie Node-RED erreichen. Wenn Sie von einem anderen Rechner aus auf Node-RED zugreifen möchten, müssen Sie natürlich die richtige IP des Rechners verwenden. Nun sehen Sie die Oberfläche von Node-RED mit der Flow-Fläche in der Mitte, den Nodes auf der linken und Informationen auf der rechten Seite.

Einstellungen und eine empfangene Nachricht

Einstellungen und eine empfangene Nachricht

Auf der linken Seite finden Sie im Bereich Input einen Node mit der Bezeichnung udp. Ziehen Sie ihn in die freie Fläche in der Mitte. Etwas weiter unten unter dem Punkt output finden Sie debug. Ziehen Sie diesen Node ebenfalls auf die Fläche. Verbinden Sie die beiden Nodes durch Klicken und Ziehen mit der Maus. Anschließend klicken Sie doppelt auf den UDP-Node, um die Einstellungen zu öffnen. Geben Sie alles genau so ein, wie Sie es auf dem Bild oben sehen. Dann bestätigen Sie mit Done. Zum Start müssen Sie auf den Deploy-Button oben rechts in der Ecke klicken. Es erscheint kurz die Meldung Successfully deployed. Der neue Flow ist jetzt aktiv. Als letzten Schritt wählen Sie am rechten Rand das Register debug aus und drücken dann auf den Button auf dem Steckboard. Im debug-Fenster erscheint eine Nachricht im bekannten JSON-Format: {"cmd":"btn1_pressed"}. Die Verbindung zu Node-RED steht also.

Hinweis: Das Abzählen der Board-Pins kann mühsam sein. Deswegen gibt es auf der Boardseite im Bereich Pinout eine Schablone, die Sie ausdrucken, ausschneiden und auf das Board legen können.

46 Kommentare

  1. Sebastian Müller

    so also ich konnte zwar node.js installieren aber node red installieren mit den angegeben befehlen war auf meinem windows laptop nicht drin.

    C:\Users\User>node -version && npm -version
    node: bad option: -version

    ging bei mir nicht!

    Was auch nicht ging:

    C:\>npm install -g -unsafe-perm node-re
    npm ERR! code E404
    npm ERR! 404 Not Found: node-re@latest

    npm ERR! A complete log of this run can be found in:
    npm ERR! C:\Users\User\AppData\Roaming\npm-cache\_logs\2018-12-10T11_06_00_089Z-debug.log

    Antworten
    1. Sebastian Müller

      Installation auf dem Pi hat geklappt mit einer anderen Anleitung.

      Schön wäre es wenn die Links hier im Blog als Links angegeben werden. Hypertext und so…

      Antworten
      1. Sebastian Müller

        was darn lag, dass der Befehl hier falsch angegeben ist:

        Installing Node-RED as a global module adds the command node-red to your system path. Execute the following at the command prompt:

        npm install -g –unsafe-perm node-red

        Antworten
        1. paulaner

          Hallo,

          ist doch das Gleiche oder?

          f.k.
          npm install -g –unsafe-perm node-red

          du
          npm install -g –unsafe-perm node-red

          Antworten
    2. paulaner

      Hallo,
      ich werde und kann dir keine Anleitung an die Hand geben.
      Ich konnte aber bei mir (Win8.1) dein?, auch nicht einen der oben angegebenen Befehle ausführen.
      Etwas googlen hat geholfen.

      Zitat:
      node –version && npm –version

      da musste ich ’node -v' nehmen.

      oder ’npm -v' zwar mit Fehlermeldung aber 'er' spuckt die Verion aus.

      Genauso ist es mit ’npm install -g –unsafe-perm node-red'.
      -g bedeutet global, was immer damit gemeint ist, google.
      und und und

      Antworten
  2. Theo

    Leider tut der Tastschalter bei mir gar nichts, weder mit dem Programm von Tag 4 noch von Tag 5…

    Antworten
    1. paulaner

      Hallo,

      Bei Tag 4 ist es der Taster mit der Bezeichung 'Boot' auf dem Board NodeESP, dazu Tag 4 in den NodeESP laden.
      Packet Sender auf deinem Rechner öffnen, UDP Adresse kontollieren/ändern, fertig. Taste drücken, viola.

      Bei Tag 5 den Taster auf dem Steckbrett montieren, Programm in den NodeESP laden, Tag 5, Paket Sender auf dem PC öffnen, Taster auf dem Steckbrett betätigen, viola.

      Ansonsten denke ich an ein Problem auf deinem PC mit dem Packet Sender.

      Hast du mit den anderen Flows Probleme?
      Welcher PC, OS, Brower?

      Antworten
  3. Rsoldie

    Hi, habe ich das jetzt so richtig verstanden, das ich mit tablet und smartfon einpacken kann weil ich keinen pc habe?
    Oder gibts da ne altenaive fürs mobile? Sonst wird der kalender dies jahr echt teuer…
    Mfg

    Antworten
    1. paulaner

      Hallo,

      ja da sollte man sich auch bei diesen Dingen im Vorfeld gut informieren.

      Aber teuer muß nicht sein, Alternativen gibt es zum PC.
      Dieses Jahr steht der Node-Red Editor im Vordergrund und dafür reicht ein Raspberry 2B oder 3B usw..

      Also ein kleiner stromsparender SOC Rechner, Chipkarten groß/klein.

      Eine Image für den RPi gibt es und es ist schon Node-Red vorinstalliert.
      Bei Fragen nur zu.

      Antworten
      1. rsoldie

        ist dieses node red in "noobs" heist das glaub ich , schon drin? ich hab ein himbeerchen, die letzte ausgabe, wenn ich nicht irre.
        und danke für die schnelle antwort. hab ich die ganze zeit gesucht und übersehen, aber nu weis ich ja worauf ich achten muss.

        Antworten
        1. rsoldie

          ich habs gefunden, das node red. nu brauch ich nur noch einen monitor, auf dem ich was erkenne. also hat sich der text hier oben erledigt außer das danke;-)
          mfg

          Antworten
          1. paulaner

            Hallo,

            etwas muß ich deine Freude doch noch dämpfen.
            Eigentlich kenne ich mich mit den Raspberrys jeder Version gut aus.
            Aber gut heißt eben nicht, ich kann alles.

            Ich habe mal spaßeshalber ein Raspberry Pi 3B aufgesetzt.
            SD Karte mit Etcher und einem 2018-11-13-raspbian-stretch-full.zip Image bespielt.
            Sämtliche neuen Images bringen Node-Red mit, aber das ist nur der Server.
            Du mußt schon einen Browser starten damit du auch mit Node-Red arbeiten kannst!
            OK.

            Nächster Punkt.
            Es fehlen im Server viele Module die gebraucht werden. Kein Problem installiere ich nach, wirst du sagen.
            Ja da gibt es das nächste Problem, Pakete nicht vorhanden und der Manager auch nicht.
            Du mußt erst npm installieren. Dann das Dashboard Modul mit den Manager.

            Erst dann kannst du die Beispiele des Kalenders verfolgen.
            Ob du nun jedes einzelne Projekt tageweise importierst oder alle, egal.

            Ich hoffe ich habe nichts vergessen, Google ist auch dein Freund, wenn nicht frag ruhig.

          2. Horst

            Hejo,
            ich weiß es ist schon ziemlich egal aber wenn du ne Aufgabe lösen willst geht das auch aufm Handy mit Python. Bis war nodered nur zum einfachen import und aufrufen der Funktionen da. Kann man alles auch mit Python abbilden.

  4. hslschulz

    Bitte um Erklärung zu dieser Fehlermeldung:

    7.12.2018, 17:05:24node: 6422069f.865808
    msg : string[17]
    "error: EADDRINUSE"

    wer kann mir da helfen ?

    Antworten
    1. paulaner

      siehe deine erste Post

      Antworten
    2. Jens_aus_Muc

      Hatte auch das Problem auf einem Mac mit gleichzeitig geöffnetem PacketSender. Den schließen, ggf. neu deployen – dann ging es!

      Antworten
  5. Andreas

    Als Linux-Nutzer habe ich Node-Red übrigens über https://github.com/node-red/node-red/releases heruntergeladen, entpackt, mit npm install –production installiert/kompiliert/die Dependencies heruntergeladen und dann mit npm start gestartet. Die offiziell vorgeschlagene Variante mit sudo npm install -g war mir dann doch zu ominös (entsprechend https://nodered.org/docs/getting-started/installation)

    Antworten
  6. T2brozz

    Bei mr sendet der durchgehen , auch ohne eine Verbindung zum Knopf die Antwort und hört auch nicht auf.

    Kann mir jmd helfen

    Antworten
  7. T2brozz

    Andere Sache kann man damit nur die vorgefertigten programme laufen lassen oder werden im laufe des Kalenders auch neue Programme für den Node von den Käufern entwickelt

    Antworten
  8. hslschulz

    hallo, wie bekomme ich das Programm node red unter mac os am laufen, habe es installiert , läßt sich aber nicht öffnen

    Antworten
    1. hslschulz

      ok das Programm läuft jetzt, das ist das nächste Problem.

      Bitte um Erklärung zu dieser Fehlermeldung:

      7.12.2018, 17:05:24node: 6422069f.865808
      msg : string[17]
      "error: EADDRINUSE"

      wer kann mir da helfen ?

      Antworten
      1. paulaner

        EADDRINUSE

        E ADDR IN USE

        Abgekürzt: Eingangsaddresse in Benutzung.

        Antworten
        1. hslschulz

          ok und wie kann ich das ändern oder abstellen ?

          Antworten
  9. Christian

    Ach eins noch: "Deswegen gibt es auf der Boardseite im Bereich Pinout eine Schablone […]"
    Welche Boardseite?
    Ich habe hier alles abgegrast und nix gefunden… hast Du mal einen Link?

    Antworten
    1. Clemens

      Bei der Homeseite deines NodeESP gibt es den Punkt "NodeESP Pinout", da gibts die Schablone

      http://nodeesp.local/info/layout.htm

      Antworten
      1. Joachim

        Das klingt gut – leider sieht die Zeichnung hinter dem Download "Printable Pinout to lay on your Board" ganz anders aus, als in der Vorschau gezeigt und ist für den angegeben Zweck gänzlich ungeeignet (sieht aus wir dir oberste Lage des LP-Layouts).
        Schade – wäre schon ganz hilfreich …

        Gibt es die Zeichnung nicht auch hier auf der Seite zum Download?

        Antworten
        1. paulaner

          Du benutz zum anzeigen/drucken ein unpassendes Programm.

          IE kann mit .svg umgehen

          Antworten
          1. Hans-Joachim

            ich habe die Pinouts beim Drucken auf 48% gezoomt, dann hat es gepasst. Das s/w Pinout ausgeschnitten und auf das Board gelegt.. Funktioniert gut. Danke, Fabian für diese Idee.

          2. Andreas

            Wenn ich das SVG in Chromium oder Firefox öffne, bekomme ich ein winzig kleines Bild, auf dem der Text, der die Pins beschreibt, absolut nicht lesbar ist (verwaschen/verpixelt).

            Nur wenn ich es in ein leeres Blatt in Libreoffice Draw ziehe, bekomme ich das gewünschte Ergebnis

    2. Maik

      Auf der Home Seite des Node Programms wo du auch anfangs die IP eingeben musstest

      Antworten
  10. Maik

    Hallo, ich hatte das selbe Problem und es liegt tatsächlich an der Firewall.
    Um dieses Problem zu lösen folgt ihr einfach meiner Anleitung.

    Öffnet die Firewall Einstellungen

    (Einstellungen /Windows Sicherheit /Firewall &Netzwerkschutz)

    Dann im unteren Bereich "Zugriff von App durch Firewall zulassen" anklicken

    Es öffnet sich ein neues Fenster
    Klickt auf "Einstellungen ändern"
    Nun solltet ihr beliebig die Häckchen aktivieren und deaktivieren können

    Sucht in der Liste nun nach "Node.js:server-side Javascript" und aktiviert die Häckchen

    Am Ende unten mit okay bestätigen und nun sollte es funktionieren
    Bei mir war das auf jeden Fall so

    Antworten
    1. Peter

      Hallo Maik,
      ich habe mir meine Settings mal angesehen und node.js kann in mein privates Netzwerk ohne irgendeine Beschränkung von Ports, dennoch bekomme ich immer einen Fehler wie
      [error] [udp in:PortListener] error: EACCES
      der sich auf den Input Node für UDP bezieht.
      Gruß
      Peter

      Antworten
      1. Maik

        Hi, mhhh vielleicht die beiden Programme neu installieren, ist das Board richtig zusammengesteckt und verkabelt? Blockiert ein anderes Programm wie ein Virenscanner zb. die Programme?
        Sorry bin halt auch kein Computernerd

        Antworten
        1. Maik

          Achso vielleicht auch wichtig, Tag 5 im Kalender aktivieren oder auch mal nach einem update schauen.

          Antworten
  11. Christian

    Seeeehr cool!

    Pass auf, ich habe in meinem Netzwerk einen ELV Raspmatic ("Charly") Bausatz (also die selbstgebaute Variante von der Homematic CCU3) und darin als Addin NodeRed installiert. Das Programm aus Tag #5 funktioniert damit super! Was dadurch alles möglich wird in Sachen Heimautomation! :D

    Antworten
  12. Peter

    Guten Tag,
    ich habe ein ähnliches Problem, die Installation von node.js und der download von node-red haben wie erwartet funktioniert. Den Flow hatte ich auch recht schnell zusammen. Mit Deploy habe ich den Flow dann hochgeladen und auch im Browser eine Bestätigung erhalten. In der Konsole (cmd) bekomme ich aber folgende Fehlermeldung:

    5 Dec 10:24:48 – [info] Stopping flows
    5 Dec 10:24:48 – [info] Stopped flows
    5 Dec 10:24:48 – [info] Starting flows
    5 Dec 10:24:48 – [info] Started flows
    5 Dec 10:24:48 – [error] [udp in:3aa296a.f26226a] error: EACCES

    Im Packet Sender bekomme ich die erwartete Meldung für jeden Tastendruck.

    Was mache ich falsch?

    Beste Grüße
    Peter

    Antworten
    1. Peter

      Also ich habe das ganze mal unter Ubuntu versucht und dort funktioniert alles nach Plan, also gehe ich davon aus, dass es ein Rechteproblem unter Windows 10 ist. Bin mir noch nicht sicher ob Firewall oder Fileaccess.

      Wenn ich von Windows auf den node-red Server mittels IP zugreife, dann funktioniert auch alles.

      Also mal die Firewall testhalber abschalten und node-red als Administrator installieren.

      Antworten
      1. Peter

        OK, bin zwar nicht schlauer, aber nun geht es auch unter Windows.

        Nachdem ich node-red de-installiert habe und Windows rebootet habe, waren auf einmal die Antwortzeiten von node und npm schneller. Ich habe dann als Administrator node-red installiert und anschließend hat node-red sowohl als Administrator oder User funktioniert.
        Keine Änderung an der Firewall oder Verkabelung.

        Einzig der Packet Sender läßt sich nicht mehr nutzen, er meldet das UDP-Port 55056 schon benutzt wird und deaktiviert den Server.

        Again what learned

        Antworten
        1. Bernd

          Hallo,

          der Packet Sender und der Node-Red Server dürfen nicht gleichzeitig laufen. Startet man den Packet Sender zuerst und dann Node-RED, zeigt das Eigenschaften-Fenster des UDP-Nodes im Node-RED "Ports already in use: 55056" und es kommt beim Deploy natürlich zu der Fehlermeldung "error: EACCES". Also alles noch mal beenden (Node-RED, Packet Sender) und dann nur Node-RED starten. Dann funktioniert es auch. Es kann halt nur ein Programm den Port 55056 belegen…

          Antworten
          1. paulaner

            Hier muß ich meiner Erfahrung nach wiedersprechen, bei mir funktioniert es,
            Habe den Packet Server laufen und habe dann Node-Red gestartet, ok.
            Beide empfangen die Nachricht!

            Man darf nicht verallgemeinern.

            paulaner

          2. Bernd

            OK, in MEINER Umgebung (nur IPv4) funktioniert es reproduzierbar nicht, wenn beide gleichzeitig laufen…

          3. paulaner

            Hallo,
            jetzt muß ich mich nochmals melden.
            Am 6.Tag klappt es nicht mehr mit beiden Programmen auf den Packet Server und Node-Red zuzugreifen.
            Bernd schrieb es schon!

            Habes wie Bernd beschrieben gestartet, gleicher Fehler. Packet Server beendet, Empfang war da. Dann Packet Server gestartet, dann sagt er irgendwas von '… multiinstance .. ', OK, UDP ist dann da 'deaktiviert', aktivieren geht nicht.

            Warum es aber am 5.Tag bei mir ging, ich weiß es nicht, zuviel installiert, mit offenen Programmen/Shell/Updates etc. handiert?.

            Eine Entschuldigung an Bernd.
            gruß paulaner

  13. wildi

    Guten Morgen
    Es hat alles geklappt, ausser dass ich im Debug Fenster keine Nachrichten erhalte.Der NodeESP sendet auf Knopfdruck eine Nachricht, die ich im Packet Sender sehe, aber nicht in NodeESP.
    Im cmd Fenster (Windows 10) ist die Nachricht:
    5 Dec 08:35:41 – [info] Starting flows
    5 Dec 08:35:41 – [info] Started flows
    5 Dec 08:35:41 – [info] [udp in:4c7fb40b.a27f3c] udp listener at 0.0.0.0:55056
    Was kann ich sonst noch überprüfen?
    Vielen Dank und freundliche Grüsse
    Gérard

    Antworten
    1. fk (Beitrag Autor)

      Hallo, hast du den Packet Sender parallel laufen? Wenn ja teste Mal ob es funktioniert, wenn du den Packet Sender schließt. Ansonsten ist die Firewall meist das Problem.

      Antworten
    2. Benzo

      Hast du die beiden Kabel angeschlossen wie in der Anleitung gezeigt? Ohne die klappt es nämlich nicht :D Nach Anschließen der Kabel evtl den Debug mit Klick auf den "Schalter" am rechten Rand des Debug Nodes auf der Flow Fläche ausschalten, erneut einschalten und nochmal deployen.
      Bei mir ging es mit der Nachricht im Debug Fenster auch obwohl der Paket Sender parallel lief. Daran dürfte es also nicht liegen.

      Antworten
      1. paulaner

        Ich muß meinem Vorschreiber mal sagen, welchen Unsinn er schreibt.
        Die zwei Drähte sind absolut nicht von Belang, führen diese doch ins 'Leere'.

        MSI Laptop, Win 8.1.
        Bis jetzt funktionierte alles. Man muß bei einigen sein Grips anstrengen aber es funktioniert.
        Danke.

        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.