FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: OliS. am 23 April 2016, 13:17:39

Titel: [GELÖST]Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: OliS. am 23 April 2016, 13:17:39
Ich weiß, dass ich das hier irgendwo schon mal gelesen habe. Ich kann es  nur ums Verrecken nicht mehr finden.

Ich möchte per DOIF eine Befehlssequenz abfeuern.


... DOIF ([Zeit])
(set Lampe1 on)
(set Lampe2 on)
(set Lampe3 on)

attr wait 0,1,1


Allerdings möchte ich für einzelne Befehle Bedingungen definieren, die aber nur für den einen Befehl gelten. Lampe2 soll bspw. nur schalten, wenn ein Bewegungsmelder einen bestimmten Helligkeitswert unterschreitet.
Irgendwo hatte ich mal gelesen, dass ich an einzelne Befehle einer DOIF-Befehlssequenz noch ein IF anhängen kann. Aber ich finde den entsprechenden Thread einfach nicht mehr.

Ich habe auch schon versucht, das DOIF so zu verschachteln...


... DOIF ([Zeit])
(set Lampe1 on)
(DOIF ([BMelder:brightness] < 120) (set Lampe2 on))
(set Lampe3 on)

attr wait 0,1,1


Aber das scheint nicht möglich zu sein. (Wäre das vielleicht eine Idee für zukünftige Versionen?)

Gruß
Oli

EDIT:
Mir ist klar, dass sich das auch so lösen ließe


... DOIF ([Zeit] and [BMelder:brightness] > 120)
(set Lampe1 on)
(set Lampe2 on)
(set Lampe3 on)

DOELSEIF

([Zeit] and [BMelder:brightness] < 120)
(set Lampe1 on)
(set Lampe3 on)


Allerdings enthält mein DOIF schon mehr als eine Hauptbedingung, was bedeuten würde, dass das DOIF pro "Unterbedingung" noch größer würde.
Ist das irgendwie verständlich?

Oli
Titel: Antw:Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: scooty am 23 April 2016, 13:34:45
Ich würde das so versuchen:
... DOIF ([Zeit])
(set Lampe1 on)
(IF ([BMelder:brightness] < 120) (set Lampe2 on))
(set Lampe3 on)

attr wait 0,1,1


Andreas
Titel: Antw:Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: OliS. am 23 April 2016, 15:12:58
Funktioniert natürlich genau so. Vielen Dank!

Kann es sein, dass das so nirgends dokumentiert ist, oder bin ich einfach nur blind?

Oli
Titel: Antw:Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: Per am 23 April 2016, 15:21:08
Zitat von: OliS. am 23 April 2016, 15:12:58Kann es sein, dass das so nirgends dokumentiert ist
Unter DOIF nicht, aber unter IF.
Titel: Antw:Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: OliS. am 23 April 2016, 19:27:35
Mir war nicht bewusst, dass IF ja auch von Damian ist und der selben Syntax folgt bzw. dann auch kombiniert werden kann. Dann macht das natürlich Sinn.

Vielen Dank noch mal.

Oli
Titel: Antw:Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: OliS. am 13 Juni 2016, 21:56:13
Ich muss den Thread noch mal "aufwärmen".

Kann es sein, dass das hier von DOIF/IF nicht unterstützt wird?

DOIF ([Bedingung])
(set Lampe1 on)
(IF ([20:00-23:00]) (set Lampe2 on))


Ich hatte vermutet, dass das funktioniert, weil das hier

DOIF ([Bedingung])
(set Lampe1 on)
(IF ([BMelder:brightness] < 150) (set Lampe2 on))

sehr wohl funktioniert.

Ich versuche, wie weiter oben schon beschrieben, eine DOIF-Sequenz zu schalten. Nur sollen einige der Befehle in Abhängigkeit von eigenen Bedingungen (Zeitfenster) entweder geschaltet werden oder eben nicht.

Oli
Titel: Antw:Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: Damian am 13 Juni 2016, 22:16:24
Zitat von: OliS. am 13 Juni 2016, 21:56:13
Ich muss den Thread noch mal "aufwärmen".

Kann es sein, dass das hier von DOIF/IF nicht unterstützt wird?

DOIF ([Bedingung])
(set Lampe1 on)
(IF ([20:00-23:00]) (set Lampe2 on))


Ich hatte vermutet, dass das funktioniert, weil das hier

DOIF ([Bedingung])
(set Lampe1 on)
(IF ([BMelder:brightness] < 150) (set Lampe2 on))

sehr wohl funktioniert.

Ich versuche, wie weiter oben schon beschrieben, eine DOIF-Sequenz zu schalten. Nur sollen einige der Befehle in Abhängigkeit von eigenen Bedingungen (Zeitfenster) entweder geschaltet werden oder eben nicht.

Oli

IF kennt keine Zeitintervalle.

Hier steht, was IF kann:

http://fhem.de/commandref_DE.html#IF

Was dort nicht steht, kann IF im allgemeinen auch nicht.

Gruß

Damian
Titel: Antw:[GELÖST]Befehlssequenzen mit separaten Bedingungen pro Befehl
Beitrag von: OliS. am 14 Juni 2016, 10:13:03
ZitatIF kennt keine Zeitintervalle.

Hier steht, was IF kann:

http://fhem.de/commandref_DE.html#IF

Was dort nicht steht, kann IF im allgemeinen auch nicht.

Gruß

Damian

Hey Damian,

vielen Dank für die schnelle Antwort.

Ich habe das Ganze jetzt so umgesetzt:

([Bedingung])
(set Lampe1 on)
(IF ($hms gt "20:00" and $hms lt "23:00") (set Lampe2 on))


Vielen Dank.
Oli