Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Schalten 2 Stunden nach Sonnenuntergang

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.1k

Schalten 2 Stunden nach Sonnenuntergang

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
20 Beiträge 9 Kommentatoren 4.6k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Offline
    N Offline
    nobse
    schrieb am zuletzt editiert von
    #3

    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

    Gruß Norbert

    CCU2 • Raspberry für Wetterstation • CMS http://www.exv2.de • HP ProLiant MicroServer Gen8 12GB RAM, 2x3TB, Windows Essentials Server 2016 mit ioBroker

    1 Antwort Letzte Antwort
    0
    • HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #4

      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

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        nobse
        schrieb am zuletzt editiert von
        #5

        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

        Gruß Norbert

        CCU2 • Raspberry für Wetterstation • CMS http://www.exv2.de • HP ProLiant MicroServer Gen8 12GB RAM, 2x3TB, Windows Essentials Server 2016 mit ioBroker

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #6

          @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.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #7

            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

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              schrieb am zuletzt editiert von
              #8

              Wir brauchen iobroker.holidays adapter. 8-)

              1 Antwort Letzte Antwort
              0
              • V Offline
                V Offline
                versteckt
                schrieb am zuletzt editiert von
                #9

                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

                Raspi 1, Raspi 2, iobroker, Mac Mini: alles mit aktueller ioBroker Version

                homegear für Homematic und MAX!

                occ, zWave, rpi, hmm und homekit Entwickler

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  stephan61
                  schrieb am zuletzt editiert von
                  #10

                  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 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #11

                    @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
                    
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Antwort Letzte Antwort
                    0
                    • B Offline
                      B Offline
                      Beatz
                      schrieb am zuletzt editiert von
                      #12

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

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

                      1 Antwort Letzte Antwort
                      0
                      • HomoranH Nicht stören
                        HomoranH Nicht stören
                        Homoran
                        Global Moderator Administrators
                        schrieb am zuletzt editiert von
                        #13

                        @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

                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #14

                          @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

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • HomoranH Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von
                            #15

                            Danke!

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

                            Gesendet von meinem LIFETAB_S785X mit Tapatalk

                            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            1 Antwort Letzte Antwort
                            0
                            • HomoranH Nicht stören
                              HomoranH Nicht stören
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von
                              #16

                              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

                              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              1 Antwort Letzte Antwort
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #17

                                @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.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                1 Antwort Letzte Antwort
                                0
                                • HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von
                                  #18

                                  @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

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  1 Antwort Letzte Antwort
                                  0
                                  • P Offline
                                    P Offline
                                    pix
                                    schrieb am zuletzt editiert von
                                    #19

                                    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

                                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                    1 Antwort Letzte Antwort
                                    0
                                    • P Offline
                                      P Offline
                                      pix
                                      schrieb am zuletzt editiert von
                                      #20

                                      @Bluefox:

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

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

                                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                      1 Antwort Letzte Antwort
                                      0
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      478

                                      Online

                                      32.4k

                                      Benutzer

                                      81.5k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe