HowTo - Yamaha Verstärker per LAN/Netzwerk steuern

Zugriff auf Variablen in IPS -> http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/variablenzugriff/

Beispiel für slider http://www.ip-symcon.de/service/dokumentation/vorgehensweisen/variablenprofile-verwenden/beispiel2/

Hallo Nerathan,

über das Beispiel mit dem Slider bin ich schon gestolpert und hab das auch versucht , das problem ist nur das unser yamaha scheinbar nur down 2-5 und up 2-5 versteht , somit wär wohl ein slider nicht so geeignet , es sei denn man erhöht den wert solange um 5 bis wert x dann erreicht ist.

macht das einer von euch auch mit dem Slider und kann mir nen Rat oder Tip geben?

Ganz konkret gehts bei uns um den Konferenzraum , der soll dann nicht nur die Klima und licht machen sondern eben auch den Sound und das Bild. Das einzige woran ich noch grüble ist die Volumen Regulierung :frowning:

Grüße Marcel

Hallo Gemeinde,

ich probiere gerade mal die Scripte von Phillip aus (seite 2 dieses threads).

allerdings beträgt die Laufzeit der Scripte 3 Sekunden !!!

Liegt das am Verstärker ? liefert der nicht schnell genug zurück ?

Socket mit keep Alive habe ich am Start…
Verbindung ist stabil.

Ich habe noch eine Registervariable erstellt, weiß aber leider nicht genau, was ich mit dieser anstellen soll ?

Muß ich etwa dem Script noch beibringen, daß ich einen Socket und eine Registervariable habe ?
Und wenn ja…wie ? :slight_smile:

Falls ihr mir da mal ein wenig auf die sprünge helfen könntet, wäre das toll :slight_smile:

Hier mal ein Beispielscript, das 3 Sekunden läuft :

 <?
$host = '192.168.123.78';      //IP des Gerätes anpassen!



//Lautstärke
$send = send_to_host($host,'<YAMAHA_AV cmd="GET"><Main_Zone><Volume><Lvl>GetParam</Lvl></Volume></Main_Zone></YAMAHA_AV>');
$Laustaerke = substr($send,57,3);
SetValue(42353 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpL\Status Volume]*/, $Laustaerke);

//echo $Laustaerke;




function send_to_host($host, $data){

    //echo $data;  //zum prüfen

    $command_lenght = strlen($data);

    //echo $command_lenght;    //zum prüfen

    $head = "";
    $head .= "POST /YamahaRemoteControl/ctrl HTTP/1.1
";
    $head .= "Host: ".$host."
";
    $head .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
";
    $head .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
";
    $head .= "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
";
    $head .= "Accept-Encoding: gzip, deflate
";
    $head .= "Connection: keep-alive
";
    $head .= "Content-Type: text/xml; charset=UTF-8
";
    $head .= "Referer: http://".$host."/
";
    $head .= "Content-Length: ".$command_lenght."
";
    $head .= "Pragma: no-cache
";
    $head .= "Cache-Control: no-cache

";
    $head .= $data;
    //echo $head; //zum prüfen

    $fp = fsockopen($host, 80) or die("Unable to open socket");
    fputs($fp, $head);

    $buf = "";

   while (!feof($fp))
        $buf .= fgets($fp,128);

          $zeile = explode("
", $buf);
        foreach( $zeile as $Laustaerke );


    fclose($fp);

        return $Laustaerke;
}


?>

LG
Sascha

Nachtrag: Ich habe jetzt ein „ausgelöstes Ereigniss“ erstellt, welches dann immmer das Script laufen läßt, wenn ich über das Webfront die Lautstärke ändere, das funktioniert…aber natürlich ändert sich nichts, wenn ich die Fernbedienung vom Verstärker benutze…

Ich habe so etwas änliches für meine Squeezebox umgesetzt…aber leider nicht alleine :frowning: Meine Squeezebox „schickt“ alle statusmeldungen an IPS…egal von wo aus ich sie steuere…Also denke ich, mein Hauptproblem ist die Anbindung an den socket und die register variable…

Sooooo, jetzt habe ich genug Thesen aufgestellt…auf einer Skala von 0-10…wie nah bin ich denn schon an der Wahrheit ? :slight_smile:

Moin…

… Triggert Deine RegisterVariable ein Skript?
Sollten Daten da ankommen, sollte dieses skript welches Du mit der RegVar verknüpft hast diese auswerten!
Gruß,
Peter

Moin Peter,

da kommt ja tatsächlich etwas an :slight_smile: Hab gerade mal die Registervariable auf dbug laufen lassen und die lautstärke verändert…

@Main:VOL=-66.0

So…und nu ?

Gibts ein minibeispiel nur mal um die Lautstärke im Webfront anzuzeigen ?
Also eine String Variable damit füttern…allerdings hätte ich gerne nur das -66.0 und würde das dann mit " dB" im String ergänzen…

Aber das sieht ja alles schon mal gar nicht schlecht aus…
Nur das mein obiges Script 3 Sekunden braucht, gibt mir noch zu denken…

LG und Danke für den Anstoß
Sascha

Ich habe einen Denon Receiver und kenn die Skripte des Yamahas nicht. Ich denke aber das da irgendwo ein Skript sein muss, welches Du mit der Register Variablen verknüpfen musst und welches dann, wenn der Receiver etwas sendet, deine Variablen füllt bzw. aktualisiert!
Zumindest es beim Denon so.
Ich kann mir die Skripte leider übers iphone nicht anschauen bzw. ist es sehr anstrengend per Tapatalk.

Ps: Ok… es schein hier nix fertiges von einem User zum Yamaha zu geben. Da war die Integration meines Denons dank Raketenschnecke mal wieder purer Luxus!!

Hallo den Zustand der Yamaha lass ich die folgt auswerten :


 <?
$host = '192.168.178.26';      //IP des Gerätes anpassen!

$send = send_to_host($host,'<YAMAHA_AV cmd="GET"><Main_Zone><Power_Control><Power>GetParam</Power></Power_Control></Main_Zone></YAMAHA_AV>');
$ausgabe = substr($send,61,2);

// echo $ausgabe;
SetValue(12639 /*[Licht und Strom\Yamaha	est]*/, $ausgabe);
 //         If ($ausgabe == "St")
 //            {
 //            SetValue(19904 /*[Licht und Strom\Yamaha\Yamaha An/Aus]*/  , False);
 //            }
 //           else
 //            {
 //            SetValue(19904 /*[Licht und Strom\Yamaha\Yamaha An/Aus]*/  , True);
 //            }
 
// Gerät AN AUS
$send = send_to_host($host,'<YAMAHA_AV cmd="GET"><Main_Zone><Power_Control><Power>GetParam</Power></Power_Control></Main_Zone></YAMAHA_AV>');
$Status = substr($send,61,2);
// echo $Status;
If ($Status == 'On')
{
SetValue(19904 /*[Licht und Strom\Yamaha\Yamaha An/Aus]*/  , True);

// Raum Küche

// Raum Arbeitszimmer

//Lautstärke
$send = send_to_host($host,'<YAMAHA_AV cmd="GET"><Main_Zone><Volume><Lvl>GetParam</Lvl></Volume></Main_Zone></YAMAHA_AV>');
$Laustaerke = substr($send,57,3);
SetValue(15289 /*[Licht und Strom\Yamaha\aktuelle Laustärke]*/ , $Laustaerke);
SetValue(52216 /*[Licht und Strom\Yamaha\ Lautsärke Regler]*/  , $Laustaerke);


//Partymodus
//$send = send_to_host($host,'<YAMAHA_AV cmd="GET"><Main_Zone><Volume><Lvl>GetParam</Lvl></Volume></Main_Zone></YAMAHA_AV>');
//$party = substr($send,57,3);
//SetValue(15289 /*[Licht und Strom\Yamaha\aktuelle Laustärke]*/ , $party);



//Input gewählt
$send = send_to_host($host,'<YAMAHA_AV cmd="GET"><Main_Zone><Input><Input_Sel>GetParam</Input_Sel></Input></Main_Zone></YAMAHA_AV>');
$Input = $send;
$chars = preg_split("/Input_Sel>|Input_Sel>/", $Input, PREG_SPLIT_OFFSET_CAPTURE);
$chars[1] =explode("</", $chars[1]);
SetValue(29561 /*[Licht und Strom\Yamaha\Input zur Zeit gewählt]*/  , $chars[1][0]);

//NET Radio Sender
$send = send_to_host($host,'<YAMAHA_AV cmd="GET"><NET_RADIO><Play_Info>GetParam</Play_Info></NET_RADIO></YAMAHA_AV>');
$Preset = $send;
$chars = preg_split("/Station>|Station>/", $Preset, PREG_SPLIT_OFFSET_CAPTURE);
$chars[1] =explode("</", $chars[1]);
SetValue(30723 /*[Licht und Strom\Yamaha\zur Zeit laufender Radiosender]*/ , $chars[1][0]);

}
else
{
SetValue(19904 /*[Licht und Strom\Yamaha\Yamaha An/Aus]*/  , False);
}

function send_to_host($host, $data){

    //echo $data;  //zum prüfen

    $command_lenght = strlen($data);

    //echo $command_lenght;    //zum prüfen

    $head = "";
    $head .= "POST /YamahaRemoteControl/ctrl HTTP/1.1
";
    $head .= "Host: ".$host."
";
    $head .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
";
    $head .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
";
    $head .= "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
";
    $head .= "Accept-Encoding: gzip, deflate
";
    $head .= "Connection: keep-alive
";
    $head .= "Content-Type: text/xml; charset=UTF-8
";
    $head .= "Referer: http://".$host."/
";
    $head .= "Content-Length: ".$command_lenght."
";
    $head .= "Pragma: no-cache
";
    $head .= "Cache-Control: no-cache

";
    $head .= $data;
    //echo $head; //zum prüfen

    $fp = fsockopen($host, 80) or die("Unable to open socket");
    fputs($fp, $head);

    $buf = "";

   while (!feof($fp))
        $buf .= fgets($fp,128);

          $zeile = explode("
", $buf);
        foreach( $zeile as $ausgabe );


    fclose($fp);

        return $ausgabe;

}


?>

die Lautstärke wird dann angezeigt, lass das einfach alle 10 sekunden laufen.

Hallo

habt noch ein Monat Geduld.
Ich werd mir sehr wahrscheinlich einen Yamaha RX-V773 zu Weihnachten schenken und mir dann die Scripte ordentlich zur Brust nehmen.

gruß
bb

Hallo Bernhard,

den kann ich empfehlen ! Genau diesen habe ich hier auch.
Da können wir dann ja eine Arbeitsgruppe bilden :slight_smile:

Ich bin schon ein Schritt weiter…in ein paar Stunden sollte das vorzeigefähig sein…

Bis jetzt sieht es so aus und funktioniert einwandfrei, ich habe sogar ein verzögerten keep Alive und verzögerten I/O Socket umgesetzt…schnurrt wie ein Kätzchen hier :slight_smile:

(Script der Register Variable zum Auswerten, leider nicht von mir…aber ich habs selber kopiert und ergänzt )

 <?
$antwort = $_IPS['VALUE'];
$array = explode ( ':', $antwort ); // Antwortstring in Array umwandeln

$quelle = $array[0];
$array2 = explode ( '=', $array[1] ); // Antwortstring in Array umwandeln
$funktion = $array2[0];
$ausgabe = GetValue(39261 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Status Power]*/);

If($array[0] == "@MAIN")
{
    switch($funktion)
           {
              case "VOL":
                 SetValue(42353 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpL\Status Volume]*/, $array2[1]." dB");
              break;

              case "PWR":
                 SetValue(39261 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Status Power]*/, $array2[1]);
              break;
              
              case "TONETREBLE":
                 SetValue(53315 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Klangregelung\Höhen]*/, $array2[1]." dB");
              break;
              
              case "TONEBASS":
                 SetValue(27454 /*[Mein Haus\Multimedia\Geräte\Verstärker\AmpR\Klangregelung\Bässe]*/, $array2[1]." dB");
              break;
              
           }
}
$wert = $array2[1];
//echo $array2[1];


?>

LG
Sascha

@Fraunhofer: Danke für dein Beispiel, aber ich denke, ich versuche das mit der Register Variablen beizubehalten, da die Werte hier nur im Bedarfsfall und nahezu Echtzeit aktualisiert werden.

Also ich nutze z.B. einen RX-A820 …

Slider für Webfront

include("18660.ips.php");

if ($IPS_SENDER == "WebFront")
{
    //Wert ändern
    SetValue($IPS_VARIABLE, $IPS_VALUE);
    
    //Wert anpassen
    $vol = $IPS_VALUE;
    //echo $IPS_VALUE;
    $vol = $vol*10;
    
    
    //An Receiver senden
    $send = send_to_host($host,'<YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>'.$vol.'</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Volume></Main_Zone></YAMAHA_AV>');
    echo $send;
}

?>

Beispiel für die Auswertung der Registervariable (analog wie bei Sascha):

<?
$antwort = $_IPS['VALUE'];
$array = explode ( ':', $antwort ); // Antwortstring in Array umwandeln

$quelle = $array[0];

$array2 = explode ( '=', $array[1] ); // Antwortstring in Array umwandeln
$funktion = $array2[0];

switch($quelle)
{
	case "@MAIN":

		switch($funktion)
			   {
			      case "VOL":
			         SetValue(45510 /*[Media\Yamaha RX-A820\Main_Volume]*/, trim($array2[1])."db");
			         SetValue(56996 /*[Media\Yamaha RX-A820\Volume]*/, number_format($array2[1]));
			      break;

			      case "PWR":
			         SetValue(23757 /*[Media\Yamaha RX-A820\Main_Power]*/, trim($array2[1]));
			      break;
			   }
	break;
			   
	case "@ZONE2":

		switch($funktion)
			   {
			      case "VOL":
			         SetValue(41934 /*[Media\Yamaha RX-A820\Zone2_Volume]*/, trim($array2[1])."db");
			      break;

			      case "PWR":
			         SetValue(36239 /*[Media\Yamaha RX-A820\Zone2_Power]*/, trim($array2[1]));
			      break;
			   }
	break;
			   
	case "@SYS":

		switch($funktion)
			   {
			      case "PARTY":
			         SetValue(36580 /*[Media\Yamaha RX-A820\Partymode]*/, trim($array2[1]));
			      break;
			   }
	break;
			   
}

//debug
//echo $array2[1];

?>

na das sieht doch schon richtig gut aus .
Ich habe es bei mir nur so gemacht weil sich noch kein Yamaha Fan geoutet hatte :slight_smile:
Ich versuch mal eurem Beispiel zu folgen.

Ich hatte es erst mit dem Entertain Script versucht , funktioniert aber bei mir nicht so und ist aufwendig und als noob war es mir zu schwer .

Stellt , bitte , mal alle Scripts rein , das ich auf den aktuellen Stand komme.

Juhuuu…endlich kann ich mal jemanden helfen :slight_smile:

Mach ich gerne…gib mir noch ein, zwei Tage, um wirklich ein ausgefeiltes Script für die Yamaha Verstärker zu liefern…

Wie sieht es denn bei dir mit der Infrastruktur schon aus ?

I/O Socket angelegt ?
Registervariable angelegt ?

Wie wird dein Yamaha mit Strom versorgt ?:

  • Hast du Netzwerk Standby im Yamaha eigestellt ?
  • Wird er stromseitig komplett getrennt ? (Ich habe zum Beispiel eine schaltbare Steckdose, was mir über Nacht ALLES vom Strom trennt)

Je nachdem, wie deine Antworten ausfallen, muß man das „keep Alive“ Script anpassen…

LG
Sascha

Warum ist die Einstellung vom Keep Alive davon abhängig? Evtl. löst das ja auch meine Verbindungsprobleme mit dem Socket… es ist oft so, das die Verbindung quasi weg ist und ich noch keine Lösung gefunden habe die das zuverlässig behebt. Die Verbindung kommt zwar wieder, aber wenn man gerade per FB etwas geändert hat, dann bekommt IPS das evtl. in dem Moment nicht mit.
Netzwerkstandby ist aktiviert und komplett Stromlos ist der Receiver nicht, sondern nur im Standby!

Alle 20sec.

$power = GetValue(23757 /*[Media\Yamaha RX-A820\Main_Power]*/);
if($power != "Standby")
{
	RegVar_SendText(27009 /*[Client Socket RX-A820\Register Variable]*/,"@SYS:MODELNAME=?".chr(13).chr(10));
}


else if($power == "Standby")
{
	RegVar_SendText(27009 /*[Client Socket RX-A820\Register Variable]*/, "@MAIN:PWR=?".chr(13).chr(10)); 
}


Gruß
Jens

Hier mal was kleines…is noch nicht aufgeräumt im Webfront…mehr folgt…

<?
// Yamaha Verstärker Auswertscript V 1.2                              19.11.2013

// Referenz: Yamaha RX-V773

// Konfigbereich

// Input Namenszuweisung frei zuweisbar (bitte anpassen)

    $HDMI1 = 'HDMI1 - Topfield'; // Freier Name für  jeden INPUT
    $HDMI2 = 'HDMI2 - Playstation';
    $HDMI3 = 'HDMI3 - HTPC';
    $HDMI4 = 'HDMI4 - Dune';
    $HDMI5 = 'HDMI5 - Frei';

    $av1   = 'AV-1';
    $av2   = 'AV-2';
    $av3   = 'AV-3';
    $av4   = 'AV-4';
    $av5   = 'AV-5';
    $av6   = 'AV-6';

 $netradio = 'Net Radio';
 $frontaux = 'Front AUX';

  $audio1  = 'Audio 1';
  $audio2  = 'Audio 2';
  $phono   = 'Phono';
  $tuner   = 'Tuner';
  $napster = 'Napster';
  $airplay = 'AirPlay';
  $server  = 'Server';
  $usb     = 'Front USB';


// Variablenzuweisung (bitte anpassen)

    $vol   = 43270;  // Floatvariable für Volumeanzeige
    $pwr   = 39261;  // Stringvariable für Poweranzeige
    $input = 19231;  // Stringvariable für Inputanzeige
   $treble = 48246;  // Floatvariable für Klangregelungsanzeige Höhen
     $bass = 59337;  // Floatvariable für Klangregelungsanzeige Bässe
  $station = 22987;  // Stringvariable für Radiosender/Station
     $song = 22813;  // Stringvariable für Song Titel
 $soundprg = 36820;  // Stringvariable für Soundprogrammanzeige



//################################################################################//
// Ab Hier nichts mehr ändern                                                     //
//################################################################################//

$antwort = $_IPS['VALUE'];
$array = explode ( ':', $antwort ); // Antwortstring in Array umwandeln


$array2 = explode ( '=', $array[1] ); // Antwortstring in Array umwandeln
$funktion = $array2[0];

If($array[0] == "@MAIN")
{
    switch($funktion)
           {
              case "VOL":
					   SetValue($vol, $array2[1]." dB");
               break;

              case "PWR":
                 SetValue($pwr, $array2[1]);
               break;

              case "INP":
	                 If ($array2[1] == "HDMI1".chr(13).chr(10))
						  {
	                 SetValue($input, $HDMI1);
                    SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "HDMI2".chr(13).chr(10))
						  {
	                 SetValue($input, $HDMI2);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "HDMI3".chr(13).chr(10))
						  {
	                 SetValue($input, $HDMI3);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "HDMI4".chr(13).chr(10))
						  {
	                 SetValue($input, $HDMI4);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "HDMI5".chr(13).chr(10))
						  {
	                 SetValue($input, $HDMI5);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AV1".chr(13).chr(10))
						  {
	                 SetValue($input, $av1);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AV2".chr(13).chr(10))
						  {
	                 SetValue($input, $av2);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AV3".chr(13).chr(10))
						  {
	                 SetValue($input, $av3);
	                 SetValue($song, "");
    					  SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AV4".chr(13).chr(10))
						  {
	                 SetValue($input, $av4);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AV5".chr(13).chr(10))
						  {
	                 SetValue($input, $av5);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AV6".chr(13).chr(10))
						  {
	                 SetValue($input, $av6);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "NET RADIO".chr(13).chr(10))
						  {
	                 SetValue($input, $netradio);
	                 }

	                 elseif ($array2[1] == "V-AUX".chr(13).chr(10))
						  {
	                 SetValue($input, $frontaux);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AUDIO1".chr(13).chr(10))
						  {
	                 SetValue($input, $audio1);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AUDIO2".chr(13).chr(10))
						  {
	                 SetValue($input, $audio2);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "PHONO".chr(13).chr(10))
						  {
	                 SetValue($input, $phono);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "TUNER".chr(13).chr(10))
						  {
	                 SetValue($input, $tuner);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "Napster".chr(13).chr(10))
						  {
	                 SetValue($input, $napster);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "AirPlay".chr(13).chr(10))
						  {
	                 SetValue($input, $airplay);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "SERVER".chr(13).chr(10))
						  {
	                 SetValue($input, $server);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	                 elseif ($array2[1] == "USB".chr(13).chr(10))
						  {
	                 SetValue($input, $usb);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
	              else
	                 {
	                 SetValue($input, $array2[1]);
	                 SetValue($song, "");
                    SetValue($station, "");
	                 }
              break;

              case "TONETREBLE":
                 SetValue($treble, (float)$array2[1]);
              break;

              case "TONEBASS":
                 SetValue($bass, (float)$array2[1]);
              break;

              case "SOUNDPRG":
					  SetValue($soundprg, $array2[1]);
				  break;



           }
}

If($array[0] == "@NETRADIO")
{
switch($funktion)
           {
              case "SONG":
                 SetValue($song, $array2[1]);
              break;

              case "STATION":
                 SetValue($station, $array2[1]);
              break;


              }
		}



?>

@ tetrapack:

check mal dein script…heißt dein Verstärker wirklich „Modellname“ ?
(Das kannst du dir im Onscreenmenü anzeigen lassen und auch verändern…ich hab meinen daraufhin gekürzt wegen der einfachhalberkeit zum weiterverwenden)

Ist so wie die mailadresse „Ihr Name“ :slight_smile:

ich hab bei mir mit scripttimern gearbeitet, um verzögert den Socket aufzumachen, da ich sonst natürlich eine Fehlermeldung erhalte. (Der Verstärker ist nicht in der Sekunde bereit, in der ich den Strom einschalte)

Aber versuch doch jenes mal alle 30 sec…geht bei mir sehr gut :

$name = 'RXV773'; // Netzwerkname des Verstärkers

CSCK_SendText(23774 /*[Yamaha Socket]*/, "@SYS:$name=?
");

LG
Sascha

Äh … also die ersten Zeilen zeigen das Ergebnis meiner Version und die letzen Zeilen deiner Version … :confused:

19.11.2013 13:41:30.00 | Transmitted Data | @SYS:MODELNAME=?

19.11.2013 13:41:30.00 | Received Data | @SYS:MODELNAME=RX-A820

19.11.2013 13:41:51.00 | Transmitted Data | @SYS:MODELNAME=?

19.11.2013 13:41:51.00 | Received Data | @SYS:MODELNAME=RX-A820

19.11.2013 13:41:57.00 | Transmitted Data | @SYS:RX-A820=?

19.11.2013 13:41:57.00 | Received Data | @UNDEFINED

19.11.2013 13:42:12.00 | Transmitted Data | @SYS:RX-A820=?

19.11.2013 13:42:12.00 | Received Data | @UNDEFINED

Das Ganze ist doch auch nur eine Anfrage an den AVR, das er seinen Namen preis gibt … von daher ist deine Variante doch eh unlogisch !?

Anfrage vom PC: System, welches Modell bist du? … Antwort vom AVR: ich bin ein RX-A820

Gruß
Jens

Hi ,
jetzt kommt endlich leben in die Bude :slight_smile:

zu deinen Fragen :
I/O Socket angelegt ? Nein , mach ich sofort auf welchen Port soll das gehen 80 ?
Registervariable angelegt ? nein wo muss ich das und wie gehts tatsächlich (eventuell PN für kurze Teamviewer session ?)

das sieht alles , sehr sehr vielversprechend aus , könnte dein erstes Script in der Abteilung „nützlich“ sein.

@ Tetrapack

ja…da geb ich dir aber mal 100%tig recht und behaupte das Gegenteil…

Ich hab noch nie so genau darauf geachtet, WAS ich ihm zum leben erhalten schicke…

Ich hab jetzt mal testweise deine Version am laufen…intervall 30 sec.

Bis jetzt is alles schön…

LG
Sascha

@Fraunhofer
PN

Hallo Zusammen,

wollte mal fragen wie weit ihr mit eurer Yamaha Steuerung seid. Das mit dem keepalive funktioniert wunderbar. Auch das Auswerte Script von Sascha läuft sehr gut. Nun habe ich angefangen einen einfachen Ein/Aus Butten zu bauen und hängeschon mit in den ersten Zeilen.

 $Zustand = GetValueString(41823 /*[Yamaha\Register Variable\Ein / Aus]*/);


   if ($Zustand == 'On')
	  {
	  CSCK_SendText(10920 /*[Yamaha]*/, "@MAIN:PWR=Standby".chr(13).chr(10));
	  } else {
	  CSCK_SendText(10920 /*[Yamaha]*/, "@MAIN:PWR=On".chr(13).chr(10));
	  }


In dem Script wird das „On“ aus der Stringvariable einfach nicht erkannt Obwohl On in der Variable Steht. Weiß einer was ich falsch mache?

Gruß
Stephan

Hi Stephan,

Versuche es mal mit

if ($Zustand == 'On
')