Make: IoT Special 2016
S. 58
Grundlagen
Aufmacherbild
Produktbild: Philips

Alles im Fluss

Netzwerkanwendungen auf Basis von Node.js können mit der freien Entwicklungsumgebung Node-RED intuitiv in Form von Flussdiagrammen per Drag and Drop erstellt werden. Für die ersten Schritte wird das System eingerichtet und der Status einer Philips-Hue-Lampe abgefragt.

Als einer der ersten Hersteller bietet Philips über das Internet schaltbare Lampen für den Endanwender an. Mittlerweile gibt zahlreiche Produkte für dessen Hue-System (hue engl.: Farbton) an. Per Android, iOS-App oder mit dem Browser kann man über das Internet auf die einzelnen Lampen zugreifen, die (über eine Bridge gesteuert) per Funk und ZigBee-Spezifikation kontrolliert werden. Da Philips den Zugriff auf das System weitgehend offen gelegt hat und eine Webseite für Entwickler und eine API bereitstellt (siehe Kasten „Philips Hue API“), lassen sich die Lampen auch mit anderen Anwendungen komfortabel ansteuern.

Einfaches Programmieren mit einem Trio aus Node.js, npm und Node-RED eingesetzt auf einem Raspberry Pi 3 stellen wir im folgenden Artikel vor. Das neue serverseitige Konzept, das für schnellere Verarbeitung sorgen soll, wird um einen dazu passenden Paketmanager ergänzt.

Am Ende werden wir Philips-Hue-Lampen in einer simplen Hausautomatisierung steuern, und das ohne dabei teilweise auch nur eine einzige Zeile Code zu schreiben.

Die serverseitige, ereignisgesteuerte Plattform zum Betrieb von Netzwerkanwendungen Node.js gibt es seit 2009 und ist damit noch relativ jung. Sie basiert auf der JavaScript-Laufzeitumgebung V8 von Google. Der Einsatz von JavaScript, das auf der Client-Seite schon länger sehr verbreitet war und nun auch auf Server-Systemen – zumindest in ähnlicher Anwendung – eingesetzt werden kann, dürfte zu der rasanten Popularität mit beigetragen haben. Die leichtgewichtige und effiziente Struktur mit nicht blockierenden In- und Outputs von Node.js wird durch den Paketmanager npm unterstützt. Er ist das Tor zu einem riesigen Angebot von Open-Source-Bibliotheken und sorgt sowohl für die Auffindbarkeit von Modulen als auch das intelligente Auflösen von Abhängigkeiten. Node-RED schließlich ist ein von IBM entwickeltes, ereignisgesteuertes Tool mit einer grafischen „Drag and Drop“-Programmieroberfläche. Die Idee dahinter war, immer wiederkehrende Abläufe in sogenannte „Nodes“ (engl: Knoten) zu kapseln, um den Programmieraufwand zu minimieren.

Server mit Node.js installieren

Bevor es mit der Programmentwicklung losgehen kann, wird eine Installation von Node.js auf dem Raspberry Pi 3 benötigt. Die detaillierte Einrichtung zeigen wir aus Platzgründen online bei unseren Hintergrundartikeln, sodass Sie diese auch jederzeit schnell nachlesen können. Den Link zum Artikel finden Sie wie immer über die Linksammlung per Kurz-URL zu diesem Beitrag.

Node-RED an den Start bringen

Als grafisches Programmier-Tool für das Internet of Things eignet sich Node-RED (das auf Node.js basiert) aufgrund seiner Einfachheit und der riesigen Anzahl von Modulen (etwa 225.000 laut Nodered.org) sowie der flussartigen Programmierung im Web-Browser auch für Programmieranfänger bestens. Programme werden erstellt, indem man je nach Aufgabenstellung entsprechende Nodes (gekapselte Code-Schnipsel) per virtueller „Leitung“ verbindet. Dadurch entstehen sogenannte Flows, die mit der Schaltfläche Deploy aktiviert werden. Im Editor können (erweiterte) Funktionen per JavaScript integriert werden. In einer Bibliothek können diese Funktionen, Vorlagen oder ganze Flows für späteres Code-Recycling gespeichert werden.

Um unsere Version von Node-RED auf dem Raspberry Pi zu starten, geben wir zunächst:

sudo node-red-pi -max-old-space-

size=12-

auf der Kommandozeile ein. Dieses speziell für den Raspberry Pi vorgesehene Startkommando begrenzt den maximal verfügbaren Speicher auf 128 Megabyte. Je nach Raspberry-Pi-Version und anderen gleichzeitig laufenden Programmen kann man den Speicher auch erhöhen. Der Befehl free –h gibt einen Überblick über die aktuelle Speicherbelegung. Nachdem wir Node-RED gestartet haben, erscheint die Startausgabe.

Startausgabe von Node-RED
Übersicht der Oberfläche des Node-RED-Editors

Der Server ist damit gestartet und hört lokal (127.0.0.1) am Port 1880 auf Befehle. Wir starten unseren Web-Browser und geben als Adresse 127.0.0.1:1880 ein. Danach sollte die Oberfläche des Node-RED-Editors erscheinen. Bei sehen wir die ausgewählte Adresse und die Portnummer, die auf der Node-RED gestartet wurde. Wir können im lokalen Netzwerk natürlich auch die IP-Adresse des Raspberry Pi mit dem dazugehörigen Port auswählen und kommen dann von anderen Rechnern auf die Oberfläche. Mit hostname –I lokal auf der Kommandozeile bekommt man die IP-Adresse des Raspberry Pi. Die einzelnen Nodes sind zur besseren Übersichtlichkeit gruppiert und im linken Fenster zu sehen. Das mittlere Fenster (Flow-Designer) ist unsere Programmieroberfläche. Hier entstehen durch Drag and Drop der Nodes aus dem linken Fenster in die Mitte die Flows , also das später auszuführende Programm. Im rechten Fenster finden sich Reiter wie info und debug , die zusätzliche Informationen zu den Nodes oder eben Debug-Informationen ausgeben. Mit Deploy werden die Flows aktiv geschaltet und im Drop-Down-Menü lassen sich weitere Informationen einblenden beziehungsweise Einstellungen verändern.