Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen

Begonnen von ag21368, 12 Februar 2019, 21:50:54

Vorheriges Thema - Nächstes Thema

ag21368

Hallo zusammen, Ich nutze in einem DOIf ein Reading um damit zu rechnen.
Hier mal das DOIF
defmod do_licht_S6_off DOIF ([[doif_Klappensteuerung_S6:timer_01_c01]-{sunset_abs(-1800)}]) (set Licht_S6_off off)\
DOELSE (set Licht_S6_off on)

Das doif_Klappensteuerung_S6:timer_01_c01 hat den Wert 12.02.2019 15:00:00. Ich brauche aber nur die 15:00:00 und möchte dort noch 5 Minuten also 300 Sekunden dazu rechnen. Das bekomme ich irgendwie nicht hin. .EVTPART1 war mein erster Gedanke. Funktioniert aber verständlicherweise nicht

Würde mich über einen Beispielcode sehr freuen

Danke
Andreas

Ellert

Die deutschsprachige Befehlsreferenz ist für DOIF immer die erste Anlaufstelle zur Beantwortung von Fragen, auch für Deine ;)
https://commandref.fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen

ag21368


ag21368

Hallo,

vielen Dank, das mit dem auslesen der Zeit hat schon mal geklappt

Hier mein jetziger Code
defmod do_licht_S4_off DOIF ([[doif_Klappensteuerung_S4:timer_01_c01:"(\d\d):(\d\d):(\d\d)":"$1:$2:$3"]-{sunset_abs(-1800)}]) (set Licht_S4_off off)\
    DOELSE (set Licht_S4_off on)


Was mir jetzt noch fehlt ist, das bei dem Reading noch 5 Minuten dazugerechnet werden sollen.  mit +[300] bin ich vom Datum her im September angekommen. Habe FHEM Referenz durchgeschaut, auch hier im Forum den Beitrag zum rechnen mit Zeiten. Ich gehe davon aus das ich da einfach etwas falsch verstehe.

Vielen Dank
Andreas

Ellert

Du könntest das Inhaltsverzeichnis der deutschsprachigen Befehlsreferenz nutzen, um Themen zu finden, deren Inhalt wahrscheinlich weiter hilft. Dort sollte sich auch etwas zu "Zeit" und "berechen" finden lassen.

Du kannst die Voreinstellung ändern, damit die deutschsprachige Hilfe direkt auch in der Detailansicht angezeigt wird, https://wiki.fhem.de/wiki/DOIF/Tipps_zur_leichteren_Bedienung

Es gibt aktuell sogar eine ähnliche, gelöste Frage im Forum https://forum.fhem.de/index.php/topic,97310.0.html

Damian

Man könnte sich auch merken, Rechnungen mit Zeiten werden immer in runde Klammern gesetzt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

yersinia

Hi,

Ich lese DOIF Timer Zeiten mit substr aus dem Reading aus:
{(substr(ReadingsVal("DOIF","timer_01_c01",""),11,8))}
ergibt dann eine Zeit wie 00:00.

Was bei dir ungefähr so sein könnte:
defmod do_licht_S4_off DOIF ([{(substr(ReadingsVal("doif_Klappensteuerung_S4","timer_01_c01",""),11,8))}-{sunset_abs(-1800)}]) (set Licht_S4_off off)\
    DOELSE (set Licht_S4_off on)

und mit Addieren von 300 sec:
defmod do_licht_S4_off DOIF ([({(substr(ReadingsVal("doif_Klappensteuerung_S4","timer_01_c01",""),11,8))}+300)-{sunset_abs(-1800)}]) (set Licht_S4_off off)\
    DOELSE (set Licht_S4_off on)

(möglicherweise muss hier noch eine eckige Klammer drum gesetzt werden)
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Damian

es geht auch:

defmod do_licht_S4_off DOIF ([([doif_Klappensteuerung_S4:timer_01_c01:"(\d\d:\d\d:\d\d)"]+300)-{sunset_abs(-1800)}]) (set Licht_S4_off off)\
    DOELSE (set Licht_S4_off on)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

... und für den Eigennamen des DOIF kann die Kurzform $SELF angegeben werden.
[$SELF:timer_01_c01:"(\d\d:\d\d:\d\d)"]

Damian

Zitat von: Ellert am 13 Februar 2019, 19:21:31
... und für den Eigennamen des DOIF kann die Kurzform $SELF angegeben werden.
[$SELF:timer_01_c01:"(\d\d:\d\d:\d\d)"]

und wenn wir noch weiter überlegen, dann fällt uns bestimmt noch eine kürzere Darstellung ein :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ag21368


Ellert

Zitat von: Damian am 13 Februar 2019, 20:29:30
und wenn wir noch weiter überlegen, dann fällt uns bestimmt noch eine kürzere Darstellung ein :)
In der Tat [$SELF:timer_01_c01:"([\d:]{8})"]

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Auch nicht schlecht, aber nur ohne Wochentagbeschränkung.