Halli Hallo,
als Ziel hatte ich in Verbindung mit dem E2k Net-IO und einem Enigma2 Resiver (bei mir VU+ DUO) eine Art Kommunikation aufzubauen. Zum Beispiel sollte bei Betätigung der Türklingel eine Meldung am TV erscheinen dass es geklingelt hat und ob man den Türöffner jetzt betätigen möchte JA/NEIN?.
Da ich noch nicht die nötige Hardware zusammen habe, testete ich einfach mit der Flurbeleuchtung und einem Softkey im WebIF.
Ich füge hier mal das Skript ein, welches sich unter Linux in der Bash-shell ausführen lässt.
Als zusätzliches Paket auf der Linux Maschine wird XPATH benötigt um die XML-kommunikation mit dem Resiver bewerkstelligen zu können.
In dem Skript sind größten Teils Kommentare nach dem # eingefügt.
EDIT: Da in meinem Editor das Skript übersichtlicher aussieht als hier im Codefenster hänge ich mal eine Screenshot an.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #!/bin/bash set -x #Debugausgabe while [ true ] #Dauerwiederholung do # Variablen zurücksetzen unset stby unset a unset b unset c unset d unset e unset f # checken ob der Resiver erreichbar ist ping -q -c1 10.5.16.181 &> /dev/null if [ $? = 0 ] then # wenn der Resiver erreichbar ist dann checken ob er im Standby ist stby=$(wget -q -O- http://10.5.16.181/web/powerstate -O- | xpath -q -e "//e2instandby/text()") if [ $stby = "false" ] then # wenn der Resiver nicht im Standby ist (stby=false) a=$(echo -e "P0\r" | nc -w 1 10.5.16.240 64400) #Abfrage der ersten 8 Ausgängen in 16Bit-Hex in Variable a b=${a:7:4} #Herrausfiltern des zweiten Ausganges in Variable b if test ${b} == "0001" #Prüfung Ausgang 2 HIGH Zustand then # wenn Ausgang 2 HIGH, dann eine Frage auf dem TV darstellen mit 25 sec Timeout wget -q "http://10.5.16.181/web/message?caption=Alarm&text=Flurbeleuchtung aktivieren?&type=0&timeout=25" c=0 #Variable $c auf Wert 0 setzen while [ $c -le 20 ] #Schleife solang $c kleiner oder gleich 20 do # 20 mal mit 1.sec Pause die Antwort vom Resiver holen d=$(wget -q -O- http://10.5.16.181/web/messageanswer?getanswer=now -O- | xpath -q -e "//e2statetext/text()") # wenn die Antwort JA ist den Softeingang Nummer 3 so oft jede sec. Triggern bis das NET-IO den Befehl bestätigt aber höchstens 10 mal # anschließend die Schleife beenden if test "$d" == "Answer is YES!" then f=$(echo -e "T02:1\r") g=0 while test "$e" != "$f" && test $g -le 10 do e=$(echo -e "T02\r" | nc -w 1 10.5.16.240 64400) #Softeingang Nummer 3 triggern let g=$g+01 sleep 1 done break #Schleife vorzeitig beenden fi if test "$d" == "Answer is NO!" # wenn die Antwort vom Resiver NEIN ist wird die Schleife beendet then break fi let c=$c+01 #Variable $c um 01 erhöhen sleep 1 #Timer 1sec done fi sleep 2 #Timer 2sec else sleep 20 # 20 sec Pause wenn Resiver in Standby = True fi else sleep 20 # 20 sec Pause wenn Resiver nicht anpingbar fi done |