Sonn- und Feiertage mit HM-Skript berechnen

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

Moderator: Co-Administratoren

Antworten
Benutzeravatar
funkleuchtturm
Beiträge: 2365
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von funkleuchtturm » 13.11.2014, 23:34

Die immer aktuellste Version gibt´s auf meiner Webseite: http://www.stall.biz/?project=hm-skript ... -feiertage

1. Ausgangssituation
Besonders für die “arbeitende Bevölkerung” sind die Abläufe der Werktage meistens ganz anders als während der arbeitsfreien Tage am Samstag, Sonntag oder Feiertag. Die Rolladen und Lampenschaltungen, die Heizungssteuerung und die Warmwasserbereitung benötigen deshalb unter Umständen ganz unterschiedliche Schaltzyklen abhängig davon, ob die Hausbewohner frei haben oder zur Arbeit gehen.

Damit man mit Homematic-Programmen die richtigen Steuerungsszenarios auslösen kann, sind geeignete Zustandvariable (als Systemvariable) notwendig, die mit dem folgenden Skript recht einfach für den aktuellen Tag des Jahres berechnet werden können. Da auch der Tag vor dem Sonntag oder dem Feiertag oftmals ein verändertes Schaltverhalten erfordert, wird mit diesem Skript sowohl berechnet, ob der aktuelle Tag ein Feiertag oder Sonntag ist als auch, ob der morgige Tag ein Feiertag oder Samstag ist.

Dies wird hier so ähnlich gemacht wie mit dieser hier im Forum bereits vorgestellten Vorgehensweise: http://homematic-forum.de/forum/viewtop ... ipt#p23994

Allerdings wird mit dem hier vorgestellten Skript keine komplexe Berechnung der einzelnen festen und beweglichen Feiertage durchgeführt, sondern die Feiertagsinformation einfach “aus dem Internet geholt”. Verwendet wird hierfür die für diesen Zweck ausgezeichnet geeignete Webseite http://www.feiertage-xml.de/2014/deutsc ... falen.html

2. Das Kochrezept
zwei Systemvariablen definieren sonnundfeiertag_heute und sonnundfeiertag_morgen vom Variablentyp Logikwert. Dabei unbdingt die exakte Schreibweise mit Groß- und Kleinschreibung beachten, weil sonst das Skript nicht läuft !!

folgendes HM-Skript verwenden und in das Skript das jeweilige Bundesland, in dem man wohnt, eintragen. Dabei aber unbedingt für das Bundesland genau die Schreibweise verwenden wie auf der Webseite http://www.feiertage-xml.de .

Hier das HM-Skript:

Code: Alles auswählen

!Stand 2014/11/14   http://www.stall.biz/?project=hm-skript-fur-berechnung-der-sonn-und-feiertage
!Verfasser: Eugen Stall          Skript zur Berechnung von Sonn- und Feiertagen und den Tag davor

!Systemvariable einrichten:  "sonnundfeiertag_heute" als boolean,  "sonnundfeiertag_morgen" als boolean
!Anpassungen durch den User: bundesland eingeben, Schreibweise wie auf Webseite "www.feiertage-xml.de"
string bundesland = "nordrhein-westfalen"; 

string url = "www.feiertage-xml.de/" +system.Date("%Y") + "/deutschland/" + bundesland + ".html";
!hier ist die Abfrage mit CUxD
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string data = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();

integer heute = system.Date("%j");
integer morgen = 1 + heute;
integer wochentag = system.Date("%w");

boolean Sonnundfeiertag_heute = false;
if(wochentag == 0) {Sonnundfeiertag_heute =true;} 
boolean Sonnundfeiertag_morgen = false;
if(wochentag == 6) {Sonnundfeiertag_morgen =true;} 

!datenfile nach geeigneten daten durchsuchen
integer laenge = data.Length();
integer wort_position= data.Find("timestamp=");
while (wort_position > (-1))
{ string f_datum = data.Substr((wort_position + 34) ,2);
   string f_datum_d = data.Substr((wort_position + 37) ,2);
   f_datum = f_datum + "-" +  f_datum_d;
  time datum = f_datum.ToTime();
  integer f_jahrestag =datum.Yearday();
  if (heute == f_jahrestag) {Sonnundfeiertag_heute = true;}
  if (morgen == f_jahrestag) {Sonnundfeiertag_morgen = true;}
  data = data.Substr(wort_position +34, laenge - wort_position - 34);
  integer wort_position= data.Find("timestamp=");
  laenge = data.Length(); 
}
data = system.Date("%m/%d");  !silvester behandlung
if (data ==  "12/31") {Sonnundfeiertag_morgen = true;}

dom.GetObject("sonnundfeiertag_heute").State(Sonnundfeiertag_heute);
dom.GetObject("sonnundfeiertag_morgen").State(Sonnundfeiertag_morgen);
WebUI-Programm machen, womit jeden Tag um 00h05 das Skript einmal aufgerufen wird und die Skriptvariablen für den beginnenden Tag berechnet werden.
Sonntag1.jpg
Das ist schon alles, viel Erfolg mit diesem Tool!
Zuletzt geändert von funkleuchtturm am 14.11.2014, 09:59, insgesamt 3-mal geändert.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

Benutzeravatar
dogfight76
Beiträge: 322
Registriert: 27.08.2014, 16:26
Hat sich bedankt: 12 Mal
Danksagung erhalten: 1 Mal

Re: Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von dogfight76 » 23.12.2014, 20:12

Kann man sich so auch auf der Startseite anzeigen lassen (unter Favoriten vielleicht) ob heute oder morgen einFeiertag ist ?

Gruß
RaspberryMatic CCU3 mit aktueller FW

sammler007
Beiträge: 14
Registriert: 12.02.2014, 09:24

Re: Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von sammler007 » 26.12.2014, 08:32

Hi,
ich habe das script installiert, leider kein Erfolg.
Du schreibst :
Dabei unbdingt die exakte Schreibweise mit Groß- und Kleinschreibung beachten, weil sonst das Skript nicht läuft !


Aber in Deinem Script sind mehrere Schreibweisen angegeben:

boolean Sonnundfeiertag_heute = false;

und weiter dann unten
dom.GetObject("sonnundfeiertag_heute").State(Sonnundfeiertag_heute);
dom.GetObject("sonnundfeiertag_morgen").State(Sonnundfeiertag_morgen);


liegt es daran, dass da irgendwie der Wurm drin ist?
Die Url habe ich als Bundesland niedersachsen, sollte passen.
Aber das sieht auch komisch aus :
string url = "www.feiertage-xml.de/" +system.Date("%Y") + "/deutschland/" + bundesland + ".html";

wenn Du " +system.Date("%Y") + "/deu schreibst, fehlt da nicht das eine " ??

Ich kriege das nicht zum laufen :roll:
------------------------------------------
gelöscht wegen Fehler in der Forensoftware da bei einer Suche unnützes angezeigt wird :)
--------------------------------------------
168 Kanäle in 55 Geräten
--------------------------------------------

sammler007
Beiträge: 14
Registriert: 12.02.2014, 09:24

Re: Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von sammler007 » 26.12.2014, 08:41

dogfight76 hat geschrieben:Kann man sich so auch auf der Startseite anzeigen lassen (unter Favoriten vielleicht) ob heute oder morgen einFeiertag ist ?

Gruß
Du kannst doch jede Systemvariable in Deinen Favoriten mit einbinden/anzeigen lassen! :shock:
Also, ja, das geht mit der Variablen, wenn das Script denn läuft :roll:
------------------------------------------
gelöscht wegen Fehler in der Forensoftware da bei einer Suche unnützes angezeigt wird :)
--------------------------------------------
168 Kanäle in 55 Geräten
--------------------------------------------

Benutzeravatar
funkleuchtturm
Beiträge: 2365
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 357 Mal
Kontaktdaten:

Re: Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von funkleuchtturm » 26.12.2014, 08:57

sammler007 hat geschrieben:ich habe das script installiert, leider kein Erfolg.
Ich hab das gerade nochmal für "niedersachsen" ausprobiert. Läuft einwandfrei. Die unterschiedliche Schreibweise der korrespondierenden Variablen im Skript und im WebUI habe ich gewählt, damit da keine Konflikte mit gleichen Variablennamen auftreten. Das ist schon richtig so, wie es da steht !
Führ doch einfach das Kochrezept exakt aus und vor allen Dingen kopiere das Skript mit Copy&Paste, damit keine Schreibfehler auftreten.

Um zu prüfen, ob das Skript durchläuft, kannst Du das Skript im Fenster "Skript testen" mal vor der Zeile WriteLine("Hallo Welt") einfügen und dann starten. Wenn "Hallo Welt" im Fenster ausgegeben wird , dann läuft das Skript durch.

Vielleicht erst mal das Skript unverändert verwenden und dann erst "nordrhein-westfalen" durch "niedersachsen" ersetzen.
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

skull77
Beiträge: 1
Registriert: 25.03.2016, 13:55

Re: Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von skull77 » 25.03.2016, 13:58

Hi, super Skript, allerdings ist die Webseite http://feiertage-xml.de leider offline. Kennt jemand eine Alternative?

Benutzeravatar
Blackeye
Beiträge: 547
Registriert: 15.08.2015, 16:33
Hat sich bedankt: 2 Mal

Re: Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von Blackeye » 25.03.2016, 14:13

Hi,

Wieso nehmt ihr nicht das Script?

Code: Alles auswählen

! Das Skript berechnet das Osterdatum und die Feiertage im aktuellen Jahr,
! prueft ob heute ein Feiertag ist und hinterlegt das Ergebnis in der Systemvariable "Feiertag"

! Script von Peter Beck (01-2011)
! Überarbeitet von Splunge (Feiertag_morgen entfernt, Wochenende und Freier_Tag hinzugefügt)
! Version 2.2.2s

! Es werden folgende Systemvariablen benötigt:
! Feiertag   (Typ: Boolean)
! Wochenende (Typ: Boolean)
! Freier_Tag (Typ: Boolean)

boolean Rosenmontag = 1; ! Rosenmontag ein Brauchtumstag? 1=Ja/0=Nein
boolean Silvester   = 1; ! Silvester stets ein freier Tag? 1=Ja/0=Nein
boolean Heiligabend = 1; ! Heiligabend stets ein freier Tag? 1=Ja/0=Nein

string land  = "DE";     ! AT oder DE
string bland = "NW";     ! Bundesland in DE, in den wir wohnen (in Österreich auch für bland AT eintragen)

! Fuer "bland" bitte folgende Abkuerzungen benutzen:
! BW = Baden-Württemberg
! BY = Bayern
! BE = Berlin
! BB = Brandenburg
! HB = Bremen
! HH = Hamburg
! HE = Hessen
! MV = Mecklenburg-Vorpommern
! NI = Niedersachsen
! NW = Nordrhein-Westfalen
! RP = Rheinland-Pfalz
! SL = Saarland
! SN = Sachsen
! ST = Sachen-Anhalt
! SH = Schleswig-Holstein
! TH = Thüringen

! AT = Österreich


!****************************************************
! Ab hier Script CODE - Don't change behind this line
!****************************************************

! Berechnen des Ostersonntags im aktuellen Jahr

integer Jahr = system.Date("%Y").ToInteger(); ! Das aktuelle Jahr ermitteln
integer oTag;   ! Das Tagesdatum vom Ostersonntag
integer oMonat; ! Das Monatsdatum von Ostersonntag
string oDatum;  ! Das komplette Datum vom Ostersonntag

integer LVar1;  ! Wird für die Berechnungen benötigt
integer LVar2;  ! Wird für die Berechnungen benötigt
integer LVar3;  ! Wird für die Berechnungen benötigt
integer zahl;   ! Wird für die Berechnungen benötigt

! Die modifizierte Gauss-Formel nach Lichtenberg

LVar1 = ((19 * (Jahr % 19)) + (15 + (((3 * (Jahr / 100)) + 3) / 4) - (((8 * (Jahr / 100)) + 13) / 25))) % 30;
LVar2 = (LVar1 / 29) + (((LVar1 / 28) - (LVar1 / 29)) * ((Jahr % 19) / 11));
LVar3 = 7 - (((21 + LVar1 - LVar2) - (7 - ((Jahr + (Jahr / 4) + (2 - (((3 * (Jahr / 100)) + 3) / 4))) % 7))) % 7);
oTag  = (21 + LVar1 - LVar2) + LVar3;

! Den errechneten Wert formatieren. Ausgehend vom Monat März

if (oTag > 31) { ! Der Monat März hat nur 31 Tage -> Ostern im April

    oMonat = 4;
    oTag = oTag - 31;

} else { oMonat = 3; } ! Ostern ist im März

! Das Ergebnis in Variable oDatum hinterlegen

if (oTag < 10) {
    oDatum = "0" # oTag.ToString() # "." # "0" # oMonat.ToString() # "." # Jahr.ToString();
} else {
    oDatum = oTag.ToString() # "." # "0" # oMonat.ToString() # "." # Jahr.ToString();
}

! Ermitteln, wieviele Tage der Februar im aktuellen Jahr hat

zahl = Jahr % 4;

if (zahl == 0) { ! Ein Schaltjahr -> Feb. = 29 Tage
    string mTage = "31,29,31,30,31,30,31,31,30,31,30,31"; ! Anzahl der Tage im Monat Jan.-Dez.
} else {
    string mTage = "31,28,31,30,31,30,31,31,30,31,30,31"; ! Anzahl der Tage im Monat Jan.-Dez.
}

string sDatum = system.Date("%d.%m."); ! Das heutige Datum
string sWochentag = system.Date("%w"); ! der heutige Wochentag

boolean Feiertag = 0; ! 0/1 = kein/Feiertag
boolean Wochenende = 0; ! 0/1 = kein/Wochenende
boolean kurz_vor_WE = 0; ! 0/1 = kein/Wochenende
if ((sWochentag == "0") || (sWochentag == "6")) { Wochenende = 1; } ! Wochenende

if ((sWochentag == "5") || (sWochentag == "6")) { kurz_vor_WE = 1; } ! Wochenende

!***************************************************************************
! Feste Feiertage bundesweit, fuer DE und AT
!***************************************************************************

    integer Durchlauf = 0;

    while (Durchlauf < 2)
    {


if (sDatum == "01.01.") { Feiertag = 1; } ! Neujahr
if (sDatum == "01.05.") { Feiertag = 1; } ! Maifeiertag - Tag der Arbeit
if (sDatum == "25.12.") { Feiertag = 1; } ! 1. Weihnachtstag
if (sDatum == "26.12.") { Feiertag = 1; } ! 2. Weihnachtstag

!***************************************************************************
! Feste Feiertage bundesweit in DE
!***************************************************************************
if (land == "DE") {
   if (sDatum == "03.10.") { Feiertag = 1; } ! Tag der Deutschen Einheit
}

!***************************************************************************
! Feste Feiertage bundesweit in AT
!***************************************************************************
if (land == "AT") {
   if (sDatum == "26.10.") { Feiertag = 1; } ! Österreichischer Nationalfeiertag
   if (sDatum == "08.12.") { Feiertag = 1; } ! Maria Empfaengnis
}

!***************************************************************************
! Eigene, feste Feiertage?
!***************************************************************************

if ((Heiligabend) && (sDatum == "24.12.")) { Feiertag = 1; } ! Weihnachten
if ((Silvester) && (sDatum == "31.12."))   { Feiertag = 1; } ! Silvester

!***************************************************************************
! Fester Feiertag in BW, BY, ST, AT
!***************************************************************************

if ((bland == "BW") || (bland == "BY") || (bland == "ST") || (land == "AT")) {
   if (sDatum == "06.01.") { Feiertag = 1; } ! Erscheinungsfest - Hl. 3 Koenige
}

!***************************************************************************
! Fester Feiertag in BB, MV, SA, ST, TH
!***************************************************************************

if ((bland == "BB") || (bland == "MV") || (bland == "SA") || (bland == "ST") || (bland == "TH")) {
   if (sDatum == "31.10.") { Feiertag = 1; } ! Reformationstag
}

!***************************************************************************
! Fester Feiertag in BW, BY, NW, RP, SL, AT
!***************************************************************************

if ((bland == "BW") || (bland == "BY") || (bland == "NW") || (bland == "RP") || (bland == "SL") || (land == "AT")) {
   if (sDatum == "01.11.") { Feiertag = 1; } ! Allerheiligen
}

!***************************************************************************
! Fester Feiertag in BY (nicht überall), SL, AT
!***************************************************************************

if ((bland == "BY") || (bland == "SL") || (land == "AT")) {
   if (sDatum == "15.08.") { Feiertag = 1; } ! Maria Himmelfahrt
}

!***************************************************************************
!** Bewegliche Feiertage bundesweit **
!***************************************************************************

string feiertage = "";

if (land == "DE") {
   feiertage = "0,1,-2,39,50"; ! Array mit Differenztage zum Ostersonntag
                        ! Ostersonntag, Ostermontag, Karfreitag, Christi Himmelfahrt, Pfingstmontag
}

if (land == "AT") {
   feiertage = "0,1,39,50";    ! Array mit Differenztage zum Ostersonntag
                        ! Ostersonntag, Ostermontag, Christi Himmelfahrt, Pfingstmontag
}

!***************************************************************************
! Bewegliche Feiertage BW, BY, HE, NW, RP, SL, (SA, TH nicht überall), AT
!***************************************************************************

if ((bland == "BW") || (bland == "BY") || (bland == "HE") || (bland == "NW") || (bland == "RP") || (bland == "SL") || (bland == "SA") || (bland == "TH") || (land == "AT")) {
   feiertage = feiertage # ",60"; ! Fronleichnam
}

!***************************************************************************
!***   Hier evtl. weitere Feier-/Brauchtumstage ***
!***************************************************************************

if (Rosenmontag) {
   feiertage = feiertage # ",-48"; ! Rosenmontag stets 48 Tage vor dem Ostersonntag
}

!***************************************************************************
! Ab hier werden die Feiertage berechnet
!***************************************************************************

! Anzahl der Tage im Ostermonat
zahl = (3 * oMonat) - 3;
integer oTage = mTage.Substr(zahl, 2).ToInteger(); ! Anzahl der Tage im Ostermonat

string fDatum;    ! Das Feiertagsdatum
integer fDiff;    ! Anzahl der Tage von Ostersonntag entfernt
boolean Schleife; ! Für die Berechnungen in der while-Schleife notwendig

string index;
foreach(index, feiertage.Split(",")) {

   fDiff = index.ToInteger();
   Schleife = 1;

   zahl = oTag + fDiff; ! Differenztage zum Referenztag hinzurechnen

   if (fDiff > 0) {
      if (zahl > oTage) {
         zahl = zahl - oTage; ! Sind wir ausserhalb des Referenzmonats?
      } else { ! Nein => Berechnungschleife nicht durchlaufen.
         Schleife = 0;
         LVar2 = oMonat;
      }
   } else {
      if (zahl > 0) { ! Wenn innerhalb des Referenzmonats => Berechnungsschleife nicht durchlaufen.
         Schleife = 0;
         LVar2 = oMonat;
      }
   }

   LVar1 = 0;

   if (fDiff > 0) {
      while (Schleife) {
         LVar1 = LVar1 + 1.00;
         LVar2 = oMonat + LVar1;
         LVar3 = (3 * LVar2) - 3;
         zahl = zahl - mTage.Substr(LVar3, 2).ToInteger();
         if (zahl <= 0) { ! Aktueller Monat gefunden
            Schleife = 0;
            zahl = zahl + mTage.Substr(LVar3, 2).ToInteger(); ! Wieder addieren, um den Tag zu berechnen
         }
      }
   } else {
      if (fDiff < 0) {
         while (Schleife) {
            LVar1 = LVar1 + 1.00;
            LVar2 = oMonat - LVar1;
            LVar3 = (3 * LVar2) - 3;
            zahl = zahl + mTage.Substr(LVar3, 2).ToInteger();
            if (zahl > 0) { ! Aktueller Monat gefunden
               Schleife = 0;
            }
         }
      }
   }

   if (zahl < 10) {
      fDatum = "0" # zahl.ToString() # ".";
   } else {
      fDatum = zahl.ToString() # ".";
   }

   if (LVar2 < 10) {
      fDatum = fDatum # "0" # LVar2.ToString() # ".";
   } else {
      fDatum = fDatum # LVar2.ToString() # ".";
   }

   if (sDatum == fDatum) { Feiertag = 1; }
}

!****************************
! Beweglicher Feiertag im SL
!****************************

if (bland == "SL") {

   ! Buß- und Bettag (Mittwoch vor dem Sonntag vor dem 1. Advent)

   fDiff = 32; ! 32 Tage vor dem 4. Advent

   ! Um den 4. Advent zu ermitteln, muss zunächst der Wochentag des 24. Dez. ermittelt werden

   ! Wochentagberechnung wie folgt:

   ! TZ  = Tag mod 7                             => Tag = 24 fuer den 24.12.
   ! MZ = 5                                      => 0,3,3,6,1,4,6,2,5,0,3,5 (Fuer jeden Monat Jan. bis Dez. eine Ziffer)
   ! JZ = (Zahl + (Zahl / 4)) mod 7              => Zahl = 10, die letzten beiden Ziffern der Jahreszahl 2010
   ! JHZ = (3 - (Zahl mod 4)) * 2                => Zahl = 20, die ersten beiden Ziffern der Jahreszahl 2010
   ! SJK = Zahl                                  => Schaltjahreskorrektur: Zahl = 0 wenn kein Schaltjahr, sonst Zahl = 6
   ! Ergebnis = (TZ + MZ + JZ + JHZ + SJK) mod 7 => 0 = So, 1 = Mo, 2 = Di, 3 = Mi, 4 = Do, 5 = Fr, 6 = Sa

   ! Mit dieser Rechnung kann man zu jedem Datum den Wochentag berechnen.

   LVar1 = oDatum.Substr(8, 2).ToInteger();
   zahl  = (LVar1 + (LVar1 / 4)) % 7;
   LVar1 = oDatum.Substr(6, 2).ToInteger();
   LVar2 = ((3 - (LVar1 % 4)) * 2) + zahl;
   LVar1 = oDatum.Substr(6, 4).ToInteger() % 4;

   if (LVar1 == 0) { zahl = 6; } else { zahl = 0; }

   LVar1 = ((24 % 7) + 5 + LVar2 + zahl) % 7; ! Ergebnis (LVar1) ist die Wochentagszahl

   ! Feiertag ermitteln: 30 Novembertage - (fDiff + Wochentagszahl - 24)
   ! Der Monat ist stets der November

   zahl = 30 - (fDiff + LVar1 - 24);

   fDatum = zahl.ToString() # ".11.";

   if (sDatum == fDatum) { Feiertag = 1; }
}

        if (Durchlauf == 0) {
            dom.GetObject('Feiertag').State(Feiertag);
            Durchlauf = 1;

            ! Datum von morgen für den 2. Durchlauf ermitteln

            LVar1 = system.Date("%d").ToInteger() + 1.00; ! Einen Tag weiter --> morgen
            index = system.Date("%m");
            LVar2 = index.ToInteger();

            zahl = (3 * LVar2) - 3;
            LVar3 = mTage.Substr(zahl, 2).ToInteger(); ! Anzahl der Tage im aktuellen Monat
            if (LVar1 > LVar3) { ! Wenn Monatsgrenze überschritten wurde
                sDatum = "01.";
                if (LVar2 == 12) {
                    sDatum = sDatum # "01.";
                } else {
                    LVar2 = LVar2 + 1.00;
                    if (LVar2 < 10) { sDatum = sDatum # "0" # LVar2.ToString() # "."; } else { sDatum = sDatum # LVar2.ToString() # "."; }
                }
            } else {
                if (LVar1 < 10) { sDatum = "0" # LVar1.ToString() # "." # index # ".";} else { sDatum = LVar1.ToString() # "." # index # "."; }
            }
        } else {
            dom.GetObject('Feiertag_morgen').State(Feiertag);
            Durchlauf = 2;
        }
    }



dom.GetObject('Feiertag').State(Feiertag);
dom.GetObject('Wochenende').State(Wochenende);

if ((Feiertag == 1) || (Wochenende == 1))

{
   dom.GetObject('Freier_Tag').State(1);
}
else
{
   dom.GetObject('Freier_Tag').State(0);
}

dom.GetObject('kurz_vor_WE').State(kurz_vor_WE);
dom.GetObject('Feiertag_morgen').State(Feiertag);


if ((kurz_vor_WE == 1) || (Feiertag == 1))
{
   dom.GetObject('lange_Schlafen').State(1);
}
else
{
   dom.GetObject('lange_Schlafen').State(0);
}




Gesendet von iPhone mit Tapatalk

Neuling95
Beiträge: 17
Registriert: 21.07.2018, 10:16

Re: Sonn- und Feiertage mit HM-Skript berechnen

Beitrag von Neuling95 » 15.08.2018, 20:10

Hallo Blackeye,

wie machst du das mit dem Freitag oder dem Tag vor den Feiertagen.

Da ich neu hier im Thema bin würde mich das brennend Interessieren.

Antworten

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