Feiertagsberechnung - Skript

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

Moderator: Co-Administratoren

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 » 20.05.2018, 15:41

Dir auch einen schönen Pfingsttag.
zx12r1234 hat geschrieben:Dabei wurde die Variable "Feiertag-Eigene", wie üblich, mit dem Wert "???" initialisiert.
Beim erstellen eines Scripts versucht man ja an alle vorkommenden Fälle und Ereignisse zu denken. Gelingt einem aber nicht immer.

Da nicht sicher ist, ob das mit den 3 Fragezeichen auch bei zukünftigen Releases der CCU Firmware so ist, habe ich das wie folgt gelöst und in einem neuen Release jetzt im 1.Post veröffentlicht.

Code: Alles auswählen

if (svObj2.Value().Find("=")>=0){ s_Feiertage=s_Feiertage#";"#svObj2.Value(); }
Vielen Dank für die Info!

Gruß
Petrus

TGP
Beiträge: 8
Registriert: 31.01.2018, 11:27

Re: Feiertagsberechnung - Skript

Beitrag von TGP » 19.06.2018, 11:48

Hallo Petrus,

wäre es denn möglich, die beiden Skripte so zu verknüpfen, dass das Feiertags-Ermittlungs-Skript einmal jährlich, z. B. am 1.1. um 0:30 Uhr, automatisch gestartet wird, die Feiertagsliste generiert und diese dann in die entsprechende Variable schreibt, aus der sie das täglich laufende Skript dann jeweils ausliest? Dann bräuchte man nicht an das jährliche "händische" Starten des Feiertags-Ermittlungs-Skripts denken. Oder gibt es etwas, was dagegen spricht?

Grüße!

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

Re: Feiertagsberechnung - Skript

Beitrag von Xel66 » 19.06.2018, 12:50

TGP hat geschrieben:Oder gibt es etwas, was dagegen spricht?
Es spricht grundsätzlich nicht dagegen, nur dass die CCU mit der Liste eigentlich nichts anfangen kann, denn sie muss das aktuelle Datum mit den darin enthaltenen Daten täglich gegeprüfen. Ihr würde es genügen, beim täglichen Lauf des Scripts festzustellen, ob der heutige und ggf. der morgige Tag ein Feiertag ist. Andere Programme können dann auf diese logischen Zustände reagieren. Das tägliche Script muss sowieso laufen und dann kann es auch die Version sein, die täglich den Ostersonntag und die daraus abgeleiteten (und natürlich auch die hinterlegten festen) Feiertage "berechnen" kann.

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

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 » 19.06.2018, 20:58

TGP hat geschrieben:...wäre es denn möglich, die beiden Skripte so zu verknüpfen, dass das Feiertags-Ermittlungs-Skript einmal jährlich, z. B. am 1.1. um 0:30 Uhr, automatisch gestartet wird, die Feiertagsliste generiert und diese dann in die entsprechende Variable schreibt, aus der sie das täglich laufende Skript dann jeweils ausliest?...
Also das Script macht doch genau das, was du beschreibst.
Wenn das Script nachts aufgerufen wird, prüft es zunächst, ob ein neues Jahr vorliegt. Ist dies der Fall, dann werden die neuen Feiertagsdaten berechnet und in der SysVar gespeichert. Liegt kein neues Jahr vor, dann prüft es, ob zum Datum von heute und morgen in der SysVar (Feiertagsliste) ein Eintrag vorhanden ist.

Eine Ausnahme bildet hier die SysVar "Feiertag-Eigene". Wird diese genutzt und sollten sich hier seit dem letzten Aufruf des Scripts Änderungen ergeben haben, dann werden die Daten ebenfalls neu berechnet und gespeichert.
TGP hat geschrieben:...Dann bräuchte man nicht an das jährliche "händische" Starten des Feiertags-Ermittlungs-Skripts denken. Oder gibt es etwas, was dagegen spricht?
Was meinst du mit dem "händischen" starten des Feiertags-Ermittlungs-Skripts?

Sollte ich etwas falsch verstanden haben - manchmal steht man ja auf der Leitung - dann kläre mich bitte auf.

Gruß
Petrus

TGP
Beiträge: 8
Registriert: 31.01.2018, 11:27

Re: Feiertagsberechnung - Skript

Beitrag von TGP » 21.06.2018, 23:32

Habe es mittlerweile verstanden. Ausprobieren hilft... Danke!

Andy1981
Beiträge: 349
Registriert: 25.12.2015, 08:41
Danksagung erhalten: 4 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Andy1981 » 29.07.2018, 20:35

Hallo Leute,

ich habe das alte Urlaubs- u. Feiertagsscript laufen. Läuft tadellos.

Jetzt habe ich gesehen, dass es eine neuere Version gibt. Da mir das jahresübergreifende eingeben gut gefällt, wollte ich das neue Script benutzen.

Aber alleine in der Einrichtung scheitere ich. Habe mir die Compactversion vom Urlaubsscript runtergeladen und durchgelesen. Einmal wird unter anderem von einer Systemvariable "Urlaub-Heute" geschrieben, dann etwas später heißt sie wieder "Urlaub_heute". Auch die SV "Urlaubstage" funktioniert nicht, wenn man nach Anleitung vorgeht (auch beim automatischen anlegen nicht). Es soll bzw. wird eine SV "Urlaubstage" mit Zeichentyp "Zeichenkette" angelegt. Wie soll ich bei diesem Typ noch Urlaubsdaten eingeben. Bisher war es der Zeichentyp "Werteliste". Selbst wenn ich das manuell ändere, läuft das Script nicht. Habe testweise das morgige Datum 30.07.2018 in die SV Urlaubstage mit Zeichentyp Werteliste eingegeben, aber an der SV "Urlaub-Heute oder Urlaub_heute" bzw. "Urlaub-Morgen oder Urlaub_morgen" tut sich nichts.

Bitte um Prüfung und Hilfe. Vielleicht stehe ich auch einfach nur dermaßen auf dem Schlauch...
Andy

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 » 31.07.2018, 18:41

Hallo Andy1981,

das neue Urlaubsskript läuft tadellos - soeben überprüft.

Damit es für die einfacher ist, gehe wie folgt vor:
  1. Gehe in der CCU unter "Programme und Verknüpfungen" -> "Programme und Zentralenverknüpfungen" auf "Skript testen"
  2. Füge im Fenster unter Eingabe das Skript vom "Urlaubstage - complete" ein, setze b_debug=true sowie b_CheckSVs=true und klicke dann auf "Ausführen". Unter Ausgabe bekommst du die Bestätigungen über die angelegten SVs.
  3. Nun kannst du ein Programm erstellen und als Skript das "Urlaubstage - compact" einsetzen oder ein Testdatum definieren und das Skript, wie unter Punkt 1, testen.
Der Typ der SV für die Eingabe der Urlaubstage wurde deshalb von "Werteliste" auf "Zeichenkette" geändert, da viele eine App, wie z.B. Pocket Control o.ä., zur Steuerung und Eingabe von Daten einsetzen und nicht permanent bzw. ausschließlich die WebUI der CCU nutzen. So war zumindest mein Eindruck, aufgrund vieler Anfragen.
Andy1981 hat geschrieben:...Einmal wird unter anderem von einer Systemvariable "Urlaub-Heute" geschrieben, dann etwas später heißt sie wieder "Urlaub_heute"...
Das ist korrekt und ein Tippfehler in der Beschreibung. Statt eines Bindstrichs steht dort ein Unterstrich. Korrekt muss es heißen "Urlaub-Heute" und nicht "Urlaub_Heute". Das hat allerdings keinen Einfluss auf die Funktion des Skriptes, da es im Code korrekt definiert ist.

Viele Grüße
Petrus

Kerschten
Beiträge: 17
Registriert: 20.04.2017, 23:41

Re: Feiertagsberechnung - Skript

Beitrag von Kerschten » 04.08.2018, 13:06

Hi Petrus,

vielen Dank für die tolle Arbeit. Das Feiertagsskript klappt tadellos. Ich scheitere allerdings auch am Urlaubsakript, da ich nicht in der Lage bin die Urlaubstage in der SV einzugeben. Dazu habe ich versucht, die SV über Einstellungen/Sytemvariablen/Urlaubstage „Bearbeiten“ händisch mit den Daten zu füllen. Leider lässt sich diese nicht editieren. Ich nutze keine App oder ähnliches, habe alles auf Apple Home ausgelegt und hier ist auch keine Eingabe möglich.

Hast du einen Tipp für mich? Habe auch schon versucht die SV mit einem Skript zu füllen, aber auch das gelingt mir leider nicht.

Gruß

Kerschten

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

Re: Feiertagsberechnung - Skript

Beitrag von Xel66 » 04.08.2018, 15:56

Kerschten hat geschrieben:
04.08.2018, 13:06
... da ich nicht in der Lage bin die Urlaubstage in der SV einzugeben.
Die originale Firmware der CCU lässt eine Inhaltsbearbeitung der Systemvariablen nicht zu. Hierzu musst Du eine App benutzen oder die alternative Weboberfläche für die CCU Webmatic als Addon installieren. Die kann das.

Alternativ ist für die Verwaltung des Urlaubs auch diese Lösung attraktiv. Vorteil: du führst den Kalender online von jedem Gerät und brauchst keine Systemvariablen händisch zu ändern und ggf. darauf zu achten, vor dem Jahreswechsel alten Inhalt zu löschen oder was auch immer. Ich verwende diese Lösung schon eine ganze Weile für das Schalten der Urlaubsvariable. Es genügt, einen anonymen Kalender anzulegen (vielleicht auch in einem separaten Account, der keine Rückschlüsse auf den Inhaber enthält).

Gerade noch in meinen Lesezeichen gefunden: Hier auch eine Lösung, wie man Inhalte von Systemvariablen von extern setzen kann. Allerdings muss man immer den ganzen Inhalt (also alle zukünftigen Urlaube) mit einmal setzen, da der aktuelle Systemvariableninhalt überschrieben wird.

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

Benutzeravatar
AndiN
Beiträge: 2621
Registriert: 10.06.2015, 08:54
Wohnort: Hennef
Hat sich bedankt: 10 Mal
Danksagung erhalten: 28 Mal

Re: Feiertagsberechnung - Skript

Beitrag von AndiN » 04.08.2018, 22:53

Hallo,

ich persönlich nutze auch die von Xel66 beschriebene Lösung. Vorteil: Die ganze Familie hat Ihr Smartphone dabei und jeder seinen eigenen Kalender. Rollosteuerung ist dann Familienmitglied abhängig möglich und die Kinder könnten ausschlafen, wenn Sie die Ferien in ihrem Kalender eingetragen haben ;-) (oder auch mal einen Studientag). Müllabfuhr kann auch über den Weg abgefragt werden etc. Die Lösung auch seit Jahren im Einsatz und die Familie kommt damit sehr gut klar.

Andi
Andi (Greenhorn)

Letzter Reboot: 17.03.24 => FW Update (Uptime:Rekord:153 Tage)
Systeminfos: Raspberry Pi3 Firmware: 3.75.6.20240316 142 Geräte
System angebunden: 3 Roomba 650 - Sprachausgabe via Home24 Media - Pocket Control
- Zentrale: Asus TF103 mit Home24 Tablet
Addons: Drucken 2.5 - HQ WebUI 2.5.9 - XML-API 1.22 - CUx-Daemon 2.9.3 - E-Mail 1.7.4 - hm_pdetect 1.11 - VPN cloudmatic
Diverse Links

Antworten

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