FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: odie13690 am 30 Juni 2015, 06:39:02

Titel: DOIF/DOELSEIF zu bestimmter Zeit
Beitrag von: odie13690 am 30 Juni 2015, 06:39:02
Hallo,

ich möchte zu einer festen Zeit per DOIF Bedingungen prüfen und ggf. Anweisungen ausführen lassen. Dazu habe ich zwei Varianten ausprobiert, die jedoch nicht zum gewünschten Ergebnis führen.

1.define test DOIF ([23:59:30] and [dummy1] > 0) (set dummy2 {([wert1]+[wert2])}, set dummy1 0) DOELSE (set dummy2 {([wert1] - [wert2])})
attr test do always

In diesem Fall wird nur der DOIF-Teil zur gewünschten Zeit ausgeführt, der DOELSE-Teil jedoch wiederholt zu anderen Zeiten.

2. Ersatz des DOELSE-Teils durch DOELSEIFdefine test DOIF ([23:59:30] and [dummy1] > 0) (set dummy2 {([wert1]+[wert2])}, set dummy1 0) DOELSEIF ([23:59:30]) (set dummy2 {([wert1] - [wert2])})
attr test do always

Der Fall erzeugt eine Fehlermeldung, da offenbar nicht zur selben Zeit DOIF und DOELSEIF funktionieren. Aber auch die Erhöhung der Zeit bei DOELSEIF um 10 s bringt keinen Erfolg.

Wie muss die Funktion aussehen, um zu einer bestimmten Zeit zwei Bedingungen zu prüfen und die entsprechende Anweisung/Berechnung auszuführen?

odie13690
Titel: Antw:DOIF/DOELSEIF zu bestimmter Zeit
Beitrag von: Bartimaus am 30 Juni 2015, 06:56:16
Moin,

bist Du sicher den "State" der Dummys korrekt abzufragen ? Wie hast Du diese definiert ?
Titel: Antw:DOIF/DOELSEIF zu bestimmter Zeit
Beitrag von: Paddinho am 30 Juni 2015, 07:14:22
Wie wäre es mit zwei DOIF
Titel: Antw:DOIF/DOELSEIF zu bestimmter Zeit
Beitrag von: odie13690 am 30 Juni 2015, 07:21:35
Zitat von: Bartimaus am 30 Juni 2015, 06:56:16
Moin,

bist Du sicher den "State" der Dummys korrekt abzufragen ? Wie hast Du diese definiert ?
Das funktioniert. Das Berechnen ist nicht das Problem. Das Abarbeiten der einen oder anderen Bedingung zur selben Zeit und eben nur zu dieser Zeit funktioniert nicht.

Zitat von: Paddinho am 30 Juni 2015, 07:14:22
Wie wäre es mit zwei DOIF
Würde wohl funktionieren ???, wäre doch aber nicht die feine Programmierlösung?

odie13690
Titel: Antw:DOIF/DOELSEIF zu bestimmter Zeit
Beitrag von: odie13690 am 30 Juni 2015, 07:47:02
Ich glaube mein "Problem" ist do always :o? Wenn die Funktion jeden Tag nur zur vorgegebenen Zeit abgearbeitet werden soll, brauche ich da do always... :-\

*am testen

odie13690
Titel: Antw:DOIF/DOELSEIF zu bestimmter Zeit
Beitrag von: igami am 30 Juni 2015, 15:33:55
Zitat von: odie13690 am 30 Juni 2015, 06:39:02
define test DOIF ([23:59:30] and [dummy1] > 0) (set dummy2 {([wert1]+[wert2])}, set dummy1 0) DOELSE (set dummy2 {([wert1] - [wert2])})
attr test do always

In diesem Fall wird nur der DOIF-Teil zur gewünschten Zeit ausgeführt, der DOELSE-Teil jedoch wiederholt zu anderen Zeiten.
dummy1 erzeugt auch einen Trigger, der dann im DOELSE landet, du solltest es hier zu [?dummy1] ändern, dann wird nur der Status überprüft, aber kein trigger generiert, somit wird um 23:50:30 Uhr der DOELSE Teil ausgeführt, wnen der dummy1 <=0 ist.

Was machst du überhaupt mit diesem DOIF?

Grüße
igami
Titel: Antw:DOIF/DOELSEIF zu bestimmter Zeit
Beitrag von: odie13690 am 30 Juni 2015, 19:48:50
Zitat von: igami am 30 Juni 2015, 15:33:55Was machst du überhaupt mit diesem DOIF?

Grüße
igami

Einen Counter setzen bzw. resetten.

odie13690