homematic: yamaha av receiver steuern

um einen yamaha av receiver zu steuern (hier z.b. ein RX-V771), brauchts irgendwas, was die kommandos uebers netz zu den diesem sendet. vorraussetzung fuer dieses script ist ein installierter cuxd auf der omemativ ccu2.

dieses script soll nur als beispiel dienen, da die umsetzung doch etwas quick and dirty ist 😉

der erste uebergabeparameter ist der hostname oder die ipadresse des receivert. der zweite uebergabeparameter ist ein kommando, welches im script definiert ist. siehe case anweisung…

#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/addons/cuxd
 
url="http://$1:80/YamahaRemoteControl/ctrl"
header="Content-Type: text/plain"
curlp="-f -s -X POST"
 
xmlhead="<?xml version=\"1.0\" encoding=\"utf-8\"?><YAMAHA_AV cmd=\"PUT\">"
xmlfoot="</YAMAHA_AV>"
 
case "$2" in
	"poweron") ycmd="<Main_Zone><Power_Control><Power>On</Power></Power_Control></Main_Zone></YAMAHA_AV>"
	;;
	"poweroff") ycmd="<System><Power_Control><Power>Standby</Power></Power_Control></System></YAMAHA_AV>"
	;;
	"muteon") ycmd="<Main_Zone><Volume><Mute>On</Mute></Volume></Main_Zone>"
	;;
	"muteoff") ycmd="<Main_Zone><Volume><Mute>On/Off</Mute></Volume></Main_Zone>"
	;;
	"muteonoff") ycmd="<Main_Zone><Volume><Mute>On/Off</Mute></Volume></Main_Zone>"
	;;
	"vol55") ycmd="<Main_Zone><Volume><Lvl><Val>-550</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Volume></Main_Zone>"
	;;
	"vol65") ycmd="<Main_Zone><Volume><Lvl><Val>-650</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Volume></Main_Zone>"
	;;
	"volplus2") ycmd="<Main_Zone><Volume><Lvl><Val>Up 2 dB</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone>"
	;;
	"volminus2") ycmd="<Main_Zone><Volume><Lvl><Val>Down 2 dB</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone>"
	;;
esac
 
/usr/local/addons/cuxd/curl $curlp --header "$header" -d "$xmlhead$ycmd$xmlfoot" $url > /dev/null

ich hab das unter /usr/local/addons/yamaha als “yamaha.sh” abgespeichert.

es ist ein shellscript geworden, da ich mit diesem tcl kram auf der ccu irgendwie auf kriegsfuss stehe. damit ist es ein leichtes, z.b. den receiver auszuschalten, wenn man den raum verlaesst und das licht ausschaltet. (passt in meinem szenario im büro. im wohnzimmer will man es zu filme schauen vielleicht andersrum haben?)

mit geringfuegigen anpassungen was den curl pfad angeht, sollte das auch ohne homematic auf beliebigen linux rechnern laufen.

08. December 2013 by sd
Categories: Uncategorized | Tags: , | 6 comments

Comments (6)

  1. Echt genial. Läuft das auch auf der ccu1?

  2. keine ahnung… ich habe keine ccu1. aber ich denke schon, wenn der pfad zu curl angepasst wird.

  3. Hi sd,
    vielen Dank! Seit gestern läuft es auf meiner CCU2. Zugegeben musste ich eine Weile überlegen, wie der Aufruf der Übergabe-Parameter aussehen muss. Für alle, die sich wie ich vorsichtig zu den Skripten “vortasten” lautet der Aufruf des Skriptes in der CCU2:
    dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“/usr/local/addons/yamaha/yamaha.sh 192.168.XXX.XXX poweron”);
    Natürlich nur mit angepasster IP und wenn man das Skript ebenfalls yamaha.sh nennt…

  4. ein Teil des Skriptes war “verschluckt”, so ist es richtig:

    dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“/usr/local/addons/yamaha/yamaha.sh 192.168.XXX.XXX poweron”);

  5. offenbar kann man so lange Zeilen nicht posten, deswegen in zwei Zeilen, die ohne Leerzeichen zusammen gehören:
    dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“/usr/
    local/addons/yamaha/yamaha.sh 192.168.178.15 poweron”);

  6. hm… steht doch in allen kommentaren alles drin, oder?

Leave a Reply

Required fields are marked *