[Yamaha AVR] nicht nur schalten, auch abfragen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
Manu
Beiträge: 126
Registriert: 17.10.2014, 01:49
Wohnort: Ruhrpott

[Yamaha AVR] nicht nur schalten, auch abfragen

Beitrag von Manu » 07.02.2016, 20:36

Hi zusammen,

ich arbeite gerade an einem grösseren TCL-Script für Yamaha AVR's. Um den einzuschalten, Quelle umschalten, Lautstärke regeln, etc. gibt es ja mehrere Postings hier. Ich will aber mehr:
  • - Power-Status zyklisch prüfen (fertig)
    - aktuelle Lautstärke abfragen (fertig)
    - aktuelle Quelle abfragen (fertig)
    - aktuellen Sender/Lied abfragen (NET_RADIO, SERVER & TUNER fertig)
    - ...mal sehen, was mir noch einfällt
Das Script ist so ausgelegt, dass man im "Config-Bereich" wählen kann, was man alles abfragen will und auch die Variablen-Namen selbst definieren kann (erstellt werden sie dann automatisch vom Script).

Voraussetzung: CUxD

Code: Alles auswählen

! Definitionen
var yam_ip="192.168.188.45";  ! IP-Adresse des AVR
var cuxd_dev="CUX2801001:9";  ! Adresse des benutzten CUxD-Devices
var yam_zone="Main_Zone";  ! Main_Zone, Zone_2, Zone_3, Zone_4
var yam_song_check=1;  ! sollen die Meta-Infos abgefragt werden? (NET_RADIO, SERVER)
var yam_vol_check=1;  ! soll die aktuelle Lautstärke geprüft werden?

var yam_var_power="Yamaha Power"; ! SysVar für den Power-Status
var yam_var_source="Yamaha Input";  ! SysVar für die Quelle
var yam_var_song="Yamaha PlayNow";  ! SysVar für die Meta-Infos
var yam_var_vol="Yamaha Volume";  ! SysVar für die Lautstärke

var Debug = 0;  ! zum Testen ;-)

! Parameter
var yam_power= "<Power_Control><Power>GetParam</Power></Power_Control>";
var yam_source="<Input><Input_Sel>GetParam</Input_Sel></Input>";
var yam_net_radio="<NET_RADIO><Play_Info>GetParam</Play_Info></NET_RADIO>";
var yam_server="<SERVER><Play_Info>GetParam</Play_Info></SERVER>";
var yam_tuner="<Tuner><Play_Info>GetParam</Play_Info></Tuner>";
var yam_vol="<Volume><Lvl>GetParam</Lvl></Volume>";


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

var url= "http://"#yam_ip#"/YamahaRemoteControl/ctrl";
var cURL="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."#cuxd_dev#".CMD_SETS").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\"><"#yam_zone#">"#yam_power#"</"#yam_zone#"></YAMAHA_AV>' '"#url#"'");
dom.GetObject("CUxD."#cuxd_dev#".CMD_QUERY_RET").State(1);
string rueckgabe = dom.GetObject("CUxD."#cuxd_dev#".CMD_RETS").State();

integer standby_cp = rueckgabe.Find("Standby");
integer on_cp = rueckgabe.Find("On");

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

if ((standby_cp)!="-1") { 
	integer anfang_cp = rueckgabe.Find("Standby");
	integer ende_cp = rueckgabe.Find(" /Power");
	integer yam_power_cp = rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp);
	svObj.State(false);
	string  svName = yam_var_song;
	object  svObj  = dom.GetObject(svName);
	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		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("---");
}
if ((on_cp)!="-1") { 
	integer anfang_cp = rueckgabe.Find("On");
	integer ende_cp = rueckgabe.Find(" /Power");
	integer yam_power_cp = rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp);
	svObj.State(true);
}

if (Debug == 1) {
	WriteLine((system.Date("%H:%M:%S"))#": "#rueckgabe);    
	WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp );
	WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp );
	WriteLine((system.Date("%H:%M:%S"))#": "#yam_power_cp);
	WriteLine((system.Date("%H:%M:%S"))#": "#svObj.State().ToString());
}

if ((on_cp)!="-1") {
	! SOURCE
	dom.GetObject("CUxD."#cuxd_dev#".CMD_SETS").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\"><"#yam_zone#">"#yam_source#"</"#yam_zone#"></YAMAHA_AV>' '"#url#"'");
	dom.GetObject("CUxD."#cuxd_dev#".CMD_QUERY_RET").State(1);
	string rueckgabe = dom.GetObject("CUxD."#cuxd_dev#".CMD_RETS").State();

	integer anfang_cp = rueckgabe.Find("Input_Sel ")+10;
	integer ende_cp = rueckgabe.Find(" /Input_Sel");
	string yam_source_cp = rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp);
	! dom.GetObject('Yamaha Input').State(yam_source_cp);
	string  svName = yam_var_source;
	object  svObj  = dom.GetObject(svName);

	if (!svObj){   
		object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
		svObj = dom.CreateObject(OT_VARDP);
		svObjects.Add(svObj.ID());
		svObj.Name(svName);   
		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(yam_source_cp);

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

	if (yam_song_check == 1) {
		! NET_RADIO
		if (yam_source_cp == "NET RADIO") {
			dom.GetObject("CUxD."#cuxd_dev#".CMD_SETS").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\">"#yam_net_radio#"</YAMAHA_AV>' '"#url#"'");
			dom.GetObject("CUxD."#cuxd_dev#".CMD_QUERY_RET").State(1);
			string rueckgabe = dom.GetObject("CUxD."#cuxd_dev#".CMD_RETS").State();
			integer anfang_cp = rueckgabe.Find("Station ")+8;
			integer ende_cp = rueckgabe.Find(" /Station");
			string ausgabe_cp = rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp);
			integer anfang_cp2 = rueckgabe.Find("Song ")+5;
			integer ende_cp2 = rueckgabe.Find(" /Song");
			string ausgabe_cp2 = rueckgabe.Substr(anfang_cp2,ende_cp2-anfang_cp2);
			string yam_net_radio_cp = ausgabe_cp#": "#ausgabe_cp2;

			string  svName = yam_var_song;
			object  svObj  = dom.GetObject(svName);
			if (!svObj){   
				object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
				svObj = dom.CreateObject(OT_VARDP);
				svObjects.Add(svObj.ID());
				svObj.Name(svName);   
				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(yam_net_radio_cp);
		
			if (Debug == 1) {
				WriteLine((system.Date("%H:%M:%S"))#": "#rueckgabe);    
				WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp );
				WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp );
				WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp2 );
				WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp2 );
				WriteLine((system.Date("%H:%M:%S"))#": "#yam_net_radio_cp);
			}
		}

		! SERVER
		if (yam_source_cp == "SERVER") {
			dom.GetObject("CUxD."#cuxd_dev#".CMD_SETS").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\">"#yam_server#"</YAMAHA_AV>' '"#url#"'");
			dom.GetObject("CUxD."#cuxd_dev#".CMD_QUERY_RET").State(1);
			string rueckgabe = dom.GetObject("CUxD."#cuxd_dev#".CMD_RETS").State();

			integer anfang_cp = rueckgabe.Find("Artist ")+7;
			integer ende_cp = rueckgabe.Find(" /Artist");
			string ausgabe_cp = rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp);

			integer anfang_cp2 = rueckgabe.Find("Song ")+5;
			integer ende_cp2 = rueckgabe.Find(" /Song");
			string ausgabe_cp2 = rueckgabe.Substr(anfang_cp2,ende_cp2-anfang_cp2);
	
			string yam_server_cp = ausgabe_cp#" - "#ausgabe_cp2;
		
			string  svName = "Yamaha PlayNow";
			object  svObj  = dom.GetObject(svName);
			if (!svObj){   
				object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
				svObj = dom.CreateObject(OT_VARDP);
				svObjects.Add(svObj.ID());
				svObj.Name(svName);   
				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(yam_server_cp);

			if (Debug == 1) {
				WriteLine((system.Date("%H:%M:%S"))#": "#rueckgabe);    
				WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp );
				WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp );
				WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp2 );
				WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp2 );
				WriteLine((system.Date("%H:%M:%S"))#": "#yam_server_cp);
			}
		}
		! TUNER
		if (yam_source_cp == "TUNER") {
			dom.GetObject("CUxD."#cuxd_dev#".CMD_SETS").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\">"#yam_tuner#"</YAMAHA_AV>' '"#url#"'");
			dom.GetObject("CUxD."#cuxd_dev#".CMD_QUERY_RET").State(1);
			string rueckgabe = dom.GetObject("CUxD."#cuxd_dev#".CMD_RETS").State();
			integer anfang_cp = rueckgabe.Find("Program_Service ")+16;
			integer ende_cp = rueckgabe.Find(" /Program_Service");
			string ausgabe_cp = rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp);
			integer anfang_cp2 = rueckgabe.Find("Radio_Text_A ")+13;
			integer ende_cp2 = rueckgabe.Find(" /Radio_Text_A");
			string ausgabe_cp2 = rueckgabe.Substr(anfang_cp2,ende_cp2-anfang_cp2);
			integer anfang_cp3 = rueckgabe.Find("Radio_Text_A ")+13;
			integer ende_cp3 = rueckgabe.Find(" /Radio_Text_A");
			string ausgabe_cp3 = rueckgabe.Substr(anfang_cp2,ende_cp2-anfang_cp2);

			string yam_net_radio_cp = ausgabe_cp#": "#ausgabe_cp2#" - "#ausgabe_cp3;

			string  svName = yam_var_song;
			object  svObj  = dom.GetObject(svName);
			if (!svObj){   
				object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
				svObj = dom.CreateObject(OT_VARDP);
				svObjects.Add(svObj.ID());
				svObj.Name(svName);   
				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(yam_net_radio_cp);
		
			if (Debug == 1) {
				WriteLine((system.Date("%H:%M:%S"))#": "#rueckgabe);    
				WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp );
				WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp );
				WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp2 );
				WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp2 );
				WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp3 );
				WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp3 );
				WriteLine((system.Date("%H:%M:%S"))#": "#yam_net_radio_cp);
			}
		}
		if ((yam_source_cp != "NET RADIO") && (yam_source_cp != "SERVER") && (yam_source_cp != "TUNER")){
			dom.GetObject('Yamaha PlayNow').State(yam_source_cp);
		}
	}
	else {
		dom.GetObject('Yamaha PlayNow').State(yam_source_cp);
	}
	if (yam_vol_check == 1) {
		!Volume
		dom.GetObject("CUxD."#cuxd_dev#".CMD_SETS").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\"><"#yam_zone#">"#yam_vol#"</"#yam_zone#"></YAMAHA_AV>' '"#url#"'");
		dom.GetObject("CUxD."#cuxd_dev#".CMD_QUERY_RET").State(1);
		string rueckgabe = dom.GetObject("CUxD."#cuxd_dev#".CMD_RETS").State();

		integer anfang_cp = rueckgabe.Find("Val ")+4;
		integer ende_cp = rueckgabe.Find(" /Val");
		string yam_vol_cp = (rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp).ToFloat())/10;

		string  svName = yam_var_vol;
		object  svObj  = dom.GetObject(svName);

		if (!svObj){   
			object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
			svObj = dom.CreateObject(OT_VARDP);
			svObjects.Add(svObj.ID());
			svObj.Name(svName);   
			svObj.ValueType(ivtFloat);
			svObj.ValueSubType(istGeneric);
			svObj.DPInfo("aktuelle Lautstärke des Yamaha AVR");
			svObj.ValueUnit("dB");
			svObj.ValueMin(-80);
			svObj.ValueMax(0);
			svObj.State(15);
			svObj.Internal(false);
			svObj.Visible(true);
			dom.RTUpdate(false);
		}
		svObj.State(yam_vol_cp); 

		if (Debug == 1) {
			WriteLine((system.Date("%H:%M:%S"))#": "#rueckgabe);    
			WriteLine((system.Date("%H:%M:%S"))#": "#anfang_cp );
			WriteLine((system.Date("%H:%M:%S"))#": "#ende_cp );
			WriteLine((system.Date("%H:%M:%S"))#": "#yam_vol_cp);
		}
	}
	if (Debug == 1) {
		WriteLine((system.Date("%H:%M:%S"))#": Debug ENDE");    
	}
}
Ich habe -leider- nur den RX-V475, daher bin ich da etwas eingeschränkt in der Programmierung. Wenn wer mit testen möchte mit einem grösseren AVR, im Anhang die Befehlsreferenz von Yamaha.
RX AX10 VX71 Series Function Tree.xls
(2.18 MiB) 1205-mal heruntergeladen
Das Teil erstellt euch auf Knopfdruck die nötigen "GET"-Befehle für curl.
Yamaha Function Tree.jpg
Diese findet ihr dann im gleichen Ordner der XLS als TXT-Datei (GET_Ether_*********.txt).

Ihr könnt die Antworten zu den Funktionen ganz leicht herausbekommen. Hier mein "Test-Script":

Code: Alles auswählen

var url= "http://[AVR-IP]/YamahaRemoteControl/ctrl";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
dom.GetObject("CUxD.[CUxD-Adresse].CMD_SETS").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"GET\">[gewünschte Funktion]</YAMAHA_AV>' '"#url#"'");
dom.GetObject("CUxD.[CUxD-Adresse].CMD_QUERY_RET").State(1);
string rueckgabe = dom.GetObject("CUxD.[CUxD-Adresse].CMD_RETS").State();
WriteLine(rueckgabe); 
[AVR-IP] durch die IP eures AVR ersetzen
[gewünschte Funktion] einsetzen (Beisp.: <Main_Zone><Volume><Lvl>GetParam</Lvl></Volume></Main_Zone>)
[CUxD-Adresse] anpassen (Beisp.: CUX2801001:9)


Als Antwort würde in dem Beispiel kommen:

Code: Alles auswählen

 YAMAHA_AV rsp="GET" RC="0"  Main_Zone  Volume  Lvl  Val -620 /Val  Exp 1 /Exp  Unit dB /Unit  /Lvl  /Volume  /Main_Zone  /YAMAHA_AV 
Diese könnt ihr dann mit z.B.:

Code: Alles auswählen

integer anfang_cp = rueckgabe.Find("Val ")+4;
integer ende_cp = rueckgabe.Find(" /Val");
integer ausgabe_cp = rueckgabe.Substr(anfang_cp,ende_cp-anfang_cp);
WriteLine(ausgabe_cp);
auswerten.
"Val" ist in dem Beispiel die Antort auf <Main_Zone><Volume><Lvl>GetParam</Lvl></Volume></Main_Zone>
Ergebnis von WriteLine(ausgabe_cp) in dem Beipiel:(sprich -62.0 dB)

WICHTIG: gebt dem AVR eine EIGENE CUxD-Adresse! Ich habe nicht umsonst die CUX2801001:9 genommen. 1-8 sind bei mir schon von anderen Geräten belegt (Pushbullet, Fritzbox, etc.). Beim Senden gäbe es keine Probleme, aber beim Empfangen der Antworten.
Du kannst ja auch nicht auf einem Telefon gleichzeitig mehrere Anrufe beantworten (klar kannst Du, aber die CCU kann weder Anklopfen noch Konferenzschaltung :P )
Zuletzt geändert von Manu am 19.06.2017, 12:53, insgesamt 15-mal geändert.
Gruß
Manu

Telegram-Messenger zur Interaktion mit der CCU(2) | [Yamaha AVR] nicht nur schalten, auch abfragen | Daten der HM-Wetterstation bei wetter.com bereitstellen

1x HM-CCU2 | 1x HM-CFG-LAN | 1x HM-CC-SCD | 1x HM-ES-PMSw1-DR | 3x HM-ES-PMSw1-Pl | 1x HM-LC-B|1-FM | 6x HM-LC-Bl1PBU-FM | 8x HM-LC-Dim1PWM-CV | 1x HM-LC-Sw1-Ba-PCB | 8x HM-LC-Sw1-FM | 4x HM-LC-Sw1PBU-FM | 2x HM-LC-Sw1-Pl-2 | 7x HM-LC-Sw2-FM | 1x HM-LC-Sw4-Ba-PCB | 1x HM-LC-Sw4-PCB | 1x HM-LC-Sw4-WM | 1x HM-MOD-EM-8 | 1x HM-MOD-Re-8 | 1x HM-OU-CF-Pl | 1x HM-OU-CM-PCB | ix HM-OU-LED16 | 3x HM-PB-2-WM55 | 5x HM-PB-2-WM55-2 | 10x HM-PB-6-WM55 | 1x HM-SCI-3-FM | 1x HM-SWI-3-FM | 1x HM-PBI-4-FM | 2x HM-RC-4-2 | 1x HM-Sec-MDIR-2 | 4x HM-Sec-RHS | 1x HM-Sec-SC-2 | 3x HM-Sec-SCo | 8x HM-Sec-SD | 1x HM-Sec-WDS-2 | 1x HM-Sen-MDIR-WM55 | 1x HM-Sys-sRP-Pl | 2x HM-TC-IT-WM-W-EU | 1x HM-WDS100-C6-O | 2x HM-WDS30-OT2-SM | 1x HM-WDS40-TH-I | 1x WA100HM | 3x Fritz!DECT200 via CUxD
geplant: HM-Dis-WM55

mikewolf99
Beiträge: 1322
Registriert: 13.08.2008, 20:57
Wohnort: Österreich nähe Wien
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

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

Beitrag von mikewolf99 » 08.02.2016, 10:57

Hallo ,
Ich hätte Interesse hab zwar keinen Yamaha sondern 3 x pioneer
Sollte aber dann für mich keine Problem sein dies umzubauen
Mit freundlichen Grüßen
Mikewolf


Sent from my iPhone 6 plus using Tapatalk
CCU2 mit Cuxd und HP CLX ,3 x FHZ2000,2 Funkgateway (eckig),und 2 Funkgateway (rund),RS LanGate
ca 590 Komponenten gemischt HM und FS20 90/10)`CCU auf Cubie LXCCU,CCU auf RPi3 Pivccu,Iobroker auf HPgen8,
Tinker,orangepi,Odroid .....,Sonoffs,Xiaomi und ne Menge esp8266

curiosity
Beiträge: 29
Registriert: 14.11.2015, 16:46

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

Beitrag von curiosity » 08.02.2016, 11:34

Hallo,

da bekunde ich auch mal interesse dran. Besitze zwar keinen Yamaha AVR, sondern ein Denon. Aber das dürfte man ja anpassen können. :wink:

Benutzeravatar
metaxa
Beiträge: 649
Registriert: 01.10.2011, 00:03
Wohnort: südliches Wien
Hat sich bedankt: 3 Mal

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

Beitrag von metaxa » 08.02.2016, 20:16

*Finger heb`* - Bin auch sehr interessiert!

Über eine Anzahl an Befehlen dieser Art bin ich noch nicht hinausgekommen (z.B.):

Code: Alles auswählen

   ! schaltet in der MainZone auf HDMI2
    ! dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(cURL#" -X POST -H 'Content-Type: text/xml; charset=UTF-8' -d '<YAMAHA_AV cmd=\"PUT\"><Main_Zone><Input><Input_Sel>HDMI2</Input_Sel></Input></Main_Zone></YAMAHA_AV>' '"#url#"'");
LG, mxa

Benutzeravatar
Manu
Beiträge: 126
Registriert: 17.10.2014, 01:49
Wohnort: Ruhrpott

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

Beitrag von Manu » 08.02.2016, 20:28

Hi,

Script im ersten Posting (immer das aktuelle)

dann mal die ersten "Entwürfe". Alles, was im Script steht, funktioniert schon. Die Lautstärke-Abfrage habe ich nochmal raus genommen. Die ist doch noch etwas "buggy" :evil:

Ich kann den AVR immer nur dann "missbrauchen", wenn Frauchen grad nicht Musik o.ä. hört. Und da bei uns tagsüber fast immer NET RADIO an ist... :roll: :lol:
Morgen habe ich noch "Karnevals-Frei", Frauchen muss bis 14 Uhr arbeiten :mrgreen:
Gruß
Manu

Telegram-Messenger zur Interaktion mit der CCU(2) | [Yamaha AVR] nicht nur schalten, auch abfragen | Daten der HM-Wetterstation bei wetter.com bereitstellen

1x HM-CCU2 | 1x HM-CFG-LAN | 1x HM-CC-SCD | 1x HM-ES-PMSw1-DR | 3x HM-ES-PMSw1-Pl | 1x HM-LC-B|1-FM | 6x HM-LC-Bl1PBU-FM | 8x HM-LC-Dim1PWM-CV | 1x HM-LC-Sw1-Ba-PCB | 8x HM-LC-Sw1-FM | 4x HM-LC-Sw1PBU-FM | 2x HM-LC-Sw1-Pl-2 | 7x HM-LC-Sw2-FM | 1x HM-LC-Sw4-Ba-PCB | 1x HM-LC-Sw4-PCB | 1x HM-LC-Sw4-WM | 1x HM-MOD-EM-8 | 1x HM-MOD-Re-8 | 1x HM-OU-CF-Pl | 1x HM-OU-CM-PCB | ix HM-OU-LED16 | 3x HM-PB-2-WM55 | 5x HM-PB-2-WM55-2 | 10x HM-PB-6-WM55 | 1x HM-SCI-3-FM | 1x HM-SWI-3-FM | 1x HM-PBI-4-FM | 2x HM-RC-4-2 | 1x HM-Sec-MDIR-2 | 4x HM-Sec-RHS | 1x HM-Sec-SC-2 | 3x HM-Sec-SCo | 8x HM-Sec-SD | 1x HM-Sec-WDS-2 | 1x HM-Sen-MDIR-WM55 | 1x HM-Sys-sRP-Pl | 2x HM-TC-IT-WM-W-EU | 1x HM-WDS100-C6-O | 2x HM-WDS30-OT2-SM | 1x HM-WDS40-TH-I | 1x WA100HM | 3x Fritz!DECT200 via CUxD
geplant: HM-Dis-WM55

Benutzeravatar
PaulchenPanther
Beiträge: 157
Registriert: 13.06.2015, 12:26
Danksagung erhalten: 1 Mal

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

Beitrag von PaulchenPanther » 14.04.2016, 22:15

Hallo,
ich hätte auch Interesse. Ich habe allerdings einen etwas älteren AVR. >> RX-V 2700.
Der hängt zwar auch am LAN, hat aber noch kein eigenes Web-Interface für die Remotesteuerung :(
Ich hab vor langer Zeit mal im Netz recherchiert und auch ein paar Sachen gefunden, aber auf Grund der sehr mageren Dokumentation nicht ernsthaft weitergemacht.
- Yamaha macht diese Steuerung ja selbst mit seinem Yamaha-Cast (oder wie die ihre MultiRoom-Lösung nennen) rein über IP.
- allerdings sehr schlecht Dokumentiert bzw. Doku nicht öffentlich zugänglich :cry:

Kann mir jemand sagen ob das Script mit diesem AVR - in welchem Umfang zunächst auch immer - funktionieren würde?

Wenn ja, was müsste ich zuvor alles auf der CCU / im CUxD einrichten um einen ersten Test durchzuführen?
v.G./PP

krifi
Beiträge: 3
Registriert: 26.11.2015, 12:32
Hat sich bedankt: 2 Mal

Statusabfrage Yamaha RX-V475 AN - AUS (Standby)

Beitrag von krifi » 25.04.2016, 00:00

vielen Dank für das Teilen des Script's

ich nutze auch den Yamaha RX-V475 ich benötige eine Steuerung:
Wenn Yamaha Status AN - dann Steckdose AN
Wenn Yamaha Status AUS - dann Steckdose AUS
die Abfragen mit dem Script funktionieren soweit, weiter komme ich aber nicht.

Benutzeravatar
Manu
Beiträge: 126
Registriert: 17.10.2014, 01:49
Wohnort: Ruhrpott

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

Beitrag von Manu » 26.04.2016, 20:38

Jetzt brauchst Du nur noch ein Programm dieser Art:
Programm.JPG
Gruß
Manu

Telegram-Messenger zur Interaktion mit der CCU(2) | [Yamaha AVR] nicht nur schalten, auch abfragen | Daten der HM-Wetterstation bei wetter.com bereitstellen

1x HM-CCU2 | 1x HM-CFG-LAN | 1x HM-CC-SCD | 1x HM-ES-PMSw1-DR | 3x HM-ES-PMSw1-Pl | 1x HM-LC-B|1-FM | 6x HM-LC-Bl1PBU-FM | 8x HM-LC-Dim1PWM-CV | 1x HM-LC-Sw1-Ba-PCB | 8x HM-LC-Sw1-FM | 4x HM-LC-Sw1PBU-FM | 2x HM-LC-Sw1-Pl-2 | 7x HM-LC-Sw2-FM | 1x HM-LC-Sw4-Ba-PCB | 1x HM-LC-Sw4-PCB | 1x HM-LC-Sw4-WM | 1x HM-MOD-EM-8 | 1x HM-MOD-Re-8 | 1x HM-OU-CF-Pl | 1x HM-OU-CM-PCB | ix HM-OU-LED16 | 3x HM-PB-2-WM55 | 5x HM-PB-2-WM55-2 | 10x HM-PB-6-WM55 | 1x HM-SCI-3-FM | 1x HM-SWI-3-FM | 1x HM-PBI-4-FM | 2x HM-RC-4-2 | 1x HM-Sec-MDIR-2 | 4x HM-Sec-RHS | 1x HM-Sec-SC-2 | 3x HM-Sec-SCo | 8x HM-Sec-SD | 1x HM-Sec-WDS-2 | 1x HM-Sen-MDIR-WM55 | 1x HM-Sys-sRP-Pl | 2x HM-TC-IT-WM-W-EU | 1x HM-WDS100-C6-O | 2x HM-WDS30-OT2-SM | 1x HM-WDS40-TH-I | 1x WA100HM | 3x Fritz!DECT200 via CUxD
geplant: HM-Dis-WM55

Janniman
Beiträge: 212
Registriert: 08.04.2015, 14:29
Wohnort: Seevetal
Hat sich bedankt: 2 Mal

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

Beitrag von Janniman » 26.04.2016, 22:35

Hallo Manu,

ich habe auch einen 475er, daher schon einmal vielen Dank für all deine Mühen!
Was man/ich sonst noch bräuchte, das wäre die vier Modi (Szenen) BD/TV/Radio/NET. Was am wichtigsten wäre, was aber nicht mit WireShark etc. zu loggen war, das ist die Zuschaltung der ZoneB. Erklärung: bei 475 ist die Zone B KEINE eigenständige Zone, sondern nur an der Zone A "abgezwackt", kann also nicht mit eigener Lautstärke eingestellt werden, wie bei den größeren Modellen. Darauf laufen meine HiFi-Lautsprecher, daher hätte ich diese gerne beim Fernsehen aus, bei Radio an...

Der eigentliche Grund, warum ich also schreibe, ist eine Frage: Wie rufst du den Status mit dem Script denn ab? alle paar Sekunden? nur bei Bedienung? (dann wäre es aber nicht aktuell, wenn meine Frauen die Fernbedienung benutzt haben)...?
Ich frage deshalb, weil es auch eine Möglichkeit wäre den Status über Mediola NEO abzufragen. Die Eingaben habe ich über IP schon alle drin, nur ohne Rückmeldung.

Liebe Grüße,

Jan

Benutzeravatar
Manu
Beiträge: 126
Registriert: 17.10.2014, 01:49
Wohnort: Ruhrpott

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

Beitrag von Manu » 26.04.2016, 23:11

Janniman hat geschrieben:ich habe auch einen 475er, daher schon einmal vielen Dank für all deine Mühen!
Was man/ich sonst noch bräuchte, das wäre die vier Modi (Szenen) BD/TV/Radio/NET. Was am wichtigsten wäre, was aber nicht mit WireShark etc. zu loggen war, das ist die Zuschaltung der ZoneB. Erklärung: bei 475 ist die Zone B KEINE eigenständige Zone, sondern nur an der Zone A "abgezwackt", kann also nicht mit eigener Lautstärke eingestellt werden, wie bei den größeren Modellen. Darauf laufen meine HiFi-Lautsprecher, daher hätte ich diese gerne beim Fernsehen aus, bei Radio an...
Der 475'er hat eine Zone B? Hm... ist mir neu. Der hat 5.1, mehr nicht. Ich mag mich irren, keine Frage. Was Du haben möchtest, habe ich dem RV anders gelöst. Dabei habe ich insg. acht Lautsprecher an den 4 Ausgängen (Center jetzt nicht mitgezählt). Der verträgt 4 Ohm, daher kein Problem je zwei 8 Ohm Lautsprecher parallel an je einen Ausgang anzuschliessen. Die Lautsprecher, die zusätzlich zum 5.1 angeschlossen sind, werden über ein HM-LC-Sw4-Ba-PCB und dahintergeschalteten Relais ein- und ausgeschaltet. Wenn Du ein netzwerkfähigen TV hast, CUxD-Ping und je nach Antwort Lautsprecher an oder aus. Frisst weniger Rechenleistung un der CCU :wink:
Gruß
Manu

Telegram-Messenger zur Interaktion mit der CCU(2) | [Yamaha AVR] nicht nur schalten, auch abfragen | Daten der HM-Wetterstation bei wetter.com bereitstellen

1x HM-CCU2 | 1x HM-CFG-LAN | 1x HM-CC-SCD | 1x HM-ES-PMSw1-DR | 3x HM-ES-PMSw1-Pl | 1x HM-LC-B|1-FM | 6x HM-LC-Bl1PBU-FM | 8x HM-LC-Dim1PWM-CV | 1x HM-LC-Sw1-Ba-PCB | 8x HM-LC-Sw1-FM | 4x HM-LC-Sw1PBU-FM | 2x HM-LC-Sw1-Pl-2 | 7x HM-LC-Sw2-FM | 1x HM-LC-Sw4-Ba-PCB | 1x HM-LC-Sw4-PCB | 1x HM-LC-Sw4-WM | 1x HM-MOD-EM-8 | 1x HM-MOD-Re-8 | 1x HM-OU-CF-Pl | 1x HM-OU-CM-PCB | ix HM-OU-LED16 | 3x HM-PB-2-WM55 | 5x HM-PB-2-WM55-2 | 10x HM-PB-6-WM55 | 1x HM-SCI-3-FM | 1x HM-SWI-3-FM | 1x HM-PBI-4-FM | 2x HM-RC-4-2 | 1x HM-Sec-MDIR-2 | 4x HM-Sec-RHS | 1x HM-Sec-SC-2 | 3x HM-Sec-SCo | 8x HM-Sec-SD | 1x HM-Sec-WDS-2 | 1x HM-Sen-MDIR-WM55 | 1x HM-Sys-sRP-Pl | 2x HM-TC-IT-WM-W-EU | 1x HM-WDS100-C6-O | 2x HM-WDS30-OT2-SM | 1x HM-WDS40-TH-I | 1x WA100HM | 3x Fritz!DECT200 via CUxD
geplant: HM-Dis-WM55

Antworten

Zurück zu „HomeMatic allgemein“