Frage zu $_IPS['VARIABLE']

Hallo und frohes neuse Jahr Euch allen noch.

Leider funktioniert $_IPS[‚VARIABLE‘] bei mir nicht so, wei ich es verstehe.

Ich möchte auswerten, welche Variable mein Script getriggert hat.

Hier bekomme ich aber eine Warnung und das script springt die erste case anweisung nicht an.

$SenderID = $_IPS['VARIABLE'];

switch($SenderID)
      {
  case $SenderID == $schalter: //Wohnung wird über Schalter verlassen und triggert script  
            setValue(20413,true);//Hilfsvariable gesetzt
  break;

  case $SenderID == $tuer && ($tuer == verriegelt && $variable == true) : //Schloß triggert script  
            setValue(50537,true);      // Wohnung aus
  break;

  case $SenderID == $tuer && ($tuer == verriegelt & $variable == false) : // Schloss bei anwesenheit
      setValue(50537,true);      // Wohnung aus
  break; 

  case $SenderID == $tuer && ($tuer == entriegelt) :// Türschloss offen    
      setValue(50537,false);      // Wohnung an
  break;
     }

Könntest Du uns etwas mehr Script geben… wie wurden die $schalter etc. erzeugt?

Gruß
Dennis

Welche?
Und wann kommt die Warnung.
Das Script darf nicht per Hand (über die Konsole) ausgeführt werden, sondern nur über ausgelöste Ereignisse, sonst ist der Wert ‚VARIABLE‘ nicht vorhanden.
Michael

Aha, danke Michael,

das erklärt warum die Warnung kommt, dass das Array für Variable nicht existiert…

Nun muss ich nur noch herrausfinden, warum case 1 nicht angesprungen wird.

Hier das gesammte scrip.


//Schaltet die Varialble v anwesend, wenn Tür durch Schalter verriegel wurde in die Wohnung verlassen ist RS 03.01.24

$tuer = GetValue(13013); // Motorschloss

$schalter = Getvalueboolean(26128);// Wandschalter

$variable = Getvalueboolean(20413);

$SenderID = $_IPS['VARIABLE'];

$SenderID = $_IPS[‚VARIABLE‘];

switch($SenderID)
{
case $SenderID == $schalter: //Wohnung wird über Schalter verlassen und triggert script
setValue(20413,true);//Hilfsvariable gesetzt
break;

   case $SenderID == $tuer && ($tuer == verriegelt && $variable == true) : //Schloß triggert script  
           setValue(50537,true);      // Wohnung aus
   break;

   case $SenderID == $tuer && ($tuer == verriegelt & $variable == false) : // Schloss bei anwesenheit
             setValue(50537,true);      // Wohnung aus
    break; 

    case $SenderID == $tuer && ($tuer == entriegelt) :// Türschloss offen    
             setValue(50537,false);      // Wohnung an
     break;
 }
[/quote]

das wird auch so nicht funktionieren.
verriegelt ist keine Variable und auch kein Wert. Das ist so ein Syntax Fehler.
Und Abfragen in case sind auch schlecht, das gibt unvorhergesehene Resultate.

Entweder klassisch mit if Arbeiten oder ein Mix z.B. so:

$schalter = Getvalueboolean(26128);// Wandschalter

$SenderID = $_IPS['VARIABLE'];

switch($SenderID)
{
  case 13013: // ID von Variable Tür
    if ($_IPS['VALUE']){ // <--- VALUE emthält den neuen Wert von Variable 13013.
      // hier wenn Auslöser 13013 und neuer Wert auf true => Geschlossen)

      // $variable  = Getvalueboolean(20413) brauchen wir nicht..
      // war ja oben egal ob true/false, es wurde immer
      SetValue(50537,true);      // Wohnung aus geschaltet
    } else {
      // hier wenn Auslöser 13013  und neuer Wert auf false=> geöffnet)
    }
    break;
  case 42896:
    // hier wenn Auslöser 42896
    break;
  // usw...
}
Michael

gelöscht, da war Michael schneller

Vielen Dank,
habe wieder was gelernt