Verstärker über LAN steuern

Dann würde ich den Weg gehen ein Makro-Script zu nehmen;
Wie rufe ich Scripts aus einem Script auf???

Jörg

So jetzt geh ich aber wieder mit meiner Kleinen radfahrenüben.

IPS_RunScript (xxxxx);

http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/ablaufsteuerung/

http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/

So Sport beendet, jetzt gehts wieder weiter mit dem Prog.

Eine Frage bezüglich der Rückmeldung vom Verstärker;
Damit ich vom Verstärker den Status bekommen muss ich einen Befehl senden (!1PWRQSTN), dass senden des Befaehl ist ja dank der Hilfe von RWN kein Problem, aber wie zeige ich den Wert im Webfront an?
Benötige ich die RegisterVariable überhaupt?

Noch eine ganz andere Frage: Kann/darf man mit den ELV FS20 Energiesparlampen steuern?

Jörg

Den Wert zeigst Du genauso an wie die Sendebefehle.

Variable anlegen und den ausgelesenen Wert der Variable zuweisen.

Ansonsten hilft ein Blick in die oben geposteten Links, da steht eigentlich alles drinnen, genauso wie dein FS20. Lies das Datenblatt, da steht was Du darfst oder nicht.

Hallo zusammen,

ich glaube ich hab da was zum Thema.
Das Skript ist weder fertig noch vollständig, aber ein Anfang.
Ein Dankeschön an philipp :).

Nochwas zum Cutter:

linkes Trennzeichen : 21 31 hex (!1)
rechtes Trennzeichen: 1A hex (EOF)
Timeout : 0


  <?php
//Onkyo lesesktipt

$data=$IPS_VALUE;

$maincat = substr($data,0,3); //Eventidentifikation
//$zonecat= substr($data,0,1); //Zoneneventidentifikation

switch($maincat)
     {
case "PWR": //MainPower
     $item = "Power";
     $vtype = 0;
     if ($data == "PWR01")
     {
     $value = true;
     }
     if ($data == "PWR00")
     {
     $value = false;
     }
     DenonSetValue($item, $value, $vtype);
break;

case "MVL": //Mastervolume
//     if (substr($data,3) =="MAX")
//     {
//     }
//     else
//     {
     $item = "MasterVolume";
     $vtype = 2;                    			//2
     $itemdata=substr($data,3);     			// hier kommt hex raus

       $value = hexdec ($itemdata);        //hex in dec
//     $valuetemp = hexdec ($itemdata);        //hex in dec
//     $valuetemp=str_pad ( $valuetemp, 3, "0" );    // 0 anhängen
//     $value = (intval($valuetemp)/10) -82;            // in db umrechnen
//     }
     DenonSetValue($item, $value, $vtype);
//     }
 break;

case "AMT": //MainMute
     $item = "MainMute";
     $vtype = 0;
     if ($data == "AMT01")
     {
     $value = true;
     }
     if ($data == "AMT00")
     {
     $value = false;
     }
     DenonSetValue($item, $value, $vtype);
break;

case "IFA": 
     $item = "Display audio";
     $vtype = 3;
     $itemdata=substr($data,3);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "IFV": 
     $item = "Display video";
     $vtype = 3;
     $itemdata=substr($data,3);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "SLI": //Source Input
     $item = "MainInput";
     $vtype = 3;
     $itemdata=substr($data,3);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "SV": //Video Select
     $item = "Video Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "LMD": //Surroound
     $item = "Surround Mode";
     $vtype = 3;              //3
     $itemdata=substr($data,3);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "DC": //Digital Input Mode
     $item = "Digital Input Mode";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "SD": //Input Mode
     $item = "Input Mode";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "SR": //Record Selection
     $item = "Record Selection";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "VS": //Videosignal
   $vssub=substr($data,2,2);
   switch($vssub)
   {
      case "MO": //HDMI Monitor
      $item = "HDMI Monitor";
         $vtype = 3;
         $itemdata=substr($data,5);
         $value = $itemdata;
         DenonSetValue($item, $value, $vtype);
        break;

        case "AS": //Aspect
      $item = "Aspect";
         $vtype = 3;
         $itemdata=substr($data,5);
         $value = $itemdata;
         DenonSetValue($item, $value, $vtype);
        break;

        case "SC": //Scaler
      $item = "Scaler";
         $vtype = 3;
         $itemdata=substr($data,4);
         $value = $itemdata;
         DenonSetValue($item, $value, $vtype);
        break;
   }
break;

case "LMD": //Sound
   $pssub=substr($data,3,2);
   switch($pssub)
   {
      case "TO": //Tone Defeat
         $item = "ToneDefeat";
         $vtype = 0;
         if ($data == "PSTONE DEFEAT ON")
         {
         $value = true;
         }
         if ($data == "PSTONE DEFEAT OFF")
         {
         $value = false;
         }
         DenonSetValue($item, $value, $vtype);
        break;

        case "CI": //Cinema EQ
         $item = "Cinema EQ";
         $vtype = 0;
         if ($data == "PSCINEMA EQ.ON")
         {
         $value = true;
         }
         if ($data == "PSCINEMA EQ.OFF")
         {
         $value = false;
         }
         DenonSetValue($item, $value, $vtype);
        break;

        case "SB": //Suround Back Mode
      $item = "Suround Back Mode";
         $vtype = 3;
         $itemdata=substr($data,5);
         $value = $itemdata;
         DenonSetValue($item, $value, $vtype);
        break;

        case "RO": //Room EQ Mode
      $item = "Room EQ Mode";
         $vtype = 3;
         $itemdata=substr($data,10);
         $value = $itemdata;
         DenonSetValue($item, $value, $vtype);
        break;


   }
break;

//Zone 2 Integration
case "Z": //Source Input

switch ($zonecat)
{
case "PHONO": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "CD": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "TUNER": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "DVD": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "HDP": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "TV/CBL": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "SAT": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "VCR": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "DVR": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "V.AUX": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "NET/USB": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "USB": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "IPOD": //Source Input Z2
     $item = "Zone2Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "ON": //Zone 2 ON
     $item = "Zone2";
     $vtype = 0;
     $value = true;
     DenonSetValue($item, $value, $vtype);
break;

case "OFF": //Zone 2 OFF
     $item = "Zone2";
     $vtype = 0;
     $value = False;
     DenonSetValue($item, $value, $vtype);
break;

case "MUON": //Zone 2 Mute ON
     $item = "Zone2 Mute";
     $vtype = 0;
     $value = true;
     DenonSetValue($item, $value, $vtype);
break;

case "MUOFF": //Zone 2 Mute OFF
     $item = "Zone2 Mute";
     $vtype = 0;
     $value = False;
     DenonSetValue($item, $value, $vtype);
break;
}

if (intval($zonecat) <100 and intval($zonecat) >9){
    $item = "Zone2Volume";
     $vtype = 2;
     $itemdata=substr($data,2);
     if ( $itemdata == "99")
     {
     $value = "";
     }
     else
     {
     $itemdata=str_pad ( $itemdata, 3, "0" );
     $value = (intval($itemdata)/10) -80;
     }
     DenonSetValue($item, $value, $vtype);
    }
break;

//Zone 3 Integration
case "Z3": //Source Input

switch ($zonecat)
{
case "PHONO": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "CD": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "TUNER": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "DVD": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "HDP": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "TV/CBL": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "SAT": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "VCR": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "DVR": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "V.AUX": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "NET/USB": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "USB": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "IPOD": //Source Input Z2
     $item = "Zone3Input";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     DenonSetValue($item, $value, $vtype);
break;

case "ON": //Zone 2 ON
     $item = "Zone3";
     $vtype = 0;
     $value = true;
     DenonSetValue($item, $value, $vtype);
break;

case "OFF": //Zone 2 OFF
     $item = "Zone3";
     $vtype = 0;
     $value = False;
     DenonSetValue($item, $value, $vtype);
break;

case "MUON": //Zone 2 Mute ON
     $item = "Zone3 Mute";
     $vtype = 0;
     $value = true;
     DenonSetValue($item, $value, $vtype);
break;

case "MUOFF": //Zone 2 Mute OFF
     $item = "Zone3 Mute";
     $vtype = 0;
     $value = False;
     DenonSetValue($item, $value, $vtype);
break;
}

if (intval($zonecat) <100 and intval($zonecat) >9){
    $item = "Zone3Volume";
     $vtype = 2;
     $itemdata=substr($data,2);
     if ( $itemdata == "99")
     {
     $value = "";
     }
     else
     {
     $itemdata=str_pad ( $itemdata, 3, "0" );
     $value = (intval($itemdata)/10) -80;
     }
     DenonSetValue($item, $value, $vtype);
    }
break;

}








 function DenonSetValue($item, $value, $vtype) //Function welche Variablen anlegt und updated
{
   $DenonID = IPS_GetCategoryIDByName("ONKYO_TX-SR707",0); //Prüft ob Hauptkategorie angelegt ist
   if ($DenonID == 0)
   {
   $DenonID = IPS_CreateCategory();
   IPS_SetName($DenonID, "ONKYO_TX-SR707");
   }

	$itemID = IPS_GetVariableIDByName($item, $DenonID); //Prüft ob Variable vorhanden ist
	if ($itemID ==0)
	{
	$itemID= IPS_CreateVariable($vtype); //Variable neu anlegen
	IPS_SetName($itemID, $item);
	IPS_SetParent($itemID, $DenonID);
	}

switch($vtype) //Variable updaten
{
case 0: //Boolean
SetValueBoolean($itemID, $value);
break;

case 1: //Integer
SetValueInteger($itemID, $value);
break;

case 2: //Float
SetValueFloat($itemID, $value);
break;

case 3: //String
SetValueString($itemID, $value);
break;
}
}
?>

Input im Klartext:


<?

 $S = GetValueString(32118 /*[ONKYO_TX-SR707\MainInput]*/);

    if ($S == 10) ($S1= "BD");
elseif ($S == 01) ($S1= "Dreambox");
elseif ($S == 00) ($S1= "ASRock");
elseif ($S == 02) ($S1= "WII");
elseif ($S == 23) ($S1= "SqueezeBox");

SetValueString(13108 /*[ONKYO_TX-SR707\MainInput Text]*/, $S1);

?>

Audiomode in Klartext:


<?

$S = GetValueString(11440 /*[ONKYO_TX-SR707\Surround Mode]*/);

    if ($S == "00") ($S1= "STEREO");
elseif ($S == "01") ($S1= "DIRECT");
elseif ($S == "02") ($S1= "SURROUND");
elseif ($S == "03") ($S1= "FILM Game-RPG");
elseif ($S == "04") ($S1= "THX");
elseif ($S == "05") ($S1= "ACTION Game-Action");
elseif ($S == "06") ($S1= "MUSICAL Game-Rock");
elseif ($S == "08") ($S1= "ORCHESTRA");
elseif ($S == "09") ($S1= "UNPLUGGED");
elseif ($S == "0A") ($S1= "STUDIO-MIX");
elseif ($S == "0B") ($S1= "TV LOGIC");
elseif ($S == "0C") ($S1= "ALL CH STEREO");
elseif ($S == "0D") ($S1= "THEATER-DIMENSIONAL");
elseif ($S == "0E") ($S1= "ENHANCED 7/ENHANCE  Game-Sports");
elseif ($S == "0F") ($S1= "MONO");
elseif ($S == "11") ($S1= "PURE AUDIO");
elseif ($S == "13") ($S1= "FULL MONO");
elseif ($S == "15") ($S1= "DTS Surround Sensation");
elseif ($S == "16") ($S1= "Audyssey DSX");
elseif ($S == "40") ($S1= "Straight Decode*1");
elseif ($S == "41") ($S1= "Dolby EX*2");
elseif ($S == "42") ($S1= "THX Cinema");
elseif ($S == "43") ($S1= "THX Surround EX");
elseif ($S == "44") ($S1= "THX Music");
elseif ($S == "45") ($S1= "THX Games");
elseif ($S == "50") ($S1= "U2/S2 Cinema/Cinema2");
elseif ($S == "51") ($S1= "MusicMode,U2/S2 Music");
elseif ($S == "52") ($S1= "Games Mode,U2/S2 Games");
elseif ($S == "80") ($S1= "PLII/PLIIx Movie");
elseif ($S == "81") ($S1= "PLII/PLIIx Music");
elseif ($S == "82") ($S1= "Neo:6 Cinema");
elseif ($S == "83") ($S1= "Neo:6 Music");
elseif ($S == "84") ($S1= "PLII/PLIIx THX Cinema");
elseif ($S == "85") ($S1= "Neo:6 THX Cinema");
elseif ($S == "86") ($S1= "PLII/PLIIx Game");
elseif ($S == "89") ($S1= "PLII/PLIIx THX Games");
elseif ($S == "8A") ($S1= "Neo:6 THX Games");
elseif ($S == "8B") ($S1= "PLII/PLIIx THX Music");
elseif ($S == "8C") ($S1= "Neo:6 THX Music");
elseif ($S == "90") ($S1= "PLIIz Height");
elseif ($S == "91") ($S1= "Neo:6 Cinema DTS Surround Sensation");
elseif ($S == "92") ($S1= "Neo:6 Music DTS Surround Sensation");
elseif ($S == "94") ($S1= "PLIIz Height + THX Cinema");
elseif ($S == "95") ($S1= "PLIIz Height + THX Music");
elseif ($S == "96") ($S1= "PLIIz Height + THX Games");
elseif ($S == "97") ($S1= "PLIIz Height + THX U2/S2 Cinema");
elseif ($S == "98") ($S1= "PLIIz Height + THX U2/S2 Music");
elseif ($S == "99") ($S1= "PLIIz Height + THX U2/S2 Games");
elseif ($S == "A0") ($S1= "PLIIx/PLII Movie + Audyssey DSX");
elseif ($S == "A1") ($S1= "PLIIx/PLII Music + Audyssey DSX");
elseif ($S == "A2") ($S1= "PLIIx/PLII Game + Audyssey DSX");
elseif ($S == "A3") ($S1= "Neo:6 Cinema + Audyssey DSX");
elseif ($S == "A4") ($S1= "Neo:6 Music + Audyssey DSX");
elseif ($S == "A7") ($S1= "Dolby EX + Audyssey DSX");
SetValueString(44389 /*[ONKYO_TX-SR707\Surround Mode Text]*/, $S1);
?>

Hallo D__S,

ich habe eine Frage, bei Dir tauchen im Script Denon und Onkyo auf, hast Du das die Namen nur vermischt oder nutzt Du Beide?

Jörg

Hallo RWN,

Du hast zum Anzeigen folgendes geschrieben:


//empfangen über Registervariable
if ($IPS_SENDER == "RegisterVariable")
{
    SetValue($IPS_VARIABLE, $IPS_VALUE);
}

//................................  

```php

Wenn ich bis jetzt alles richtig verstanden habe, dann liest dieses Script den Wert aus der RegisterVarianle aus;
Aber wie schaffe ich es den Wert über die Variable anzuzeigen?

Jörg

„DenonSetValue“ wird nur in diesem Skript benutzt.

d.h. du kanst es gerne in „OnkyoSetValue“ umbenennen;).

Hallo,

wie bindest Du die Steuerung ins Webfront ein?
Ich hab da so meine Probleme, vor allem mit den Statusanzeigen, die bekomme ich nicht hin.

das Ergebniss sieht bei mir so aus.

(das mit dem „db“ Stimmt nicht)

Hallo,
wie hast Du die Statusanzeigen in Webfront bekommen (Scripte und Variablen Einstellungen)?

Jörg

@ RWN,

kannst Du mir nochmal mit dem Anzeigen des Wertes helfen.
Ich habe den Code von Dir in ein Script kopiert bin mir aber bei //… schon nicht mehr sicher was ich hier eintragen muss, geschweigeden wie ich die zugehörige Variable händle.
Nochmals kurz, ich bekomme eine Statusmeldung vom Verstärker wenn ich z.B. den Befehl !1PWRQSTN (als Frage) an den Verstärker schicke.

Vielen Dank

Jörg

z.B. so.

//empfangen über Registervariable
if ($IPS_SENDER == "RegisterVariable")
{
    $daten = $IPS_VALUE;
   SetValue(12345, $daten);
}

Hallo RWN,

Danke für die Antwort, ich bin erst wieder am Abend vor meinem PC.
Noch zum Verständniss:
Ich hänge das Script an die RegVar, definiere eine Varibale (12345) in welche das Script die Daten schreibt und hänge dann die Variable ins Webfront;
Welchen Wert muss die Variable haben (string,…)?

Jörg

Das ist als Beispiel gedacht und setzt dir alle empfangenen Werte in eine Variable, was Du aber sicher nicht willst.

Da Du leider immer noch keinerlei Info gegeben hast , wie so ein Datenstring aussieht, kann man dir auch nicht helfen.

Hallo RWN,

bezüglich Datenanzeigen:
Das Sendenfunktioniert;
Ich hab nochmals nachgelesen und der Receiver sendet den Status bei erfolgreichem Ausführen des Befehls automatisch zurück.
Senden: !1PWR01
Empfangen: !1PWR01
Der Receiver sollte also !1PWR01 an den PC schicken.
Im ersten Schritt möchte ich einfach !1PWR01 im Webfront sehen, sobald das funktioniert möchte ich den Status entsprechend anzeigen z.B. per Ikon.

und wo ist jetzt dein Problem. Um eine Variable im Webfront anzuzeigen muss sie ein Variablenprofil haben.

Steht alles hier schon mal geschrieben. Nur zum Anzeigen, muss kein Aktionsscript zugeordnet werden.

welchen Wert muss die Variable haben? intr, string,…
und wie muss das Variablenprofil aussehen;
ich habe das Script von Dir „auslesen“ mit der Variable verbunden, ich hoffe das war richtig?

Jörg

Wenn du nur „!1PWR01“ anzeigen willst nimm String, dafür gibt es ein fertiges Profil, ~String.

Ich habe oben geschrieben es wird kein Aktiosscript benötigt zum anzeigen. Das Script muss der Registervariable zugeordnet werden!!!

Hallo,
ich habe folgendes gemacht, siehe Bilder, aber angezeigt bekomme ich nicht.
Was mach ich blos falsch???