Hallo zusammen,
kurze kleine Anleitung für alle die einen Raspberry haben und gerne ein Paar IR-Signale an IP-Symcon weiterleiten möchten.
Bei mir steuer ich damit zb. einen IPS-basierten Wecker mit der Fernbedienung im Schlafzimmer.
Auf dem Raspberry:
Verwendet wird ein TSOP 4838 IR Empfänger
Dieser wird wie folgt angeschlossen:
TSOP RASPBERRY
VS 3,3V
GND GND
OUT PIN 18
Raspi Installation:
sudo apt-get install lirc
echo "lirc_rpi" | sudo tee -a /etc/modules
Hardware.conf anpassen:
sudo nano /etc/lirc/hardware.conf
Parameter in der hardware.conf
LIRCD_ARGS="--uinput"
LOAD_MODULES=true
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
Prüfen ob IR empfänger was empfängt:
sudo /etc/init.d/lirc stop
sudo mode2 -d /dev/lirc0
# Abbruch mit CTRL+C
Nun müssen wir noch die LIRC Konfiguration erstellen:
Achtung dabei die Standard Tasten-Werte nutzen (KEY_1, KEY_MUTE etc.)
irrecord -d /dev/lirc0 ~/lircd.conf
sudo cp ~/lircd.conf /etc/lirc/lircd.conf
sudo /etc/init.d/lirc start
So nun läuft der IR-Empfänger, damit er aber bestimmte Befehle entgegen nimmt und an IP-Symcon sendet, nutzen wir irexec. Dazu eine Konfigurationsdatei erstellen:
sudo nano ~/irexec.conf
# Beispiel Inhalt:
begin irexec
begin
prog = irexec
button = KEY_POWER
config = ~/sendcmd KEY_POWER
end
begin
prog = irexec
button = KEY_0
config = ~/sendcmd 0
end
end irexec
Datei kann beliebig erweitert werden…
Um die Daten an IPS zu senden nutzen wir einen TCP Call und auf IPS-Seite einen ServerSocket.
Man könnte auch JSONRPC nutzen - was IPS ja unterstützt.
sendcommand-File erstellen
sudo nano ~/sendcmd
Inhalt der Datei, bitte IP-Adresse des IPS-Servers und Port des ServerSockets anpassen.
Mittels dieses Scripts werden daten per TCP Call an den IPS-Server geschickt - $1 und $2 sind Variablend für Parameter die diesem Script übergeben werden können.
#!/bin/bash
echo $1 , $2
echo "IRCMD|$1|$2" > /dev/tcp/192.168.178.40/11024
Datei jetzt noch ausführbar machen
sudo chmod g+x,u+x,o+x ~/sendcmd
Damit irexec bei neustart gestartet wird, geht es am einfachsten mit der crontab:
crontab -e
Inhalt einfügen ans Ende:
@reboot irexec -d /home/pi/irexec.conf
um IREXEC zu testen:
sudo killall irexec
irexec ~/irexec.conf
Test beenden mit CTRL+C und als Daemon starten:
irexec -d /home/pi/irexec.conf
Das war’s eigentlich schon. Jetzt müssen wir auf IPS-Seite nur noch einen ServerSocket erstellen, an den Port 11024 (oder angepasst) binden und eine Registervariable erzeugen, die auf den ServerSocket zeigt und auf ein Auswertescript, das wie folgt aussehen kann:
// Input from Socket Server -----------------------------------------------
$val = ($_IPS['VALUE']);
//Split Message from RPI
$cmd = explode("|",$val);
$obj = $cmd[0];
$par1 = $cmd[1];
$par2 = $cmd[2];
if($obj == 'IRCMD'){
switch($par1){
case "KEY_POWER": // irgendwas machen
break;
case "0": // irgendwas machen
break;
}
}