FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ag21368 am 12 Februar 2019, 21:50:54

Titel: Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: ag21368 am 12 Februar 2019, 21:50:54
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
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Ellert am 13 Februar 2019, 07:27:50
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
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: ag21368 am 13 Februar 2019, 08:00:53
Danke, das hatte ich nicht gefunden
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: ag21368 am 13 Februar 2019, 08:54:09
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
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Ellert am 13 Februar 2019, 10:17:12
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
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Damian am 13 Februar 2019, 10:55:45
Man könnte sich auch merken, Rechnungen mit Zeiten werden immer in runde Klammern gesetzt.
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: yersinia am 13 Februar 2019, 17:07:53
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)
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Damian am 13 Februar 2019, 17:31:03
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)
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag 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)"]
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Damian am 13 Februar 2019, 20:29:30
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 :)
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: ag21368 am 13 Februar 2019, 21:20:50
Super,

vielen Dank.

Andreas
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Ellert am 13 Februar 2019, 23:02:02
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})"]
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Damian am 14 Februar 2019, 09:33:04
Zitat von: Ellert am 13 Februar 2019, 23:02:02
In der Tat [$SELF:timer_01_c01:"([\d:]{8})"]

einen habe ich noch:

[$SELF:timer_01_c01:"(.{8}$)"]
Titel: Antw:Uhrzeit aus reading "extrahieren, neu berechnen und in Doif nutzen
Beitrag von: Ellert am 14 Februar 2019, 14:57:19
Auch nicht schlecht, aber nur ohne Wochentagbeschränkung.