Hauptmenü

Zeittrigger mit Datum

Begonnen von Damian, 08 Dezember 2020, 21:17:08

Vorheriges Thema - Nächstes Thema

Damian

Ich überlege Zeittrigger um Datumsangaben zu erweitern:

Syntax:

[<erster Tag> to <letzter Tag> at <Zeittrigger wie bisher>]

<letzter Tag> optional

Beispiele

[24.12 at 23:00]

[04.09 to 12.10 at 08:00]

[[tag:erster] to [tag:letzter] at 08:00]

[01.12 to 31.01 at [mydevice:time]]

[01.03 to 20.04 at {timefunc()}]

[01.10 to 30.12 at 08:00-22:00,+:30]

ggf. auch mit US-Darstellung MM/TT

Außerhalb der Zeitspanne sollten keine Zeittrigger stattfinden.

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

amenomade

Ich bräuchte "von Datum+Uhrzeit bis Datum+Uhrzeit, +:30". Hab aber noch nicht geguckt, ob das schon möglich ist
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

#2
Zitat von: amenomade am 08 Dezember 2020, 22:09:13
Ich bräuchte "von Datum+Uhrzeit bis Datum+Uhrzeit, +:30". Hab aber noch nicht geguckt, ob das schon möglich ist

Das letzte Beispiel reicht dir nicht?


Also so etwas:

[01.10 at 08:00 to 12.12 at 22:00,+:30]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

amenomade

Nö, ich will z.B von Freitag Abend mit Montag-früh
Oder vom ersten Tag des Urlaubs um 16:00 Uhr bis vorletztem Tag des Urlaubs 12:00 Uhr.

Wenn ich dein letztes Beispiel richtig verstanden habe, heisst es "jeden Tag von 1.10 bis 30.12, in der Zeitspanne 08:00-22:30"

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

Zitat von: amenomade am 08 Dezember 2020, 22:15:59
Nö, ich will z.B von Freitag Abend mit Montag-früh
Oder vom ersten Tag des Urlaubs um 16:00 Uhr bis vorletztem Tag des Urlaubs 12:00 Uhr.

Wenn ich dein letztes Beispiel richtig verstanden habe, heisst es "jeden Tag von 1.10 bis 30.12, in der Zeitspanne 08:00-22:30"

also auch so etwas:

[20:00|Fr-08:00|Mo]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

amenomade

Ja z.B., oder auch [20:00|24.12-08:00|05.01,+:00]
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

Zitat von: amenomade am 08 Dezember 2020, 22:37:41
Ja z.B., oder auch [20:00|24.12-08:00|05.01,+:00]

ja, das Problem ist die Abwärtskompatibilität, 05.01 würde als Freitag, Sonntag bzw. Montag interpretiert werden, daher eher so etwas:

[01.10 at 08:00 to 12.12 at 22:00,+:30]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

amenomade

Ja, kein Pb mit einer neuen Syntax. Das war nur um meine use-cases zu beschreiben
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

Die Funktionalität des Calendar-Moduls in DOIF nachbauen um quasi-Kalendereinträge in das DOIF zu kippen?

Warum?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

amenomade

Weil ich keine Affinität mit CALENDAR-Triggerung habe, und das ggf zu kompliziert wäre, um nur ein paar Triggers zu haben, einen Kalender irgendwo zu pflegen (und die gesamte Logik dahinten)

Bin ein fauler Mensch ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

betateilchen

Die Logik hinter Calendar ist erheblich einfacher. Und vor allem gibt es eine Logik. Und zwar eine, die man auch versteht, weil sie standardisiert ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

xenos1984

Generell eine gute Idee. Nur so ein Gedanke von mir - ich würde mich vermutlich an einem etwas internationalerem Datumsformat orientieren, und statt Leerzeichen und "at" mit @ arbeiten, an die Syntax vun Remind angelehnt. Z.B. sowas:

[YYYY-MM-DD@hh:mm]
[MM-DD@hh:mm]


Wenn man das noch weiter spinnt, könnte man auch Wildcards o.ä. erlauben, analog zu Cron...

Damian

#12
Das Problem ist, wie immer, die Abwärtskompatibilität:

Bisher ist das Minuszeichen ein Trennzeichen für Zeitintervalle:

[von-bis]

[12-01-12-30] ist schon schlecht zu erkennen

[[von]-[bis]] hier weiß der Parser erst mal nicht, ob es um Uhrzeit oder Tage geht.

Grundsätzlich wäre mir eine standardisierte Syntax auch lieber.

Edit:

evtl. so etwas:

[12-01 to 12-30]                           Tagesintervall ohne Trigger, wahr im Zeitraum mit and sinnvoll verknüpfbar
[12-01@08:00  to 12-30@20:00]   Tagesintervall mit Anfangs- und Endzeit mit Trigger am Anfang und Ende, wahr im Zeitraum, sonst falsch
[12-01 to 12-30 at 08:00]             Tagesintervall mit Trigger, wahr nur zum Triggerzeitpunkt
[12-01 to 12-30 at 08:00-20:00]   Tagesintervall mit Zeitintervall mit Trigger am Anfang und Ende, wahr in Kombination der beiden Intervalle
[12-01 to 12-30 at 08:00-20:00, +01:00] Tagesintervall mit Trigger im jeweiligen Zeitintervall, wahr nur zum Triggerzeitpunkt

Alle Angaben wären mit indirekten Angaben möglich

z. B. für das letzte Beispiel:

[[anfangstag] to [endtag] at [anfangszeit]-[endzeit], [Triggerwiederholung]]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

xenos1984

Zitat von: Damian am 09 Dezember 2020, 07:52:08
Bisher ist das Minuszeichen ein Trennzeichen für Zeitintervalle:
Stimmt, das hatte ich nicht bedacht... Vielleicht dann doch ein Schrägstrich YYYY/MM/DD oder der Punkt nach deutschem Format DD.MM.YYYY (wobei der Jahr in beiden Fällen optional wäre).

Die Beispiele sehen durchaus logisch aus. Für solche regelmäßigen Triggerungen scheint mir DOIF logischer zu sein als CALENDAR - letzteres würde ja die Pflege eines externen Kalenders benötigen, um dann in FHEM auf dessen Ereignisse zu reagieren. Das finde ich etwas zu umfangreich, wenn ich nur ein paar feste Zeiten / Tage haben möchte statt gleich einen Kalender zu pflegen und einzubinden.

Damian

Zitat von: xenos1984 am 09 Dezember 2020, 09:54:33
Stimmt, das hatte ich nicht bedacht... Vielleicht dann doch ein Schrägstrich YYYY/MM/DD oder der Punkt nach deutschem Format DD.MM.YYYY (wobei der Jahr in beiden Fällen optional wäre).

Die Beispiele sehen durchaus logisch aus. Für solche regelmäßigen Triggerungen scheint mir DOIF logischer zu sein als CALENDAR - letzteres würde ja die Pflege eines externen Kalenders benötigen, um dann in FHEM auf dessen Ereignisse zu reagieren. Das finde ich etwas zu umfangreich, wenn ich nur ein paar feste Zeiten / Tage haben möchte statt gleich einen Kalender zu pflegen und einzubinden.

wenn ich die "bis" Angabe für Tagesintervalle als "to", wie vorgeschlagen (siehe meine letzten Bespiele), definiere, dann sollte man mit Minuszeichen in den Datumsangaben klar kommen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF