Smarthome-BlogInfrarot Fernbedienung im Smarthome

Infrarot Fernbedienung im Smarthome

Mit ESPHome

Lesezeit: 11 min

Veröffentlicht: 2025.04.08

Letztes Update: 2025.04.08

Smarte Infrarot Fernbedienung

In diesem Artikel zeige ich euch, wie ihr eine eigene Infrarot (IR) Fernbedienung bauen könnt, welche über Homeassistant steuerbar ist.

Die Vorteile davon sind:

  • Mehrere Fernbedienungen können zu einer zusammengefasst werden. Man hat mehr Platz am Couchtisch
  • Ihr könnt die Befehle von überall aus senden. z.B. könnt ihr die Lautstärke eurer Stereo-Anlage von der Terrasse aus ändern, ohne direkten Sichtkontakt zu dieser
  • Wenn ihr alte Geräte habt, bei denen die Fernbedienungen evtl. gar nicht mehr nachgekauft werden können, erstellt ihr mit dieser Methode quasi ein Backup derselben. Sollte die Smart-Fernbedienung nämlich kaputt werden, lassen sich diese Komponenten immer nachbestellen
  • Manche Geräte lassen sich nur auf diese Weise überhaupt in das Smarthome integrieren, z.B. viele Klimaanlagen
  • Falls ihr z.B. am Fernseher immer wieder in die gleichen Untermenüs navigiert, lassen sich mit Homeassistant-Automationen auch ganze Bedienabläufe programmieren
Werbung:

Hallo! Es sieht so aus, als ob du einen Adblocker verwendest. Werbung hilft, diese Seite am Laufen zu halten. Bitte setze uns auf deine Whitelist. Danke für deine Unterstützung!

Voraussetzungen

Für dieses Projekt braucht ihr einen ESP, z.B. den ESP8266 welcher mit ESPHome geflashed ist und in eurem Homeassistant eingerichtet ist.
Wie das funktioniert, habe ich hier beschrieben: ESPHome mit Web-Installer flashen

Zudem braucht ihr einen IR-Receiver sowie eine IR-Sende-Diode, hier in einem Paket zu kaufen:
IR-Empfänger und Transmitter Modul (Affiliate Link)

Hier gibt es auch noch einen Transmitter mit 2 LEDs, vermutlich ist damit eine etwas größere Reichweite erreichbar:
2 Kanal IR-Transmitter (Affiliate Link)

Ich persönlich nutze den Transmitter mit 2 LEDs.

Auslesen der IR-Codes

Verkabelung & Konfiguration

Für IR-Fernbedienungen gibt es verschiedene standardisierte Codes, welche verwendet werden, um entsprechende Befehle an die jeweiligen Endgeräte zu senden.
Im ersten Schritt geht es somit darum, herauszufinden, welche IR-Codes eure Fernbedienungen verwenden.

Dafür müsst ihr euren IR-Empfänger mit dem ESP verbinden:

Schaltung Infrarot Receiver

Anschließend überspielt ihr folgende Konfiguration auf euren ESP:

YAML

remote_receiver:
  pin:
    number: D1
    inverted: true
  dump: all

dump: all bedeutet, dass alle bekannten Infrarot-Codes in den Logs aufgelistet werden. Solltet ihr bereits wissen, welcher Code für eure Fernbedienung der Richtige ist, könnt ihr hier bereits auf diesen einschränken. Mehr Information dazu hier: ESPHome - Remote Receiver.

inverted: true invertiert das Eingangssignal des Pins. Das kann notwendig sein oder auch nicht. Falls ihr in den nächsten Schritten keine sinnvollen Ergebnisse beim Auslesen der Signale bekommt, versucht es stattdessen mit inverted: false.

IR-Codes auslesen

Im nächsten Schritt haltet ihr eure Fernbedienung vor den IR-Receiver und drückt ein paar Tasten durch. Gleichzeitig betrachtet ihr die Logs eures ESP via ESPHome in Homassistant.
Achtet dabei darauf, dass keine starke direkte (Sonnen)Lichteinstrahlung auf den IR-Receiver strahlt und dass keine anderen Fernbedienungen währenddessen im selben Raum verwendet werden.
Ansonsten könnte es sein, dass ihr falsche Informationen auslest, und das wird später ärgerlich.

Eure Logs sollten so ähnlich aussehen, wenn ihr eine Taste auf der Fernbedienung drückt:

[20:41:37][I][remote.jvc:049]: Received JVC: data=0x5EA1
[20:41:37][I][remote.lg:054]: Received LG: data=0x5EA16897, nbits=32
[20:41:37][I][remote.nec:097]: Received NEC: address=0x857A, command=0xE916 command_repeats=1
[20:41:37][I][remote.pioneer:149]: Received Pioneer: rc_code_X=0x5E16
[20:41:37][I][remote.pronto:231]: Received Pronto: data=
[20:41:37][I][remote.pronto:233]: 0000 006D 0022 0000 0159 00AC 0016 0015 0016 0042 0015 0015 0016 0042 0015 0042 0015 0041 0015 0042 0015 0015 0016 0042 0015 0015 0016 0041 0015 0015 0016 0015 0016 0015 0016 0015 0016 0042 0015 0015 0016 0042 0015 0042 0015 0015 
[20:41:37][I][remote.pronto:233]: 0016 0041 0015 0015 0016 0015 0016 0015 0016 0041 0015 0015 0016 0015 0016 0041 0015 0015 0016 0042 0015 0042 0015 0042 0015 0181 

Wie ihr sehen könnt, versucht das Tool das empfangene Signal in alle möglichen Codes zu übersetzen. In diesem Fall JVC, LG, NEC und Pioneer.
Pronto sind die Roh-Daten. In diesen ist das Umgebungsrauschen enthalten, deshalb würde ich mit diesen nur im Notfall arbeiten, wenn keine andere Interpretation möglich ist.
Welcher der anderen Codes der Richtige ist, wird sich erst später zeigen, wenn wir versuchen, mit dem Transmitter unsere Endgeräte zu steuern.
Hier sind verschiedene Verhalten denkbar. Es könnte für ein Endgerät nur ein Code funktionieren oder auch verschiedene. Es könnte auch sein, dass ein Code vom Endgerät schneller verarbeitet wird und bei einem anderen ein gewisses Delay auftritt.
Aus diesem Grund würde ich empfehlen, alle geloggten Codes in einer Textdatei zwischenzuspeichern, um später experimentieren zu können.

IR-Transmitter

Verkabelung

Wenn ihr alle relevanten Codes mit dem IR-Receiver gelogged und notiert habt, könnt ihr die Verkabelung abbauen und stattdessen für den Transmitter verkabeln:

Schaltung IR Transmitter

Für euren ESP könnt ihr jetzt Buttons konfigurieren, welche den entsprechenden Knöpfen auf der Fernbedienung entsprechen:

YAML

remote_transmitter:
  pin: D7
  carrier_duty_percent: 50%

button:
  - platform: template
    name: "Knopf X"
    on_press:
      - remote_transmitter.transmit_lg:
          data: 0x5EA16897
          nbits: 32
#      - remote_transmitter.transmit_nec:
#          address: 0x857A
#          command: 0xE916
#      - remote_transmitter.transmit_jvc:
#          data: 0x5EA1
#      - remote_transmitter.transmit_pioneer:
#          rc_code_1: 0x5E16

Jetzt könnt ihr einen Code nach dem anderen durchprobieren und testen, welcher für euer Endgerät am besten funktioniert.
Dafür müsst ihr die jeweilige Zeile auskommentieren, also das # entfernen.
Mehr Infos dazu hier: ESPHome - Remote Transmitter.

Gehäuse

Ich habe den ESP mit der Infrarot-Diode in einen Klemmkasten gelegt und am Deckel ein Loch gemacht, durch welches die Diode hinaussenden kann. Die Diode ist mit Heißkleber am Deckel befestigt.
Hier ein paar Bilder meines Aufbaus:

Smarte Fernbedienung Gehäuse
Smarte Fernbedienung Diode auf Deckel geklebt
Smarte Fernbedienung Loch in Gehäuse
Smarte Fernbedienung Gehäuse geschlossen

In dieser Form steht das Projekt unauffällig auf einem Kasten gegenüber meinem Fernseher.
Beachtet bei der Aufstellung, dass direktes Sonnenlicht euer IR-Signal stören kann.

Homeassistant Fernbedienung

Im nächsten Schritt zeige ich, wie man sich im Homeassistant Web-Interface eine schöne Fernbedienung zurecht konfigurieren kann.
So sieht diese bei mir aus:

Fernbedienung in Homeassistant

Es handelt sich hierbei um eine Kombination der Fernbedienung meines Fernsehers sowie meiner Stereo-Anlage.
Knöpfe, die ich nie verwende, habe ich einfach weggelassen.

Grundsätzlich könntet ihr so ein Interface mit den gewöhnlichen Homeassistant-Button Cards erstellen, welche standardmäßig in Homeassistant installiert sind.
Diese bieten allerdings, zum Zeitpunkt, wenn ich das hier schreibe, nicht die Möglichkeit, die verschiedenen Farben zu definieren, welche ich für die Übersichtlichkeit der Fernbedienung sehr wichtig finde.

Ich empfehle euch daher, folgende Button Card zu installieren:
Button Card
Diese bietet wesentlich mehr Einstellungsmöglichkeiten. Abgesehen von den Farben bietet sie eine Repeat-Funktion, welche für die Lautstärkeregelung sehr praktisch ist, dazu gleich mehr.

Um diese Card installieren zu können, benötigt ihr HACS.
Eine Anleitung, wie ihr dies installiert, findet ihr hier:
HACS - Initial configuration
Sollte euch diese Anleitung zu komplex sein, schaut einfach mal auf Youtube, dort gibt es einige Schritt-für-Schritt-Anleitungen. HACS bietet die Möglichkeit, Community-Integrationen einfach zu installieren und ist deshalb für viele Homeassistant-Projekte ein hilfreiches Tool. Meiner Ansicht nach sollte es in keiner Homeassistant-Installation fehlen.
Wenn ihr HACS installiert habt, sucht darin nach button-card und installiert sie:

Button Cardin HACS

Jetzt könnt ihr in eurer Homeassistant Oberfläche entsprechende Buttons anlegen. In diesem Fall müsst ihr das mittels YAML-Code machen. In Kombination mit Vertical- und Horizontal-Stacks könnt ihr dann eine schöne Fernbedienung bauen.
Hier ein Beispiel für einen Button:

YAML

show_name: true
show_icon: true
type: custom:button-card
icon: mdi:knob
tap_action:
  action: toggle
entity: button.esphome_web_58a8a7_tv_power
name: On/Off
size: 40px
color: rgb(135, 5, 5)

color: definiert die Farbe des Button mittels RGB-Werten.

Wie oben erwähnt bietet diese Custom-Card eine Repeat-Funktion. Diese könnt ihr so nutzen:

YAML

show_name: true
show_icon: true
type: custom:button-card
tap_action:
  action: toggle
hold_action:
  action: toggle
  repeat: 200
entity: button.esphome_web_58a8a7_stereo_volume_up
name: Volume Up
icon: mdi:volume-plus
size: 40px
color: rgb(113, 222, 131)

Mittels hold_action definiert ihr, dass der Button, wenn ihr ihn gedrückt haltet, alle 200ms seinen Wert toggelt. Dadurch könnt ihr die Lautstärke-Taste gedrückt halten und diese wird sich langsam in die gewünschte Richtung anpassen.

Den gesamten Code für meine oben gezeigte Fernbedienung findet ihr hier:

fernbedienung.yaml

Automatisierungen

Mit der smarten Fernbedienung sind auch verschiedene Automatisierungen denkbar.
Benutzt ihr zum Beispiel euren Fernseher, um Radio zu hören, ist dafür wahrscheinlich die immer gleiche Abfolge an Knöpfen notwendig.
Diese lässt sich ganz einfach in eine Automatisierung mit den entsprechenden Delays einfügen und schon könnt ihr mit einem Knopfdruck euren Radio aufrufen.

Falls ihr etwas anderes als euren Fernseher, z.B. eure Klimaanlage damit steuern wollt, liegen Steuerungen auf der Hand, die von der Raumtemperatur abhängig sind.

Falls ihr weitere coole Ideen für Automatisierungen habt, würde ich mich über eure Nachrichten freuen.

Keinen Beitrag mehr verpassen:

Share:

Feedback Me: