-
Notifications
You must be signed in to change notification settings - Fork 47
Flow to calculate german holidays
Für die Hausautomatisierung kann es sein, das die Steuerung basierend auf Feiertagen, Wochenenden benötigt wird. So sollen vielleicht Rollläden an Feiertagen oder Wochenenden später öffnen und später geschlossen werden.
unter Zusätzliche Node-RED Nodes installieren ist beschrieben wie weitere Nodes installiert werden können. Hier installieren Sie Bitte den node node-red-contrib-german-holidays
.
importieren Sie den folgenden Flow wie unter Flows importieren beschrieben:
[{"id":"2607227a.3c983e","type":"german-holidays","z":"c4313d2c.5d102","name":"","region":"SN","x":420,"y":140,"wires":[["dcaacec7.e1eb","15259bce.575154"]]},{"id":"dcaacec7.e1eb","type":"debug","z":"c4313d2c.5d102","name":"Holidays","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":620,"y":100,"wires":[]},{"id":"d2ed4078.52011","type":"inject","z":"c4313d2c.5d102","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"05 00 * * *","once":false,"onceDelay":0.1,"x":150,"y":100,"wires":[["2607227a.3c983e"]]},{"id":"e4912846.3a1ca8","type":"inject","z":"c4313d2c.5d102","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":"1","x":150,"y":180,"wires":[["2607227a.3c983e"]]},{"id":"1ab3e37c.4d15fd","type":"comment","z":"c4313d2c.5d102","name":"every day at midnight","info":"","x":180,"y":60,"wires":[]},{"id":"869da82f.484e48","type":"comment","z":"c4313d2c.5d102","name":"once on Node-Red start","info":"","x":180,"y":140,"wires":[]},{"id":"15259bce.575154","type":"change","z":"c4313d2c.5d102","name":"","rules":[{"t":"set","p":"day-info","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":180,"wires":[[]]},{"id":"d2fe809f.3c90d","type":"switch","z":"c4313d2c.5d102","name":"","property":"day-info.today.isWeekendOrHoliday","propertyType":"global","rules":[{"t":"true"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":410,"y":300,"wires":[["c73a89b5.6630f8"],["e245c8da.585928"]]},{"id":"26326493.2e010c","type":"inject","z":"c4313d2c.5d102","name":"","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":300,"wires":[["d2fe809f.3c90d"]]},{"id":"c73a89b5.6630f8","type":"debug","z":"c4313d2c.5d102","name":"is Weekend or Holiday","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":660,"y":300,"wires":[]},{"id":"e245c8da.585928","type":"debug","z":"c4313d2c.5d102","name":"is not a Weekend and not a Holiday","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":700,"y":360,"wires":[]},{"id":"e427d079.51212","type":"comment","z":"c4313d2c.5d102","name":"Example for usage in switch node","info":"","x":210,"y":260,"wires":[]}]
Sie müssten dann folgendes Bild sehen:
Einstellen:
Sie müssen im Node Holidays ihr Bundesland einstellen (Doppel-Klicken, ändern, speichern und deployen).
Die Funktionsweise ist die folgende:
-
Der obere Flow:
- Dieser Flow wird täglich kurz nach Mitternacht und jedesmal nach dem Neustart von Node-Red (oder wenn sie den Flow komplett neu deployen) gestartet.
- Daraufhin werden die Feiertage berechnet.
- Im nachfolgenden change Node werden die berechneten Dtaen im globalen Context abgespeichert.
-
Der untere Flow:
- Dieser Flow stellt ein Beispiel dar, wie sie über einen Switch node auf die Daten zugreifen können und den Ablauf der FLows entsprechend steuern können.
- Die Möglichkeiten, welche Sie haben ist in der Beschreibung des Nodes hinterlegt. Achten Sie Bitte, das Sie alles unter
msg.payload...
dann im globalen context als global.day-info
, wobei derglobal.
in der drop-down Box ausgewählt wird.
Die vollständige Liste der Möglichkeiten sehen Sie in der Beschreibung des Nodes
-
global.
day-info.yesterday.isSaturday
- isttrue
, wenn gestern Samstag war -
global.
day-info.yesterday.isSunday
- isttrue
, wenn gestern Sonntag war -
global.
day-info.yesterday.isHoliday
- isttrue
, wenn gestern ein Feiertag war -
global.
day-info.yesterday.isWeekend
- isttrue
, wenn gestern Samstag oder Sonntag war -
global.
day-info.yesterday.isSunOrHoliday
- isttrue
, wenn gestern Sonntag oder ein Feiertag war -
global.
day-info.yesterday.isWeekendOrHoliday
- isttrue
, wenn gestern Samstag, Sonntag oder ein Feiertag war
-
global.
day-info.today.isSaturday
- isttrue
, wenn heute Samstag ist -
global.
day-info.today.isSunday
- isttrue
, wenn heute Sonntag ist -
global.
day-info.today.isHoliday
- isttrue
, wenn heute ein Feiertag ist -
global.
day-info.today.isWeekend
- isttrue
, wenn heute Samstag oder Sonntag ist -
global.
day-info.today.isSunOrHoliday
- isttrue
, wenn heute Sonntag oder ein Feiertag ist -
global.
day-info.today.isWeekendOrHoliday
- isttrue
, wenn heute Samstag, Sonntag oder ein Feiertag ist -
global.
day-info.today.isBetweenSundayAndHoliday
(Brückentag) - isttrue
, wenn heute Montag ist und morgen ein Feiertag ist -
global.
day-info.today.isBetweenHolidayAndSaturday
(Brückentag) - isttrue
, wenn heute Freitag ist und gestern ein Feiertag war -
global.
day-info.today.isBetweenWeekendOrHoliday
(Brückentag) - isttrue
, wenn gestern ein Feiertag oder Sonntag ist und morgen ein Feiertag oder Samstag ist und heute kein Feiertag oder Samstag oder Sonntag ist
-
global.
day-info.tomorrow.isSaturday
- isttrue
, wenn morgen Samstag ist -
global.
day-info.tomorrow.isSunday
- isttrue
, wenn morgen Sonntag ist -
global.
day-info.tomorrow.isHoliday
- isttrue
, wenn morgen ein Feiertag ist -
global.
day-info.tomorrow.isWeekend
- isttrue
, wenn morgen Samstag oder Sonntag ist -
global.
day-info.tomorrow.isSunOrHoliday
- isttrue
, wenn morgen Sonntag oder ein Feiertag ist -
global.
day-info.tomorrow.isWeekendOrHoliday
- isttrue
, wenn morgen Samstag, Sonntag oder ein Feiertag ist -
global.
day-info.tomorrow.isBetweenSundayAndHoliday
(Brückentag) - isttrue
, wenn morgen Montag ist und übermorgen ein Feiertag ist -
global.
day-info.tomorrow.isBetweenHolidayAndSaturday
(Brückentag) - isttrue
, wenn morgen Freitag ist und heute ein Feiertag ist -
global.
day-info.tomorrow.isBetweenWeekendOrHoliday
(Brückentag) - isttrue
, wenn heute ein Feiertag oder Sonntag ist und in 2 Tagen ein Feiertag oder Samstag ist und morgen kein Feiertag oder Samstag oder Sonntag ist
-
global.
day-info.dayAfterTomorrow.isSaturday
- isttrue
, wenn in 2 Tagen Samstag ist -
global.
day-info.dayAfterTomorrow.isSunday
- isttrue
, wenn in 2 Tagen Sonntag ist -
global.
day-info.dayAfterTomorrow.isHoliday
- isttrue
, wenn in 2 Tagen ein Feiertag ist -
global.
day-info.dayAfterTomorrow.isWeekend
- isttrue
, wenn in 2 Tagen Samstag oder Sonntag ist -
global.
day-info.dayAfterTomorrow.isSunOrHoliday
- isttrue
, wenn in 2 Tagen Sonntag oder ein Feiertag ist -
global.
day-info.dayAfterTomorrow.isWeekendOrHoliday
- isttrue
, wenn in 2 Tagen Samstag, Sonntag oder ein Feiertag ist -
global.
day-info.dayAfterTomorrow.isBetweenSundayAndHoliday
(Brückentag) - isttrue
, wenn in 2 Tagen Montag ist und in 3 Tagen ein Feiertag ist -
global
day-info.dayAfterTomorrow.isBetweenHolidayAndSaturday
(Brückentag) - isttrue
, wenn in 2 Tagen Freitag ist und morgen (in 1 Tag) ein Feiertag ist -
global.
day-info.dayAfterTomorrow.isBetweenWeekendOrHoliday
(Brückentag) - isttrue
, wenn morgen (in 1 Tag) ein Feiertag oder Sonntag ist und in 3 Tagen ein Feiertag oder Samstag ist und in 2 Tagen kein Feiertag oder Samstag oder Sonntag ist
-
global
day-info.yesafterTheDayAfterTomorrowerday.isSaturday
- isttrue
, wenn in 3 Tagen Samstag ist -
global
day-info.afterTheDayAfterTomorrow.isSunday
- isttrue
, wenn in 3 Tagen Sonntag ist -
global
day-info.afterTheDayAfterTomorrow.isHoliday
- isttrue
, wenn in 3 Tagen ein Feiertag ist -
global
day-info.afterTheDayAfterTomorrow.isWeekend
- isttrue
, wenn in 3 Tagen Samstag oder Sonntag ist -
global
day-info.afterTheDayAfterTomorrow.isSunOrHoliday
- isttrue
, wenn in 3 Tagen Sonntag oder ein Feiertag ist -
global
day-info.afterTheDayAfterTomorrow.isWeekendOrHoliday
- isttrue
, wenn in 3 Tagen Samstag, Sonntag oder ein Feiertag ist
-
global
day-info.next.hollidayDiff
- Anzahl der Tage zum nächsten Feiertag -
global
day-info.next.holliday.name
- Name des nächsten Feiertages -
global
day-info.next.holliday.weekendOrHolidayDiff
- Anzahl der Tage zum nächsten Feiertages, Samstag oder Sonntags -
global
day-info.next.holliday.weekendOrHoliday.name
- Name des nächsten Feiertages, Samstag oder Sonntages -
global
day-info.weekNumber
- aktuelle Wochennummer -
global
day-info.weekNumberEven
- isttrue
, wenn die aktuelle Woche gerade ist
Bitte als issue im Github unter https://github.com/Hypnos3/node-red-contrib-german-holidays hinterlegen.
Inhaltsverzeichnis RedMatic Documentation © 2018-2022 Sebastian Raff and RedMatic Contributors, licensed under CC BY-SA License 4.0