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?)
Boui
23. Februar 2012 um 12:55
3
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;
}
}
?>
mac106:
Müßte es nicht heißen
case ($Heizung == 1) :
also lt. php-manual nicht
@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
Boui
23. Februar 2012 um 14:53
10
[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
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)
Boui
23. Februar 2012 um 15:59
14
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
RWN
23. Februar 2012 um 16:16
16
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…