FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: visionsurfer am 08 November 2016, 11:42:44

Titel: Unterschied DOELSEIF und DOELSE
Beitrag von: visionsurfer am 08 November 2016, 11:42:44
Hi,

tut mir leid, aber ich muss noch mal dumm fragen. Ich hab immer noch nicht richtig kapiert was der Unterschied zwischen DOELSEIF und DOELSE ist ?
Obwohl ich mir schon mehrfach WIKI und Co angeschaut habe.

Die Grundlage ist doch: Wenn das passiert, tue das. Oder: Wen das und das passiert, tue das.

Also irgendwie bringe ich wahrscheinlich die beiden immer durcheinander. Kann mir das vielleicht jemand noch mal anhand von einem praktischen Beispiel erklären, einfach und simple ?

Grüße,
Visionsurfer
Titel: Antw:Unterschied DOELSEIF und DOELSE
Beitrag von: kumue am 08 November 2016, 11:48:55
bei DOELSEIF hast du Bedingungen und Ausführungsteil.. wenn dies und/oder das... mache dies und/oder das.
Bei DOELSE hast du nur den Ausführungsteil.

Wenn keine der Bedingungen, welche du "oben" definiert hast greifen, dann schlägt DOELSE zu
Titel: Antw:Unterschied DOELSEIF und DOELSE
Beitrag von: Per am 08 November 2016, 11:58:27
Ist wie in fast jeder Programmiersprache:

IF (Bedingung) Befehl
ELSEIF oder ELSE IF (Bedingung) Befehl
ELSE Befehl


nur mit vorgesteltem DO.
Titel: Antw:Unterschied DOELSEIF und DOELSE
Beitrag von: visionsurfer am 08 November 2016, 12:25:47
Hi,

ok. Machen wir ein einfaches Beispiel:

Wenn SENSOR1 ist AN, dann schalte AKTOR1 an

Ist das nun ein DOELSE oder ein DOELSEIF ? Weil es ist doch eine Bedingung da (SENSOR 1 ist AN) und ein Ausführungsteil (AKTOR 1 soll an gehen).
Also würde ich sagen das ist ein DOELSEIF.

Aber wie sieht dann ein DOELSE aus. Also nur ein Ausführungsteil ?

Titel: Antw:Unterschied DOELSEIF und DOELSE
Beitrag von: kumue am 08 November 2016, 12:33:33
jo, so ist es.
und DOELSE ist optional
Titel: Antw:Unterschied DOELSEIF und DOELSE
Beitrag von: Beta-User am 08 November 2016, 12:36:12
commandref:
Lesbarkeit der Definitionen   back

Da die Definitionen im Laufe der Zeit recht umfangreich werden können, sollten die gleichen Regeln, wie auch beim Programmieren in höheren Sprachen, beachtet werden. Dazu zählen: das Einrücken von Befehlen, Zeilenumbrüche sowie das Kommentieren seiner Definition, damit man auch später noch die Funktionalität seines Moduls nachvollziehen kann.

Das Modul unterstützt dazu Einrückungen, Zeilenumbrüche an beliebiger Stelle und Kommentierungen beginnend mit ## bis zum Ende der Zeile. Die Formatierungen lassen sich im DEF-Editor der Web-Oberfläche vornehmen.

So könnte eine Definition aussehen:

define di_Modul DOIF ([Switch1] eq "on" and [Switch2] eq "on") ## wenn Schalter 1 und Schalter 2 on ist

    (set lamp on) ## wird Lampe eingeschaltet


DOELSE ## im sonst-Fall, also wenn einer der Schalter off ist

    (set lamp off) ## wird die Lampe ausgeschaltet


Im Folgenden wird die Funktionalität des Moduls im Einzelnen an vielen praktischen Beispielen erklärt.
Titel: Antw:Unterschied DOELSEIF und DOELSE
Beitrag von: Brockmann am 09 November 2016, 14:46:43
Zitat von: visionsurfer am 08 November 2016, 12:25:47
ok. Machen wir ein einfaches Beispiel:

Wenn SENSOR1 ist AN, dann schalte AKTOR1 an
Das ist streng genommen nur ein DOIF:

Das Beispiel mit DOELSEIF wäre:
Wenn SENSOR1 ist AN, dann schalte AKTOR1 rot - DOIF
OderWenn SENSOR2 ist AN, dann schalte AKTOR1 grün - DOELSEIF

Beispiel mit DOELSE
WENN SENSOR1 ist AN, dann schalte Aktor1 an - DOIF
Ansonsten schalte Aktor1 aus - DOELSE

Beispiel DOELSEIF & DOELSE
Wenn SENSOR1 ist AN, dann schalte AKTOR1 rot - DOIF
OderWenn SENSOR2 ist AN, dann schalte AKTOR1 grün - DOELSEIF
Ansonsten schalte Aktor1 aus - DOELSE
Titel: Antw:Unterschied DOELSEIF und DOELSE
Beitrag von: l2r am 09 November 2016, 14:49:31
wenn du noch OderWenn durch SonstWenn ersetzt, dann passt es  ;) Weil DOELSEIF nur zum Tragen kommt, wenn DOIF nicht greift