Hallo,
ich möchte den Ferienkalender vom Typ Calendar auswerten. Ich lade mir dazu in regelmäßigen Abständen den Kalender für die Schulferien in NRW.
Über ein Dummy Device bekomme ich angezeigt, ob der aktuelle Tag ein Ferientag ist, oder nicht.
Hat jemand eine Idee, wie man auf Basis diesen Typs checken kann, ob der darauffolgende Tag ein Ferientag ist?
Mit holiday kann ich das checken, da ich "Yesterday", "State" und "Tomorrow" ermitteln kann.
Sparatcus.
Genau das Thema wurde hier vor ein paar Tagen schonmal diskutiert:
http://forum.fhem.de/index.php/topic,24646.0.html
Da geht es zwar um einen Abfallkalender, aber technisch ist das exakt das gleiche.
Und in diesem Thread geht es um einen Ferienkalender:
http://forum.fhem.de/index.php/topic,24472.0.html
Wie wäre es einfach mal mit "suchen bevor fragen?"
Hallo,
vielen Dank, hatte zwar schon im Forum gesucht, aber das habe ich noch nicht gefunden...
Ich lese mir das mal durch.
Sparatcus
Hallo,
habe mir die Theman angeschaut. Leider kann ich zum "Ferienkalender-Thema" keine Antwort erstellen. Habe aber eine Frage zum Code von Betateilchen:
sub defineFerien($) {
my ($year) = @_;
my $url = "http://www.schulferien.org/iCal/Ferien/icals/Ferien_Bayern_$year.ics";
CommandDefine(undef, "Bayern_Ferien Calendar ical url $url 21600");
return;
}
Das "CommandDefine (undef..." verstehe ich nicht ganz. Es wird beim Aufruf der Funktion der Kalender "Bayern_Ferien" mit der zusammengesetzten url für das Kalenderjahr %year angelegt. Das funktioniert auch einwandfrei.
Ich hätte jetzt erwartet, dass beim erneuten Aufruf der Funktion die url aktualisiert wird, z.B. wenn sich das Kalenderjahr ändert. Habe es mit {defineFerien('2015')} getestet, aber der Kalender bleibt auf 2014 stehen. Erst wenn ich per delete den Kalender lösche, wird er korrekt angelegt...
Wie muss ich vorgehen, damit immer das korrekte Kalenderjahr gewählt wird? Was bewirkt das "undef"
Spartacus.
Hallo,
ich habe ein bissl experimentiert!
Das CommandDefine kann man auch durch diesen Befehl ablösen:
{fhem "define NRW_Ferien Calendar ical url $url 21600"};
Das ändert allerdings nichts daran, dass beim Jahreswechsel der neue Kalendar automatisch geladen wird.
Man könnte jetzt jedes Jahr am 01.01. um Mitternacht per notify das {defineFerien($year)} aufrufen und vorher den "alten"Kalender löschen, dann sollte es funzen. Aber gibt es keine elegantere Lösung?
Spartacus
Hallo,
habe immer noch ein Veständnissproblem mit der Funktion von betateilchen. Wie wird der Kalender beim Jahreswechsel automatisch aktualisiert? Oder muss man das so, wie ich in den letzten beiden Posts geschrieben habe,anstoßen. Meine Tests diesbezüglich zeigen, dass man den Kalender erst löschen muss um ihn dann über ein notify zum Jahreswechsel neu anzulegen. Geht das nicht eleganter?
Danke,
Spartacus.
Hast Du da schon neue Erkenntnisse?
Ich habe eben erst ein Thema eröffnet, was auf die gleiche Frage abzielt.
Nur bin ich davon ausgegangen, dass nicht gelöscht werden muss.
Ich dachte das Problem ist, dass eben im Idealfall nie neu gestartet wird. Also zum Jahreswechsel der dann neue Kalender nicht definiert wird, da kein INITIALIZED kommt.
Als workaround hatte jch mir ein doif überlegt, welches (um 00:05 und $mday=01 und $month=01) or intitialized den define aufruft.
Aber wenn man erst löschen muss, klappt das ja auch nicht.
Hallo,
Nein, ich habe keine Lösung gefunden. Ich ändere das Kalenderjahr zu Fuss. Ist zwar nicht so elegant, aber ich muss sowieso einmal pro Jahr den Abfallkalender meiner Stadt aktualisieren.
Ich werde Deinen Thread weiter verfolgen.....
Spartacus
Lösche nun jeweils vorher die Definition. So funktioniert es auch automatisch.