57_CALENDAR - welche RRULE funktionieren?

Begonnen von betateilchen, 06 Mai 2018, 14:33:12

Vorheriges Thema - Nächstes Thema

betateilchen

#15
Naja, ich finde den Begriff "series" in diesem Zusammenhang schon sehr irreführend. Was ich als Ergebnis erwarte, sind einfach die nächsten 10 Termine aus einem bestimmten Kalender, egal ob sie einer Serie, mehreren Serien oder Einzelereignissen entstammen.

So wie das bisher ja auch funktionierrt 😀
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Also werde ich noch den vierten Parameter implementieren, der bei mir auf der Liste stand:

limit:count=<count>,from=<fromDate>,to=<toDate>

Es können einer, zwei oder drei von count, from und to angegeben werden.

Brauche dazu noch einem Datumsparser. Den gibt es sicher schon irgendwo im FHEM.


Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

mir würde ja

list:next=10

ausreichen (und besser gefallen), weil der Zweck durch das "next" einfach erkennbar bleibt.

In das Modul habe ich jetzt noch nicht geschaut, aber "series:next=10" liefert doch die Ergebnisse vermutlich in einem sortierten Array zurück - davon müsste man eben nur die 10 ersten Einträge verwenden.

Also "list:next=10" ruft "series:next=10" auf und gibt die gewünschte absolute Anzahl der Einträge zurück. (wobei ich mich aktuelle frage, ob bei series auch Einzeltermine, die keine Serie haben, berücksichtigt werden)

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

Dr. Boris Neubert

Also es ist einfach zu realisieren. Wie Du sagst stehen die Termine zeitlich sortiert in einem Array.

Dein Anwendungsfall ist mit

limit:count=10,from=now

oder, alternativ, mit

limit:count=10 filter:mode=~"upcoming|start"

abgedeckt. Mache mich diese Tage daran.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

wenn Du grade am Frickeln bist, dann spendiere doch dem "get ... events" noch einen Parameter "raw" ganz am Schluß, der dafür sorgt, dass direkt das Ergebnis-Array zurückgeliefert wird, anstatt eines reinen Textes mit \n zur Zeilentrennung

Dann kann ich in meinen Anwendungen schreiben

my @a = fhem("get myCalendar events .... raw");

anstatt

my @a = split(/\n/,fhem("get myCalendar events ..."));

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

Dr. Boris Neubert

Zitat von: betateilchen am 11 Mai 2018, 13:13:26
wenn Du grade am Frickeln bist, dann spendiere doch dem "get ... events" noch einen Parameter "raw" ganz am Schluß, der dafür sorgt, dass direkt das Ergebnis-Array zurückgeliefert wird, anstatt eines reinen Textes mit \n zur Zeilentrennung

Ist machbar - schließlich wird das Array erst am Schluss zu einem String gejoint.

Zum Keystore. Das wollte ich sowieso mal angehen, damit die geheime URL aus dem define herauskommt. Ich würde dann die Variante

define myCalendar ical key <key> [interval]

einführen. Wie geht denn Keystore bzw. wo ist die Doku? Habe das noch nie benutzt.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Zitat von: Dr. Boris Neubert am 11 Mai 2018, 15:22:19
Wie geht denn Keystore bzw. wo ist die Doku? Habe das noch nie benutzt.

Schau Dir in der fhem.pl die Funktionen getKeyValue() und setKeyValue() an.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

So, der limit-Parameter ist implementiert und eingecheckt.

get MyCalendar events limit:count=10
get MyCalendar events limit:from=-2d
get MyCalendar events limit:count=10,from=0,to=+10d


Der Rest noch nicht.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Jetzt solltest Du bitte noch die besprochene "Ankündigung" schreiben, damit die Anwender wissen, was die plötzlich vorhandenen Hinweise im Log bedeuten :)

https://forum.fhem.de/index.php/topic,87846.0.html
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#24
Also mal ganz ehrlich ...

Wenn ich die Wahl hätte zwischen


$actor = CommandGet(undef,"oc_Schalter summary $uid 1");


und


$actor = CommandGet(undef,'oc_Schalter events format:custom="$S" filter:uid=="'.$uid.'" limit:count=1');


fände ich die erste Variante auf jeden Fall sympathischer.

Vor allem finde ich es absolut unlogisch - und schwer zu merken - dass ich überall mit einem einfachen = arbeiten kann und nur beim Filterkriterien einen zweistelligen Vergleichsoperator verwenden muss.




Auf jeden Fall habe ich nun die ersten notify auf die neue Syntax umgebaut und werde vergleichen, ob meine eingebauten Debug-Ausgaben dem entsprechen, was die bisherige Syntax als Ergebnis lieferte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!