Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Schalten 2 Stunden nach Sonnenuntergang

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Schalten 2 Stunden nach Sonnenuntergang

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nobse last edited by

      Guten Abend

      ich möchte folgendes machen

      von Montag bis Freitag 2 Stunden nach Sonnenuntergang eine Lampe anschalten und um 23.00 Uhr aus

      von Samstag bis Sonntag und an Feiertagen bei Sonnenuntergang eine Lampe Schalten und um 23.00 Uhr aus

      wie kann man das realisieren?

      Bin für jede Idee dankbar.

      wünsche euch ein schönes WE

      Norbert
      2665_ical2log.txt

      1 Reply Last reply Reply Quote 0
      • F
        Fitti last edited by

        Hi,

        es gibt ja die Astrofunktion im Skript:

        schedule({astro: "sunrise"}, function () {
            log("Sunrise!");
        });
        
        schedule({astro: "sunset", shift: 10}, function () {
            log("10 minutes after sunset!");
        });
        

        Und auch die normale Cronverwaltung - also Zeitsteuerung:

        schedule("0 23 * * *", function () {
            log("Will be triggered at 23.00h");
        });
        

        In den Zeilen mit der Anweisung log kannst Du dann Deine Lampe schalten:

        z. B. mit

        setState('hm-rpc.0.LEQxxxxx.1.STATE', 'true'); 
        

        Den Wert des Aktors holst Du die im Skriptmodul mittels ID einfügen.

        Reicht Dir das? Wenn nicht, einfach fragen.

        Viele Grüße,

        Fitti
        4588_zonenreinigung.png

        1 Reply Last reply Reply Quote 0
        • N
          nobse last edited by

          Danke

          super das man mit der astro function auch rechnen kann.

          Nun bleibt nur Samstag, Sonntag und Feiertag.

          Samstag und Sonntag kann man bestimmt aus dem aktuellen Datum ermitteln (in PHP kein Problem)

          aber wie geht es mit Feiertagen

          Norbert

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            Es gibt welche, die sind immer am gleichen Tag, für die anderen gibt es die https://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel :mrgreen:

            Gruß

            Rainer

            1 Reply Last reply Reply Quote 0
            • N
              nobse last edited by

              Hallo Rainer

              > Es gibt welche, die sind immer am gleichen Tag, für die anderen gibt es die Gauß'sche Osterformel :mrgreen:

              ja da gebe ich dir recht. Dafür habe ich auch fertige Scripte in PHP. Die könnte ich auch benutzen und per Cronjob laufen lassen und dann die Werte in die CCU schreiben lassen und hätte sie dann in iobroker.

              Ich suche aber eine Lösung die unter ioBroker läuft und auch für alle anderen genutzt werden kann.

              Norbert

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @nobse:

                Samstag und Sonntag kann man bestimmt aus dem aktuellen Datum ermitteln `
                Dazu gibt es die Funktion http://wiki.selfhtml.org/wiki/JavaScript/Objekte/Date/getDay.

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 last edited by

                  In HM Script berechne ich die variablen Feiertage mit folgender Formel:

                  var jetzt = new Date();
                  var Jahr = jetzt.getFullYear();
                  
                  // Schaltjahr
                  var sj = 0;
                  var i = Jahr % 4;
                  if (i == 0) { sj = 1;}
                  
                  // Die modifizierte Gauss-Formel nach Lichtenberg, gültig bis 2048
                  var A = ((19 * (Jahr % 19)) + 24) % 30;
                  var B = 120 + A;
                  var C = (B + ((5 * Jahr) / 4)) % 7;
                  var E = B - C;
                  
                  // Ostersonntag: Tag im Jahr
                  var ostern = E - 33 + sj;
                  
                  

                  Die weiteren variablen Feiertage haben eine feste Differenz zu Ostersonntag:

                  • Rosenmontag: -48

                  • Christi Himmelfahrt: +39

                  • Pfingstmontag: +50

                  • Fronleichnam: +60

                  1 Reply Last reply Reply Quote 0
                  • Bluefox
                    Bluefox last edited by

                    Wir brauchen iobroker.holidays adapter. 8-)

                    1 Reply Last reply Reply Quote 0
                    • V
                      versteckt last edited by

                      Ich verwende google Calendar mit Feiertagen und hab das in occ inkludiert. Bzw. sollte das ja auch mit dem cal Adapter funktionieren.

                      Gesendet von meinem iPhone mit Tapatalk

                      1 Reply Last reply Reply Quote 0
                      • S
                        stephan61 last edited by

                        Hallo Norbert

                        schaumal bei http://forum.iobroker.net/viewtopic.php … a64960fcei

                        scripte von Beatz

                        das ist so etwas beschrieben habe teile davon für meine Heizungsteuerung verwendet

                        Gruß Stephan

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 last edited by

                          @Bluefox:

                          Wir brauchen iobroker.holidays adapter. `
                          Ist ein Adapter tatsächlich erforderlich ? Ein Script für die Feiertage und der ioBroker.occ-Adapter für Urlaub u.Ä. löst das Problem auch:

                          // Script ermittelt, ob heute oder morgen ein Feiertag ist
                          var sj;                 // Schaltjahr
                          var ostern;             // Ostersonntag: Tag im Jahr
                          
                          // Regional nicht relevante Feiertage auskommentieren oder löschen !!
                          function feiertag(day) {
                          	switch(day) {
                             case 1:  			  // Neujahr
                          	case 6:			 	// Heilige 3 Könige (BW, BY, ST)
                          	case 121 + sj:		// Maifeiertag
                          	case 227 + sj:		// Maria Himmelfahrt (BY (nicht überall), SL)
                          	case 276 + sj:		// Tag der dt. Einheit
                          	case 304 + sj:		// Reformationstag (BB, MV, SA, ST,TH)
                          	case 305 + sj:  	// Allerheiligen (BW, BY, NW, RP, SL)
                          	case 358 + sj:  	// Heiligabend
                          	case 359 + sj:		// 1\. Weihnachtstag
                          	case 360 + sj:		// 2\. Weihnachtstag
                          	case 365 + sj:		// Silvester
                          	case ostern - 48:	// Rosenmontag
                          	case ostern - 2:	// Karfreitag
                          	case ostern + 1:	// Ostermontag
                          	case ostern + 39:	// Christi Himmelfahrt
                          	case ostern + 50:	// Pfingstmontag
                          	case ostern + 60:	// Fronleichnam (BW, BY, HE, NW, RP, SL (SA, TH nicht überall))
                                  return true;
                             default:
                                  return false;
                             } 
                          }
                          
                          // auf Feiertag testen
                          function checkHolidays() {
                          	var jetzt = new Date();
                          	var Jahr = jetzt.getFullYear();
                          
                          	sj = 0;
                          	var i = Jahr % 4;
                          	if (i === 0) sj = 1;
                          
                          // Die modifizierte Gauss-Formel nach Lichtenberg, gültig bis 2048
                              var A = 120 + (19 * (Jahr % 19) + 24) % 30;
                              var B = (A + parseInt(5 * Jahr / 4)) % 7;
                              ostern = A - B - 33 + sj;
                          
                          // Tag des Jahres
                          	var heutestart = new Date(jetzt.setHours(0,0,0,0));
                          	var neujahr = new Date(Jahr,0,1);
                          	var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1;
                          	var tag = Math.ceil(difftage);
                          
                          	setState("Feiertag.heute", feiertag(tag));
                          	tag = tag + 1;
                          	if (tag > 365 + sj) tag = 1;
                          	setState("Feiertag.morgen", feiertag(tag));
                          }
                          
                          schedule("0 0 * * *", checkHolidays);  //täglich um 0 Uhr 
                          checkHolidays();                       // Scriptstart
                          
                          
                          1 Reply Last reply Reply Quote 0
                          • B
                            Beatz last edited by

                            Klasse Script. Das habe ich bisher noch auf der CCU laufen.

                            @Homoran: Das wäre etwas für die Sammlung auf iobroker.net.

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators last edited by

                              @Beatz:

                              Das wäre etwas für die Sammlung auf iobroker.net. `
                              Hab ich mir eben auch gedacht, aber….

                              ...dann habe ich mir die Seite angesehen und gedacht, die müsste komplett überarbeitet werden.

                              Ihr habt da inzwischen so viele tolle scripte geschrieben. Da hab ich mittlerweile den Überblick verloren. 😞

                              Muss mal sehen, ob ich da die neuen noch wiederfinde

                              Gruß

                              Rainer

                              1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 last edited by

                                @Homoran:

                                Muss mal sehen, ob ich da die neuen noch wiederfinde `
                                Ein paar Vorschläge:

                                http://forum.iobroker.org/viewtopic.php?f=21&t=1337

                                http://forum.iobroker.org/viewtopic.php?f=21&t=914&p=9153#p9153

                                http://forum.iobroker.org/viewtopic.php?f=21&t=1290

                                http://forum.iobroker.org/viewtopic.php?f=21&t=1154#p10285

                                http://forum.iobroker.org/viewtopic.php?f=21&t=1012#p7994

                                http://forum.iobroker.org/viewtopic.php?f=21&t=1012#p8916

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators last edited by

                                  Danke!

                                  Dann hab ich ja heute wieder was zu tun[GRINNING FACE WITH SMILING EYES]

                                  Gesendet von meinem LIFETAB_S785X mit Tapatalk

                                  1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators last edited by

                                    Hallo Paul,

                                    bin gerade bei deinem Punkt:
                                    @paul53:

                                    copyDatapoint(Quellname,Zielname) `
                                    angekommen. Der Link geht auf den zweiten Post (?) Dort steht, dass dies eine Erweiterung des ersten ist.

                                    Muss das Skript dann so aussehen?

                                    // Datenpunkte mit Voreinstellungen erzeugen (createState)
                                    
                                    function createCheckbox(name) {
                                        createState(name, false, {read: true, 
                                                                  write: true, 
                                                                  desc: "Beschreibung", 
                                                                  type: "boolean", 
                                                                  def: false
                                        });
                                    }
                                    
                                    function createSwitch(name) {
                                        createState(name, false, {read: true, 
                                                                  write: true, 
                                                                  desc: "Beschreibung", 
                                                                  type: "boolean", 
                                                                  def: false, 
                                                                  states: "false:Aus; true:Ein"
                                        });
                                    }
                                    
                                    function createMultistate(name) {
                                        createState(name, 0, {read: true, 
                                                              write: true, 
                                                              desc: "Beschreibung", 
                                                              type: "number", 
                                                              min: 0, 
                                                              max: 2, 
                                                              def: 0, 
                                                              states: "0:Wert0; 1:Wert1; 2:Wert2"
                                        });
                                    }
                                    
                                    function createLevel(name) {
                                        createState(name, 0, {read: true,
                                                              write: true, 
                                                              desc: "Beschreibung", 
                                                              type: "number", 
                                                              min: -30, 
                                                              max: 70, 
                                                              def: 0,
                                                              unit: "°C"
                                        });
                                    }
                                    
                                    function createString(name) {
                                        createState(name, "", {read: true, 
                                                               write: true, 
                                                               desc: "Beschreibung", 
                                                               type: "string", 
                                                               def: ""
                                        });
                                    }
                                    function copyDatapoint(src, dst) {
                                        var sid = getIdByName(src);
                                        var sdp = getObject(sid).common;
                                        createState(dst, sdp.def, { read: sdp.read,
                                                                    write: sdp.write,
                                                                    desc: sdp.desc,
                                                                    type: sdp.type,
                                                                    min: sdp.min,
                                                                    max: sdp.max,
                                                                    def: sdp.def,
                                                                    unit: sdp.unit,
                                                                    states: sdp.states
                                        });
                                    }
                                    

                                    Gruß

                                    Rainer

                                    1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 last edited by

                                      @Homoran:

                                      Der Link geht auf den zweiten Post (?) Dort steht, dass dies eine Erweiterung des ersten ist. `
                                      Der erste Teil war eine Zwischenlösung bevor Bluefox die Erstellung von Objekten im Reiter "Objekte" implementiert hatte (ab ioBroker.admin 0.5.9). Die copyDatapoint-Funktion ist weiterhin nützlich zur Verfielfältigung von vorhandenen Datenpunkten für weitere Räume, da sämtliche Attribute (außer Name und ID) kopiert werden.

                                      1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators last edited by

                                        @Homoran:

                                        Muss mal sehen, ob ich da die neuen noch wiederfinde `

                                        Danke für die Unterstützung.

                                        Da sind einige neue Skripte eingepflegt:

                                        http://www.iobroker.net/?page_id=57&lang=de#scripting

                                        Gruß

                                        Rainer

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          pix last edited by

                                          Hallo,
                                          @paul53:

                                          @Bluefox:

                                          Wir brauchen iobroker.holidays adapter. `
                                          Ist ein Adapter tatsächlich erforderlich ? Ein Script für die Feiertage und der ioBroker.occ-Adapter für Urlaub u.Ä. löst das Problem auch:

                                          // Script ermittelt, ob heute oder morgen ein Feiertag ist
                                          var sj;                 // Schaltjahr
                                          var ostern;             // Ostersonntag: Tag im Jahr
                                          
                                          // Regional nicht relevante Feiertage auskommentieren oder löschen !!
                                          function feiertag(day) {
                                          	switch(day) {
                                             case 1:  			  // Neujahr
                                          	case 6:			 	// Heilige 3 Könige (BW, BY, ST)
                                          	case 121 + sj:		// Maifeiertag
                                          	case 227 + sj:		// Maria Himmelfahrt (BY (nicht überall), SL)
                                          	case 276 + sj:		// Tag der dt. Einheit
                                          	case 304 + sj:		// Reformationstag (BB, MV, SA, ST,TH)
                                          	case 305 + sj:  	// Allerheiligen (BW, BY, NW, RP, SL)
                                          	case 358 + sj:  	// Heiligabend
                                          	case 359 + sj:		// 1\. Weihnachtstag
                                          	case 360 + sj:		// 2\. Weihnachtstag
                                          	case 365 + sj:		// Silvester
                                          	case ostern - 48:	// Rosenmontag
                                          	case ostern - 2:	// Karfreitag
                                          	case ostern + 1:	// Ostermontag
                                          	case ostern + 39:	// Christi Himmelfahrt
                                          	case ostern + 50:	// Pfingstmontag
                                          	case ostern + 60:	// Fronleichnam (BW, BY, HE, NW, RP, SL (SA, TH nicht überall))
                                                  return true;
                                             default:
                                                  return false;
                                             } 
                                          }
                                          
                                          // auf Feiertag testen
                                          function checkHolidays() {
                                          	var jetzt = new Date();
                                          	var Jahr = jetzt.getFullYear();
                                          
                                          	sj = 0;
                                          	var i = Jahr % 4;
                                          	if (i === 0) sj = 1;
                                          
                                          // Die modifizierte Gauss-Formel nach Lichtenberg, gültig bis 2048
                                              var A = 120 + (19 * (Jahr % 19) + 24) % 30;
                                              var B = (A + parseInt(5 * Jahr / 4)) % 7;
                                              ostern = A - B - 33 + sj;
                                          
                                          // Tag des Jahres
                                          	var heutestart = new Date(jetzt.setHours(0,0,0,0));
                                          	var neujahr = new Date(Jahr,0,1);
                                          	var difftage = (heutestart - neujahr) / (24*60*60*1000) + 1;
                                          	var tag = Math.ceil(difftage);
                                          
                                          	setState("Feiertag.heute", feiertag(tag));
                                          	tag = tag + 1;
                                          	if (tag > 365 + sj) tag = 1;
                                          	setState("Feiertag.morgen", feiertag(tag));
                                          }
                                          
                                          schedule("0 0 * * *", checkHolidays);  //täglich um 0 Uhr 
                                          checkHolidays();                       // Scriptstart
                                          
                                          ```` `  
                                          

                                          ich habe das Skript mal an meine Bedürfnisse angepasst. Mir fehlten noch einige Feiertage (die immer auf einen Sonntag fallen; Ostern, Pfingsten), ich habe noch "übermorgen" eingebaut und schließlich die Funktionen, die den nächsten Feiertag errechnen. Dazu musste ich die eigentlich sehr praktische Switch-Funktion aus paul53's Skript in eine Funktion mit If-Abfragen umwandeln. Wenn der abgefragte Tag des Jahres einem hinterlegten Tag entspricht, dann wird der Name des Feiertages zurückgegeben, sonst bleibt der Name leer. Die Boolean-Variable (Feiertag ja/nein) reagiert dann darauf, ob ein Name zurückgegeben wurde (egal welcher Name, wenn er mindestens zwei Zeichen lang ist). Und solange (while) die boolean-Variable keinen Feiertag meldet, zählt weiter unten die While-Schleife die Tage hoch. Wenn dann ein Feiertag entdeckt wird (boolean = true), dann wird der Tag des Jahres an eine neue Funktion tagdesjahresZudatum übergeben. Die rechnet diesen Tag dann abhängig vom Schaltjahr wieder in ein Datum für die Ausgabe zurück.

                                          Ich hatte zuvor zur Berechnung der Feiertage ein http://hobbyquaker.blogspot.de/2014/03/deutsche-feiertage-im-json-format.html im Einsatz. Allerdings setzt das eine gewisse Pflege voraus (JSON Quelldatei). Das wollte ich mir in Zukunft ersparen.

                                          Dieses Skript legt die Objekte mit CreateState an. Ausserdem ist eine kleine Testfunktion eingebaut: In die Variable X kann ein ganze Zahl eingetragen werden. Ist sie 0, läuft das Skript korrekt mit dem heutigen Datum. Ist sie größer, lässt sich ein Tag in der Zukunft als Starttag festlegen (heute 26. April, wenn X = 7, dann nimmt das Skript an, heute wär 3. Mai).

                                          Vielleicht kann das noch jemand brauchen oder weiter optimieren.

                                          ! ````
                                          /* Feiertagsskript von paul53
                                          http://forum.iobroker.net/viewtopic.php?f=21&t=1341&p=11205#p11205
                                          pflegeleichte Berechnung der Feiertage bis zum Jahr 2048
                                          erstellt: 23.04.2016 nach Vorlagen von paul53
                                          26.04.2016 nächster Feiertag wird ausgerechnet und bezeichnet
                                          */
                                          ! createState("Kalender.Feiertag.heute.boolean", false, {
                                          name: 'Feiertag heute?',
                                          desc: 'Ist heute ein Feiertag?',
                                          type: 'boolean'
                                          });
                                          createState("Kalender.Feiertag.heute.Name", '', {
                                          name: 'Feiertag heute - Name',
                                          desc: 'Wie heißt der Feiertag heute?',
                                          type: 'string'
                                          });
                                          createState("Kalender.Feiertag.morgen.boolean", false, {
                                          name: 'Feiertag morgen?',
                                          desc: 'Ist morgen ein Feiertag?',
                                          type: 'boolean'
                                          });
                                          createState("Kalender.Feiertag.morgen.Name", '', {
                                          name: 'Feiertag morgen - Name',
                                          desc: 'Wie heißt der Feiertag morgen?',
                                          type: 'string'
                                          });
                                          createState("Kalender.Feiertag.uebermorgen.boolean", false, {
                                          name: 'Feiertag übermorgen?',
                                          desc: 'Ist übermorgen ein Feiertag?',
                                          type: 'boolean'
                                          });
                                          createState("Kalender.Feiertag.uebermorgen.Name", '', {
                                          name: 'Feiertag übermorgen - Name',
                                          desc: 'Wie heißt der Feiertag uebermorgen?',
                                          type: 'string'
                                          });
                                          createState("Kalender.Feiertag.naechster.Datum", '', {
                                          name: 'Nächster Feiertag - Datum',
                                          desc: 'Wann ist der nächste Feiertag?',
                                          type: 'string'
                                          });
                                          createState("Kalender.Feiertag.naechster.Name", '', {
                                          name: 'Nächster Feiertag - Name',
                                          desc: 'Wie heisst der nächste Feiertag?',
                                          type: 'string'
                                          });
                                          ! var idheute = "Kalender.Feiertag.heute.boolean",
                                          idmorgen = "Kalender.Feiertag.morgen.boolean",
                                          iduebermorgen = "Kalender.Feiertag.uebermorgen.boolean",
                                          idheuteName = "Kalender.Feiertag.heute.Name",
                                          idmorgenName = "Kalender.Feiertag.morgen.Name",
                                          iduebermorgenName = "Kalender.Feiertag.uebermorgen.Name",
                                          idnaechsterDatum = "Kalender.Feiertag.naechster.Datum",
                                          idnaechsterName = "Kalender.Feiertag.naechster.Name";
                                          ! // Script ermittelt, ob heute oder morgen ein Feiertag ist
                                          var sj; // Schaltjahr
                                          var ostern; // Ostersonntag: Tag im Jahr
                                          ! // Regional nicht relevante Feiertage auskommentieren oder löschen !!
                                          function feiertag(day) {
                                          var Name = '';
                                          if (day == 1) Name = 'Neujahr';
                                          else if (day == 6) Name = 'Heilige Drei Könige (BW,BY,ST)';
                                          else if (sj + 121 == day) Name = 'Maifeiertag';
                                          else if (day == sj + 227) Name = 'Maria Himmelfahrt (BY (nicht überall), SL)';
                                          else if (day == sj + 276) Name = 'Tag der dt. Einheit';
                                          else if (day == sj + 304) Name = 'Reformationstag (BB, MV, SA, ST,TH)';
                                          else if (day == sj + 305) Name = 'Allerheiligen (BW, BY, NW, RP, SL)';
                                          else if (day == sj + 358) Name = 'Heiligabend';
                                          else if (day == sj + 359) Name = '1. Weihnachtstag';
                                          else if (day == sj + 360) Name = '2. Weihnachtstag';
                                          else if (day == sj + 365) Name = 'Silvester';

                                          else if (day == ostern - 48) Name = 'Rosenmontag';
                                          else if (day == ostern -  2) Name = 'Karfreitag';
                                          else if (day == ostern)      Name = 'Ostersonntag';
                                          else if (day == ostern +  1) Name = 'Ostermontag';
                                          else if (day == ostern + 39) Name = 'Christi Himmelfahrt';
                                          else if (day == ostern + 49) Name = 'Pfingstsonntag';
                                          else if (day == ostern + 50) Name = 'Pfingstmontag';
                                          else if (day == ostern + 60) Name = 'Fronleichnam (BW, BY, HE, NW, RP, SL (SA, TH nicht überall))';
                                          else Name = '';
                                          return (Name);
                                          

                                          }

                                          ! function tagdesjahresZudatum (day) {
                                          var day_ms = (day - sj) * 24 * 60 * 60 * 1000; // Tag des Jahres in Millisekunden seit Neujahr Mitternacht
                                          var jetzt = new Date();
                                          var Jahr = jetzt.getFullYear();
                                          var neujahr = new Date(Jahr,0,1,0,0,0,0); // Dies Jahr Neujahr Mitternacht
                                          var neujahr_ms = neujahr.getTime();

                                          var datum = new Date();
                                          datum.setTime(neujahr_ms + day_ms);                                         // Addition Neujahr in ms plus Tag des Jahres in ms = gesuchtes Datum in ms
                                          return(datum);    
                                          

                                          }

                                          ! // auf Feiertag testen
                                          function checkHolidays() {
                                          var jetzt = new Date();
                                          var Jahr = jetzt.getFullYear();
                                          sj = (Jahr % 4 === 0) ? 1 : 0;
                                          ! // Die modifizierte Gauss-Formel nach Lichtenberg, gültig bis 2048
                                          var A = 120 + (19 * (Jahr % 19) + 24) % 30;
                                          var B = (A + parseInt(5 * Jahr / 4)) % 7;
                                          ostern = A - B - 33 + sj;
                                          ! // Tag des Jahres
                                          var heutestart = new Date(jetzt.setHours(0,0,0,0));
                                          var neujahr = new Date(Jahr,0,1);
                                          var difftage = (heutestart - neujahr) / (246060*1000) + 1;
                                          var tag = Math.ceil(difftage);
                                          ! // heute
                                          var x = 0; // Variable zur Annahme, es wäre ein anderer Tag im Jahr [heute = 0]
                                          tag = tag + x;
                                          //log(tag);
                                          var istFeiertag;
                                          setState(idheuteName, feiertag(tag));
                                          istFeiertag = (feiertag(tag).length < 2) ? false : true;
                                          setState(idheute, istFeiertag);

                                          // morgen
                                          tag = tag + 1;
                                          if (tag > 365 + sj) tag = 1;
                                          setState(idmorgenName, feiertag(tag));
                                          istFeiertag = (feiertag(tag).length < 2) ? false : true;
                                          setState(idmorgen, istFeiertag);

                                          // übermorgen
                                          tag = tag + 1;
                                          if (tag > 365 + sj) tag = 1;
                                          setState(iduebermorgenName, feiertag(tag));
                                          istFeiertag = (feiertag(tag).length < 2) ? false : true;
                                          setState(iduebermorgen, istFeiertag);

                                          // nächster Feiertag
                                          while (feiertag(tag).length < 2) {
                                          tag = tag + 1;
                                          istFeiertag = (feiertag(tag).length < 2) ? false : true;
                                          if (istFeiertag) {
                                          var datum_tdj = tagdesjahresZudatum(tag);
                                          setState(idnaechsterName, feiertag(tag));
                                          setState(idnaechsterDatum, formatDate(datum_tdj));
                                          log('Nächster Feiertag: ' + feiertag(tag) + ' am ' + formatDate(datum_tdj));
                                          }
                                          }
                                          }

                                          ! schedule("0 0 * * *", checkHolidays); //täglich um 0 Uhr
                                          checkHolidays(); // Scriptstart
                                          ! ````

                                          Ausgabe: 261_bildschirmfoto_2016-04-26_um_13.44.22.jpg

                                          Viele Grüße,

                                          Pix

                                          1 Reply Last reply Reply Quote 0
                                          • P
                                            pix last edited by

                                            @Bluefox:

                                            Wir brauchen iobroker.holidays adapter. 8-) `
                                            Is da :lol: :lol:

                                            http://forum.iobroker.net/viewtopic.php … 754#p24642

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            663
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            20
                                            4221
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo