Feiertagsberechnung - Skript

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

Moderator: Co-Administratoren

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

Re: Feiertagsberechnung - Skript

Beitrag von Xel66 » 14.05.2018, 12:34

ChrisB78 hat geschrieben:Seh ich das so richtig?
Nein, das Zeitmodul lässt auch die Auswahl zu, dass es nur zu den Wochentagen läuft. Genauso kannst Du ein weiteres Zeitmodul per ODER hinterlegen, welches Dir nur am Wochenende (aka Sonntag) die Rollladen erst später hochfahren lässt.

Die Variable "Feiertag_morgen" brauchst Du, weil sie vom Script gesetzt wird. Ist sie nicht vorhanden, läuft das ganze Script nicht, weil es in einen Fehler rennt. Außerdem ergeben sich für automatische Beleuchtungssteuerungen ganz allein Anwendungen für diese Variable.

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

ChrisB78
Beiträge: 12
Registriert: 19.12.2016, 17:44

Re: Feiertagsberechnung - Skript

Beitrag von ChrisB78 » 14.05.2018, 21:26

super danke für die Hilfe, dann lass ich mal das Feiertag_morgen drin.

Hab jetzt das öffnen der Rollladen, also das Zeitmodul nur auf Montag bis Samstag gestellt. hoffentlich geht das so wie ich mir das dann auch vorstelle.

zx12r1234
Beiträge: 3
Registriert: 21.10.2011, 17:17

Re: Feiertagsberechnung - Skript

Beitrag von zx12r1234 » 19.05.2018, 20:52

Hallo,

habe gerade das Script (Complete) in der Version 3.01 auf meiner CCU2 unverändert laufen lassen. Und habe folgende Debug-Ausgaben erhalten. Bei den ermittelten Daten zeigt mir das Script als erstes ein "-30".
Kann man das ignorieren oder stimmt da etwas nicht?

------------------------------------------------------------------------
Feiertag-Heute-Name : ValueTyp OK!
Feiertag-Morgen-Name : ValueTyp OK!
Feiertag-Heute : ValueTyp OK!
Feiertag-Morgen : ValueTyp OK!
Feiertag-Daten : ValueTyp OK!
Feiertag-Eigene : ValueTyp OK!

Ostersonntag ist am 1.4. und der 91. Tag im Jahr 2018
Muttertag ist am 13.5. und der 133. Tag im Jahr 2018
1. Advent ist am 2.12. und der 336. Tag im Jahr 2018

Ermittelte Daten:
-30 :
1 : Neujahr
43 : Rosenmontag
89 : Karfreitag
91 : Ostersonntag
92 : Ostermontag
121 : Maifeiertag
130 : Christi Himmelfahrt
133 : Muttertag
141 : Pfingstmontag
151 : Fronleichnam
276 : Tag der deutschen Einheit
305 : Allerheiligen
358 : Heiligabend
359 : 1. Weihnachtstag
360 : 2.Weihnachtstag
365 : Silvester

Heute (276) ist ein Feiertag : Tag der deutschen Einheit
Morgen (277) ist kein Feiertag!
----------------------------------------------------------------------------

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, 00:36

zx12r1234 hat geschrieben:Hallo,

habe gerade das Script (Complete) in der Version 3.01 auf meiner CCU2 unverändert laufen lassen. Und habe folgende Debug-Ausgaben erhalten. Bei den ermittelten Daten zeigt mir das Script als erstes ein "-30".
Kann man das ignorieren oder stimmt da etwas nicht?
Hmm, grundsätzlich würde ich sagen das da etwas nicht stimmt. Da ich die Complete-Version aus dem 1. Post aber gerade mal zur Überprüfung auf der CCU im Debug Modus getestet habe und alles korrekt ausgegeben wird, würde ich sagen es liegt nicht am Scipt.

Wenn du das Script also 1:1 kopiert hast, dann kann ich dir nicht sagen woher die -30 kommt.

Gruß
Petrus

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

Re: Feiertagsberechnung - Skript

Beitrag von Xel66 » 20.05.2018, 00:51

zx12r1234 hat geschrieben:Heute (276) ist ein Feiertag : Tag der deutschen Einheit
Morgen (277) ist kein Feiertag!
Hmmm... Wenn ein am 19.05.2018 gestartetes unverändertes Script, welches mit dem Systemdatum arbeitet, dieses Ergebnis auswerfen würde, könnte man mit Sicherheit davon ausgehen, dass da etwas nicht stimmt. Es sei denn, Anwender und CCU befinden sich nicht im gleichen Raum-Zeit-Kontinuum wie der Rest der Mitleser oder die CCU verfügt nicht über die korrekten Zeitdaten (was für den Einsatz solcher Scripte auch eher sinnfrei wäre).

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 » 20.05.2018, 09:54

Xel66 hat geschrieben:Wenn ein am 19.05.2018 gestartetes unverändertes Script, welches mit dem Systemdatum arbeitet...
Eben nicht! Ein Blick in das Script :wink: offenbart an dieser Stellen:

Code: Alles auswählen

   boolean b_debug = false;
   string  s_today = "2018-10-03";
...dass man dort nicht nur die Debug-Funktion aktivieren, sondern das Script auch zu einem beliebigen Datum testen und sämtliche Daten dazu ausgeben kann. Wenn das Script also 1:1 kopiert und die Debug-Funktion aktiviert wurde, läuft der Test zum Datum 03.10.2018 (Tag der deutschen Einheit) und nicht zum Systemdatum.

Gruß
Petrus

Benutzeravatar
roe1974
Beiträge: 746
Registriert: 17.10.2017, 16:15
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wien
Hat sich bedankt: 52 Mal
Danksagung erhalten: 13 Mal

Re: Feiertagsberechnung - Skript

Beitrag von roe1974 » 20.05.2018, 11:01

Verwende die einfache Version V2.3 hier von der ersten Seite.....
Morgen ist ja Pfingstmontag..... warum wird mir bei "Feiertag_morgen":nein angezeigt ??

lg Richard

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, 11:34

Hallo roe1974,

aufgrund der Schusseligkeit des Scripterstellers :|

Im Script ist ein Tippfehler in der Zeile, in der das morgige Datum berechnet wird.

Satt:

Code: Alles auswählen

s_Datum = (system.Date("%F").ToTime().ToInteger() + 86400).ToTime().Format("%d.%m.");


...müsste es korrekt lauten:

Code: Alles auswählen

sDatum = (system.Date("%F").ToTime().ToInteger() + 86400).ToTime().Format("%d.%m.");
Habe ich korrigiert und als Version 2.4 im 1. Post angefügt.

Sorry!!!

Gruß
Petrus

Benutzeravatar
roe1974
Beiträge: 746
Registriert: 17.10.2017, 16:15
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wien
Hat sich bedankt: 52 Mal
Danksagung erhalten: 13 Mal

Re: Feiertagsberechnung - Skript

Beitrag von roe1974 » 20.05.2018, 11:35

heeeee ... suuuuuuper danke für die schnelle Reaktion !!!!

lg aus WIen

Richard

zx12r1234
Beiträge: 3
Registriert: 21.10.2011, 17:17

Re: Feiertagsberechnung - Skript

Beitrag von zx12r1234 » 20.05.2018, 13:44

Schönen Pfingstfeiertag,

ich möchte noch mal auf meinen obigen Post mit der Ausgabe "-30" in den ermittelten Daten zurückkommen,
Ich habe mir gerade das Script mal genauer angesehen und habe das Problem gefunden.

Es entstand dadurch, dass ich die benötigten Systemvariablen nicht vom Script habe erzeugen lassen (habe erst später gelesen, dass es das getan hätte), sondern selbst manuell in der CCU angelegt habe. Dabei wurde die Variable "Feiertag-Eigene", wie üblich, mit dem Wert "???" initialisiert. Wenn die Variable vom Script angelegt worden wäre, wäre sie mit einem Leerstring ("") initialisiert worden. Folglich wurde "???" an die Variable 's_Feiertage' gehängt, was dann bei der Berechnung der Jahrestage zu dem genannten Problem führte

Ich habe die if-Abfrage in Zeile 202 des Scripts (Feiertage-Complete) wie folgt geändert:
alt:

Code: Alles auswählen

if (svObj2.Value()){ s_Feiertage=s_Feiertage#";"#svObj2.Value(); }
neu:

Code: Alles auswählen

if (svObj2.Value() && (svObj2.Value() != "???")){ s_Feiertage=s_Feiertage#";"#svObj2.Value(); }
Und schon lief's.

Gruß,
Holger

Antworten

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