Jahreskalender

Dokumentation direkt aus GitHub Wilkware/Almanac ↗

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.
Auch verschiedene astronomische Daten wie Mond- und Sonnenfinsternis oder die Daten der Mondphasen (Neumond, zunehmenden Mond, Vollmond und abnehmenden Mond) werden bereitgestellt.
Ein Zitat des Tages rundet die Funktionalität des Modules ab.

Module-Visu

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 Visualisierung-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.
Spezielle astronomische Ereignisse wie Mond- oder Sonnenfinsternis und das Datum der 4 verschiedenen Mondphasen für das nächste Datum wird ermittelt. Aber auch ein “Zitat des Tages” kann abgerufen werden.

Folgende Informationen werden ermittelt:

  • Sind Ferien und welche
  • Feiertag oder nicht und wie heißt er
  • Festag 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
  • Wochentag (ISO-8601)
  • Jahreszeit (Frühling, Sommer, Herbst und Winter)
  • Ist eine Mond- oder Sonnenfinsternis
  • Tritt eine Mondphasen (Neumond, zunehmenden Mond, Vollmond oder abnehmenden Mond) ein
  • Zitat des Tages (Spruch und Autor)

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:

IndexTypBeschreibung
IsSummerboolTRUE, wenn Sommerzeit ist
IsLeapYearboolTRUE, wenn Schaltjahr ist
IsWeekendboolTRUE, wenn Wochenende ist (SA-SO)
WeekdayintWochentag (1=Montag … 7=Sonntag)
WeekNumberintKalenderwochennummer
DaysInMonthintAnzahl Tage im Monat
DayOfYearintTag im Jahr (1-366)
DayLongstringTagesdatum (langes Format, z.B.: Montag, 1.Januar 1970)
SeasonstringName der Jahreszeit (“Spring”, “Summer”, “Fall” oder “Winter”)
FestivestringName des Festtags, oder “Kein Festtag”
IsFestiveboolTRUE, wenn Festtag ist
WorkingDaysintArbeitstage im Monat
HolidaystringName des Feiertags, oder “Kein Feiertag”
IsHolidayboolTRUE, wenn Feiertag ist
VacationstringName der Schulferien, oder “Keine Ferien”
IsVacationboolTRUE, wenn Schulferienzeit ist
IsBirthdayboolTRUE, wenn Geburtstag(e) ansteht
BirthdayarrayLEER, oder Feld mit Datum, Jahrestag und Name
IsWeddingdayboolTRUE, wenn Hochzeitstag(e) ansteht
WeddingdayarrayLEER, oder Feld mit Datum, Jahrestag und Name
IsDeathdayboolTRUE, wenn Todestag(e) ansteht
DeathdayarrayLEER, oder Feld mit Datum, Jahrestag und Name
IsEclipseboolTRUE, wenn Mond- oder Sonnenfinsternis ist
EclipsearrayFeld mit Name, Datum, Uhrzeit des nächsten Ereignisses (LEER, wenn im aktuellen Jahr kein Ereignis mehr ist)
IsMoonphaseboolTRUE, wenn Mondphase ist
MoonphasearrayFeld mit Name, Datum, Uhrzeit des nächsten Ereignisses (LEER, wenn im aktuellen Jahr kein Ereignis mehr ist)
QuoteOfTheDayarrayZitat und Autor

2. Voraussetzungen

  • Symcon ab Version 8.1

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 Symcon

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

Konfigurationsseite:

Einstellungsbereich:

🏖️ Feiertage …

NameBeschreibung
LandAuswahl des Landes (Deutschland, Österreich und Schweiz).
BundeslandAuswahl des Bundeslandes/Karton für welchen man die Feiertage ermittelt haben möchte.

✈️ Schulferien …

NameBeschreibung
LandAuswahl des Landes (Deutschland, Österreich und Schweiz).
BundeslandAuswahl des Bundeslandes/Karton für welchen man die Schulferien ermittelt haben möchte.
SchulenDerzeit nur für die Schweiz entscheidend, Auswahl der gewünschten Schule im Kanton.

🎂 Geburtstage …

NameBeschreibung
TermineEingabe des Geburtstermins (Tag.Monat.Jahr) und den dazugehörigen Namen
Nachricht ans Visualisierung sendenAuswahl ob Push-Nachricht gesendet werden soll oder nicht (Ja/Nein)
Nachricht SendezeitUhrzeit wann täglich die Nachricht gesendet weden soll
Meldung an Anzeige sendenAuswahl ob Eintrag in die Meldungsverwaltung erfolgen soll oder nicht (Ja/Nein)
Lebensdauer der NachrichtWie lange so die Meldung angezeigt werden?
Format der TextmitteilungFrei wählbares Format der zu sendenden Nachricht/Meldung
Text in Variable schreibenAuswahl ob Nachricht in Variable geschrieben werden soll
Texttrennzeichen/ZeilenumbruchTrennzeichen bei mehreren Ereignissen

💍 Hochzeitstage …

NameBeschreibung
TermineEingabe Heiratstermins (Tag.Monat.Jahr) und den dazugehörigen Namen
Nachricht an Visualisierung sendenAuswahl ob Push-Nachricht gesendet werden soll oder nicht (Ja/Nein)
Nachricht SendezeitUhrzeit wann täglich die Nachricht gesendet weden soll
Meldung an Anzeige sendenAuswahl ob Eintrag in die Meldungsverwaltung erfolgen soll oder nicht (Ja/Nein)
Lebensdauer der NachrichtWie lange so die Meldung angezeigt werden?
Format der TextmitteilungFrei wählbares Format der zu sendenden Nachricht/Meldung
Text in Variable schreibenAuswahl ob Nachricht in Variable geschrieben werden soll
Texttrennzeichen/ZeilenumbruchTrennzeichen bei mehreren Ereignissen

🪦 Todestage …

NameBeschreibung
TermineEingabe Sterbetag (Tag.Monat.Jahr) und den dazugehörigen Namen
Nachricht an Visualisierung sendenAuswahl ob Push-Nachricht gesendet werden soll oder nicht (Ja/Nein)
Nachricht SendezeitUhrzeit wann täglich die Nachricht gesendet weden soll
Meldung an Anzeige sendenAuswahl ob Eintrag in die Meldungsverwaltung erfolgen soll oder nicht (Ja/Nein)
Lebensdauer der NachrichtWie lange so die Meldung angezeigt werden?
Format der TextmitteilungFrei wählbares Format der zu sendenden Nachricht/Meldung
Text in Variable schreibenAuswahl ob Nachricht in Variable geschrieben werden soll
Texttrennzeichen/ZeilenumbruchTrennzeichen bei mehreren Ereignissen

🔭 Verschiednes …

NameBeschreibung
Textausgabeformat für Mond- und SonnenfinsternisseFrei wählbares Format für die Ereignisausgabe
Textausgabeformat für MondphasenFrei wählbares Format für die Ereignisausgabe
Textausgabeformat für Zitat des TagesFrei wählbares Format für die Zitatsausgabe
Textausgabeformat für langes TagesformatFrei wählbares Format für das Tagesdatum

✨ Visualisierung …

NameBeschreibung
Rechner/Großer Bildschirm (≥1024px)Spaltenanzahl (1-6) innerhalb der Kachel für Desktop
Tablet/Mittelgroßer Bildschirm (≥600px)Spaltenanzahl (1-4) innerhalb der Kachel für Tablets
Mobiltelefon/Kleiner Bildschirm (<600px)Spaltenanzahl (1-2) innerhalb der Kachel für Handys
Komplikationen (Tabelle)Definition der Reihenfolge, zu verwendendes Icon, Platzbedarf und Sichtbarkeit je Gerät

⚙️ Erweiterte Einstellungen …

NameBeschreibung
Feirtage ermittelnStatus, ob Ermittlung der Feiertage erwünscht ist
Schulferien ermittelnStatus, ob Ermittlung der Schulferien erwünscht ist
Festtage ermittelnStatus, ob Ermittlung der Festtage erwünscht ist
Geburtstage ermittelnStatus, ob Geburtstage ausgewertet werden sollen
Hochzeitstage ermittelnStatus, ob Hochzeitstage ausgewertet werden sollen
Todestage ermittelnStatus, ob Todesstage ausgewertet werden sollen
Finsternisse ermittelnStatus, ob Ermittlung von Mond- oder Sonnenfinsternisse erwünscht ist
Mondphasen ermittelnStatus, ob Ermittlung von Mondphasen erwünscht ist
Zitat des Tages ermittelnStatus, ob Zitat des Tages ausgegeben werden soll
Information zum aktuellen Datum ermittelnStatus, ob Informationen zum aktuellen Datum erwünscht sind.
FeiertageText, welcher ausgeben wird wenn kein Feiertag vorliegt.
SchulferienText, welcher ausgeben wird wenn keine Ferien vorliegt.
FesttageText, welcher ausgeben wird wenn kein Festtag vorliegt.
GeburtstageText, welcher ausgeben wird wenn kein Geburtstag vorliegt.
HochzeitstageText, welcher ausgeben wird wenn kein Hochzeitstag vorliegt.
TodestageText, welcher ausgeben wird wenn kein Todestag vorliegt.
Visualisierungs-InstanzID der Visualisierung, an welches die Push-Nachrichten für Geburts-, Hochzeits- und Todestage gesendet werden soll
MeldsungsskriptSkript ID des Meldungsverwaltungsskripts, weiterführende Infos im Forum: Meldungsanzeige im Webfront

Aktionsbereich:

♾️ Import & Export von …

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

AktionBeschreibung
AKTUALISIERENErmittelt für das aktuelle Datum alle Informationen (Update)

5. Statusvariablen und Darstellungen

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

Statusvariablen

NameTypBeschreibung
Ist Feiertag?BooleanIst aktueller Tag ein Feiertag?
Ist Ferienzeit?BooleanFällt aktueller Tag in die Ferien?
Ist Sommerzeit?BooleanIst aktuell Sommerzeit aktiv?
Ist Schaltjahr?BooleanIst aktueller Jahr ein Schaltjahr?
Ist Wochenende?BooleanIst gerade Wochenende?
Ist Festtag?BooleanIst aktueller Tag ein Festtag?
Ist Geburtstag?BooleanIst am aktuellen Tag ein Geburtstag?
Ist Hochzeitstag?BooleanIst am aktuellen Tag ein Hochzeitstag?
Ist Todestag?BooleanIst am aktuellen Tag ein Todestag?
FeiertagStringName des Feriertages oder ‘Kein Feiertag’
FerienStringName der Schulferien oder ‘Keine Ferien’
FesttagStringName des Festtages oder ‘Kein Festtag’
GeburtstagStringFormatierte Ausgabe des Geburtstages oder leer
HochzeitstagStringFormatierte Ausgabe des Hochzeitstages oder leer
TodestagStringFormatierte Ausgabe des Todestages oder leer
KalenderwocheIntegerNummer der aktuelle Kalenderwoche
Tage im MonatIntegerWieviel Tage hat der aktuelle Monat?
Tag im JahrIntegerWelcher Tag des Jahres?
TagesformatStringFormatiertes Datum (lang)
JahreszeitString“Frühling”, “Sommer”, “Herbst” oder “Winter”

Darstellungen

Folgende Dartsellungen werden hinterlegt:

Template-NameTypBeschreibung
<direkte Assoziazion>WertanzeigeFALSE = Nein(No) / TRUE = Ja(Yes)
<direkte Assoziazion>WertanzeigeWinter(Winter), Frühling(Spring), Herbst(Fall), Sommer(Summer)
<direkte Assoziazion>WertanzeigeMontag(Monday), Dienstag(Thuesday) … Sunday(Sonntag)

6. Visualisierung

Man kann sowohl das gesamte Modul (HTML-SDK Support) als auch nur die Statusvariablen direkt in der Visualisierung verlinken.

Wird das ganze Modul verlinkt, dann werden die Informationen als Inline-Kacheln angezeigt, welche in der Modul-Konfiguration entsprechend definiert wurden.

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,
“Weekday”: 1,
“WeekNumber”: 6,
“DaysInMonth”: 28,
“DayOfYear”: 45,
“DayLong”: “Dienstag, 20.Februar”,
“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”: [],
“IsEclipse”: true,
“Eclipse”: {“name”: “Partielle Sonnenfinsternis”, “date”: “30.04.2022”, “time”: “22:42:00”},
“IsMoonphase”: true,
“Moonphase”: {“name”: “Neumond”, “date”: “30.04.2022”, “time”: “22:34:00”},
“QuoteOfTheDay”: {“quote”: “Bist du wütend, zähl bis vier, hilft das nicht, dann explodier.”, “author”: “Wilhelm Busch”}
}

8. Versionshistorie

v6.1.20260731

  • NEU: Einführung von namespaced Traits
  • FIX: Cache für TileVisu wird jetzt selbständig nach Neustart befüllt

v6.0.20260531

  • NEU: Support für TileVisu (Kachel-Visualisierung)
  • NEU: Kompatibilität auf IPS 8.1 vereinheitlicht
  • NEU: Umstellung auf Strict-Modus (IPSModuleStrict)
  • NEU: Umstellung auf Darstellungen
  • NEU: Umstellung auf internen Webhook
  • NEU: Modulversion wird in Quellcodesektion angezeigt
  • FIX: Modulkonfiguration überarbeitet und vereinheitlicht
  • FIX: Interne Bibliotheken und Konfiguration überarbeitet und vereinheitlicht
  • FIX: Diverse kleinere Fehler korrigiert
  • FIX: Fehler in Dokumentation korrigiert

v5.7.20250816

  • FIX: Signatur von ProcessHookData zurückgesetzt (kein Rückgabewert)

v5.6.20250805

  • FIX: Nachrichten an Visualisierungen unterscheiden jetzt zwischen WebFront und TileVisu
  • FIX: Kleiner Namings in Konfiguration und Übersetzungen angepasst
  • FIX: Kleiner Optimierung in der CI-Kette vorgenommen

v5.5.20250727

  • NEU: Continuous Integration mit Check Style, Static Code Analysis und Unit Tests eingeführt
  • NEU: Debugging Funktionen komplett überarbeitet
  • FIX: Caching überarbeitet. Memory limit eingehalten
  • FIX: Dokumentation für PHP Static Analysis komplett überarbeitet
  • FIX: Bibliotheksfunktionen überarbeitet in Vorbereitung auf IPSModuleStrict

v5.4.20250715

  • NEU: Caching eingeführt um Traffic zu reduzieren
  • FIX: Berechnung Buß- und Bettag korriegiert
  • FIX: Bibliotheks- bzw. Modulinfos vereinheitlicht

v5.3.20240724

  • NEU: Neu Statusvariable für langes Tagesformat
  • NEU: Kompatibilität auf IPS 6.4 hoch gesetzt
  • FIX: Bibliotheks- bzw. Modulinfos vereinheitlicht
  • FIX: Namensnennung und Repo vereinheitlicht
  • FIX: Update Style-Checks
  • FIX: Fehlende Übersetzungen nachgeholt
  • FIX: Dokumentation vereinheitlicht

v5.2.20230703

  • NEU: Anpassungen für IPS 7.0 (PHP 8.2)
  • NEU: Vorgabetexte für nicht eingetretene Ereignisse hinzugefügt
  • FIX: Falscher Separator bei Hochzeitstage verwendet
  • FIX: Fehlende Übersetzungen nachgeholt
  • FIX: Veraltetet Style-Checks ausgebaut
  • FIX: JSON Format vereinheitlicht
  • FIX: Weitere Modulvereinheitlichungen vorgenommen

v5.1.20220706

  • NEU: Wochentag (nach ISO-8601) aufgenommen
  • FIX: Dokumentation vereinheitlicht

v5.0.20220101

  • NEU: Kompatibilität auf IPS 6.0 hoch gesetzt
  • NEU: Update auf Version 3 vom PHP Coding Standards Fixer
  • NEU: String-Profile aufgenommen (z.B. für Jahreszeit)
  • NEU: Bibliotheks- bzw. Modulinfos vereinheitlicht
  • NEU: Englische Übersetzungen aufgenommen bzw. vervollständigt
  • NEU: Konfigurationsdialog überarbeitet (v6 Möglichkeiten genutzt)
  • NEU: Mondphasen integriert
  • NEU: Mond- und Sonnenfinsternisse integriert
  • NEU: Zitat des Tages integriert
  • FIX: Fehler in Webhook Helper korrigiert
  • FIX: Fehler bei der Ausgabe der Jahreszeit korrigiert
  • FIX: Leere JSON-Liste korrekt initialisiert
  • FIX: Ferienermittelung bei Jahresanfang korrigiert

v4.3.20210527

  • FIX: Fehler beim Auswerten der erweiterten Einstellungen gefixt
  • NEU: Debugmeldungen erweitert und vereinheitlicht

v4.2.20210406

  • FIX: Mitternachts-Timer hat vereinzelt zu zeitig ausgelöst

v4.1.20210307

  • FIX: Feiertage und Schulferien waren 1 Tag zu lang

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
  • yansoph : für das Testen und schnelle Feedback
  • Dr.Niels: für den Pull Request zum Initialisieren der leeren JSON-Listen

Vielen Dank für die hervorragende und tolle Arbeit!

Entwickler

Seit nunmehr über 10 Jahren fasziniert mich das Thema Haussteuerung. In den letzten Jahren betätige ich mich auch intensiv in der Symcon Community und steuere dort verschiedenste Skript und Module bei. Ihr findet mich dort unter dem Namen @pitti ;-)

GitHub

Spenden

Die Software ist für die nicht kommerzielle Nutzung kostenlos, über eine Spende bei Gefallen des Moduls würde ich mich freuen.

PayPal

Lizenz

Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International

Licence