[GELÖST]Befehlssequenzen mit separaten Bedingungen pro Befehl

Begonnen von OliS., 23 April 2016, 13:17:39

Vorheriges Thema - Nächstes Thema

OliS.

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
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz

scooty

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
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

OliS.

Funktioniert natürlich genau so. Vielen Dank!

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

Oli
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz

Per

Zitat von: OliS. am 23 April 2016, 15:12:58Kann es sein, dass das so nirgends dokumentiert ist
Unter DOIF nicht, aber unter IF.

OliS.

#4
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
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz

OliS.

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
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

OliS.

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
PVE auf MiniPC (N100) mit FHEM, Zigbee2MQTT, Homebridge, DeConz