Zum Hauptinhalt springen
Smarthome 10 min

Smarte Türkamera mit Node-Red und HDMI-CEC

Ich wollte mich schon lange mal mit Steuerungs-Software Node-Red beschäftigen. Nun habe ich den Einstieg geschafft und eine sehr nette Funktion für unsere Türsprechanlage mit Kamera gebaut.

Smarte Türkamera mit Node-Red und HDMI-CEC
Inhaltsverzeichnis

Die Vernetzung unterschiedlicher Systeme und Funktionen übernimmt in unserem Haus die Smart Home Software Symcon . Nachdem ich mich vor 3 Jahren recht ausführlich mit OpenHAB beschäftigt, diese aber aus unterschiedlichsten Gründen verworfen habe, bin ich bei Symcon gelandet und noch immer überzeugt davon. Da ich am Fernseher in der Küche einen Raspberry Pi hängen habe, auf dem die Zigbee -Bridge mit dem ConBee II Stick läuft, aber auch die Wetterstation mit Weewx angebunden ist, hatte ich eine Idee, die mit Symcon nicht zu lösen war. Für den Philips TV mit Android gibt es nämlich keine Schnittstelle, die man von Symcon aus nutzen könnte. Philips selbst bringt noch nicht einmal eine funktionsfähige App zustande.

Home Assistant Empfehlungen

Oszilloskop & Multimeter (3-in-1)

  • 【2-Kanal-Oszilloskop】50 MHz Bandbreite, 250 MSa/s Abtastrate, 1 kpts Aufzeichnungstiefe, automatische Messfunktion, max. Spannung 400 V, vertikale Empfindlichkeit 10 mV/div bis 10 V/div, unterstützt das Speichern und Exportieren von Wellenformbildern.
  • 【4,5-stelliges Multimeter mit 19999 Counts】Wechselspannung: 0–750 V, Gleichspannung: 0–999,9 V, Gleich-/Wechselstrom: 0–9,999 A, Widerstand: 0–19,99 MΩ, Kapazität: 0–99,99 mF, Durchgangsprüfung. Multifunktionsmessgerät für Profis, Schulen und Hobbyisten.
105,00 €
Ansehen
−15%
Deal

Automatischer Feuerlöscher für Schaltschränke und Server

  • ✔ SOFORTIGE BRANDUNTERDRÜCKUNG BEI 170ºC ±10ºC – Der Ferosticker F03 aktiviert sich automatisch bei 170ºC ±10ºC und setzt ein Aerosol frei, das den Brand sofort löscht, indem es die Verbrennung unterbricht. Er bietet schnellen, automatischen Brandschutz in geschlossenen Räumen mit einem Schutzvolumen von 0,3 m³. Speziell für kleine, enge Bereiche entwickelt.
  • ✔ KEIN STROM, KEIN DRUCK, KEINE VERKABELUNG ERFORDERLICH – Im Gegensatz zu herkömmlichen Feuerlöschern funktioniert der Ferosticker ganz ohne Strom, Batterien oder Kabel. Sein selbstaktivierendes System sorgt für sorgenfreien Brandschutz ohne Wartung. Vielseitiger Schutz: wirksam gegen Brände der Klassen A, B, C, E und F – deckt ein breites Spektrum an Brandrisiken ab.
50,09 €
Ansehen
−9%
Deal
SONOFF SWV-ZFE Hydro ONE Zigbee Bewässerungscomputer Home Assistant Ready

SONOFF SWV-ZFE Hydro ONE Zigbee Bewässerungscomputer

  • Durable Brass Inlet: Dieser water timer verfügt über einen robusten Messinganschluss für zuverlässige Leistung, sorgt für stabilen Betrieb in Ihrem bewässerungssystem garten oder bewässerungssystem, ideal für den langfristigen Einsatz.
  • Flexible Zeitpläne & Mengensteuerung: Erstellen Sie bis zu sechs Pläne für zeit- oder mengenbasierte Bewässerung. Wetter- und saisonale Anpassungen optimieren Ihr bewässerungssystem garten und sparen Wasser – ein intelligenter sprinkler-timer.
SONOFF NSPanel Pro Gen2 Smart Home Bedienfeld Home Assistant Ready

SONOFF NSPanel Pro Gen2 Smart Home Bedienfeld

  • Multi-App Unterstützung & Home Assistant-Integration: 2GB RAM + 32GB Speicher für flüssige Nutzung mehrerer Drittanbieter-Apps – kein Root erforderlich, einfach über F-Droid als Home Assistant Steuerzentrale nutzbar. All-in-One Smart Panel ersetzt zusätzliche Tablets.
  • Matter Bridge für universelle Kompatibilität: Integriertes Matter Gateway verbindet Zigbee‑ & Wi‑Fi‑Geräte mit Apple Home, Google Home, Alexa & Home Assistant. Vereinheitlicht alle Marken und Protokolle für ein nahtloses Smart Home Erlebnis.
Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Preis inkl. MwSt., zzgl. Versandkosten.

Mein Vorhaben war, das Bild unserer Wantec IP-Sprechanlage auf den Fernseher in der Küche zu geben, sobald jemand an der Tür klingelt. Bislang nutzen wir nur unsere AVM Fritzfons , die das Kamerabild auch anzeigen können. Dazu muss der Fernseher automatisch eingeschaltet und auf HDMI umgeschaltet werden. Dann muss auf dem Raspi der Browser mit der URL der Türkamera geöffnet werden. Nach 2 Minuten soll der Fernseher wieder abschalten und der Browser schließen.

Nun könnte man über einen Infrarot-Sender den Fernseher steuern, aber darüber bekommt man keine Rückmeldung, ob er an oder aus ist etc. Dann bin ich auf HDMI-CEC gestoßen. Mit diesem Protokoll kann man angeschlossene Geräte ganz einfach über HDMI steuern. Der Raspi unterstützt das, wenn man die CEC-Utilities installiert:

bash
1
sudo apt install cec-utils

Mit diesem Befehl kann man nun nach angeschlossenen HDMI-Geräten suchen:

bash
1
echo 'scan' | cec-client -s -d 1

Der Scan gibt bei meinem Philips TV das zurück:

yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
opening a connection to the CEC adapter...
requesting CEC bus information ...
CEC bus information
===================
device #0: TV
address:       0.0.0.0
active source: no
vendor:        Unknown
osd string:    TV
CEC version:   1.4
power status:  standby
language:      ???

device #1: Recorder 1
address:       1.0.0.0
active source: no
vendor:        Pulse Eight
osd string:    CECTester
CEC version:   1.4
power status:  on
language:      eng

currently active source: unknown (-1)

Im ersten Abschnitt ist die hervorgehobene Zeile wichtig. Sie zeigt die Device-Nummer der angeschlossenen Geräte an. In diesem Fall #0. Außerdem ist zu sehen, dass sich das Gerät im Standby befindet.

Das Device #1 ist der Raspberry. Mit diesem Befehl kann man nun den Fernseher vom Raspi aus einschalten:

bash
1
echo 'on 0' | cec-client -s -d 1

“on 0” bedeutet, dass das Device 0 angesprochen werden soll. Um das Gerät auszuschalten genügt:

bash
1
echo 'standby 0' | cec-client -s -d 1

Um den aktuellen Zustand des Geräts abzurufen (an oder aus):

bash
1
echo 'pow 0' | cec-client -s -d 1

Die Ausgabe dazu ist z. B.:

text
1
2
3
markus@wetterpi:/home/markus $ echo 'pow 0' | cec-client -s -d 1
opening a connection to the CEC adapter...
power status: standby

Nun ist es schön, dass der Fernseher an- und ausgeschaltet werden kann, er muss aber auch auf den HDMI-Eingang, an dem der Raspi hängt, umschalten. Auch das geht mit den CEC-Utils:

bash
1
echo 'as' | cec-client -s -d 1

“as” bedeutet “active source” und sagt dem TV, dass auf den HDMI-Port umgeschaltet werden, an dem der Raspi hängt.

Eine Liste aller HDMI-CEC Befehle, welche die CEC-Utils unterstützten bekommt man mit:

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
echo h | cec-client -s -d 1

opening a connection to the CEC adapter...

================================================================================
Available commands:

[tx] {bytes}              transfer bytes over the CEC line.
[txn] {bytes}             transfer bytes but dont wait for transmission ACK.
[on] {address}            power on the device with the given logical address.
[standby] {address}       put the device with the given address in standby mode.
[la] {logical address}    change the logical address of the CEC adapter.
[p] {device} {port}       change the HDMI port number of the CEC adapter.
[pa] {physical address}   change the physical address of the CEC adapter.
[as]                      make the CEC adapter the active source.
[is]                      mark the CEC adapter as inactive source.
[osd] {addr} {string}     set OSD message on the specified device.
[ver] {addr}              get the CEC version of the specified device.
[ven] {addr}              get the vendor ID of the specified device.
[lang] {addr}             get the menu language of the specified device.
[pow] {addr}              get the power status of the specified device.
[name] {addr}             get the OSD name of the specified device.
[poll] {addr}             poll the specified device.
[lad]                     lists active devices on the bus
[ad] {addr}               checks whether the specified device is active.
[at] {type}               checks whether the specified device type is active.
[sp] {addr}               makes the specified physical address active.
[spl] {addr}              makes the specified logical address active.
[volup]                   send a volume up command to the amp if present
[voldown]                 send a volume down command to the amp if present
[mute]                    send a mute/unmute command to the amp if present
[self]                    show the list of addresses controlled by libCEC
[scan]                    scan the CEC bus and display device info
[mon] {1|0}               enable or disable CEC bus monitoring.
[log] {1 - 31}            change the log level. see cectypes.h for values.
[ping]                    send a ping command to the CEC adapter.
[bl]                      to let the adapter enter the bootloader, to upgrade
                          the flash rom.
[r]                       reconnect to the CEC adapter.
[h] or [help]             show this help.
[q] or [quit]             to quit the CEC test client and switch off all
                          connected CEC devices.
================================================================================

Das war schon einmal die halbe Miete. Ich kann also über HDMI den Fernseher komfortabel vom Raspberry Pi aus steuern. Nun wollte ich erst ein Python-Script basteln, das ich von Symcon aus hätte ansprechen können. Das Projekt schrie jedoch danach, einmal Node-Red auszuprobieren.

Node-Red die IoT-Automatisierungssoftware

Node-Red wurde von IBM entwickelt und liegt als Open-Source vor. Mit sog. “Flows” kann man verschiedene Eingaben und Ausgaben verarbeiten, in dem man einfach Funktionsblöcke, oder “Nodes” - daher der Name, miteinander verknüpft. Konfiguriert und gearbeitet wird dabei ganz komfortabel über den Webbrowser. Node-Red kann man lokal auf einem Linux-System wie dem Raspberry Pi installieren. Es gibt Docker DockerContainer-Plattform zur Isolation von Anwendungen. Jeder Container enthält alle Abhängigkeiten und läuft unabhängig vom Host-System. Home Assistant Add-Ons, Frigate, Paperless-ngx und viele andere Self-Hosting-Dienste nutzen DockerMehr dazu → -Container, es kann aber auch auf AWS, Azure oder der IBM Cloud laufen. Eine Installationsanleitung für Node-Red gibt es hier: https://nodered.org/docs/getting-started/raspberrypi

Nach der Installation zeigt sich Node-Red typischerweise unter http://localhost:1880 (sofern man keinen anderen Port eingestellt hat). Es sind schon eine ganze Reihe von Nodes dabei. Interessant wird es aber, wenn man über die “Palette” weitere Nodes installiert und die gibt es für praktisch jede Anwendung. Sie lassen sich ganz einfach über den Browser durchsuchen und installieren.

Wenn es klingelt TV anschalten, Kamerabild zeigen, Telegram Nachricht mit Bild schicken.

Die Aufgabe war nun zu erkennen, dass die Klingeltaste an der Wantec IP-Sprechanlage gedrückt wurde. Bei der Wantec MONOLITH C IP/VoIP geht das glücklicherweise sehr einfach, denn man kann mit der Klingeltaste nicht nur ein Relais schalten, sondern auch einen eigenen HTTP-Request absetzen.

Mit dem HTTP-Befehl spreche ich die IP meines Raspberry Pi, mit dem Port auf dem Node-Red läuft an. Auf der Node-Red Seite benötigt man dann zuerst ein HTTP-Node, das den HTTP-Request annehmen kann.

Wenn die Anfrage eingeht, also der Klingeltaster gedrückt wurde, setze ich mit eines Change-Node den Payload der Anfrage auf “1”. Es folgt ein Switch-Node, der die nachfolgenden Nodes auslöst, sobald die Msg.Payload = 1 ist. Ein Inject-Node (im Bild “Ein Test” oben links) simuliert die Türklingel, damit man bei der Erstellung des Flows nicht wirklich klingeln muss.

Mit einer Exec-Node kann man Konsolenbefehle auf dem Raspberry ausführen. So wird zunächst der Fernseher per CEC-Utlis eingeschalten. (erst später habe ich entdeckt, dass es für Node-Red auch CEC-Nodes gibt).

Danach schalte ich mit 2 Sekunden Verzögerung den HDMI-Eingang mit dem Raspi als aktiven Eingang. Als Nächstes hole ich mir das Live-Bild der Türkamera und starte den Chromium-Browser. Auch das geht über einen EXEC-Node den folgenden Befehl ausführt:

bash
1
DISPLAY=:0 chromium-browser http://user:[email protected]:8080/?action=stream

Damit habe ich das Kamerabild automatisch auf dem Fernsehgerät in der Küche. Natürlich soll der Fernseher auch wieder abschalten. Dazu wird ein Delay-Node mit 120 Sekunden Verzögerung vor zwei EXEC-Nodes geschaltet. Der erste Node schaltet den Fernseher über CEC-Befehl aus. Der zweite Node schließt den Browser, da sonst bei jedem weiteren Klingeln ein neuer Browser-Tab mit dem Live-Stream geöffnet werden würde.

Als kleines Gimmick verschickt Node-Red auch noch eine Nachricht mit Bild der Kamera per Telegram-Bot. Dazu hole ich das Standbild der Kamera mit einem HTTP-Node. Dieses muss jedoch erst einmal als Datei abgespeichert werden, bevor man es an eine Telegram-Nachricht anhängen kann. Dabei hilft der File-Node. Er holt sich das Bild von der Adresse der Wantec und speichert es als JPG auf dem Raspberry.

Danach schickt der Telegram-Node eine Nachricht mit dem Bild an mich und Frau Fricklr.

Die Verbindung zu Symcon habe ich ganz einfach per MQTT MQTTLeichtes Publish/Subscribe-Nachrichtenprotokoll. Wird in Smart Homes verwendet, um Sensordaten und Steuerbefehle zwischen Geräten auszutauschenMehr dazu → gelöst. Symcon hat einen eigenen MQTT-Broker eingebaut und kann entsprechende MQTT-Topics direkt verarbeiten und auswerten. So erfährt Symcon auch, dass die Türklingel betätigt wurde und ich kann z. B. nachts gleich die Beleuchtung im Flur einschalten. Ebenso kann ich damit nun auch den Philips Fernseher in Symcon einbinden, in dem ich einfach die entsprechenden Kommandos per MQTT von Symcon an Node-Red und damit zum TV sende.

Fazit

Node-Red ist ein extrem mächtiges Werkzeug, das aber recht schnell Erfolgserlebnisse liefert. Es gibt eine riesige Menge an fertigen Flow, Nodes und Anleitungen unter https://flows.nodered.org/

Für das Smart Home ist es ein hervorragender Problemlöser, der die Möglichkeiten der vorhandenen Systeme enorm erweitert. KNX KNXBussystem für Gebäudeautomation (seit 1990). Verkabelter Standard (Twisted Pair) für professionelle Installationen. Home Assistant hat seit 2023 eine offizielle KNX-IntegrationMehr dazu → , Homematic, Loxone, ZigBee (Philips Hue , Ikea, Aqara etc.), Fritzbox, Amazon Alexa, Tasmota TasmotaOpen-Source-Firmware für ESP8266/ESP32-basierte Smarthome-Geräte (Steckdosen, Lampen, Relais). Ersetzt die Hersteller-Firmware für lokale Steuerung ohne Cloud und vieles mehr wird direkt unterstützt. Mit dem Dashboard-Designer lassen sich attraktive Benutzeroberflächen gestalten.

Dienste wie E-Mail, FTP, SMB, Twitter oder Telegram lassen sich sehr schnell und komfortabel einbinden. Meine neue Webcam für das Fichtelgebirge werde ich auch mit Node-Red umsetzen. Tatsächlich muss man mit Node-Red auch nicht mehr selbst Code schreiben. Sollte aber eine spezielle Funktion gebraucht werden, kann man diese auch mit Javascript als eigenen Node erstellen. Eine Anleitung dazu gibt es auch https://nodered.org/docs/creating-nodes/node-js

Ich bin begeistert und bereue nur, dass ich mich nicht schon längst damit beschäftigt habe.


Hallo! Ich bin Markus – der Fricklr. ⚡ Elektrotechniker, 🎵 Musiker (Bass, Gitarre, Keyboard) und seit über 30 Jahren beruflich „irgendwas mit Internet“ 🌐 – inzwischen auch mit KI 🤖 – ein 55-jähriger Generalist aus Bayern.

Dein Feedback hilft mir, noch interessantere Beiträge zu schreiben. Bei „Ja“ findest du danach eine kleine Option, meine Arbeit zu unterstützen.

Verwandte Themen entdecken

Inhaltskarte →
Verbindungen als Liste anzeigen
💡 Ziehen, hover & klicken zum Entdecken
Größere Punkte sind relevanter

Was sagst du dazu? Kommentiere jetzt!

Teile deine Gedanken, Fragen oder Erfahrungen mit der Community.

Mit diesem Symbol gekennzeichnete Links sind Affiliate-Links (Werbung). Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Für dich entstehen keine Mehrkosten.