Volume Anzeige in Dashboard

Hallo,

meine Volume Anzeige im Dashboard funktioniert fast optimal.
Ich bekomme aber die Komma Werte nicht hin.
Eigentlich sollte die Anzeige xx,5 Werte Anzeigen, ebenso wie ich den Verstärker bediene.
Hier ein Bild meiner Variablen:

Könnt Ihr mir helfen?

Jörg

Mit welchem Element im Dashboard machst Du die Anzeige denn?
Hier ein Beispiel von mir:

Mein Fehler dürfte schon in der Variablen liegen;
auch hier bekomme ich keine 0,5 Schritte

Dann wird wohl das Skript, dass die Variable setzt fehlerhaft sein.

paresy

Hallo,

hier der Ausschnitt aus dem Script:


//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;
     }
     OnkyoSetValue($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
//     }
     OnkyoSetValue($item, $value, $vtype);
//     }
 break;

findet Ihr da was?

Wo wird denn die ID #12666 geschrieben? Ich denke hier kommt nur Intger an.

hier noch mal das ganze Script.
Unten werden die Variablen geschrieben.

  
//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;
     }
     OnkyoSetValue($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
//     }
     OnkyoSetValue($item, $value, $vtype);
//     }
 break;

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

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

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

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

case "PRS": //Tuner Input
//     if (substr($data,3) =="MAX")
//     {
//     }
//     else
//     {
     $item = "TunerInput";
     $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
//     }
     OnkyoSetValue($item, $value, $vtype);
//     }
 break;

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

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

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

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

case "SR": //Record Selection
     $item = "Record Selection";
     $vtype = 3;
     $itemdata=substr($data,2);
     $value = $itemdata;
     OnkyoSetValue($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;
         OnkyoSetValue($item, $value, $vtype);
        break;

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

        case "SC": //Scaler
      $item = "Scaler";
         $vtype = 3;
         $itemdata=substr($data,4);
         $value = $itemdata;
         OnkyoSetValue($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;
         }
         OnkyoSetValue($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;
         }
         OnkyoSetValue($item, $value, $vtype);
        break;

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

        case "RO": //Room EQ Mode
      $item = "Room EQ Mode";
         $vtype = 3;
         $itemdata=substr($data,10);
         $value = $itemdata;
         OnkyoSetValue($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;
     OnkyoSetValue($item, $value, $vtype);
break;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

case "MUOFF": //Zone 2 Mute OFF
     $item = "Zone2 Mute";
     $vtype = 0;
     $value = False;
     OnkyoSetValue($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;
     }
     OnkyoSetValue($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;
     OnkyoSetValue($item, $value, $vtype);
break;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

case "MUOFF": //Zone 2 Mute OFF
     $item = "Zone3 Mute";
     $vtype = 0;
     $value = False;
     OnkyoSetValue($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;
     }
     OnkyoSetValue($item, $value, $vtype);
    }
break;

}








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

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

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;
}
}

ich glaub ich habs gefunden;
so wie es aussieht bekomme ich keine ,5 Werte vom Receiver über RS232, über das OSD werden diese jedoch angezeigt.

10/31/2010 19:35:46.00 | Received Data | MVL2E
10/31/2010 19:35:47.00 | Received Data | MVL2E

der zweite Wert sollte eigentlich der ,5 Wert sein.

Schade aber da kann mann nichts machen.

Jörg

Nunja er bekommt hier ja nur eine HEX 2E geliefert, das müßten dann 46db sein. Da kann ich aus dem empfangenen Wert auch keine Nachkommastelle abbilden.