Almanac (Jahreskalender)

Version Product Version License Actions

Dieses Modul bietet jährliche Kalenderinformationen wie Feiertage, Schulferien und Festtage.
Außerdem werden Informationen wie Arbeitstage im Monat, Schaltjahr, Jahreszeit oder ob Wochenende ist aktuell gehalten. Darüber hinaus kann man Geburtstage, Hochzeitstage und Todestage verwalten und sich täglich informieren lassen.

Inhaltverzeichnis

  1. Funktionsumfang
  2. Voraussetzungen
  3. Installation
  4. Einrichten der Instanzen in IP-Symcon
  5. Statusvariablen und Profile
  6. WebFront
  7. PHP-Befehlsreferenz
  8. Versionshistorie

1. Funktionsumfang

Das Modul nutzt eine eigens entwickelte JSON-API (CDN basierend) um die Daten für Feiertage und Schulferien in Deutschland, Österreich und der Schweiz bereitzustellen.
Derzeit unterstützt das Modul auch eine Vielzahl verschiedenster religiöser und weltlicher Festtage (z.B. Valentinstag oder Kindertag).
Als Gedächtnisstütze können die jährlichen Geburtstage, Hochzeitstage aber auch Todestage verwaltet werden und man kann sich täglich informieren lassen ob ein Termin ansteht (Meldungsverwaltung oder via Webfront-Notification).
Darüber hinaus werden mittels der PHP Funktion "date" verschiedene Informationen für das aktuelle Datum ermittelt.
In Kombination mit den ermittelten Feiertagen werden auch die Arbeitstage im aktuellen Monat bereitgestellt.

Folgende Informationen werden ermittelt:

  • Sind Ferien und welche
  • Feiertag oder nicht und wie heißt er
  • Festtag oder nicht und wie heißt er
  • Hat jemand Geburtstag, Hochzeitstag oder Todestag
  • Der Tag des Jahres
  • Anzahl Tage im Monat
  • Arbeitstage im Monat
  • Schaltjahr oder nicht
  • Sommerzeit oder nicht
  • Wochenende oder nicht
  • Nummer der Kalenderwoche
  • Jahreszeit (Frühling, Sommer, Herbst und Winter)

All diese Information können auch über die Methode ALMANAC_DateInfo als Array abgeholt werden.

Folgende Informationen stehen als key => value Paare zur Verfügung:

Index Typ Beschreibung
IsSummer bool TRUE, wenn Sommerzeit ist
IsLeapYear bool TRUE, wenn Schaltjahr ist
IsWeekend bool TRUE, wenn Wochenende ist (SA-SO)
WeekNumber int Kalenderwochennummer
DaysInMonth int Anzahl Tage im Monat
DayOfYear int Tag im Jahr (1-366)
Season string Name der Jahreszeit ("Frühling", "Sommer", "Herbst" oder "Winter")
Festive string Name des Festtags, oder "Kein Festtag"
IsFestive bool TRUE, wenn Festtag ist
WorkingDays int Arbeitstage im Monat
Holiday string Name des Feiertags, oder "Kein Feiertag"
IsHoliday bool TRUE, wenn Feiertag ist
Vacation string Name der Schulferien, oder "Keine Ferien"
IsVacation bool TRUE, wenn Schulferienzeit ist
IsBirthday bool TRUE, wenn Geburtstag(e) ansteht
Birthday array LEER, oder Feld mit Datum, Jahrestag und Name
Isweddingday bool TRUE, wenn Hochzeitstag(e) ansteht
Weddingday array LEER, oder Feld mit Datum, Jahrestag und Name
IsDeathday bool TRUE, wenn Todestag(e) ansteht
Deathday array LEER, oder Feld mit Datum, Jahrestag und Name

2. Voraussetzungen

  • IP-Symcon ab Version 5.2

3. Installation

  • Über den Modul Store das Modul Almanac installieren.
  • Alternativ Über das Modul-Control folgende URL hinzufügen.
    https://github.com/Wilkware/IPSymconAlmanac oder git://github.com/Wilkware/IPSymconAlmanac.git

4. Einrichten der Instanzen in IP-Symcon

  • Unter "Instanz hinzufügen" ist das ‚Almanac‘-Modul (Alias: Jahreskalender, Almanach) unter dem Hersteller ‚(Sonstige)‘ aufgeführt.

Konfigurationsseite:

Einstellungsbereich:

Feiertage …

Name Beschreibung
Land Auswahl des Landes (Deutschland, Österreich und Schweiz).
Bundesland Auswahl des Bundeslandes/Karton für welchen man die Feiertage ermittelt haben möchte.

Schulferien …

Name Beschreibung
Land Auswahl des Landes (Deutschland, Österreich und Schweiz).
Bundesland Auswahl des Bundeslandes/Karton für welchen man die Schulferien ermittelt haben möchte.
Schulen Derzeit nur für die Schweiz entscheidend, Auswahl der gewünschten Schule im Kanton.

Geburtstage …

Name Beschreibung
Termine Eingabe des Geburtstermins (Tag.Monat.Jahr) und den dazugehörigen Namen
Nachricht ans Webfront senden Auswahl ob Push-Nachricht gesendet werden soll oder nicht (Ja/Nein)
Nachricht Sendezeit Uhrzeit wann täglich die Nachricht gesendet weden soll
Meldung an Anzeige senden Auswahl ob Eintrag in die Meldungsverwaltung erfolgen soll oder nicht (Ja/Nein)
Lebensdauer der Nachricht Wie lange so die Meldung angezeigt werden?
Format der Textmitteilung Frei wählbares Format der zu sendenden Nachricht/Meldung
Text in Variable schreiben Auswahl ob Nachricht in Variable geschrieben werden soll
Texttrennzeichen/Zeilenumbruch Trennzeichen bei mehreren Ereignissen

Hochzeitstage …

Name Beschreibung
Termine Eingabe Heiratstermins (Tag.Monat.Jahr) und den dazugehörigen Namen
Nachricht ans Webfront senden Auswahl ob Push-Nachricht gesendet werden soll oder nicht (Ja/Nein)
Nachricht Sendezeit Uhrzeit wann täglich die Nachricht gesendet weden soll
Meldung an Anzeige senden Auswahl ob Eintrag in die Meldungsverwaltung erfolgen soll oder nicht (Ja/Nein)
Lebensdauer der Nachricht Wie lange so die Meldung angezeigt werden?
Format der Textmitteilung Frei wählbares Format der zu sendenden Nachricht/Meldung
Text in Variable schreiben Auswahl ob Nachricht in Variable geschrieben werden soll
Texttrennzeichen/Zeilenumbruch Trennzeichen bei mehreren Ereignissen

Todestage …

Name Beschreibung
Termine Eingabe Sterbetag (Tag.Monat.Jahr) und den dazugehörigen Namen
Nachricht ans Webfront senden Auswahl ob Push-Nachricht gesendet werden soll oder nicht (Ja/Nein)
Nachricht Sendezeit Uhrzeit wann täglich die Nachricht gesendet weden soll
Meldung an Anzeige senden Auswahl ob Eintrag in die Meldungsverwaltung erfolgen soll oder nicht (Ja/Nein)
Lebensdauer der Nachricht Wie lange so die Meldung angezeigt werden?
Format der Textmitteilung Frei wählbares Format der zu sendenden Nachricht/Meldung
Text in Variable schreiben Auswahl ob Nachricht in Variable geschrieben werden soll
Texttrennzeichen/Zeilenumbruch Trennzeichen bei mehreren Ereignissen

Erweiterte Einstellungen …

Name Beschreibung
Feirtage ermitteln Status, ob Ermittlung der Feiertage erwünscht ist
Schulferien ermitteln Status, ob Ermittlung der Schulferien erwünscht ist
Festtage ermitteln Status, ob Ermittlung der Festtage erwünscht ist
Geburtstage ermitteln Status, ob Geburtstage ausgewertet werden sollen
Hochzeitstage ermitteln Status, ob Hochzeitstage ausgewertet werden sollen
Todestage ermitteln Status, ob Todesstage ausgewertet werden sollen
Information zum aktuellen Datum ermitteln Status, ob Informationen zum aktuellen Datum erwünscht sind.
WebFront Instanz ID des Webfronts, an welches die Push-Nachrichten für Geburts-, Hochzeits- und Todestage gesendet werden soll
Meldsungsskript Skript ID des Meldungsverwaltungsskripts, weiterführende Infos im Forum: Meldungsanzeige im Webfront

Aktionsbereich:

Import & Export von …

Aktion Beschreibung
GEBURTSTAGE Öffnet Popup für die Möglichkeit zum Import/Export/Leeren der Geburtstagsliste als CSV Datei (geburtstage.csv)
HOCHZEITSTAGE Öffnet Popup für die Möglichkeit zum Import/Export/Leeren der Hochzeitsliste als CSV Datei (hochzeitstage.csv)
TODESTAGE Öffnet Popup für die Möglichkeit zum Import/Export/Leeren der Sterbeliste als CSV Datei (todestage.csv)

Hinweis: CSV-Format ist Termin, Name => 1.1.1970,"Herr Max Mustermann"

Tagesdaten …

Aktion Beschreibung
AKTUALISIEREN Ermittelt für das aktuelle Datum alle Informationen (Update)

5. Statusvariablen und Profile

Die Statusvariablen werden automatisch angelegt. Das Löschen einzelner kann zu Fehlfunktionen führen.

Name Typ Beschreibung
Ist Feiertag? Boolean Ist aktueller Tag ein Feiertag?
Ist Ferienzeit? Boolean Fällt aktueller Tag in die Ferien?
Ist Sommerzeit? Boolean Ist aktuell Sommerzeit aktiv?
Ist Schaltjahr? Boolean Ist aktueller Jahr ein Schaltjahr?
Ist Wochenende? Boolean Ist gerade Wochenende?
Ist Festtag? Boolean Ist aktueller Tag ein Festtag?
Ist Geburtstag? Boolean Ist am aktuellen Tag ein Geburtstag?
Ist Hochzeitstag? Boolean Ist am aktuellen Tag ein Hochzeitstag?
Ist Todestag? Boolean Ist am aktuellen Tag ein Todestag?
Feiertag String Name des Feriertages oder ‚Kein Feiertag‘
Ferien String Name der Schulferien oder ‚Keine Ferien‘
Festtag String Name des Festtages oder ‚Kein Festtag‘
Geburtstag String Formatierte Ausgabe des Geburtstages oder leer
Hochzeitstag String Formatierte Ausgabe des Hochzeitstages oder leer
Todestag String Formatierte Ausgabe des Todestages oder leer
Kalenderwoche Integer Nummer der aktuelle Kalenderwoche
Tage im Monat Integer Wieviel Tage hat der aktuelle Monat?
Tag im Jahr Integer Welcher Tag des Jahres?
Arbeitstage im Monat Integer Wieviel Arbeitstage hat der Monat des gewählten Bundeslandes?
Jahreszeit String "Frühling", "Sommer", "Herbst" oder "Winter"

Folgende Profile werden angelegt:

Name Typ Beschreibung
ALMANAC.Question Boolean FALSE = Nein / TRUE = Ja

6. WebFront

Man kann die Statusvariablen direkt im WF verlinken.

7. PHP-Befehlsreferenz

void ALMANAC_Update(int $InstanzID):

Holt entsprechend der Konfiguration die gewählten Daten.
Die Funktion liefert keinerlei Rückgabewert.

Beispiel: ALMANAC_Update(12345);

string ALMANAC_DateInfo(int $InstanzID, int $Timestamp);

Gibt für das übergebene Datum (Unix Timestamp) alle Informationen als assoziatives Array zurück. HINWEIS: Das Datum sollte nur maximal +/- 1 Jahr vom aktuellen Tag entfernt liegen.

Beispiel: ALMANAC_DateInfo(12345, time());

{
"IsSummer": false,
"IsLeapYear": false,
"IsWeekend": true,
"WeekNumber": 6,
"DaysInMonth": 28,
"DayOfYear": 45,
"Season": "Winter",
"Festive": "Valentinstag",
"IsFestive": true,
"WorkingDays": 20,
"Holiday": "Kein Feiertag",
"IsHoliday": false,
"Vacation": "Keine Ferien",
"IsVacation": false,
"IsBirthday": true, "Birthday": [{"date": 14.2.1970, "years": 51, "name": "Valentin Tag"}], "IsWeddingday": false, "Weddingday": [], "IsDeathday]: false, "Deathday": [] }

8. Versionshistorie

v4.0.20210214

  • NEU: Eigener Webservice (JSON-API) für Ferien und Feiertage in DE, AT und CH (aktuell 2015 – 2022)
  • NEU: Ermittlung von verschiedensten religiösen und weltlichen Festtagen
  • NEU: Ermittlung der aktuellen Jahreszeit ("Frühling", "Sommer", "Herbst" oder "Winter")
  • NEU: Verwaltung und Meldung von Geburtstagen (Liste)
  • NEU: Verwaltung und Meldung von Hochzeitstagen (Liste)
  • NEU: Verwaltung und Meldung von Todesstagen (Liste)
  • NEU: Import & Export Funktionalität für Geburts-, Hochzeits- und Todestage
  • NEU: Ferienzeitraum kann jetzt mit Ferienname ausgegeben werden
  • FIX: Struktur DateInfo erweitert und Teile umbenannt
  • FIX: Modul Aliase auf Jahreskalender und Almanach geändert

v3.2.20210126

  • FIX: Quickfix wegen Sicherheitscheck bei Datenabholung

v3.1.20210116

  • NEU: Funktion DateInfo liefert die Daten jetzt im JSON-Format
  • FIX: Fehlerbehandlung komplett neu umgesetzt

v3.0.20210103

  • NEU: Ermittlung der Ferien und Feiertage für DE, AT und CH
  • NEU: Umstellung der Datenlieferung auf schulferien.org
  • FIX: Name des Feiertages nicht korrekt gespeichert
  • FIX: Vereinheitlichungen der Libs

v2.0.20200416

  • NEU: Ermittlung der Arbeitstage im Monat
  • NEU: Funktion DateInfo für manuelles Ermitteln der Daten für ein bestimmtes Datum
  • NEU: Umstellung der Entwicklung auf Symcon StylePHP & Workflow actions

v1.2.20190813

  • NEU: Anpassungen für Module Store
  • NEU: Vereinheitlichungen, Umstellung auf Libs
  • NEU: Lokalisierung (Englisch)

v1.1.20190501

  • FIX: Name des Feiertages nicht korrekt gespeichert

v1.1.20190312

  • NEU: Vereinheitlichungen, StyleCI uvm.

v1.0.20180505

  • FIX: BugFix IPS 5.0

v1.0.20171230

  • NEU: Initialversion

Danksagung

Ich möchte mich für die Unterstützung bei der Entwicklung dieses Moduls bedanken bei …

  • KaiS : für den regen Austausch bei der allgemeinen Modulentwicklung
  • Nall-chan : für die initial Idee mit dem Modul Schulferien
  • Nairda : für das Testen der Daten in der Schweiz
  • ralf, timloe : für die Anregung und Austausch für eine IPSView-konforme Formatierung
  • Attain. bumaas, tomgr : für das generelle Testen und Melden von Bugs

Vielen Dank für die hervorragende und tolle Arbeit!

Entwickler

Spenden

Die Software ist für die nicht kommerzielle Nutzung kostenlos, Schenkungen als Unterstützung für den Entwickler bitte hier:

License

Lizenz

Licence