Meinen Yamaha-AVR RX-S600 kann man via TCP (YCN-Protokoll) steuern. Also z.B.
echo '@MAIN:VOL=Up' | telnet RX-S600 50000
hebt die Lautstärke an. Und über
telnet RX-S600 50000
kommen Antworten wie
@MAIN:VOL=-43.0
Natürlich kann man '@MAIN:VOL=Up' auch in einer solchen Telnet-Sitzung absetzen.
Das Ganze möchte ich nun in einem Steuerscript machen, also die Ausgaben des RX-S600 zeilenweise lesen, verarbeiten und dann entsprechende Kommandos senden. Es ist nur eine solche Verbindung zulässig, die dazu auch noch abstirbt, wenn nicht regelmäßig alle 30s ein Kommando abgesetzt wird.
Jetzt scheint aber schon mal Telnet nicht an ner Pipe zu funzen, jedenfalls
while true; do
cmd=/tmp/RX-S600.in
rm -f $cmd
mknod $cmd p
rpl=/tmp/RX-S600.out
rm -f $rpl
mknod $rpl p
telnet RX-S600 50000 <$cmd >$rpl &
while read in < $rpl; do
echo "$in"
...
done
done
Alles anzeigen
tut schon mal gar nichts. Also mal
exec 3<>/dev/tcp/RX-S600/50000
probiert und siehe da, ein anschließendes
cat <&3
funzt schon mal. Allerdings geht ein
echo '@MAIN:VOL=Up' >&3
ins Nirvana.
Ja, wie löse ich das? Was mache ich falsch?