Verwenden von Raspberry Pi zur Steuerung meines Wechselstroms über Infrarot

19

Wenn ich auf dem Rückweg von irgendwo nach Hause bin, möchte ich in der Lage sein, meine Klimaanlage einige Minuten vor meiner Ankunft in meinem Apartment einzuschalten, wahrscheinlich indem ich mit meinem Telefon eine Verbindung zu meinem Raspberry Pi auf meinem Schreibtisch herstelle, der dann in Betrieb ist Schalten Sie, steuern Sie die AC. Der Wechselstrom kann mit einer Infrarot-Fernbedienung gesteuert werden. Ich möchte, dass der Raspberry Pi das benötigte Signal abgibt.

Was muss ich für den Raspberry Pi kaufen, damit er das benötigte Signal sendet? Außerdem benötige ich etwas, mit dem ich das von der Originalfernbedienung gesendete Signal abtasten kann, damit ich dem Raspberry Pi mitteilen kann, welches Signal gesendet werden soll. Wie mache ich das?

Bitte beachten Sie, dass die einzige Programmiersprache, die ich verwenden kann, Python ist. Wenn etwas Programmierung in C oder so erfordert, ist es für mich keine gute Lösung.

Ram Rachum
quelle

Antworten:

12

Wie oben erwähnt, ist LIRC ein großartiges Softwarepaket, mit dem Ihr RaspberryPi IR-Signale senden und empfangen kann. Seit Dezember 2012 enthält das neueste Raspbian-Betriebssystem den LIRC-Treiber von ar0n.

Ich habe eine Anleitung geschrieben, um LIRC auf Ihrem RaspberryPi zu installieren und zu konfigurieren (von der Hardware an), da ich das gleiche Problem selbst lösen musste. Sobald Sie LIRC installiert haben und an RaspberryPi arbeiten, können Sie einige der enthaltenen Anwendungen verwenden, um IR-Befehle von Python / Ruby / Ihrer Sprache zu senden und zu empfangen.

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/

Alex Bain
quelle
2
Heute habe ich einen neuen Blog-Beitrag geschrieben, in dem der Schaltplan (und die von mir gekauften Teile) für den Bau eines RaspberryPi-IR-Transceivers beschrieben sind. alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Alex Bain
5

Es gibt jemanden, der bereits einen LIRC-Kerneltreiber für den Raspberry Pi geschrieben hat. Diesen finden Sie hier: LIRC Raspberry Pi driver . Auf dieser Seite finden Sie auch die erforderlichen Hardware- und Verbindungsschemata.

Ich habe noch nicht selbst mit LIRC experimentiert, aber es gibt viele Anwendungen, die LIRC verwenden. Ich denke, sie funktionieren jetzt alle auf dem Raspberry Pi.

Wenn Sie möchten / müssen, kann ich etwas tiefer in dieses Thema eintauchen und zusätzliche Informationen einbringen.

Für den Python-Teil gibt es ein Python-Modul für die Interaktion mit LIRC namens pyLirc und eine neuere, gepflegte Version namens pyLirc2

Ikku
quelle
Danke für die Antwort, aber diese Seite hat mich bei "Recompile the kernel" verloren :) Gibt es nicht etwas, das mehr Plug-and-Play ist?
Ram Rachum
1
Bis dieser Treiber in eine Distribution gelangt, befürchte ich, dass dies die einzige Option für LIRC ist. Es gibt jedoch ein GPIO-Modul für Python. Da Sie ein Python-Programmierer sind, können Sie Ihren eigenen Python-Code erstellen, um genau das zu tun, was Sie wollen, und dabei nur die auf der verlinkten Seite gezeigte Hardware verwenden. Sie müssen lesen, welche IR-Sequenz die AC-Fernbedienung sendet, und diese wiederholen. Das sollte mit diesem Python-GPIO-Modul möglich sein.
Ikku
1
Mein Kommentar "... ich fürchte, das ist die einzige Option, mit der LIRC funktioniert ..." ist nur im GPIO-Kontext gültig. Die seriellen / USB-Geräte usw. sollten problemlos funktionieren.
Ikku
3

Ich habe festgestellt, dass LIRC eine relativ einfache Methode zum Senden von IR-Nachrichten ist, wollte aber unbedingt LIRC von Java aus steuern können. Ich programmiere gerne in Java und habe kein einfaches Tutorial für Python gefunden, um mich davon zu überzeugen, statt mit Java damit zu arbeiten. Nachdem ich mehrere Stunden lang versucht hatte, mit Java IR-Codes vom pi aus zu senden, stellte ich fest, dass die nächste Lösung relativ einfach ist: Erstellen Sie ein Bash-Skript, das die irsendNachricht enthält , und weisen Sie Java an, sie auszuführen.

Beispiel:

toggleLight.sh

#!/bin/bash
irsend SEND_ONCE HyundaiFan lightOnOff

RunBash.java

public class RunBash {
    public static final void main (String args[]) {
        String cmd = "../toggleLight.sh";
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(new String[] {"/bin/bash", "-c", cmd});
            int exitValue = process.waitFor();
            System.out.println("exit value: " + exitValue);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Du nimmst an zu bekommen exit value: 0. Wenn Ihr Exit-Wert 127 ist, bedeutet dies, dass das Bash-Skript von Java nicht gefunden wurde.

Noch ein paar Anmerkungen:

  • Ich habe jlirc und lircj - Java-Wrapper für LIRC ausprobiert, konnte sie aber nicht richtig konfigurieren -> funktioniert nicht.
  • Der einzige Nachteil dieser Lösung ist, dass Sie keine IR-Nachrichten abhören können. Wenn jemand eine Idee bezüglich der Verwendung einer ähnlichen Methode zum Abhören von IR-Nachrichten hat, würde ich gerne wissen.

Nützliche Ressourcen:

  • Befolgen Sie die Anweisungen von Alex Bain zum Einrichten von LIRC für den Pi. Sie sind wirklich gut! Weitere Informationen finden Sie irsend hier . Dadurch wird die Auflistung Ihrer Fernbedienungen viel übersichtlicher.
  • Hier finden Sie weitere Informationen zum Ausführen von Bash-Skripten aus Java.

Hoffe es hilft, Tom

Nagasaki45
quelle
2

Ich habe LIRC immer als unangenehmeres Projekt empfunden, als es notwendig erscheint, ähnlich wie lm-Sensoren.

Also würde ich das vielleicht etwas umständlicher betrachten: Wenn Sie einen Mikrocontroller (oder sogar eine tatsächliche Fernbedienung) dazu bringen könnten, den richtigen Pulszug zu senden, wenn er ausgelöst wird, könnten Sie vielleicht einen GPIO-Pin (oder eine UART-Nachricht) verwenden das RPi, um den Knopf mehr oder weniger zu drücken und das Senden auszulösen.

Es ist relativ einfach zu bedienen, wenn Sie die richtige Senderlösung finden.

Lassen Sie RPi sich Sorgen machen, dass ein Server und ein Hardware- (Firmware-) Modul sich um die IR-Aktion kümmern. Vielleicht können Sie einen ähnlichen Trick verwenden, um den Prozessstatus zu überwachen.

XTL
quelle