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 » 14.05.2021, 23:56

Xel66 hat geschrieben:
14.05.2021, 23:07
Dein Engagement in allen Ehren, aber mit solchen Silbertablett-Hinweisen zusätzlich zu einer bestehenden unmissverständlich geschriebenen Anleitung unterstützt Du nur die Faulheit der "Anwender", sich die Anleitung auch mal durchzulesen...
Da kann ich Dir nicht widersprechen. Ich denke da bin ich beruflich vorbelastet. Ich bekomme von meinen Studis des Öfteren Fragen gestellt, die im Grunde gar nicht aufkommen würden, wenn sie nur das Skript gründlich lesen würden. Ich gebe dann bis zu einem gewissen Grad dennoch Hilfestellung.

Gruß
Petrus

Christian S.
Beiträge: 3
Registriert: 18.05.2021, 23:40
System: CCU

Re: Feiertagsberechnung - Skript

Beitrag von Christian S. » 18.05.2021, 23:42

Hallo,

irgendwie bekommen meine Kinder jeden Tag Schulferien... Hier der debug mode für morgen (19.05.2021):
(Jahrestage) Heute: 139 | Morgen: 140
1. Eintrag: 05.07.2021-30.07.2021: (186 bis 211)
2. Eintrag: 01.08.2021-17.08.2021: (213 bis 229)
3. Eintrag: 11.10.2021-23.10.2021: (284 bis 296)
4. Eintrag: 24.12.2021-08.01.2022: (358 bis 373)
5. Eintrag: 11.04.2022-23.04.2022: (466 bis 478)
6. Eintrag: 27.06.2022-09.08.2022: (543 bis 586)
7. Eintrag: 04.10.2022-15.10.2022: (642 bis 653)
8. Eintrag: 23.12.2022-06.01.2023: (1 bis 371)

Der 8. Eintrag sollte doch nicht "1 bis 371" ausspucken... Das liegt in ferner Zukunft, oder?
Hilfe!
Danke und viele Grüße,
Christian

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.05.2021, 11:37

Christian S. hat geschrieben:
18.05.2021, 23:42
Der 8. Eintrag sollte doch nicht "1 bis 371" ausspucken... Das liegt in ferner Zukunft, oder?
Hallo Christian,

das ist absolut korrekt. Das liegt in der angewendeten Berechnungsmethode begründet, die nur einwandfreie Ergebnisse bis maximal ein Jahr in die Zukunft - ausgehend vom aktuellen Datum - berechnen kann. Diese Eigenschaft sollte längst beseitigt sein. Aus Zeitgründen ist dies aber leider noch nicht geschehen. Steht aber weiterhin auf meiner ToDo Liste ganz oben.

Hier nochmal zur Verdeutlichung:

(Jahrestage) Heute: 141 | Morgen: 142
1. Eintrag: 23.12.2022-31.12.2022: (722 bis 730) <- hier, bis 1 Jahr in die Zukunft, korrekt.
2. Eintrag: 01.01.2023-06.01.2023: (366 bis 371) <- ab hier, über ein Jahr, falsch.
3. Eintrag: 23.12.2022-06.01.2023: (1 bis 371) <- dito

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 » 19.05.2021, 16:59

Es gibt eine überarbeitete Version des Urlaubstage-Skripts V4.07 im 1.Post ( HIER ).

Changelog 4.07: Urlaubsdaten, die mehr als 12 Monate in der Zukunft liegen, werden bei den Berechnungen nicht mehr berücksichtigt. Bleiben aber im Datensatz für die Zukunft bestehen.

DIese Daten sind für die aktuelle Urlaubsermittlung nicht relevant und führen damit auch nicht mehr zu falschen Ergebnissen (siehe die vorherigen Posts). Wer hat auch schon mehr als 12 Monate Urlaub :lol:

Gruß
Petrus

Christian S.
Beiträge: 3
Registriert: 18.05.2021, 23:40
System: CCU

Re: Feiertagsberechnung - Skript

Beitrag von Christian S. » 17.06.2021, 06:40

Petrus,
top, Danke!
Gibt es die V4.07 auch für Spezial Version mit Schulferien?
Christian

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 » 18.06.2021, 17:26

Christian S. hat geschrieben:
17.06.2021, 06:40
Gibt es die V4.07 auch für Spezial Version mit Schulferien?
Hier auf die schnelle die angepasste "Spezial"-Version.
.
Urlaubstage_V4.07_complete_spezial.txt
Zusätzlich zum Originalscript: Schulferien-Heute/-Morgen und Wochenende-Heute/-Morgen
(18.08 KiB) 118-mal heruntergeladen
.
Da ich die zusätzlichen Optionen selbst nicht nutze, habe ich das Skript nicht getestet. Bitte mal Rückmeldung ob's wie gewünscht funktioniert!

Gruß
Petrus

1stXerox
Beiträge: 10
Registriert: 22.01.2022, 10:20
System: CCU
Hat sich bedankt: 4 Mal

Re: Feiertagsberechnung - Skript

Beitrag von 1stXerox » 03.02.2022, 14:13

Hallo Petrus,

danke für das Update, funktioniert bisher einwandfrei.
Ich habe versucht selbstständig die Unterscheidung Urlaub mit oder ohne Reise einzupflegen, mir ist es allerdings nicht gelungen. Könntest du das nicht standardmäßig mit aufnehmen? Ich finde das enorm sinnvoll.

Grüße

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 » 03.02.2022, 16:06

Hallo 1stXerox,

über sinnvolle Funktionen und Features in einem Skript lässt sich bekanntermaßen diskutieren. Was für den einen sinvoll ist, ist für den nächsten überflüssig. Der eine mag lieber "einfache" und übersichtliche Skripte, der andere setzt lieber auf komplexen Code der so ziemlich alles berechnet. Jeder wie er mag.

Damit deine Reisetage ebenfalls mit ausgewertet werden, schau dir doch mal das "Spezial-Skript" aus dem vorletzten Post an. In dem Skript hatte ich ja auf Wunsch zusätzlich die Schulferien eingefügt. Wenn du also dort das Wort "Schulferien" gegen "Reise" austauschst - in den Zeilen 45, 54 und 67, dann wärest du doch am Ziel. Für den Fall, dass du die Schulferien nicht entfernen bzw. ersetzen möchtest, dann die entsprechenden Zeilen einfach, wie im Beispiel nachfolgend gezeigt, ergänzen.

Code: Alles auswählen

! Zeile 45:
string sv_holyday = "Urlaub-Heute,Urlaub-Morgen;Schulferien-Heute,Schulferien-Morgen;Reise-Heute,Reise-Morgen";
!Zeile 54:
string sv_count = "Urlaub-Tage-bis;Schulferien-Tage-bis;Reise-Tage-bis";
! Zeile 67:
string sv_holydays = "Urlaubstage;Schulferien;Reisetage";
Viele Grüße
Petrus

1stXerox
Beiträge: 10
Registriert: 22.01.2022, 10:20
System: CCU
Hat sich bedankt: 4 Mal

Re: Feiertagsberechnung - Skript

Beitrag von 1stXerox » 08.02.2022, 12:45

Hi Petrus,

tausend Dank! Funktioniert bestens. Steht ja sogar dabei dass das so funktioniert, habe ich nicht gesehen :roll:

Danke!!

P.S. ich verstehe dass du das Skript Kompakt halten willst aber könntest du nicht diese Flexibilität standardmäßig aufnehmen? Ich glaube das ist auf meiner CCU aktuell das nützlichste Skript überhaupt. Dann kann es sich ja jeder erweitern wie er es braucht und trotzdem bleibt der Update Prozess überschaubar wenn du eine neue Version erzeugst.

1stXerox
Beiträge: 10
Registriert: 22.01.2022, 10:20
System: CCU
Hat sich bedankt: 4 Mal

Re: Feiertagsberechnung - Skript

Beitrag von 1stXerox » 10.02.2022, 11:59

Petrus hat geschrieben:
18.06.2021, 17:26
Christian S. hat geschrieben:
17.06.2021, 06:40
Gibt es die V4.07 auch für Spezial Version mit Schulferien?
Hier auf die schnelle die angepasste "Spezial"-Version.
.
Urlaubstage_V4.07_complete_spezial.txt
.
Da ich die zusätzlichen Optionen selbst nicht nutze, habe ich das Skript nicht getestet. Bitte mal Rückmeldung ob's wie gewünscht funktioniert!

Gruß
Petrus
Ich habe doch noch einen kleinen Fehler gefunden, das überprüfen der Variable "Urlaubstage" ist nicht korrekt, es wird ein Fehler ausgegeben:

Code: Alles auswählen

  ! *** SV-Nr.4 ueberpruefen
  svObj = svObjects.Get(sv_holydays);
  ! ***Wenn SV vorhanden => ValueTyp pruefen
  if (svObj) {
    if (svObj.ValueType() != ivtString) { WriteLine(sv_holydays # " : ValueTyp wrong!"); quit; }
    else { if (b_debug) { WriteLine(sv_holydays # " : ValueTyp OK!"); } }
Ich habe es umgebaut auf ivtInteger und damit läuft es:

Code: Alles auswählen

 ! *** SV-Nr.4 ueberpruefen
    svObj = svObjects.Get(s_data2);
    ! ***Wenn SV vorhanden => ValueTyp pruefen
    if (svObj) {
      if (svObj.ValueType() != ivtInteger) { WriteLine(s_data2 # " : ValueTyp wrong!"); quit; }
      else { if (b_debug) { WriteLine(s_data2 # " : ValueTyp OK!"); } }

Antworten

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