Integervariable auswerten

Hallo,
leider werde ich aus der Doku über Variabelenprofile nicht schlau.
Ich möchte eine Integer Variabele, die über das Webfront gesetzt wird, mit case auswerten. Die Variabele hat im Variabelenprofil 4 Zustände deklariert bekommen (1 = absenken, 2 = nicht absenken, 3 = manuel, 4 = aus)
wie muss ich die casebedingung schreiben?

Ich habe folgendes erfolglos versucht

switch($Variabele)
{
case 1:
break;
}

Für einen kurzen Hinweis bin ich sehr dankbar,

Ralph

solange Du $Variable nicht deklarierst kann das Script auch nichts auswerten. poste dochmal das gesamte Script (das war doch noch nicht alles, oder?)
:wink:

Variabele ist wohl die schwäbische Version von Variable. :D:D

Hi Raketenschnecke hier ist das ganze script gepostet.
Die variable ändert den Wert im Webfront, aber die caseanweisungen werden nicht ausgeführt. Kannst Du das nachvollziehen?

<?
$Heizung = getvalue(50243 /*[Programm\Klima\Heizung\vHeizung]*/);
if ($IPS_SENDER == "WebFront")
{
SetValue(50243 /*[Programm\Klima\Heizung\vHeizung]*/, $IPS_VALUE);

switch($Heizung)
      {
      case 1 :
          	setValue(20220 /*[Programm\Klima\Heizung\vArbeit]*/,false);
          	setValue(58326 /*[Programm\Klima\Heizung\vHeimurlaub]*/,true);
				setValue(30992 /*[Programm\Klima\Heizung\vManuel]*/,false);

	   break;
	   case 2 : 
          	setValue(20220 /*[Programm\Klima\Heizung\vArbeit]*/,true);
          	setValue(58326 /*[Programm\Klima\Heizung\vHeimurlaub]*/,false);
				setValue(30992 /*[Programm\Klima\Heizung\vManuel]*/,false);;

	   break;
	   case 3 : 
          	setValue(20220 /*[Programm\Klima\Heizung\vArbeit]*/,false);
          	setValue(58326 /*[Programm\Klima\Heizung\vHeimurlaub]*/,false);
				setValue(30992 /*[Programm\Klima\Heizung\vManuel]*/,true);

	   break;
     }
}
?>

Müßte es nicht heißen

case ($Heizung == 1) :

also lt. php-manual nicht :wink:

@ralph:
setz mal statt


switch($Heizung)

ein:


switch($IPS_VALUE)

die erste Code-Zeile in Deinem Script ist wirkungslos und kann raus.

Hallo Rakettenschnecke,
also ich habe Derine Vorschläge umgesetzt, aber leider funktioniert es immer noch nicht.:mad: Hast Du noch eine Idee?

Danke für die Hilfe!!

Ralph

tschuldigung, Raketenschnecke natürlich, will Deinen Namen ja nicht ins schwäbische übersetzen;)
Ralph

moment keine Idee, nein. Wie hast Du das Script ausgelöst? -> via Webfront?

kleiner Tipp zum Fehler eingrenzen:

arbeite mit „echo“.
setz mal z.B. unter die Zeile


SetValue(50243 /*[Programm\Klima\Heizung\vHeizung]*/, $IPS_VALUE);


echo "neu gesetzter Wert vHeizung: $IPS_VALUE";

sowas ähnliches kannst Du auch unter jeden „case“ setzen, um herauszufinden welcher case wirksam wurde

Dann das Script auslösen und beobachten, was im Meldungsfenster angezeigt wird

[Insider ON] Er hat momentan andere Probleme.[Insider OFF] :p:p:p

sowas kommt aber ins Logbuch, Du wärest schon der 2. Eintrag!

Hi, jetzt gehts. Der Tip mit echo war super. Nachdem ich die erste Zeile wieder eingebaut habe wurde jetzt auch die variabele gändert.
Danke schön Raketenschnecke, klasse diese Comunity:loveips:

gern geschehen :wink:

hä? das verstehe ich nicht. Wenn Du das so wie in deinem Posting eingebaut hast kann das nicht funktionieren.
(und „Variabele“ ignorier ich nicht mal :D)

Oh no! Das schmerzt beim Lesen. :o
Bitte bitte hier lesen: Duden

ich bin froh, dass er kein Berliner ist. Das gäbe erst recht Zahnpelz beim Lesen :smiley:

Entweder du änderts dein Script so um. Die erste Zeile steht nur an der falschen Position.

<?
if ($IPS_SENDER == "WebFront")
{
SetValue(50243 /*[Objekt #50243 existiert nicht]*/, $IPS_VALUE);
$Heizung = getvalue(50243 /*[Objekt #50243 existiert nicht]*/);
switch($Heizung)
      {
      case 1 :
              setValue(20220 /*[Objekt #20220 existiert nicht]*/,false);
              setValue(58326 /*[Objekt #58326 existiert nicht]*/,true);
                setValue(30992 /*[Objekt #30992 existiert nicht]*/,false);

       break;
       case 2 :
              setValue(20220 /*[Objekt #20220 existiert nicht]*/,true);
              setValue(58326 /*[Objekt #58326 existiert nicht]*/,false);
                setValue(30992 /*[Objekt #30992 existiert nicht]*/,false);;

       break;
       case 3 :
              setValue(20220 /*[Objekt #20220 existiert nicht]*/,false);
              setValue(58326 /*[Objekt #58326 existiert nicht]*/,false);
                setValue(30992 /*[Objekt #30992 existiert nicht]*/,true);

       break;
     }
}
?>

oder Du machst es richtig mit Systemvariablen.

if ($_IPS['SENDER'] == "WebFront")
{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    
    switch($_IPS['VALUE'])
      {
      case 1 :
              setValue(20220 /*[Objekt #20220 existiert nicht]*/,false);
              setValue(58326 /*[Objekt #58326 existiert nicht]*/,true);
                setValue(30992 /*[Objekt #30992 existiert nicht]*/,false);

       break;
       case 2 :
              setValue(20220 /*[Objekt #20220 existiert nicht]*/,true);
              setValue(58326 /*[Objekt #58326 existiert nicht]*/,false);
                setValue(30992 /*[Objekt #30992 existiert nicht]*/,false);;

       break;
       case 3 :
              setValue(20220 /*[Objekt #20220 existiert nicht]*/,false);
              setValue(58326 /*[Objekt #58326 existiert nicht]*/,false);
                setValue(30992 /*[Objekt #30992 existiert nicht]*/,true);

       break;
     }
}

…und wenn die Herren dann mit dem rum Kaspern fertig wären…:confused: