DOIF/DOELSEIF zu bestimmter Zeit

Begonnen von odie13690, 30 Juni 2015, 06:39:02

Vorheriges Thema - Nächstes Thema

odie13690

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

Bartimaus

Moin,

bist Du sicher den "State" der Dummys korrekt abzufragen ? Wie hast Du diese definiert ?
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Paddinho


odie13690

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

odie13690

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

igami

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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

odie13690

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