If funktion mit Bereichsbestimmung

Hi Leute,
kann mir einer sagen wo mein Fehler liegt ?
Vielen Dank
Matthias

$s = GetValue(59523 /[Homematic Jalousie Aktor\LEVEL]/);
If ($s<0 and >=19)
{SetValue(19029 /[Shutter Positionen\Status]/,1);}
If ($s<20 and >=39)
{SetValue(19029 /[Shutter Positionen\Status]/,2);}
If ($s<40 and >=69)
{SetValue(19029 /[Shutter Positionen\Status]/3);}
If ($s<70 and >=99)
{SetValue(19029 /[Shutter Positionen\Status]/,4);}

Was willst denn bestimmen, drunter, drüber oder dazwischen.

Ich weiss zwar auch nicht genau was Du machen möchtest, aber vielleicht hilft Dir ja das Beispiel… :smiley:

If ($s<20)
  {echo "Wert bis 19";}
If ($s>19 and $s<40)
  {echo "Wert zwischen 20 und 39";}
If ($s>39 and $s<70)
  {echo "Wert zwischen 40 und 69";}
If ($s>69 and $s<100)
  {echo "Wert zwischen 70 und 99";}

Schöne Grüße
Roland

@matterazi

Kann es sein, dass du dich mit dem „and“ vertan hast.
Value kann doch keine 2 verschiedene Werte gleichzeitig haben.
Du meinst bestimmt „or“, oder die >< Vergleiche passen nicht?!

… wenn der Wert kleiner 0 UND der Wert größer 19…

Das geht nun wirklich nicht

Gruß

hi zusammen,
die Ausgangsvariable soll in den Bestimmten fall gesetzt werden, wenn der Wert der Eingangs Variable zwischen einem der angegebenen Fälle liegt
hilft euch das ?

z.B. $s<0 and >=19
Wenn Die Eingangsvariable
zwischen größer 0 und kleiner gleich 19 ist soll dann die Ausgangs Variable den Wert 1 bekommen.
usw.

hi stimmt die Zeichen hauen nicht hin, habt recht!
aber die php schreibweise past auch ned oder ?

Mach das mal so:

if(($s>0) and ($s<=19))

So funzt jetzt
danke an alle


$s = GetValue(59523 /*[Backend\Physikalische Instanzen\Untergeschoss\Bürozimmer\Funktionen\Shutter\Homematic Jalousie Aktor\LEVEL]*/);
if(($s>0.0) and ($s<=0.19))
{SetValue(19029 /*[Backend\Logische Instanzen\Scripte\Funktionen\Shutter\Bürozimmer\Shutter Positionen\Status]*/,1);}
if(($s>=0.20) and ($s<=0.39))
{SetValue(19029 /*[Backend\Logische Instanzen\Scripte\Funktionen\Shutter\Bürozimmer\Shutter Positionen\Status]*/,2);}
if(($s>=0.40) and ($s<=0.69))
{SetValue(19029 /*[Backend\Logische Instanzen\Scripte\Funktionen\Shutter\Bürozimmer\Shutter Positionen\Status]*/,3);}
if(($s>=0.70) and ($s<=0.99))
{SetValue(19029 /*[Backend\Logische Instanzen\Scripte\Funktionen\Shutter\Bürozimmer\Shutter Positionen\Status]*/,4);}

Mit if - elseif -elseif… gehts schicker, weil das Skript fertig ist, sobald im Durchlauf das erste elseif zutrifft. Aber da Schnelligkeit und Ressourcensparen hier nicht wirklich kritisch sind, ist’s letztlich egal.