Bedingungen

 
Im Folgenden werden die Formen der Bedingungen in wenn-Anweisungen beschrieben, nicht die Wenn-Anweisung selber.
Details zu dieser Anweisung finden Sie im Kapitel wenn-Anweisungen.
In wenn-Anweisungen wird aufgrund von Bedingungen entschieden welche weiteren Anweisungen ausgeführt werden. Eine Bedingung ist entweder WAHR oder FALSCH. Bedingungen können mit UND bzw. ODER verknüpft werden.
Bedingungen sind folgendermaßen aufgebaut:
wenn Operand1 Vergleichsoperator Operand2
Beispiel:
wenn  Temperatur  kleiner  21,5
 
Wenn die Operanden unterschiedlichen Typs sind, findet soweit möglich eine automatische Konvertierung statt.
Wenn einer der Operanden eine Konstante ist, muss diese als Operand2 stehen, damit eine korrekte Konvertierung durchgeführt werden kann.
Beispiel:
Richtig: wenn Uhrzeit = "15:15:00" dann
Falsch:  wenn "15:15:00" = Uhrzeit dann
 
Standard-Vergleichsoperatoren
= oder gleich
<> oder ungleich
< oder kleiner
> oder groesser
<= (kleiner oder gleich)
>= (grösser oder gleich)
 
 
Besondere Vergleichsbedingungen
wenn Objekt eingeschaltet
hat die gleiche Wirkung wie
wenn Objekt = 1 bzw. wenn Objekt = "an"
bei Objekten mit mehr als 2 Zuständen ist eingeschaltet immer wahr wenn es nicht der erste  Zustand des Typs ist.
wenn Objekt ausgeschaltet
hat die gleiche Wirkung wie
wenn Objekt = 0 bzw. wenn Objekt = "aus"
weitere besondere Schlüsselwörter für Bedingungen sind
GEÖFFNET und GESCHLOSSEN (für Tür/Fensterkontakte, nicht für Rollladen, Jalousien, KeyMatic, Winmatic !),
 
wenn Fenster geoeffnet dann
 
Bei Vergleichen können auch jeweils die Texte der Zustände des Objekts abgefragt werden.
Um bei einer Fernbedienungstaste festzustellen ob diese kurz oder lang gedrückt wurde kann z.B. folgende Abfrage verwendet werden:
 
WENN FBWohnenTaste2 = "lang" dann
  Stehlampe einschalten
SONST
  Stehlampe ausschalten
ENDEWENN
 
 
Zeit-Vergleiche
Bei Zeitvergleichen ist zu beachten, dass die Uhrzeit im 5-Sekunden-Takt aktualisiert wird, die Sekunden der Uhrzeit bei der Prüfung auf Zeitgleichheit also immer durch 5 teilbar sein müssen.
Wenn Uhrzeitvergleiche verwendet werden, muss sichergestellt sein, dass das Makro zu dem Zeitpunkt zu dem die Bedingung zutrifft könnte auch ausgeführt wird. Wenn also die Vergleichszeit volle Minuten hat, muss das Zeitintervall für das Makro mindestens auf 1 x in der  Minute gesetzt sein, wenn es eine durch 5 Sekunden teilbare Uhrzeit ist muss das Ausführungsintervall auf 5 Sekunden gesetzt werden. 
 
wenn Uhrzeit = "HH:MM:SS" .....
 
bei dieser Bedingung ist zu beachten, dass die Uhrzeit in Hochkommas gesetzt wird. Weiterhin müssen die Sekunden durch 5 teilbar sein, da die Bedingung sonst nie zutrifft. 
 
wenn Datum = "TT.MM.JJJJ"
 
bei dieser Bedingung ist zu beachten, dass das Datum in Hochkommas gesetzt wird und das Jahr vollständig, also 4-stellig mit Jahrtausend angegeben werden muss.
 
wenn Wochentag = "Wochentag"
 
Prüfung auf einen Wochentag. Der Wochentag wird in Hochkommas gesetzt und muss mit einem Großbuchstaben und nachfolgenden Kleinbuchstaben geschrieben werden.
Beispiel : wenn Wochentag = "Freitag" dann
 
wenn Monat Vergleichsoperator Zahl
 
Beispiel :
 
wenn Monat groesser 4 und Monat kleiner 10 dann
 
bewirkt, dass die folgenden Anweisungen nur zwischen Mai und September ausgeführt werden.
Vergleichsoperator =* für Vergleiche mit Jokerzeichen
Beim Vergleich von Uhrzeit und Datum mit einer Konstanten können auch Jokerzeichen verwendet werden. Als Vergleichsoperator muss dann =* verwendet werden. Operand2 muss eine Konstante in Hochkommas sein.
Beispiele:
Um Anweisungen jede volle und halbe Stunde auszuführen:
 
wenn Uhrzeit =* "**:00:00" oder Uhrzeit =* "**:30:00" dann
......
Um Anweisungen immer am Ersten eines Monats auszuführen:
 
wenn Datum =* "01.**.****" dann
 
Bedingung für Bereiche
Mit diesem besonderen Bedingungstyp ist es möglich z.B. Aktionen nur innerhalb bestimmter Bereiche und Zeiträume auszuführen.
 
wenn Prüfwert zwischen Startwert und Endwert dann
......
Beispiele für Zeiträume:
 
wenn Uhrzeit/Datum zwischen "Zeitkonstante" und "Zeitkonstante" dann
 
wenn Uhrzeit zwischen "23:00:00" und "05:00:00" dann
 
wenn Monat zwischen 5 und 9 dann
ist wahr von Mai bis September
 
wenn Monat zwischen 10 und 4 dann
ist wahr von Oktober bis April
 
wenn Monat zwischen 6 und 6 dann
ist nur im Juni wahr
 
Dieser Bedingungstyp kann nicht nur für Zeiträume, sondern grundsätzlich für alle Werte benutzt werden.
 
wenn Temperatur zwischen 18,0 und 21,0 dann
ist von 18,0 bis 21,0 Grad wahr
 
Bitte beachten - grundsätzlich gilt:
wenn der Startwert kleiner ist als der Endwert ist die Bedingung wahr wenn der Prüfwert im zu prüfenden Bereich liegt, also auch wenn er gleich mit dem Start- oder Endwert ist.
wenn der Startwert grösser ist als der Endwert ist die Bedingung wahr wenn der Prüfwert nicht zwischen Startwert und Endwert liegt.
Diese Verfahrensweise bietet die grösste Flexibilität und ergibt auch bei Bedingungen für Zeiträume mit Tageswechsel wie z.B. "wenn Uhrzeit zwischen "23:00:00" und "05:00:00" dann" das richtige Ergebnis, aber es muss genau darauf geachtet werden in welcher Reihenfolge Start- und Endwert angegeben werden.
 
Vergleichsoperator =+ für Vergleiche mit Wochenmaske
Mit diesem Vergleichsoperator ist es möglich Anweisungen nur an bestimmten Wochentagen ausführen zu lassen. Als Operand2 muß eine 7-stellige Konstante bestehend aus Nullen und Einsen in Hochkommas verwendet werden. Jede Stelle der Konstanten steht für einen Wochentag, beginnend mit Sonntag. Die Bedingung ist wahr wenn an der Stelle des aktuellen Wochentags eine Eins steht.
 
Beispiel : Es soll geprüft werden, ob der aktuelle Tag ein Freitag, Samstag oder Sonntag ist.
 
wenn Wochentag =+ "1000011" dann
 

Created with help of DrExplain