IR-Gateway

Universalfernbedienung, so ziemlich jeder der seinen Fernseher mit einem AV-Receiver, BluRay-Player und anderen Geräten verbindet, hat sich mit dem Thema schon mal beschäftigt. So ein Haufen verschiedener Fernbedienungen sieht ja nicht nur doof aus auf dem Couchtisch, sondern ist auch unpraktisch. Allerdings halten die meisten Universalfernbedienungen kaum was sie versprechen und sind spätestens dann am Ende, wenn man mal eine Funktion abseits vom Mainstream benötigt. Im Zeitalter des „Internet of Things“ (IoT) gibt es andere Möglichkeiten und meiner Meinung nach ist ein einfacher IR-Gateway einer der Besten.

Mit dem ESP8266 WiFi-SoC gibt es seit mehren Jahren eine sehr preisgünstige Lösung um selbst kleine Dinge mit WLAN-Anbindung zu bauen, in der Maker-Szene ist der SoC dank Arduino-Unterstützung äußerst populär. Kein Wunder also, dass vor mir schon Andere auf die Idee gekommen sind, ein ESP8266-Modul mit einem IR-Empfänger und einer Sendediode zu verbinden, um damit diverse Geräte zu steuern.

Sehr universell und relativ ausgereift ist das Software-Projekt IR Controller von Michael Higginis auf Github. Allerdings fehlte es dort an einer wirklich fertigen Hardware. Ich habe daher eine passende Hardware gebaut und die Software minimal angepasst, anstatt selber bei Null anzufangen.

Das Ergebnis ist eine kleine Kiste, die das heimische WLAN mit den optischen Infrarot-Schnittstellen diverser (Unterhaltungs-)Elektronik verbindet. Konkret kann jeder beliebige IR-Code aller gängigen Protokolle über einen einfachen Webseitenaufruf (HTTP-Request) gesendet werden und es werden die letzten 5 empfangenen IR-Codes auf der Webseite des Gateways protokolliert.
Somit können zunächst die IR-Codes jeder Taste aus den originalen Fernbedienungen auslesen und später von jedem Gerät aus gesendet werden, dass Zugang zum Heimnetzwerk besitzt (z.B. Tablets, Smartphones, Computer, Raspberry Pi, uvm.).

Um daraus eine wirklich universelle Universalfernbedienung zu machen, kann man entweder selbst ein Programm (oder „App“) für das gewünschte Steuergerät schreiben, oder z.B. NetIO von David Eickhoff verwenden, wo man sich ohne Programmierkenntnisse eine beliebige Oberfläche zusammenklicken kann und nur noch die jeweiligen IR-Codes hinterlegen muss. Für einen einzigen Befehl tut es ggf. auch eine Verknüpfung auf dem Desktop/Homescreen. Die NetIO-App hat zudem den Vorteil, dass sie auch mehrere TCP oder HTTP Verbindungen gleichzeitig beherrscht und in einer Oberfläche ggf. auch noch andere Geräte gesteuert werden können, die nichts mit dem IR-Gateway zu tun haben.

Prinzipiell ist es auch möglich den Gateway aus dem Internet erreichbar zu machen und ihn mit anderen Smarthome-Komponenten zu verknüpfen (Stichwort: Amazon Alexa), das birgt aber auch das ein oder andere Risiko und sprengt diesen Artikel.


Einrichtung

Zunächst muss der Gateway mit einem WLAN verbunden werden. Verwenden Sie ein handelsübliches Micro-USB Netzteil/Ladegerät mit 5V/1A um den Gateway mit Strom zu versorgen.
Kann sich der Gateway nicht mit dem konfigurierten WLAN verbinden, oder ist noch keines konfiguriert, wird der Gateway selbst zum Accespoint und bietet eine Konfigurationswebseite an.
Verwenden Sie eine WLAN-fähiges Gerät (Notebook, Smartphone, Tablet) und suchen Sie nach einem offenen WLAN mit der SSID „IR-Gateway Configuration“ und verbinden Sie sich.
Geben Sie in einen beliebigen Webbrowser die IP-Adresse 192.168.4.1 ein, es erscheint die Konfigurationsoberfläche. Unter dem Punkt „Scan“ können Sie Ihr WLAN auswählen und das Passwort eingeben. Außerdem muss eine statische IP-Adresse (Internet-)Gateway und Subnetzmaske eingtragen werden.

Sobald der Gateway mit dem WLAN verbunden ist können Sie ihn unter seiner IP-Adresse erreichen. Geben Sie die IP-Adresse in einen Webbrowser ein um auf das Webinterface zu gelangen. Hier werden die letzten gesendeten und empfangenen IR-Codes angezeigt und mit einem Klick auf einem empfangenen IR-Code gibt es auch gleich den passenden Link um diesen wieder zu senden.

Stellen Sie den IR-Gateway so auf, dass eine Sichtverbindung zur Vorderseite und den zu steuernden Geräten besteht. Nun sollten Sie über das Webinterface IR-Codes senden und Ihre Geräte steuern können.

Hier noch ein paar Worte zu den minimalistischen Fernbedienungen neuerer Samsung Smart-TVs. Diese verwenden nur zum Ein- und Ausschalten Infrarot, die anderen Tasten werden per Funk (Bluetooth) übertragen. Daher erkennt der Gateway auch keine Codes wenn Sie die Fernbedienung auf ihn richten und z.B. Vol+ drücken. Dies ist kein großes Problem, da selbst die neuen Samsung Smart-TVs nach wie vor auch auf die IR-Codes der alten IR-Fernbedienungen reagieren (Tabelle im Download enthalten).

Ob eine Fernbedienung bei einer Taste überhaupt einen IR-Code sendet, kann man einfach herauszufinden indem man sich die Sendediode durch eine (Handy-)Kamera anschaut wenn man die Taste betätigt. Die Kamera macht die für das menschliche Auge unsichtbare IR-Strahlung sichtbar.

NetIO Beispiel

Im Download ist meine NetIO Universalfernbedienung enthalten, die hoffentlich gut als Vorlage für eigene Designs dient.
Sinnvoll ist, dass ihr euch zunächst mit der Bedienung des UI-Designers vertraut macht und euch vielleicht das ein oder andere Tutorial anschaut.

Wichtige Punkte bei meinem Design ist die Festlegung der IR Connection im Reiter Global, diese solltet ihr einfach übernehmen und die IP anpassen. Die zweite Verbindung RPi redet direkt mit einem Raspberry Pi und ist bezüglich des IR-Gateways nicht von Interesse.

Bei den Buttons schaut ihr am besten einfach ab. Bei sends muss der hintere Teil des HTTP-Requests rein z.B. „/msg?code=E0E016E9:SAMSUNG:32&simple=1“. „&simple=1“ ist wichtig, es sorgt dafür, dass der Gateway nur mit einem kurzen okay auf den HTTP-Request antwortet und nicht die ganze Webseite ausliefert. Das würde die NetIO App überfordern und die Geschwindigkeit drastisch reduzieren.

Bei connection tragt ihr IR (bzw. der Name den ihr für die „Connection“ unter „Global“ vergeben habt) ein. Hat eine Page nur eine Verbindung, reicht auch die einmalige Festlegung der Verbindung unter Pages.

Der Haken bei „Requieres Send response“ besagt, dass die App auf das kurze okay vom Gateway wartet, bevor das nächste Kommando gesendet wird.

Den Rest könnt ihr gemäß euren Wünschen festlegen. Da die NetIO App nur über sehr wenige Symbole verfügt, könnt ihr selbst welche hinzufügen. Dazu wie z.B. bei meinem SmartHub-Button das Label weglassen und bei icon ein Dateiname mit PNG-Endung angeben. Das eigentliche Icon muss dann als exakt gleichnamige PNG-Bilddatei (mit Transparenz) in den Ordner NetIO/icons in den internen Speicher des jeweiligen Android-Gerätes. Meine eigenen Symbole kann ich hier aus urheberrechtlichen Gründen leider nicht veröffentlichen (das ist evtl. auch der Grund warum die App nur so wenige Symbole mitbringt).

Hardware

IR-Gateway, Prototyp auf Steckbrett

Die Hardware besteht aus der chinesischen Version des NodeMCU Boards (new NodeMcu V3 von wemos.cc) mit dem CH340G als USB/Seriell-Wandler, da dieses Modul einfach konkurrenzlos billig und vollständig ist.
Dazu kommt eine selbst gemachte Platine mit dem IR-Empfänger, Sendediode und zugehörigem Verstärker. Auf der Platine sind zwei IR-Empfänger vorgesehen, je einmal für 36 kHz und 38 kHz Modulation. In der Praxis ist der 38 kHz Empfänger völlig ausreichend und die Software liest den 36 kHz Empfänger momentan auch nicht aus.
Die Platine wird direkt mit dem Modul verlötet, für den Korrekten Abstand beim Löten ist in den 3D-Druck Dateien ein Abstandshalter enthalten.

Das gedruckte Gehäuse besteht aus zwei Halbschalen die mit vier Senkkopfschrauben (M3x14mm) zusammengeschraubt werden. Bei passender Wahl des Lochdurchmessers im Oberteil, muss noch nicht mal ein Gewinde geschnitten werden.
Der Zusammenbau ist daher sehr schnell erledigt.

Programmierung

Die Programmierung erfolgt über die Arduino IDE.

Damit die Arduino IDE mit dem ESP8266 überhaupt etwas anfangen muss zunächst unter Preferences in die „Additional Boards Manager URLs“ Zeile folgende URL eingefügt werden: „http://arduino.esp8266.com/stable/package_esp8266com_index.json“

Anschließend sind über den „Library Manager“ folgende Bibliotheken nachzuinstallieren:

  • NTPClient
  • ArduinoJson
  • IRremoteESP8266
  • WiFiManager

Ebenfalls benötigt wird die Cryptosuite, diese muss manuell installiert werden:
Kopieren Sie den Sha -Ordner aus dem Download nach C:\Program Files (x86)\Arduino\libraries und starte Sie die Arduino IDE neu.

Unter Tools jetzt noch das richtige Board und Konfiguration auswählen:

  • Board: NodeMCU 1.0 (ESP-12E Module)
  • CPU Frequency: 160 MHz
  • Flash Size: 4M (3M SPIFFS)
  • Upload Speed: 115200
  • korrekter COM-Port (IR-Gateway per USB anschließen)

Und schon sollte sich der Sketch kompilieren und flashen lassen.

Download

hier bei Github: https://github.com/rselec/IR-Gateway

 

Schreibe einen Kommentar