Feiertagsberechnung - Skript

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

rucksman007
Beiträge: 138
Registriert: 04.11.2018, 13:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Feiertagsberechnung - Skript

Beitrag von rucksman007 » 25.01.2019, 11:47

Top! Da ich das Skript schon einsetze, reicht es ja, wenn ich in dem Programm, das nachts einmal läuft, den String

Code: Alles auswählen

s_Feiertage
um

Code: Alles auswählen

;08.03.=Frauentag
ergänze, korrekt?

Ja, das mit dem einmaligen Feiertag 2020 ist mir auch zu Ohren gekommen. Das ist wohl aber nur eine Art "Ausgleich", weil dieser neue Feiertag am 8. März in 2020 auf einen Sonntag fällt und der offenbar nicht beim zweiten Mal schon wieder entfallen soll ...

Petrus
Beiträge: 134
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Petrus » 25.01.2019, 18:46

rucksman007 hat geschrieben:
25.01.2019, 11:47
Top! Da ich das Skript schon einsetze, reicht es ja, wenn ich in dem Programm, das nachts einmal läuft, den String

Code: Alles auswählen

s_Feiertage
um

Code: Alles auswählen

;08.03.=Frauentag
ergänze, korrekt?
Fast korrekt. Zusätzlich noch

Code: Alles auswählen

b_calc=true
dann im Editor einmal auf "Ausführen" klicken und alles ist im Lot. :D Statt auf "Ausführen" zu klicken, kannst du natürlich auch warten bis das Skript in der Nacht einmal durchgelaufen ist. Ergebnis ist das gleiche. Und nicht vergessen b_calc wieder auf den Standardwert (false) zurückzusetzen.
Ach ja, die Korrektur von Feiertagsdaten im laufenden Jahr ist erst ab Version 3.03 möglich.

Skript und Beschreibung wie immer im 1. Post.

Viele Grüße
Petrus

Petrus
Beiträge: 134
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Petrus » 25.01.2019, 19:33

...kurze Ergänzung zur Aufklärung.

Bis zur Version 3.02 konnte man nur im Complete-Skript mit

Code: Alles auswählen

b_debug=true
Änderungen bei den Feiertagen neu berechnen lassen. Diejenigen - zu denen auch ich gehöre -, die das Compact-Skript einsetzen, hatten diese Möglichkeit nicht.

Aus diesem Grund und dem, dass es voraussichtlich in naher Zukunft noch einige weitere Änderungen vom Gesetzgeber geben wird, habe ich die Version 3.03 geschaffen. In dieser Version ist es mit beiden Skriptvarianten (Compact/Complete) nun einheitlich möglich, Änderungen bei den Feiertagen schnell einzupflegen und die Daten vom Skript berechnen zu lassen.

Eine entsprechende Anleitung habe ich dem 1. Post hinzugefügt.

Viele Grüße
Petrus

rucksman007
Beiträge: 138
Registriert: 04.11.2018, 13:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Feiertagsberechnung - Skript

Beitrag von rucksman007 » 27.01.2019, 18:27

Kleiner Fehler im der compact Version 3.03: In Zeile 1 steht immer noch "Compact-V3.02". In der complete Version passt es...

Petrus
Beiträge: 134
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Petrus » 27.01.2019, 20:26

Ups :oops: ...und erledigt. Danke für den Hinweis!

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Garbsen » 09.02.2019, 20:34

Wow! Hochachtung und vielen Dank an Petrus.
Nicht nur ein Superscript, sondern auch wirklich gut dokumentiert und verständlich dargestellt, so dass auch „copy-Paster“ wie ich es gut nutzen können.
Ganz zu schweigen vom Lerneffekt.

Das Feiertage-Script werde ich als Rentner (jeder Tag ein Feiertag ;-) ) vermutlich „nur“ für nette Anzeigen in meiner Oberfläche nutzen, das Urlaubsscript erleichtert die Einstellungen für Heizung und Abwesenheit-Simulation ernorm.

Was ich mir noch wünschen würde, wäre eine „Vorschau“ für mehr als 1 Tag, dann könnte man in Abhängigkeit von aktueller Raumtemperatur die Heizung 2-3 Tage vor Urlaubsende wieder hochfahren. Mal sehen, ob ich das alleine hinbekomme.

Ich hätte noch eine Idee, wie man das Grundgerüst gut nutzen könnte, nämlich für die an vielen Stellen immer wieder diskutierte Anzeige von Mülltagen.
Alle Lösungen, die ich bisher gesehen habe basieren auf Kalendern, die irgendwie bestückt werden müssen.

Bei uns (und ich denke an den meisten Orten) folgt die Müllabfuhr ja einem bestimmten Rhythmus (wöchentlich, vierzehntäglich, monatlich, je nach Abfallart), wobei es über das Jahr einzelne Verschiebungen auf Grund von Feiertagen gibt.

Toll wäre ein Script, dass auf Basis von „Starttermin im Jahr“ und Rhythmus die Abfalltermine (ideal für verschiedene Abfälle in einem Script) generiert und bei dem man in einer Variablen (oder mehreren?) Daten eingeben kann, an denen sich der Termin um eine anzugebende Anzahl von Tagen verschiebt.

Mal sehen, aber ich befürchte, das übersteigt meine Script-Kenntnisse, vielleicht greift ja jemand die Idee auf.
K-H
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Xel66
Beiträge: 14086
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 581 Mal
Danksagung erhalten: 1492 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Xel66 » 09.02.2019, 20:47

Garbsen hat geschrieben:
09.02.2019, 20:34
...vielleicht greift ja jemand die Idee auf.
Glaube ich eher nicht, denn dazu sind die Termine zu "variabel". Im Normalfall stellen die Entsorger oder die Landkreise iCal-Kalender zur Verfügung, die in bestehende Lösungen importiert werden können. Es gibt hier im Forum auch schon mehrere Lösungsansätze, die diese Kalender auslesen und auf die ein oder andere Art in Form von Systemvariablen in der CCU zur Verfügung stellen. Diese Lösung berücksichtigt somit auch prinzipbedingte "Verschiebungen" von Abholterminen durch "Behördenwillkür" :-) (aka abweichende Festlegungen des zuständigen Sachbearbeiters). Das kann natürlich eine berechnete Terminreihe eher nicht. Insofern glaube ich eher nicht, dass sich jemand damit auseinandersetzt, da viel zu viele Unwägbarkeiten in der Terminfestlegung zu berücksichtigen sind.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Garbsen » 09.02.2019, 21:19

Xel66 hat geschrieben:
09.02.2019, 20:47
Garbsen hat geschrieben:
09.02.2019, 20:34
...vielleicht greift ja jemand die Idee auf.
Glaube ich eher nicht, denn dazu sind die Termine zu "variabel". Im Normalfall stellen die Entsorger oder die Landkreise iCal-Kalender zur Verfügung, die in bestehende Lösungen importiert werden können. Es gibt hier im Forum auch schon mehrere Lösungsansätze, die diese Kalender auslesen und auf die ein oder andere Art in Form von Systemvariablen in der CCU zur Verfügung stellen. Diese Lösung berücksichtigt somit auch prinzipbedingte "Verschiebungen" von Abholterminen durch "Behördenwillkür" :-) (aka abweichende Festlegungen des zuständigen Sachbearbeiters). Das kann natürlich eine berechnete Terminreihe eher nicht. Insofern glaube ich eher nicht, dass sich jemand damit auseinandersetzt, da viel zu viele Unwägbarkeiten in der Terminfestlegung zu berücksichtigen sind.

Gruß Xel66
Sicherlich Geschmacksache, aber mir sind alle Lösungen mit Kalenderimport etc. zu kompliziert und Pflegeaufwändig. Bei uns im LK Hannover gibt es jährlich zwischen 2 - 5 vorprogrammierte Terminverschiebungen, wg. Feiertagen, ansonsten fester Rhythmus.
Und dann „natürlich“ außerordentliche Verschiebungen, die in keinem importierten Kalender auftauchen (z.B. Streiks).
Wenn ein Script grundsätzlich den Rhythmus folgen würde und an jedem einzelnen Termin in einer Systemvariablen nach manuell erfassten Abweichungen schauen würde und dann die + x Tage dazurechnet, wäre das m.E. Weniger Pflegeufwand und vor allen Dingen einfacher (z.B. Über PocketInformant) zu erfassen.
Das Script von Petrus sieht mir da nach einem guten Ansatz aus.
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Garbsen » 09.02.2019, 21:27

@Petrus:
Könnte man anstatt „Tage bis Urlaubsbeginn“ auch nach Tage bis Urlaubsende“ rechnen lassen? (oder eventuell beides)?
Welche Berechnung müsste ich da im Script anpassen?

Ich denke das müsste in diesem Bereich sein, oder?

Code: Alles auswählen

! ***Berechneten Jahrestag merken (i_start) / Wenn Zeitraum: i_start=Jahrestag Beginn ; i_ende=Jahrestag Ende
              integer i_start=i_data; b_start=false;
              ! ***Tage bis zum naechsten Urlaub
              i_data=i_data-i_today;
              if((i_data>0)&&((i_count<0)||(i_data<i_count))){i_count=i_data;}
            } else { i_ende=i_data; }
Aber ich verstehe nicht wirklich wie hier die Berechnung läuft, reicht es, statt i_start i_ende zu schreiben?
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

Xel66
Beiträge: 14086
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 581 Mal
Danksagung erhalten: 1492 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Xel66 » 09.02.2019, 21:33

Garbsen hat geschrieben:
09.02.2019, 21:19
Lösungen mit Kalenderimport etc. zu kompliziert
vs.
... an jedem einzelnen Termin ...manuell erfassten Abweichungen .... Tage dazurechnet
Naja, jeder wie er will. Ich importiere einmalig im Jahr den zur Verfügung gestellten Kalender und kann den Rest des Jahres diesbezüglich die Füße hochlegen. Für mich klingt "manuell erfasst" nach deutlich mehr Arbeit.

Aber ich benutze auch für die Feiertage noch eine uralte Version zur Berechnung, denn ich muss das nirgends darstellen. Meinen Automationen ist es auch relativ Wurst, wie ein Feiertag heißt. Es ist nur interressant, ob heute oder morgen ein Feiertag ist, um dort adäquat reagieren zu können (Heizung, Licht und Rollladen). Leider ist diese funktionale und kompakte Lösung zur eierlegenden Wollmilchsau aufgebohrt worden, deren vorrangige Zweck die "Anzeige" ist und nicht die Funktionaltät für die Automation. Aber jeder wie er will.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“