Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
13
Einleitung
15
1 Node-RED – das Setup: So starten Sie
23
1.1 Node-RED – das zentrale Element
23
1.2 Node-RED aufsetzen
25
1.2.1 Node-RED auf einem Android-Gerät
25
1.2.2 Node-RED auf einem Windows-PC
25
1.2.3 Node-RED auf einem Raspberry Pi
29
1.2.4 Node-RED auf einem Linux-System
32
1.3 Node-RED überall: Docker-Container starten
34
1.3.1 Docker auf einem Ubuntu-System
34
1.3.2 Docker auf dem Raspberry Pi
35
1.3.3 Node-RED in Docker ausführen
36
1.4 Die Ausgaben von Node-RED beim Start
38
1.5 Node-RED administrieren
39
1.5.1 Dateien und Ordner
39
1.5.2 Dateien unter Docker
41
1.5.3 Einstellungen von Node-RED ändern
41
1.6 Node-RED absichern
43
1.6.1 Passwortschutz für den Node-RED-Editor
44
1.6.2 HTTPS aktivieren
45
1.6.3 Sicherheit für den http-in-Node
50
1.6.4 Die Konfigurationsdatei absichern
50
1.7 Node-RED Projekte
51
1.8 Fazit
60
2 Das zentrale Tool: der Node-RED-Editor
61
2.1 Den Node-RED-Editor in einem Browser öffnen
61
2.2 Die Kopfleiste
64
2.2.1 Die Schaltfläche deploy
64
2.2.2 Die Benutzerauthentifikation
66
2.2.3 Das Hauptmenü
66
2.3 Die linke Seitenleiste
74
2.3.1 Der Flow-Explorer
75
2.3.2 Die Node-Palette
75
2.4 Der Arbeitsbereich
83
2.4.1 Die Verwaltungsleiste für die Flows
84
2.4.2 Der Flow-Design-Bereich
85
2.4.3 Die Fußleiste des Arbeitsbereichs
91
2.4.4 Das Kontextmenü
92
2.5 Die rechte Seitenleiste
93
2.5.1 Das Register info
93
2.5.2 Das Register Hilfe
95
2.5.3 Das Register Debugging
95
2.5.4 Das Register Konfiguration
96
2.5.5 Das Register Kontext
97
2.5.6 Das Register Dashboard
97
2.6 Der erste Flow
97
2.7 Flows mit AI entwickeln
99
2.8 Gute Programmierung
101
2.8.1 Die Flow-Struktur
101
2.8.2 Das Message-Design
108
2.8.3 Die Dokumentation
108
2.9 Flows mit dem Flow-Debugger debuggen
109
2.9.1 Schrittweises Durchlaufen eines Flows
111
2.9.2 Messages löschen
111
2.9.3 Breakpoints nutzen
112
2.10 Probleme mit nrlinter aufspüren
112
2.10.1 Installation
113
2.10.2 Mit nrlinter arbeiten
113
2.11 Fazit
115
3 Das Fundament: die Basics von Node-RED
117
3.1 Das Message-Konzept von Node-RED
117
3.1.1 JSON – das Datenformat für den Datenaustauch
117
3.1.2 Messages in Node-RED
121
3.2 Die Geschwister inject-Node und debug-Node
125
3.2.1 Der inject-Node
125
3.2.2 Der debug-Node
127
3.3 Messages manipulieren: Der change-Node und seine Begleiter
129
3.3.1 Der switch-Node
130
3.3.2 Der change-Node
131
3.4 Der delay-Node
133
3.5 Dateiformate konvertieren
133
3.6 Auf Prozessereignisse reagieren
135
3.6.1 Der status-Node
135
3.6.2 Der complete-Node
136
3.6.3 Der catch-Node
137
3.7 Sequenzen (Folgen)
139
3.8 Fazit
144
4 Das Node-RED-Dashboard
145
4.1 Installation
145
4.2 Browseraufruf und Einstellungen
147
4.3 Der Schnelleinstieg: So erstellen Sie Ihre erste Dashboard-Ausgabe
147
4.4 Das Dashboard-Design bestimmen
150
4.4.1 Icons
151
4.4.2 Die rechte Seitenleiste
152
4.4.3 Custom CSS
156
4.4.4 Die Konfiguration von Tabs und Gruppen
156
4.5 Die Dashboard-Widgets in Aktion
158
4.5.1 Der button-Node
159
4.5.2 Der dropdown-Node
160
4.5.3 Der switch-Node
162
4.5.4 Der slider-Node
163
4.5.5 Der numeric-Node
164
4.5.6 Der text-input-Node
164
4.5.7 Der form-Node
165
4.5.8 Die beiden function-Nodes und der template-Node
166
4.6 Charts und Messanzeigen mit dem Raspberry Pi
168
4.6.1 Sensoren schalten und das benötigte Paket installieren
169
4.6.2 Die LEDs schalten
171
4.6.3 Wetterdaten erheben und ausgeben
171
4.7 Das Diagramm-Kaleidoskop
177
4.8 Das Dashboard 2.0
178
4.8.1 Installation
179
4.8.2 Der Schnelleinstieg
179
4.9 Fazit
183
5 Funktionen programmieren
185
5.1 Einsatz und Funktionsweise des function-Nodes
185
5.1.1 Eingangsnachrichten lesen
186
5.1.2 Nachrichten erstellen
188
5.1.3 Code zur Ausführung bei setup und close
191
5.1.4 Ereignisse loggen
192
5.1.5 Das Erscheinungsbild ändern
193
5.2 Programmierung mit JavaScript
193
5.2.1 Codeeditoren
193
5.2.2 Zeichen, Kommentare und Begriffe
194
5.2.3 Daten und Datentypen
196
5.2.4 Variablen und Konstanten
197
5.2.5 Ausdrücke und Operatoren
202
5.2.6 Das Array-Objekt (Tabellen)
209
5.2.7 Das Date-Objekt
211
5.2.8 Funktionen
216
5.2.9 Kontrollstrukturen
218
5.3 Programmbeispiele für den function-Node
227
5.3.1 Eine Zeichenfolge aufteilen
228
5.3.2 Eine Nachricht verzögern
228
5.3.3 Auf eine Umgebungsvariable zugreifen
229
5.3.4 Zusätzliche Module nachladen
229
5.3.5 Mit Kontextvariablen arbeiten
230
5.3.6 Nachrichten zusammenführen
231
5.3.7 Mit Puffern arbeiten
232
5.4 Externe Module laden
233
5.4.1 Den Hostnamen ausgeben
234
5.4.2 Den RGB-Farbwert prüfen
234
5.5 Der Monaco-Codeeditor
236
5.6 Fazit
236
6 Daten über Netzwerkprotokolle abrufen
237
6.1 Daten von einem Server im Netz abrufen
237
6.1.1 Grundlagen von HTTP-Verbindungen
238
6.1.2 Die Nodes nutzen
242
6.2 MQTT: das IoT-Protokoll
263
6.2.1 Installation und ein Flow für den Einstieg
265
6.2.2 Einen eigenen MQTT-Broker aufsetzen
269
6.2.3 Node-RED an den Mosquitto-Broker anbinden
272
6.2.4 Der Shelly 1-Schalter
272
6.3 Arduino & Co. über USB anbinden
275
6.4 Fazit
282
7 Daten mit Node-RED teilen
283
7.1 E-Mails versenden
283
7.1.1 Das E-Mail-Konto konfigurieren
284
7.1.2 Der E-Mail-Versand
285
7.1.3 Der E-Mail-Empfang
290
7.2 Instant-Messaging und Bots mit Telegram
293
7.2.1 Instant Messaging
294
7.2.2 Bots
294
7.2.3 Telegram
295
7.3 Geräte mit Pushbullet vernetzen
310
7.3.1 Pushbullet einrichten
311
7.3.2 Erste Schritte mit der Pushbullet-API
313
7.3.3 Pushbullet für Node-RED
316
7.4 Sprachsteuerung mit Alexa
320
7.5 Google-Dienste integrieren
326
7.6 Mit künstlicher Intelligenz experimentieren
333
7.6.1 OpenAI-Account und API-Key erstellen
334
7.6.2 Ein Bild erstellen
334
7.6.3 Eine Textnachricht generieren
336
7.7 Fazit
338
8 Daten speichern und archivieren
339
8.1 Kontextvariablen
339
8.1.1 Kontextvariablen vom Typ node
340
8.1.2 Kontextvariablen vom Typ flow
341
8.1.3 Kontextvariablen vom Typ global
343
8.1.4 Kontextvariablen im Dateisystem speichern
344
8.2 Daten in Dateien speichern
345
8.2.1 Messdaten speichern und wieder auslesen
346
8.2.2 Dateimanager
352
8.3 Node-RED und InfluxDB
356
8.3.1 InfluxDB, eine Time Series Database
357
8.3.2 InfluxDB installieren
359
8.3.3 Die ersten Schritte mit InfluxDB
361
8.3.4 Mit Node-RED Daten in InfluxDB speichern
366
8.3.5 Mit Node-RED Daten aus der InfluxDB auslesen
369
8.3.6 Die InfluxDB sauber halten
373
8.4 Node-RED und SQLite
376
8.4.1 Aufbau einer SQLite-Datenbank
376
8.4.2 SQLite installieren
379
8.4.3 Mit Node-RED Daten in der SQLite-Datenbank speichern
382
8.4.4 Mit Node-RED Daten aus der SQLite-Datenbank löschen
384
8.4.5 Mit Node-RED Daten aus der SQLite-Datenbank auslesen
385
8.5 Fazit
385
9 Node-RED-Hacks
387
9.1 Python-Skripte einbinden
387
9.2 Timer
389
9.2.1 Ausgaben
391
9.2.2 Timersteuerung
392
9.2.3 Erweiterte Möglichkeiten
392
9.3 »Himmelserscheinungen« auswerten
393
9.4 Wetterdaten mit OpenWeatherMap
395
9.4.1 Das openweathermap-Konto
396
9.4.2 Eine Wetteransage
397
9.4.3 Ein Frostwächter
399
9.5 Zeitangaben formatieren
399
9.5.1 Der Node Date/Time Formatter
400
9.5.2 Der humanizer-Node
402
9.6 Mit Bilddateien arbeiten
402
9.7 Einen QR-Code generieren
404
9.8 Geräte mit Ping orten
406
9.8.1 Anwesenheitsmitteilung senden
406
9.8.2 Alarmanlage aktivieren
408
9.8.3 Erreichbarkeit eines Servers überprüfen
408
9.9 Auf eine FRITZ!Box zugreifen
410
9.9.1 Anwesenheitsbenachrichtigung
411
9.9.2 Benachrichtigung bei Anrufen
413
9.9.3 Gastzugang schalten
414
9.10 FTP – Daten zwischen Rechnern übertragen
416
9.10.1 Einen FTP-Server aufsetzen
417
9.10.2 Das Verzeichnis mit Node-RED lesen
419
9.10.3 Node-RED-Konfigurationsdateien sichern
421
9.11 Benachrichtigungen mit Ntfy versenden
423
9.11.1 Nutzerkonto erstellen
423
9.12 Fazit
426
10 Apps und externe Anbindung
427
10.1 Apps aus den App-Stores
427
10.2 Blynk 2.0
428
10.2.1 Mit Blynk auf den Raspberry Pi zugreifen
428
10.2.2 Blynk und Node-RED kommunizieren miteinander
438
10.3 Die Termux-App
444
10.3.1 Node-RED auf dem Android-Gerät
444
10.3.2 Die Termux:API
446
10.3.3 Die Termux:API-App mit Node-RED nutzen
449
10.4 Der »Überall-Zugriff« mit ngrok
451
10.5 Fazit
457
11 Dashboards für Fortgeschrittene
459
11.1 Dynamische Dashboard-Steuerung
459
11.2 Der template-Node (Widget)
461
11.2.1 Einfache (statische) HTML-Ausgaben mit dem ui-template-Node
462
11.2.2 Den Eingabeport nutzen
467
11.2.3 ui-template-Node – den Ausgabeport nutzen
475
11.2.4 Statusinformationen im Dashboard-Header ausgeben
478
11.3 Ein aufwendigeres Beispiel
479
11.4 Ein alternatives Dashboard mit uibuilder
482
11.5 Fazit
488
12 Node-RED in andere Dienste integrieren
489
12.1 ioBroker
489
12.1.1 Installation und Inbetriebnahme
490
12.1.2 ioBroker-Objekte: So schalten Sie eine LED
493
12.1.3 ioBroker und Node-RED
495
12.2 Node-RED versus externe Dienste
500
12.3 Fazit
502
13 Eigene Nodes erstellen
503
13.1 Anforderungen definieren
503
13.2 Arbeitsverzeichnis erstellen und ausgestalten
504
13.3 Die Datei package.json generieren
505
13.4 Die Datei <node>.js programmieren
506
13.4.1 Der Rahmen
506
13.4.2 Den Rahmen ausfüllen
507
13.5 Ein Icon erstellen
511
13.6 Die Datei basic-math.html generieren
511
13.7 Den Node basic-math in Node-RED testen
514
13.8 Ausblick
518
13.9 Fazit
518
14 Mit Node-RED Mikrocontroller programmieren
519
14.1 Der Soft- und Hardwarerahmen
520
14.2 Installation von Moddable
520
14.3 Den Mikrocontroller an Moddable anbinden
523
14.4 Einrichtung in Node-RED und Test
525
14.5 Fazit
528
Index
529