KalenderURL vom letzten Jahr

Begonnen von p2k, 02 Januar 2023, 15:14:33

Vorheriges Thema - Nächstes Thema

p2k

Hallo.

ich hatte heute morgen das Problem, das die Weihnachtsferien nur im 2022er Kalender eingetragen sind, FHEM aber die KalenderURL aus dem aktuellen Jahr generiert. Daher hat heute in der früh das Wecker geläutet :-(

Ich hab gesucht, und im 57_Calendar.pm Modul keine Möglichkeit gefunden, die %Y wildcard mit einem alternativen Datum zu befüllen.

Ich habe das jetzt selbst umgesetzt:

--- FHEM/57_Calendar.pm_ORIG 2022-12-05 07:21:04.584523083 +0100
+++ FHEM/57_Calendar.pm 2023-01-02 15:04:37.668721873 +0100
@@ -1744,6 +1744,7 @@
                       "onCreateEvent quirks ".
                       "defaultFormat defaultTimeFormat ".
                       "hasModeReadings:0,1 " .
+                      "wildCardTimeOffset ".
                       $readingFnAttributes;
}

@@ -2595,6 +2596,9 @@
   my $url = $hash->{".fhem"}{url};
   unless ($hash->{".fhem"}{noWildcards} == 1 || AttrVal($name,'quirks','') =~ /noWildcards/) {
     my @ti = localtime;
+    if (AttrVal($name, 'wildCardTimeOffset', '') ne '' && AttrVal($name, 'wildCardTimeOffset', '') =~ /^[+-]?\d+$/) {
+        @ti = localtime(time + AttrVal($name, 'wildCardTimeOffset', ''));
+    }
     $url   = ResolveDateWildcards($hash->{".fhem"}{url}, @ti);
   }



Wäre das auch etwas fürs Modul im allgemeinen?

Danke,
lg
Philipp

p2k

#1
@neubert kannst du mir bitte sagen, ob der Change für eine Aufnahme geeignet ist oder welche Änderungen du brauchst?

Ich habe jetzt auch noch die Doku zum Change angepasst, das hatte ich letztes Jahr übersehen.

Du darfst diesen Dateianhang nicht ansehen.

betateilchen

Meine persönliche Meinung: Niemand braucht ein zusätzliches Attribut, um einen abschaltbaren Automatismus auszuhebeln und zu vergewaltigen.

Entweder, man möchte mit funktionierenden und standardkonformen Wildcards arbeiten, dann braucht es das Attribut nicht.

Oder man macht sich einmal im Jahr die Mühe, den Pfad zur Datenquelle anzupassen. Das geht entweder manuell oder auch automatisiert durch FHEM selbst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

p2k

Danke fürs Feedback. Das mit dem URL ändern ist mir klar, mein Problem ist, das ich das immer Vergesse und dann in den Weihnachtsferien der Wecker am 2. Jänner losgeht...

Hast du einen Tipp für mich, wie ich im automatisiert FHEM die URL anpassen kann?
Danke

Adimarantis

Das Problem kenne ich. Ich habe mir hier mit zwei Kalendern beholfen.
Der CALVIEW "FerienView" zitiert die Calender Devices "Ferien" und "Ferien2".
Der Calender "Ferien" benutzt standardmässig %Y während "Ferien2" fest auf "2023" zeigt. Dann habe ich ganz 2024 Zeit dran zu denken "Ferien2" um eins zu inkrementieren.
Schöner wäre allerdings einfach z.B. ein %Y1 oder %y welches mit "Jahr minus 1" belegt würde.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

yersinia

Welchen Grund gibt es, heute wissen zu wollen, ob zB am 29.12. letzten Jahres Ferien waren? (beim Abfallkalender fand ich es immer nervig, wenn Ende Dezember es keine (weiteren) Termine mehr gab bis dann am 1.1. mittels %Y das Jahr neu gesetzt worden ist - aber das ist kein FHEM Problem sondern vom Kalenderanbieter. Darüberhinaus kann man solche Einmalaktivitäten bereits mit FHEM-Bordmitteln erledigen, wie betateilchen schon angemerkt hat)

FHEM interessiert sich doch für heute und ggf morgen, oder nicht? Selbst wenn ich jetzt einen Ferienkalender für 2024 abonnieren würde, würde ich auch erwarten, dass die Weihnachtsferien 2023 (immer noch) eingetragen sind sofern dann jetzt auch Ferien wären.

Darüberhinaus gibt es auch noch (nicht Jahres-abhängigen) Alternativen, wenn man Ferien (für DE) benötigt, zB https://www.feiertage-deutschland.de/kalender-download/.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | 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

betateilchen

Zitat von: yersinia am 05 Januar 2024, 16:06:48Welchen Grund gibt es, heute wissen zu wollen, ob zB am 29.12. letzten Jahres Ferien waren?

Ich denke, diese Frage umschreibt nicht das gesamte Thema.

Das Problem ist, dass die Weihnachtsferien vom 21.12.2023-05.01.2024 nur im Kalender von 2023 vorkommen und ab 01.01.24 durch das %Y in der URL der Kalender für 2024 in FHEM verwendet wird. Der Kalender 2024 weiß aber nix (mehr) von den Weihnachtsferien, die im Vorjahr begonnen haben.

Deshalb geht die "Auswertung" des Kalenders von einem regulären Arbeitstag aus und läßt den Wecker klingeln.

Zitat von: p2k am 05 Januar 2024, 15:05:47Hast du einen Tipp für mich, wie ich im automatisiert FHEM die URL anpassen kann?

Dafür gibt es mehrere Ansätze.

Man könnte z.B. beim Start der Weihnachtsferien ein at anlegen, das zum Endzeitpunkt die url prüft und ggf. ändert.

Wenn man die plugins von Calendar kennt, kann man $e->{end} verwenden, um mit diesem timestamp ein at anzulegen, das dann am Ende der Ferien ausgeführt wird und die neue URL per defmod in das device einträgt.

Aus der commandref:
$e->{end} the end time of the calendar event, in seconds since the epoch
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Adimarantis

Zitat von: yersinia am 05 Januar 2024, 16:06:48Darüberhinaus gibt es auch noch (nicht Jahres-abhängigen) Alternativen, wenn man Ferien (für DE) benötigt, zB https://www.feiertage-deutschland.de/kalender-download/.
Danke für den Link. So lässst sich das Problem natürlich auch (bis 2035) lösen. Wahrscheinlich sinnvoll den zumindest jährlich neu einzulesen, falls sich doch mal was ändert.
Für die Feiertage gibt es auf dieser Seite leider keine bundeslandspezifische Version. Dafür bin ich hier fündig geworden: https://onlinekalender.info/feiertage/deutschland/ics
Der scheint auch mehrjährig zu sein.

Mal sehen wie langlebig das Ganze ist.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)