Anregung fuer 57_Calendar zur Nutzung von ferienwiki.de

Begonnen von Adimarantis, 10 Februar 2019, 12:30:06

Vorheriges Thema - Nächstes Thema

Beta-User

Nochmal zwei Varianten zu deinem "use-case" (der nicht besonders speziell ist und eigentlich auch schon an anderer Stelle mehrfach ausdiskutiert...):

Variante 1:
Was hindert dich daran, einen Kalender, der sich NIE ändert, lokal am 31.12. für das nächste Jahr - immer demselben Namen - runterzuladen und als file einzubinden? Dann kannst du ein kurzes update-Intervall angeben und hast immer den aktuellen Stand, auch wenn das INet mal kaputt ist...

Variante 2:
Importiere die Kalender halt in einen, dessen Name sich nicht ändert und greife die Daten dort ab.
(Ich mache das z.B. zusammen mit Müll usw. in einen, auf den auch meine Frau Zugriff hat. Da muß man dann halt in der Auswertelogik etwas mehr filtern... Hier werden z.B. dann aus dem allg. ical mehrere .holiday-Dateien extrahiert (alle Woche neu), die ich dann teilweise (für Ferien, Müll natürlich nicht) wieder in holiday2we (global) verwende. So sind auch bewegliche Ferientage kein Problem, die muß man nur passend eintragen ;) ).

Aber alle Tage einen sich nicht ändernden Kalender abfragen ist einfach unnötig (ein früherer Anbieter der Kalender  hat irgendwann auf die vielen Zugriffe so reagiert, dass er das für automatische Zugriffe gesperrt hat, das muss sich eigentlich nicht nochmal wiederholen, nur weil u.a. die user hier sowas nicht berücksichtigen wollen...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

betateilchen

Wenn Du ohnehin nur einmal pro Jahr den Kalender updaten willst, ist es wahrlich nicht zuviel verlangt, im Rahmen dieser einmaligen Aktion pro Jahr das Jahr auch entsprechend selbst mit anzugeben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

nils_

Zitat von: betateilchen am 21 Februar 2019, 09:12:27
Wenn Du ohnehin nur einmal pro Jahr den Kalender updaten willst, ist es wahrlich nicht zuviel verlangt, im Rahmen dieser einmaligen Aktion pro Jahr das Jahr auch entsprechend selbst mit anzugeben.
grundsätzlich gebe ich dir recht. ich mache das für meinen müllkalender genau so. am 1. januar runterladen, kopieren, einlesen, fertig.


aber für Adimarantis drehen wir uns nun im kreis, denn das Jahr ändern will er ja vermeiden....

Zitat von: Adimarantis am 10 Februar 2019, 12:30:06
... zum anderen möchte ich nicht jedes Jahr die URL ändern müssen.


viele Wege in FHEM es gibt!

Adimarantis

Ist ja nicht so, als wäre die Lösung super kompliziert. Hab das bei mir lokal ja schon implementiert.

FHEM is home automation - und auch wenn hier nur etwas automatisiert wird, was einmal im Jahr passiert, verstehe ich nicht, warum mehr Zeit in die Diskussion als die eigentliche Implementierung gesteckt wird. Das ist ja fast wie bei uns in der Firma.

Dann verwende ich halt weiter meine private Version. Ich dachte nur das wäre auch für andere interessant.
Kann man ein Modul explizit vom update ausschliessen?

Gruß,
Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

betateilchen

Zitat von: Adimarantis am 21 Februar 2019, 10:34:22
Kann man ein Modul explizit vom update ausschliessen?

ja. Steht in der commandref beschrieben.

Zitat von: Adimarantis am 21 Februar 2019, 10:34:22
Ist ja nicht so, als wäre die Lösung super kompliziert.

Es hat niemand behauptet, es sei super kompliziert. Aber bei solchen Änderungen stellt sich immer die Frage, ob diese für die Allgemeinheit sinnvoll wären oder nicht. Und bei einer url, die nur einmal pro Jahr evaluiert werden müsste, ist eine ad-hoc Evaluierung für mich wenig sinnvoll und würde voraussichtlich zu mehr Fragen führen als  dass sie Probleme lösen würde.

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

Beta-User

Zitat von: Adimarantis am 21 Februar 2019, 10:34:22
FHEM is home automation - und auch wenn hier nur etwas automatisiert wird, was einmal im Jahr passiert, verstehe ich nicht, warum mehr Zeit in die Diskussion als die eigentliche Implementierung gesteckt wird. Das ist ja fast wie bei uns in der Firma.
Nur am Rande: An sich hast du damit einen Punkt für dich.
ABER: Ich hatte "früher mal" auch den alten Ferienkalender (INet-Quelle, nicht lokal, ganz nach der damaligen Anleitung im wiki oder dem pdf) eingebunden, dann unbedacht einfach die Jahreszahl angepaßt und mich irgendwann gewundert, warum eigentlich FHEM denkt, dass grade keine Ferien sind, obwohl das am 2.01. doch eigentlich sonst immer so ist... Ursache: Der Anbieter hatte die URL-Struktur geändert ;D .

Seitdem bin ich etwas skeptisch eingestellt, was Automatismen angeht, die sich auf externe Quellen verlassen, die man nicht sowieso regelmäßig überprüfen muß... ::) ::) ::)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

nils_

Zitat von: Adimarantis am 21 Februar 2019, 10:34:22
FHEM is home automation - und auch wenn hier nur etwas automatisiert wird, was einmal im Jahr passiert, verstehe ich nicht, warum mehr Zeit in die Diskussion als die eigentliche Implementierung gesteckt wird. Das ist ja fast wie bei uns in der Firma.

dann mach dir ein at, was am 1. januar ein defmod vom calendar device durchführt.
zack - automatisch  8) ;D ;D ;D
viele Wege in FHEM es gibt!

Beta-User

Zitat von: nils_ am 21 Februar 2019, 13:16:43
dann mach dir ein at, was am 1. januar ein defmod vom calendar device durchführt.
zack - automatisch  8) ;D ;D ;D
Was ist daran besser als das at, das den Kalender am 31.12. für's nächste Jahr holt ??? ??? ??? ::) 8) ? Das würde es auch automatisch machen und dieses Kriterium voll erfüllen, und das ganz ohne "rotes Fragezeichen".

(Aber bitte erkennen wir an: auch der TE hat eine automatische Lösung vorgeschlagen, die die Augabenstellung generisch löst! Es mag Fälle geben, in denen die vorgeschlagene Änderung wirklich Vorteile bietet. Dass diese eben m.E. nicht für diesen Typ "unveränderlicher" Kalenderdaten bestehen, ist was substanziell anderes.)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

nils_

Zitat von: Beta-User am 21 Februar 2019, 13:33:56
Was ist daran besser als das at, das den Kalender am 31.12. für's nächste Jahr holt ??? ??? ??? ::) 8) ?
nix.... außer das es einen tag später loslegt  :-* :-* :-* :-* :-*
viele Wege in FHEM es gibt!

betateilchen

#24
Hier die Variante, mit der die url erst beim tatsächlichen update des Kalenders evaluiert wird.


Index: 57_Calendar.pm
===================================================================
--- 57_Calendar.pm      (revision 18659)
+++ 57_Calendar.pm      (working copy)
@@ -2471,7 +2471,9 @@

   Log3 $hash, 4, "Calendar $name: Updating...";
   my $type = $hash->{".fhem"}{type};
-  my $url= $hash->{".fhem"}{url};
+#  my $url= $hash->{".fhem"}{url};
+  my @ti   = localtime;
+  my $url  = ResolveDateWildcards($hash->{".fhem"}{url}, @ti);

   my $errmsg= "";
   my $ics;
-----------------------
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

Notiz an mich selbst:

Zitat
attr <calendarName> update onURLChanged

The update is only performed if the calendar's URL has changed. This usually occurs if the calendar's URL contains wildcards that evaluate to different URLs over time. The actual check for a changed URL is performed periodically at intervals as specified in the calendar device's definition.

Event erzeugen, wenn sich die URL ändert.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Zitat von: Dr. Boris Neubert am 21 Februar 2019, 19:26:50
Notiz an mich selbst:

auweia... so weit ist es schon? 8)

Aber die Idee finde ich gut. Wir beide sollten mal einen Workshop machen, um unsere Ideen zum Kalendermodul auszutauschen und umzusetzen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

-----------------------
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

Gerne.

Kannst Du gerne auch einchecken inklusive Doku.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

#29
Code = fertsch.

Doku = morgen :)




Edit: ich habe auch gleich noch die Änderung eingebaut, Intervalle von 0 nicht mehr zuzulassen, um eine Endlosschleife zu vermeiden. Wird ein Intervall von 0 im define angegeben, wird künftig der default Wert von 3600 verwendet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!