[Yamaha AVR] nicht nur schalten, auch abfragen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
UwePa
Beiträge: 329
Registriert: 26.08.2015, 06:27
System: CCU
Wohnort: Berlin (Speckgürtel)
Hat sich bedankt: 25 Mal
Danksagung erhalten: 3 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von UwePa » 14.05.2017, 17:36

MartinBr hat geschrieben:Hallo Manu,
ich verzweifle so langsam. Es gelingt mir nicht, ein bestimmtes Radioprogramm einzuschalten. Ich habe hier alles durchgearbeitet, das ein- und das ausschalten funktioniert. Ich kann auch alle Eingänge schalten, nur das Auswählen eines Senders funktioniert nicht.

Kannst du mir bitte einen Tipp geben?
Danke und Gruß
Martin

Ist das noch aktuell?
Was willst du starten?

Tuner oder Netradio?

Mfg
Mit freundlichen Grüßen

Uwe

--------------////////-------------
CCU3 und fast nur noch HMIP

Mutter gibt es wirklich sowas, wie den perfekten Mann?
Sicher Kind, sie werden Biker genannt ;-)

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von MartinBr » 14.05.2017, 19:40

Hallo UwePa, ich möchte bestimmte Favoriten in NetRadio steuern. Weiterhin fehlt im Script von Manu noch der Volume teilt. Ich habe nun Scripts zum lauter und leiser stellen (plus oder minus 2db), die auch funktionieren.

Das Hauptproblem ist das Einstellen eines bestimmten Senders in Netradio (z.B. WDR2 oder Radio1), die in Favoriten abgespeichert habe.

Das zweite Problem ist die Abfrage der Volume Einstellung am Receiver.

Gruß
Martin
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

Benutzeravatar
UwePa
Beiträge: 329
Registriert: 26.08.2015, 06:27
System: CCU
Wohnort: Berlin (Speckgürtel)
Hat sich bedankt: 25 Mal
Danksagung erhalten: 3 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von UwePa » 15.05.2017, 12:26

Hallo Martin,

ein Teil Deiner Fragen werden sicherlich hier beantwortet. https://www.heimkino-praxis.com/yamaha- ... mment-7197.

Ich habe mir die Scrips als .sh-Datei auf CUXD abgelegt und rufe diese auf, dass ist für mich übersichtlicher.
Allerdings kann ich Dir den Ablauf, des Aufrufens einer Internetradiostation (sollte bei den Yamahas ähnlich sein) beschreiben.

Die Stationen sind unter Lesezeichen gespeichert, diese eventuell in Ordnern. Angenommen eine Station "Classic Rock" ist im Verzeichnis Lesezeichen im 2. Ordner "Rock" als dritte Station gespeichert. Da muss Dein Script ungefähr so aufgebaut sein, wenn Du es in der Zone_2 starten/hören willst.
Lesezeichen muss ganz oben stehen, sollte bei Dir was anderes stehen (Hinzugefügt etc) muss die 1 in der dritten CodeZeile gegen die Zeilennummer getauscht werden.

Code: Alles auswählen

<Zone_2><Power_Control><Power>On</Power></Power_Control></Zone_2>
<Zone_2><Input><Input_Sel>NET RADIO</Input_Sel></Input></Zone_2>
<Zone_2><NET_RADIO><List_Control><Direct_Sel>Line_1</Direct_Sel></List_Control></NET_RADIO></Zone_2>
<Zone_2><NET_RADIO><List_Control><Direct_Sel>Line_2</Direct_Sel></List_Control></NET_RADIO></Zone_2>
<Zone_2><NET_RADIO><List_Control><Direct_Sel>Line_3</Direct_Sel></List_Control></NET_RADIO></Zone_2>
<Zone_2><Volume><Lvl><Val>430</Val><Exp>1</Exp><Unit>dB>/Unit></Lvl></Volume></Zone_2></Zone_2>
Hier passiert folgendes.
1. Zeile Zone 2 einschalten
2. Zeile Internetradio als Qulle wählen
3. Zeile gehe zu ersten Eintrag (bei mir Lesezeichen)
4. Zeile gehe zu zweiten Eintrag
5. Zeile gehe zu dritten Eintrag
6. Zeile stelle Lautstärke ein.

Ich glaube der untere Teil müsste angepasst XXXXX, gegen Deins ersetzen fast funktionieren. (ersetzen in Zeile 1 und drei) in Progranmteil der CCU.

Code: Alles auswählen

var url= "http://192.XXXXX.XXXXX.XXXXX/YamahaRemoteControl/ctrl";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
dom.GetObject("CUxD.CUX2801001:XXXX.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><Zone_2><Power_Control><Power>On</Power></Power_Control></Zone_2></YAMAHA_AV>' '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><Zone_2><Input><Input_Sel>NET RADIO</Input_Sel></Input></Zone_2></YAMAHA_AV>' '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><NET_RADIO><List_Control><Direct_Sel>Line_1</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>' '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><NET_RADIO><List_Control><Direct_Sel>Line_1</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>' '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><NET_RADIO><List_Control><Direct_Sel>Line_1</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>' '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><Zone_2><Volume><Lvl><Val>430</Val><Exp>1</Exp><Unit>dB>/Unit></Lvl></Volume></Zone_2></YAMAHA_AV>' '"#url#"'");


Ich bin mmir sicher, den obigen Teil kann man optimieren aber dazu kenne ich mich nicht aus.Für mich besser allerdings war der Weg über eine sh-Datei. Den Anstoss fand ich hier. https://ww.sd.vc/wp/2013/12/08/homemati ... r-steuern/

Gruß
Mit freundlichen Grüßen

Uwe

--------------////////-------------
CCU3 und fast nur noch HMIP

Mutter gibt es wirklich sowas, wie den perfekten Mann?
Sicher Kind, sie werden Biker genannt ;-)

Benutzeravatar
UwePa
Beiträge: 329
Registriert: 26.08.2015, 06:27
System: CCU
Wohnort: Berlin (Speckgürtel)
Hat sich bedankt: 25 Mal
Danksagung erhalten: 3 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von UwePa » 15.05.2017, 13:38

Hier ist das ganze noch mal sh-Datei wie sie auf der cuxd liegt.
Wahrscheinlich, könnte jemand mit Ahnung von programmieren das ganze noch verbessern und optimieren,

Code: Alles auswählen

#Oelle und mehr Infos
#https://www.heimkino-praxis.com/yamaha-netzwerk-steuerung/
#https://ww.sd.vc/wp/2013/12/08/homematic-yamaha-av-receiver-steuern/
#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/addons/cuxd
 
url="http://192.168.178.28/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>"


ycmd="<Main_Zone><Power_Control><Power>On</Power></Power_Control></Main_Zone>"
ycmd1="<Main_Zone><Input><Input_Sel>NET RADIO</Input_Sel></Input></Main_Zone>"
ycmd2="<NET_RADIO><List_Control><Direct_Sel>Line_2</Direct_Sel></List_Control></NET_RADIO>"
ycmd3="<Main_Zone><Volume><Lvl><Val>-440</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Volume></Main_Zone>"


/usr/local/addons/cuxd/curl $curlp --header "$header" -d "$xmlhead$ycmd$xmlfoot" $url > /dev/null
sleep 1
/usr/local/addons/cuxd/curl $curlp --header "$header" -d "$xmlhead$ycmd1$xmlfoot" $url > /dev/null
sleep 1
/usr/local/addons/cuxd/curl $curlp --header "$header" -d "$xmlhead$ycmd2$xmlfoot" $url > /dev/null
sleep 1
/usr/local/addons/cuxd/curl $curlp --header "$header" -d "$xmlhead$ycmd2$xmlfoot" $url > /dev/null
sleep 2
/usr/local/addons/cuxd/curl $curlp --header "$header" -d "$xmlhead$ycmd2$xmlfoot" $url > /dev/null
sleep 1
/usr/local/addons/cuxd/curl $curlp --header "$header" -d "$xmlhead$ycmd3$xmlfoot" $url > /dev/null
vielleicht kann man das "/usr/local/addons/cuxd/curl $curlp" auch verketten in einer Variable, aber es funktioniert.

Und mit dem Script von Manu, funktioniert es wunderbar.
Da Problem lag darin, der AVR kann nur eine Station Internetradio abspielen, dass heisst Main Zone und Zone 2 können zwar unterschiedliche Sender beim Tunerempfang oder auch aus Unterschiedlichen Quellen empfangen, aber nicht zwei unterschiedliche Stationen bei Netradio.

In der Praxis sah das bisher so aus:
Mainzone Netradio, Lesezeichen A, Ordner B, Station C -alles schick.
Wurde dann aber über ein Script
Zone 2 Netradio, Lesezeichen A, Ordner B, Station F aufgerufen, "verschluckte" sich der AVR und landete bei einer ganz anderen Station oder im Nirvana.

Gruß
Mit freundlichen Grüßen

Uwe

--------------////////-------------
CCU3 und fast nur noch HMIP

Mutter gibt es wirklich sowas, wie den perfekten Mann?
Sicher Kind, sie werden Biker genannt ;-)

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von MartinBr » 15.05.2017, 21:25

Hallo, ich habe mein System mit dem Script von Manu (vielen Dank für die tolle Arbeit) und mit Hilfe von UwePa erstmal zum Laufen gebracht.

Hier meine Scripte:
Hauptscript von Manu:

Code: Alles auswählen

! Definitionen
var tmpA="192.168.178.5";  ! IP-Adresse des AVR
var tmpB="CUX2801001:9";  ! Adresse des benutzten CUxD-Devices
var tmpC="Main_Zone";     ! Main_Zone, Zone_2, Zone_3, Zone_4
var tmpD=1;               ! sollen die Meta-Infos abgefragt werden? (NET_RADIO, SERVER)
var tmpE=1;               ! soll die aktuelle Lautstärke geprüft werden?

var tmpF="Yamaha Power"; ! SysVar für den Power-Status
var tmpG="Yamaha Input";  ! SysVar für die Quelle
var tmpH="Yamaha PlayNow";  ! SysVar für die Meta-Infos
var tmpI="Yamaha Volume";  ! SysVar für die Lautstärke

var Debug = 0;  ! DEBUG   zum Testen ;-)

! Parameter
var tmpJ= "<Power_Control><Power>GetParam</Power></Power_Control>";
var tmpK="<Input><Input_Sel>GetParam</Input_Sel></Input>";
var tmpL="<NET_RADIO><Play_Info>GetParam</Play_Info></NET_RADIO>";
var tmpM="<SERVER><Play_Info>GetParam</Play_Info></SERVER>";
var tmpN="<Tuner><Play_Info>GetParam</Play_Info></Tuner>";
var tmpO="<Volume><Lvl>GetParam</Lvl></Volume>";


! ########## Script-Start ##########
! #          DON'T TOUCH           #
! ########## Script-Start ##########

var tmpP= "http://"#tmpA#"/YamahaRemoteControl/ctrl";
var tmpQ="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";

if (Debug == 1) {
   WriteLine((system.Date("%H:%M:%S"))#": Debug START");
}

! Power
dom.GetObject("CUxD."#tmpB#".CMD_SETS").State(tmpQ#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\"><"#tmpC#">"#tmpJ#"</"#tmpC#"></YAMAHA_AV>' '"#tmpP#"'");
dom.GetObject("CUxD."#tmpB#".CMD_QUERY_RET").State(1);
string tmpR = dom.GetObject("CUxD."#tmpB#".CMD_RETS").State();

integer tmpS = tmpR.Find("Standby");
integer tmpT = tmpR.Find("On");

string  tmpU = tmpF;
object  svObj  = dom.GetObject(tmpU);
if (!svObj){
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObj = dom.CreateObject(OT_VARDP);
    svObjects.Add(svObj.ID());
    svObj.Name(tmpU);
    svObj.ValueType(ivtBinary);
    svObj.ValueSubType(istBool);
    svObj.ValueName0("Standby");
    svObj.ValueName1("On");
    svObj.DPInfo("Power-Status Yamaha AVR");
    svObj.ValueUnit("");
    dom.RTUpdate(false);
}

if ((tmpS)!="-1") {
   integer tmpV = tmpR.Find("Standby");
   integer tmpW = tmpR.Find(" /Power");
   integer tmpX = tmpR.Substr(tmpV,tmpW-tmpV);
   svObj.State(false);
}
if ((tmpT)!="-1") {
   integer tmpV = tmpR.Find("On");
   integer tmpW = tmpR.Find(" /Power");
   integer tmpX = tmpR.Substr(tmpV,tmpW-tmpV);
   svObj.State(true);
}

if (Debug == 1) {
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpR);
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpV );
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpW );
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpX);
   WriteLine((system.Date("%H:%M:%S"))#": "#svObj.State().ToString());
}

! SOURCE
dom.GetObject("CUxD."#tmpB#".CMD_SETS").State(tmpQ#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\"><"#tmpC#">"#tmpK#"</"#tmpC#"></YAMAHA_AV>' '"#tmpP#"'");
dom.GetObject("CUxD."#tmpB#".CMD_QUERY_RET").State(1);
string tmpR = dom.GetObject("CUxD."#tmpB#".CMD_RETS").State();

integer tmpV = tmpR.Find("Input_Sel ")+10;
integer tmpW = tmpR.Find(" /Input_Sel");
string tmpY = tmpR.Substr(tmpV,tmpW-tmpV);
! dom.GetObject('Yamaha Input').State(tmpY);
string  tmpU = tmpG;
object  svObj  = dom.GetObject(tmpU);

if (!svObj){
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
    svObj = dom.CreateObject(OT_VARDP);
    svObjects.Add(svObj.ID());
    svObj.Name(tmpU);
    svObj.ValueType(ivtString);
    svObj.ValueSubType(istChar8859);
    svObj.DPInfo("aktueller Input des Yamaha AVR");
    svObj.ValueUnit("");
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}
svObj.State(tmpY);

if (Debug == 1) {
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpR);
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpV );
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpW );
   WriteLine((system.Date("%H:%M:%S"))#": "#tmpY);
}

if (tmpD == 1) {
   ! NET_RADIO
   if (tmpY == "NET RADIO") {
      dom.GetObject("CUxD."#tmpB#".CMD_SETS").State(tmpQ#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\">"#tmpL#"</YAMAHA_AV>' '"#tmpP#"'");
      dom.GetObject("CUxD."#tmpB#".CMD_QUERY_RET").State(1);
      string tmpR = dom.GetObject("CUxD."#tmpB#".CMD_RETS").State();
      integer tmpV = tmpR.Find("Station ")+8;
      integer tmpW = tmpR.Find(" /Station");
      string tmpZ = tmpR.Substr(tmpV,tmpW-tmpV);
      integer tmpA1 = tmpR.Find("Song ")+5;
      integer tmpA2 = tmpR.Find(" /Song");
      string tmpA3 = tmpR.Substr(tmpA1,tmpA2-tmpA1);
      string tmpA8 = tmpZ#": "#tmpA3;

      string  tmpU = tmpH;
      object  svObj  = dom.GetObject(tmpU);
      if (!svObj){
         object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
         svObj = dom.CreateObject(OT_VARDP);
         svObjects.Add(svObj.ID());
         svObj.Name(tmpU);
         svObj.ValueType(ivtString);
         svObj.ValueSubType(istChar8859);
         svObj.DPInfo("aktueller Song des Yamaha AVR");
         svObj.ValueUnit("");
         svObj.Internal(false);
         svObj.Visible(true);
         dom.RTUpdate(false);
      }
      svObj.State(tmpA8);

      if (Debug == 1) {
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpR);
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpV );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpW );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA1 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA2 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA8);
      }
   }

   ! SERVER
   if (tmpY == "SERVER") {
      dom.GetObject("CUxD."#tmpB#".CMD_SETS").State(tmpQ#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\">"#tmpM#"</YAMAHA_AV>' '"#tmpP#"'");
      dom.GetObject("CUxD."#tmpB#".CMD_QUERY_RET").State(1);
      string tmpR = dom.GetObject("CUxD."#tmpB#".CMD_RETS").State();

      integer tmpV = tmpR.Find("Artist ")+8;
      integer tmpW = tmpR.Find(" /Artist");
      string tmpZ = tmpR.Substr(tmpV,tmpW-tmpV);

      integer tmpA1 = tmpR.Find("Song ")+5;
      integer tmpA2 = tmpR.Find(" /Song");
      string tmpA3 = tmpR.Substr(tmpA1,tmpA2-tmpA1);

      string tmpA4 = tmpZ#" - "#tmpA3;

      string  tmpU = "Yamaha PlayNow";
      object  svObj  = dom.GetObject(tmpU);
      if (!svObj){
         object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
         svObj = dom.CreateObject(OT_VARDP);
         svObjects.Add(svObj.ID());
         svObj.Name(tmpU);
         svObj.ValueType(ivtString);
         svObj.ValueSubType(istChar8859);
         svObj.DPInfo("aktueller Song des Yamaha AVR");
         svObj.ValueUnit("");
         svObj.Internal(false);
         svObj.Visible(true);
         dom.RTUpdate(false);
      }
      svObj.State(tmpA4);

      if (Debug == 1) {
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpR);
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpV );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpW );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA1 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA2 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA4);
      }
   }
      ! TUNER
      if (tmpY == "TUNER") {
      dom.GetObject("CUxD."#tmpB#".CMD_SETS").State(tmpQ#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\">"#tmpN#"</YAMAHA_AV>' '"#tmpP#"'");
      dom.GetObject("CUxD."#tmpB#".CMD_QUERY_RET").State(1);
      string tmpR = dom.GetObject("CUxD."#tmpB#".CMD_RETS").State();
      integer tmpV = tmpR.Find("Program_Service ")+16;
      integer tmpW = tmpR.Find(" /Program_Service");
      string tmpZ = tmpR.Substr(tmpV,tmpW-tmpV);
      integer tmpA1 = tmpR.Find("Radio_Text_A ")+13;
      integer tmpA2 = tmpR.Find(" /Radio_Text_A");
      string tmpA3 = tmpR.Substr(tmpA1,tmpA2-tmpA1);
      integer tmpA5 = tmpR.Find("Radio_Text_A ")+13;
      integer tmpA6 = tmpR.Find(" /Radio_Text_A");
      string tmpA7 = tmpR.Substr(tmpA1,tmpA2-tmpA1);

      string tmpA8 = tmpZ#": "#tmpA3#" | "#tmpA7;

      string  tmpU = tmpH;
      object  svObj  = dom.GetObject(tmpU);
      if (!svObj){
         object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
         svObj = dom.CreateObject(OT_VARDP);
         svObjects.Add(svObj.ID());
         svObj.Name(tmpU);
         svObj.ValueType(ivtString);
         svObj.ValueSubType(istChar8859);
         svObj.DPInfo("aktueller Song des Yamaha AVR");
         svObj.ValueUnit("");
         svObj.Internal(false);
         svObj.Visible(true);
         dom.RTUpdate(false);
      }
      svObj.State(tmpA8);

      if (Debug == 1) {
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpR);
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpV );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpW );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA1 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA2 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA5 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA6 );
         WriteLine((system.Date("%H:%M:%S"))#": "#tmpA8);
      }
   }
   if ((tmpY != "NET RADIO") && (tmpY != "SERVER") && (tmpY != "TUNER")){
      dom.GetObject('Yamaha PlayNow').State(tmpY);
   }
}
else {
   dom.GetObject('Yamaha PlayNow').State(tmpY);
}

if (Debug == 1) {
   WriteLine((system.Date("%H:%M:%S"))#": Debug ENDE");
}

NetRadio einschalten:

Code: Alles auswählen

! Yamaha Eingang Net Radio einstellen
var tmpA= "http://192.168.178.5/YamahaRemoteControl/ctrl";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
dom.GetObject("CUxD.CUX2801001:10.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><Main_Zone><Input><Input_Sel>NET RADIO</Input_Sel></Input></Main_Zone></YAMAHA_AV>' '"#tmpA#"'");
Yamaha Power ON:

Code: Alles auswählen

! Yamaha einschalten
var tmpA = "http://192.168.178.5/YamahaRemoteControl/ctrl";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
dom.GetObject("CUxD.CUX2801001:10.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV>' '"#tmpA#"'");
Lauter stellen:

Code: Alles auswählen

! Yamaha lauter schalten
var tmpA= "http://192.168.178.5/YamahaRemoteControl/ctrl";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
dom.GetObject("CUxD.CUX2801001:10.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><Main_Zone><Volume><Lvl><Val>Up 5 dB</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>' '"#tmpA#"'");

Radio 1 einstellen:

Code: Alles auswählen

! Yamaha lRadio 1 einstellen
var tmpA= "http://192.168.178.5/YamahaRemoteControl/ctrl";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";

dom.GetObject("CUxD.CUX2801001:10.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><NET_RADIO><List_Control><Direct_Sel>Line_1</Direct_Sel></List_Control></NET_RADIO></YAMAHA_AV>' '"#tmpA#"'");

Analog habe ich verschiedene Radiosender eingestellt.

Meinen Yamaha habe ich in den Einstellungen auf -45dB eingestellt, somit starte ich mit einem Default Wert.

Danke an Alle für die Hinweise.
Gruß
Martin
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von MartinBr » 16.05.2017, 08:33

Hallo, ich habe ein Startscript erstellt, um alles durchzuschalten:
[img]/Users/martin/Desktop/Bildschirmfoto%202017-05-16%20um%2008.28.26.png[/img]

Die Programme sehen so aus:

Code: Alles auswählen

var tmpA = dom.GetObject("Yamaha Power On");
tmpA.ProgramExecute();
Ich muss leider das Programm zur Auswahl des Net Radio Senders 3 mal aufrufen, um mich durch die Menüstruktur zu navigieren. Ich werde noch testen, wie ich ein "Enter" übertragen kann.
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von MartinBr » 16.05.2017, 08:36

Hier noch der Screen Shot, im vorlaufenden Posting ist mir ein Fehler unterlaufen:
Dateianhänge
Bildschirmfoto 2017-05-16 um 08.28.26.png
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

Benutzeravatar
UwePa
Beiträge: 329
Registriert: 26.08.2015, 06:27
System: CCU
Wohnort: Berlin (Speckgürtel)
Hat sich bedankt: 25 Mal
Danksagung erhalten: 3 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von UwePa » 16.05.2017, 11:15

Hallo,


mir persönlich, auch weil ich nicht wirklich programmieren kann, wäre das zu unübersichtlich.

Ich würde das Script auf die CuxD schieben und dann dieses aus einem Programm aufrufen.
Das Script kann mit Notepad++ (oder sonst ein Editor) bearbeitet werden.

Hast Du mehrere Sender die Du zu verschiedenen Aktionen aufrufen willst ist es in 2 Minuten angepasst.

MfG
Mit freundlichen Grüßen

Uwe

--------------////////-------------
CCU3 und fast nur noch HMIP

Mutter gibt es wirklich sowas, wie den perfekten Mann?
Sicher Kind, sie werden Biker genannt ;-)

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von MartinBr » 16.05.2017, 11:45

Hallo,

meinst du die Scipte aus heimkino.de? kannst du dein Script evtl Uploaden? Wie hast du die auf die CCU2 hochgeladen?

Wie rufst du die Scripte auf?

Zu deiner Frage:
Ich habe für mich und für meine Frau jeweils einen getrennten Sender einprogrammiert. Wenn die Anwesenheitssteuerung mich identifiziert, startet mein Sender.

Gruß
Martin
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

Benutzeravatar
UwePa
Beiträge: 329
Registriert: 26.08.2015, 06:27
System: CCU
Wohnort: Berlin (Speckgürtel)
Hat sich bedankt: 25 Mal
Danksagung erhalten: 3 Mal

Re: [Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von UwePa » 16.05.2017, 18:47

Hallo,

Programme, als Script aufrufen

Code: Alles auswählen

!Datei Berliner.sh
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/sh /usr/local/addons/berliner.sh

Die Datei ist eine sh Datei.
Entpacken.
Mit ftp ins Verzeichnis local User addons

Es passiert folgendes.
Power on
Netradio
1 Lesezeichen
5 Ordner
1 erste Station
Lautstärke einstellen.

Gruß
Dateianhänge
berliner.zip
(591 Bytes) 124-mal heruntergeladen
Mit freundlichen Grüßen

Uwe

--------------////////-------------
CCU3 und fast nur noch HMIP

Mutter gibt es wirklich sowas, wie den perfekten Mann?
Sicher Kind, sie werden Biker genannt ;-)

Antworten

Zurück zu „HomeMatic allgemein“