Infrarotsteuerung von Aktivboxen

  • Ich brauche mal ein paar Gedankenanschübe, um mich in ein Thema reinzuarbeiten.


    Folgendes möchte ich erreichen:


    - Ich habe Aktivlautsprecher, bei denen die Lautstärkeregelung über eine Infrarot Fernbedienung funktioniert.
    - Ich möchte aber die Bedienung von meinem Keyboard aus machen (OSX).
    - Das würde ja heißen, dass ich z.B. an den RPi einen Infrarot Transceiver anschließe, der den IR Code der Fernbedienung lernt und dann irgendwie getriggert an die Lautsprecher wieder abgeben kann.


    Ich habe hier einen RPi 2 herumliegen.


    - Welche IR Module brauchen ich für meinen Fall?
    - Wie realisiere ich am besten die Ansteuerung des IR Moduls? Gibt es da eine Programmempfehlung, über Python oder...?
    - Auf welchem Weg kann man von einem Mac einem RPI sagen, dass er etwas tun soll, in dem Fall eben ein IR Signal absetzen? Der RPi ist im selben Netzwerk wie der Computer.


    Danke für alle Hinweise, die mich das Ganze zusammenpuzzlen lassen!

  • Also, das was ich bis jetzt weiß ist:


    - Hardware: IR Empfänger 38kHz (TSSP4P38), IR Sender: da gibt es doch einige unterschiedliche Typen, was ist denn hier wichtig?
    - Software: IR Steuerung über LIRC: Kann IR Codes lernen und absetzen


    Ok, den ersten Teil bekomme ich hin.


    Wie aber kann ich die Verbindung zwischen Desktop Computer und RPI bewerkstelligen, um vom Keyboard des Computers dem RPi zu sagen, dass er bestimmte Codes absetzen soll? Und das auch noch verzögerungsfrei!

  • Hallo sapnho,


    für das Steuern über IR gibt es wohl unzählige Möglichkeiten.
    Was ich mich gerade bei deiner Beschreibung frage: Warum über einen Raspberry Pi? Ist der Mac so weit weg von den Aktivboxen, dass du es über das Netzwerk machen möchtest?


    Falls nicht, würde ich eher einen Arduino (bzw. günstigen Clone aus China) nehmen, mit IRremote die entsprechenden Codes der Fernbedienung auslesen (Reveiver angeschlossen), und dann einen kleinen Sketch basteln, der z.B. über die serielle Schnittstelle Befehle entgegennimmt und entsprechende Codes über eine IR-Diode abschickt. Der Arduino muss dazu nur am Mac via USB angeschlossen sein. Dazu hab ich hier (bis Punkt 3) auch mal was geschrieben. Am Mac kannst du dich dann z.B. über ein Script mit der seriellen Schnittstelle verbinden und Befehle an den Arduino übertragen, der dann sendet. Das Script (wohl am geschicktesten mit Befehlszeilen-Parameter) kannst du dann für die Tastatur-Shortcuts nutzen (siehe hier [statt curl halt das Script + Parameter]).


    Falls die Aktivboxen weit weg vom Mac sind (= außerhalb des Bereichs vom IR-Transmitter), kannst du es natürlich über das Netzwerk machen. Aber alleine dafür würde ich keinen Raspberry Pi verwenden (schon gar keinen 2er, das wäre ziemlich overpowered ;) ). Falls du natürlich noch andere Sachen darauf laufen hast und das eine zusätzliche Funktion wäre, geht das natürlich. Dann wie du erwähnt hast über LIRC die Daten einlesen von der FB und ensprechend über die Diode absenden. Wenn du das Ganze über das Netzwerk machen möchtest, würde ich einen kleinen Socket-Server schreiben (z.B. in Python), auf den du dich vom Mac aus verbindest. Man kann natürlich auch noch ein HTTP-Interface basteln, indem man sich über ein PHP-Script auf den Socket-Server verbindet und über Parameter Kommandos entgegennimmt und an den Socket-Server weiterleitet. Dann kann man auch HTTP-Requests (z.B. über curl) vom Mac aus verwenden, um Schaltbefehle umzusetzen.


    Falls der Pi keinen anderen Zweck haben sollte, als die Boxen zu schalten, würde ich eine anderen Methode nehmen, z.B. über den ESP8266 und IRremote. Damit hast du dann eine WLAN-Verbindung zu den Boxen.


    Zu der IR-Hardware: Hab hier einen VS1838-Empfänger und 38kHZ-Dioden (war das billigste Set, das ich auf die Schnelle in D in der Bucht gefunden habe), damit konnte ich bisher all meine Fernbedienungen auslesen (und Befehle senden). Selbst wenn die Diode deiner FB mit 36kHz arbeiten sollte, sind das nur Cent-Beträge ;)

  • Hallo Alex,


    großartige Tipps, vielen Dank! Du hast ja auf Deinem Blog genau die Themen behandelt, die hier zum Einsatz kommen!


    Jetzt muss ich mich natürlich in den Arduino etwas einlesen. Hättest Du eine aktuelle Empfehlung, welches Board (wenn Mac Anschluss über USB) und welche IR Dioden ich nehmen sollte? Es gibt soviele Arduino Boards..


    Die Aktivboxen stehen recht nah am Computer, also sicherlich in Reichweite des IR Senders.


    Jetzt muss ich aber erstmal Dein Blog weiter studieren...


    Danke! Wolfgang

  • Hi ,


    Wenn Arduino, dann solltest du dir den Nano mal anschauen, der hat einen USB-Anchluss und ist recht kompakt, dann kannst du über den direkt
    Daten in beide Richtungen austauschen...


    In der Hoffnung, dass deine Boxen RC5-Code verstehen, suchst dann am Besten mal Beispiel für den Arduino und RC5 im Internet...


    Viele Grüße,
    Max

    Raspberry B, Rev. 2 Betriebsdaten Pelletsheizung,
    Raspberry B+ Gartenbewässerung,
    Raspberry 2B MLD 5, DoorPi*, Interfacemodul Haussteuerung* (*: im Aufbau)

  • Hallo Wolfgang,


    schön, dass dich die Antwort weiterbringt :)
    Das mit dem Arduino-Board kommt drauf an, ob du noch zusätzlich was damit machen möchtest. Dann würde ich die etwas größeren Boards wie Uno oder Leonardo vorschlagen, ansonsten reichen auch Nano oder Pro Micro dicke aus (kleiner, weniger Pins). Beim Uno und Nano würde ich beim Einkauf darauf achten, was für ein USB-Chip verbaut ist. Bei den ganz günstigen Modellen vom Nano und Uno ist das oft ein chinesischer (CH340), für den dann extra noch ein Treiber installiert werden muss. Leonardo und Pro Micro haben den im Controller integriert, sodass die eigentlich problemlos verwendet werden können. Ich persönlich nehme ja gerne den Pro Micro, da er sehr klein ist und den gleichen Controller wie der Leonardo hat (wenn auch nicht so viele Pins). Welchen du aber letztendlich verwendest, ist hier relativ egal, da IRremote mit allen genannten Modellen funktioniert. Für den Uno (+ kompatible Modelle) hat jmd. auf GitHub auch einen Fork von IRremote bereitgestellt, der mehrere Sender unterstützt (falls du mal Geräte steuern möchtest, die gegenüber stehen etc.), ich hab analog dazu auch einen Leonardo- / ProMicro-kompatiblen Fork erstellt.
    Zu der IR-Hardware kann ich leider nicht viel sagen, wenn du einen enstprechenden Elektronik-Laden in der Nähe hast, würde ich einfach mal ein paar Dioden mitnehmen, die sollten recht günstig sein. Lt. Wikipedia sind in FBs oft 940nm-LEDs verbaut, da wohl am günstigsten. Aber wie gesagt - das sind eigentlich nur Cent-Beträge.

  • Wenn man undbedingt basteln und dabei etwas lernen möchte, ist Arduino oder auch der Raspberry Pi ( den Du natürlich sammt IR-Sender bei mir kaufst) eine feine Sache. Wenn es nur um eine Lösung zur Steuerung der Aktivboxen geht, ist glaube so ein USB-Teil, die bessere Lösung: http://www.watterott.com/de/USB-Infrared-Toy-v2

  • Keine Ahnung, das war nur so ne Idee von mir. Wenn Du mal geziehlt danach suchst, gibt es bestimmt auch solche Geräte in schicken Gehäusen. Hat Dein Gerät vielleicht sogar eine IRDA-Schnittstelle?
    Automatisch zusammengefügt:[hr]
    Vergiss IrDA, das klappt nur auf 2-3 Meter.

  • Das IRToy kannte ich noch gar nicht - auch ein interessantes Teil, wenn man eine etwas fertigere Lösung sucht (auch wenn es m.M.n. etwas teuer dafür ist).
    Es gibt ja dafür auch ein kleines Programm, mit dem man Signale aufnehmen und wiedergeben kann (siehe hier). Da das über ein Kommandozeilentool läuft, kann man es auch problemlos für Tastaturshortcuts nutzen.

  • Ich habe mir jetzt mal alles durchgelesen, bin aber von der Komplexität etwas erschlagen. Ich habe letztes Jahr mit einem Raspberry Pi einen digitalen Bilderrahmen erstellt mit jede Menge Schnick-Schnack und Python Scripts aber wenn ich mir jetzt Arduino oder das IR Toy durchlese, dann verstehe ich nur sehr eingeschränkt, was ich eigenlich tun muss, um es zum laufen zu bringen.


    Die Idee mit Raspberry ist wirklich Overkill, vor allem wenn es solche USB Lösungen wie Pro Micro or IR Toy gibt. Und für diese Anwendungszweck brauche ich wirklich nur die IR Steuerung. Das aber von einer Mac Tastatur aus. Mit Automator bzw. Keyboard Maestro lassen sich die Tasten ja wunderbar belegen.


    Wann wäre denn das Einfachere in Eurer Einschätzung? Die Arduino Lösung oder der IR Toy?


    So eine Anleitung für IR Toy wie es Alex für Arduino hier beschrieben hat wäre gut..
    Automatisch zusammengefügt:[hr]

    Quote

    Da das über ein Kommandozeilentool läuft, kann man es auch problemlos für Tastaturshortcuts nutzen.


    Dumme Frage: Das heißt Terminal in OSX? oder muss ich auf ein Linux System?

  • Wenn es LIRC-kompatibel ist, kannst du LIRC auch am Mac einrichten, damit die Codes auslesen und dann über die Diode senden - so wie du das mit dem Pi schon vorhattest (nur halt über USB-angebundene Hardware statt Receiver und Diode an den GPIOs vom Pi). Habe mich selbst noch nicht zu sehr mit LIRC beschäftigt, da gibt es aber sicher unzählige Beschreibungen im Netz ;)
    Oder eben über das erwähnte "IR Toy record and playback" Tool, das die aufgenommenen Codes auf dem Mac speichert und von dort "abspielen".
    Ja, auf OS X heißt es Terminal, Linux brauchst du nicht - das wäre ein unnötiger Umweg.

  • Hey,
    was suchst du denn genau? Ich habe das Gerät selbst nicht, für die Nutzung des "record and playback"-Tools sollte aber kaum Setup notwendig sein.
    Wenn du das Gerät anschließt, meldet es eine serielle Schnittstelle am Betriebssystem an und kann dann verwendet werden. Das Tool findest du in diesem Paket (Entpacken --> software --> IRToyRecPlay --> MacOS --> Release --> irtoy). Das ist ein Kommandozeilenprogramm, das du über das Terminal ausführen kannst. Wie man es benutzt (welche Parameter etc.) sollte in diesem Artikel eigentlich gut beschrieben sein. Statt COMx (wobei x eine Zahl ist), wie bei Windows, muss halt der name der seriellen Schnittstelle von OS X übergeben werden (siehe hier). Am einfachsten im Terminal nach "/dev" vorm einstecken wechseln, ein "ls" machen, das Gerät einstecken, wieder ein "ls" machen und schauen, was dazugekommen ist, das ist dann der Name der Schnittstelle. Zu den anderen Parametern kann ich leider auch nicht mehr sagen, als im verlinkten Artikel zu dem Tool, da wird das aber mit Beispielen eh recht gut beschrieben.

  • So, das IR Toy ist heute gekommen. Über ls in /dev stellte sich das Teil als cu.usbmodem.141421 oder tty.usbmodem.1441421 vor.


    Wenn als im Terminal eingebe

    Code
    /Applications/irtoy -d /dev/cu.usbmodem141421 -f test -p -t -r

    dann öffnet er auch brav mit

    Quote

    Opening IR Toy on /dev/cu.usbmodem141421 at 115200bps...


    aber was mache ich dann?? :huh:


    Die Dokumentation von dem Teil ist leider etwas out-of-date, dass die Links ins Leere laufen. Die Manual Seite liest sich für mich wie Bahnhof..

  • Also wenn ich es gerade richtig lese, sollte der Ablauf z.B. so sein (z.B. für den Power-Button auf der Fernbedienung):
    IR-Gerät anschließen und zur Aufnahme einen Befehl mit folgendem Aufbau eingeben:

    Code
    /Applications/irtoy -d /dev/cu.usbmodem141421 -r -f power


    Nun den Power-Button auf der FB drücken (am Besten zu dem USB-Gerät halten dabei). Lt. Beschreibung sollte dann ein Tastenruck im Terminal am Mac reichen, die Applikation zu beenden. Dann sollten lt. der Beschreibung mehrere .bin-Dateien mit Präfix "power" im aktuellen Verzeichnis erstellt werden (power_000.bin usw.).
    Wurden die Dateien erstellt, können sie nun wieder abgespielt werden. Dazu den Befehl von oben in leicht abgeänderter Version eingeben:

    Code
    /Applications/irtoy -d /dev/cu.usbmodem141421 -p -f power


    Für "power" muss evtl. der gesamte Pfad eingegeben werden, wenn sich die aufgenommenen Dateien in einem anderen Verzeichnis befinden, wie irtoy. Eingabe schaut dann vermutlich etwa so aus:

    Code
    /Applications/irtoy -d /dev/cu.usbmodem141421 -p -f /Users/xxx/power


    Dabei das USB-Gerät zu dem zu steuernden Gerät halten.


    Das ist auch nur das, was ich aus der Beschreibung des Programms rauslesen konnte - keine Garantie, dass es sich so auch umsetzen lässt.