Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Astrozeit spinnt - Lampen sind zu früh an

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Astrozeit spinnt - Lampen sind zu früh an

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

      Hi zusammen,

      seit einigen Monaten spinnt mein Skript. Geändert hatte ich eigentlich nichts.
      Um diese Uhrzeit und bei dem hellen Wetter geht das Licht im Flur bereits an.

      //Flur EG
      let lampe1 = 'alias.0.Flur.Licht.Flur1';
      let lampe2 = 'alias.0.Flur.Licht.Flur2';
      let bwm = 'alias.0.Flur.Sensor.Bewegungsmelder.presence';
      let licht_wohnzimmer = 'yeelight-2.0.Yeelight-Stehlampe.control.power';
      let overwrite = '0_userdata.0.Licht.Flur_overwrite';
      
      let von, bis, low_von = '20:30:00';
      
      let timeOut;
      
      von = getState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang').val;
      bis = getState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang').val;
      
      // function checkLightWohnzimmer(){
      //     if(getState(licht_wohnzimmer).val === false){
      //         return true;
      //     }else{
      //         return false;
      //     }
      // }
      
      function checkLightWohnzimmer(){
          if(getState(licht_wohnzimmer).val === false && getState(overwrite).val === false){
              return true;
          }else{
              return false;
          }
      }
      on({id: bwm},
          function(obj){
              if(timeOut){
                  clearTimeout(timeOut);
              }
              if(obj.state.val === true && isTimeInRange(von, bis) === true && checkLightWohnzimmer() === true){
                   if(isTimeInRange(low_von, bis) === true){
                      setState(lampe1 + '.level', 5);
                      setState(lampe1 + '.ct', 6530);
                      setState(lampe2 + '.level', 5);
                      setState(lampe2 + '.ct', 6530);
                   }else{
                       setState(lampe1 + '.level', 32);
                       setState(lampe1 + '.ct', 6530);
                       setState(lampe2 + '.level', 32);
                       setState(lampe2 + '.ct', 6530);
                   }
      
                   setState(lampe1 + '.on', true)
                   setState(lampe2 + '.on', true)
                   timeOut = setTimeout(function(){
                      setState(lampe1 + '.on', false);
                      setState(lampe2 + '.on', false);
                      }, 150000)
               }else if(obj.state.val === false){
                  setState(lampe1 + '.on', false);
                  setState(lampe2 + '.on', false);
              }
          })
      

      mit dem Astrozeit Skript ...

      /* System Tageszeoten
      
      Skript meldet Tageszeiten
      
      Nacht;Frühmorgens;Morgengrauen;Vormittag;Mittag;Nachmittag;Dämmerung;Abend;
      Basis: http://www.homematic-inside.de/tecbase/homematic/scriptlibrary/item/tageszeit-in-abschnitte-unterteilen
      oder hier: https://github.com/ioBroker/ioBroker.javascript#astro--funktion
      
      https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#getastrodate
      
      erstellt: 01.06.2015 von Pix
      18.02.2018 Sonnenaufgang und Sonnenuntergang wird nur noch neu geschrieben
                  wenn die bereits gesetzte Zeit sich von der neuen Unterscheidet
      11.12.2015 getAstroDate ermittelt nun auch Sonnenaufgang und Untergang
                 Astrotag (isAstroDay) eingebaut
      */
      
      /*Variablen erstellen*/
      createState('0_userdata.0.Allgemein.Astro.Tageszeit', {
          name: 'Tageszeit'
      });
      createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang', {
          name: 'nächster Sonnenaufgang Uhrzeit',
          desc: 'sunrise (top edge of the sun appears on the horizon)'
      });
      createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang', {
          name: 'nächster Sonnenuntergang Uhrzeit',
          desc: 'sunset (sun disappears below the horizon, evening civil twilight starts)'
      });
      createState('0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag', false, {
          read: true,
          write: true,
          type: 'boolean',
          name: 'Astologischer Tag',
          desc: 'Zeit zwischen Sonnenauf- und untergang'
      });
      
      let idTageszeit = "0_userdata.0.Allgemein.Astro.Tageszeit",
          tageszeiten = ['Nacht',
                         'Morgendämmerung',
                         'Morgen',
                         'Vormittag',
                         'Mittag',
                         'Nachmittag',
                         'Abenddämmerung',
                         'Abend'],
          idAstrotag =        "0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag",
          idSonnenaufgang =   "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang",
          idSonnenuntergang = "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang";
      
      function zeiten_speichern () {
          let astrotag = getState(idAstrotag).val,
              sonnenaufgang,
              sonnenuntergang;
          let today = new Date();
          let tomorrow = today.setDate(today.getDate()+1);
          if (astrotag) { // Wenn Tag (Aufgang vorbei (erst wieder morgen, Untergang kommt noch heute)
              sonnenuntergang = getAstroDate('sunset', today),
              sonnenaufgang = getAstroDate('sunrise', tomorrow);
          } else { // nach Nacht (Untergang vorbei (erst wieder morgen, Aufgang kommt heute oder morgen)
              sonnenuntergang = getAstroDate('sunset', tomorrow);
              sonnenaufgang = (today.getHours() > 12 && today.getHours() <= 23) ? getAstroDate('sunrise', tomorrow) :  getAstroDate('sunrise', today); // es ist vor Mitternacht (bzw. vor 23:XXUhr), dann morgen, sonst heute
          }
          if(getState(idSonnenaufgang).val != sonnenaufgang){
              setState(idSonnenaufgang, sonnenaufgang.toLocaleTimeString('de-DE', { hour12: false }));
          }
          
          if(getState(idSonnenuntergang).val != sonnenuntergang){
              setState(idSonnenuntergang, sonnenuntergang.toLocaleTimeString('de-DE', { hour12: false }));
          }
      }
      
      function neue_tageszeit(abschnitt) {
          setState(idTageszeit, tageszeiten[parseInt(abschnitt, 10)]);
          log('neue Tagezeit: ' + tageszeiten[parseInt(abschnitt, 10)], 'info');
          zeiten_speichern();
      }
      
      // Nacht
      schedule({astro: "night", shift: 120}, function () { neue_tageszeit(0) });
      
      // Morgengdämmerung
      schedule({astro: "nightEnd"}, function () { neue_tageszeit(1) });
      
      // Morgen
      schedule({astro: "sunrise"}, function () { neue_tageszeit(2) });
      
      // Vormittag (beginnt 120min vor Sonnenhöchststand)
      schedule({astro: "solarNoon", shift: -120}, function () { neue_tageszeit(3) });
      
      // Mittag
      schedule({astro: "solarNoon"}, function () { neue_tageszeit(4) });
      
      // Nachmittag
      schedule({astro: "solarNoon", shift: 60}, function () { neue_tageszeit(5) });
      
      // Abenddämmerung (nach Sonnenuntergang)
      schedule({astro: "dusk"}, function () { neue_tageszeit(6) });
      
      // Abend
      schedule({astro: "night"}, function () { neue_tageszeit(7) });
      
      // Astrotag checken
      schedule("*/1 * * * *", function () {
         if (isAstroDay) setState(idAstrotag, true);
         if (!isAstroDay) setState(idAstrotag, false);
         zeiten_speichern();
      });
      
      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Bielefelder81 last edited by

        @bielefelder81 was sagt die Systemzeit?

        B 1 Reply Last reply Reply Quote 0
        • B
          Bielefelder81 @Homoran last edited by Bielefelder81

          @homoran Hi, der ioBroker zeigt unter "Info" folgendes an.
          0c4dff98-e79d-4106-885f-2d6c4329ec01-image.png

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

            @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

            @homoran Hi, der ioBroker zeigt unter "Info" folgendes an0c4dff98-e79d-4106-885f-2d6c4329ec01-image.png

            das ist nicht die Systemzeit des Servers, sondern die Zeit deines PCs

            B 1 Reply Last reply Reply Quote 0
            • B
              Bielefelder81 @Homoran last edited by

              @homoran 1729762b-4c66-4ce0-a1bc-fb9c573f5041-image.png

              Thomas Braun B 2 Replies Last reply Reply Quote 0
              • Thomas Braun
                Thomas Braun Most Active @Bielefelder81 last edited by

                @bielefelder81

                timedatectl
                

                Und das ganze nicht als root und Konsolentext nicht als Screenshot sondern als Text in CodeTags.

                B 1 Reply Last reply Reply Quote 0
                • B
                  Bielefelder81 @Bielefelder81 last edited by

                  Laut Datenpunkt in den Objekten steht Tageszeit "Nachmittag" und trotzdem ist das Licht schon an.
                  Eigentlich müsste dort doch mindestens Abenddämmerung oder so etwas stehen.
                  5b48ee66-7ac6-4c28-858d-4af25bd46f0f-image.png

                  1 Reply Last reply Reply Quote 0
                  • B
                    Bielefelder81 @Thomas Braun last edited by

                    @thomas-braun

                                   Local time: Mon 2023-06-05 20:53:02 CEST
                               Universal time: Mon 2023-06-05 18:53:02 UTC 
                                     RTC time: n/a                         
                                    Time zone: Europe/Berlin (CEST, +0200) 
                    System clock synchronized: yes                         
                                  NTP service: inactive                    
                              RTC in local TZ: no      
                    
                    Thomas Braun 1 Reply Last reply Reply Quote 0
                    • Thomas Braun
                      Thomas Braun Most Active @Bielefelder81 last edited by Thomas Braun

                      @bielefelder81

                      Wo kommt der Inhalt von

                      0_userdata.0.Allgemein.Astro.Tageszeit.
                      

                      her?

                      Vergiss die Frage...
                      Hab geschnallt.

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

                        @thomas-braun sagte in Astrozeit spinnt - Lampen sind zu früh an:

                        Wo kommt der Inhalt von

                        @Bielefelder81
                        und wieso steht im Ordner ein Wert?
                        ...weil der Ordner in Wirklichkeit ein State ist... zählt nicht als Antwort.

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          Bielefelder81 @Homoran last edited by Bielefelder81

                          @homoran Sry, aber ich bin da nicht so firms. Mir hatte man mal die beiden Skripte vor x Jahren mal gegeben und bis vor einigen Wochen funktionierte auch alles.
                          Laut kleinem Info Fenster wurde heute um 14:25 Uhr der Wert zuletzt aktualisiert.

                          B 1 Reply Last reply Reply Quote 0
                          • B
                            Bielefelder81 @Bielefelder81 last edited by

                            Das Skript hatte ich oben ja gepostet. Es ist unter Skripte > common > Astrozeit
                            Dort zieht er sich ja anscheinend die Tageszeit und trägt sie dort in den Ordner ein. Vermute ich.

                            /* System Tageszeoten
                            
                            Skript meldet Tageszeiten
                            
                            Nacht;Frühmorgens;Morgengrauen;Vormittag;Mittag;Nachmittag;Dämmerung;Abend;
                            Basis: http://www.homematic-inside.de/tecbase/homematic/scriptlibrary/item/tageszeit-in-abschnitte-unterteilen
                            oder hier: https://github.com/ioBroker/ioBroker.javascript#astro--funktion
                            
                            https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#getastrodate
                            
                            erstellt: 01.06.2015 von Pix
                            18.02.2018 Sonnenaufgang und Sonnenuntergang wird nur noch neu geschrieben
                                        wenn die bereits gesetzte Zeit sich von der neuen Unterscheidet
                            11.12.2015 getAstroDate ermittelt nun auch Sonnenaufgang und Untergang
                                       Astrotag (isAstroDay) eingebaut
                            */
                            
                            /*Variablen erstellen*/
                            createState('0_userdata.0.Allgemein.Astro.Tageszeit', {
                                name: 'Tageszeit'
                            });
                            createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang', {
                                name: 'nächster Sonnenaufgang Uhrzeit',
                                desc: 'sunrise (top edge of the sun appears on the horizon)'
                            });
                            createState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang', {
                                name: 'nächster Sonnenuntergang Uhrzeit',
                                desc: 'sunset (sun disappears below the horizon, evening civil twilight starts)'
                            });
                            createState('0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag', false, {
                                read: true,
                                write: true,
                                type: 'boolean',
                                name: 'Astologischer Tag',
                                desc: 'Zeit zwischen Sonnenauf- und untergang'
                            });
                            
                            let idTageszeit = "0_userdata.0.Allgemein.Astro.Tageszeit",
                                tageszeiten = ['Nacht',
                                               'Morgendämmerung',
                                               'Morgen',
                                               'Vormittag',
                                               'Mittag',
                                               'Nachmittag',
                                               'Abenddämmerung',
                                               'Abend'],
                                idAstrotag =        "0_userdata.0.Allgemein.Astro.Tageszeit.Astrotag",
                                idSonnenaufgang =   "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang",
                                idSonnenuntergang = "0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang";
                            
                            
                            function zeiten_speichern () {
                                let astrotag = getState(idAstrotag).val,
                                    sonnenaufgang,
                                    sonnenuntergang;
                                let today = new Date();
                                let tomorrow = today.setDate(today.getDate()+1);
                                if (astrotag) { // Wenn Tag (Aufgang vorbei (erst wieder morgen, Untergang kommt noch heute)
                                    sonnenuntergang = getAstroDate('sunset', today),
                                    sonnenaufgang = getAstroDate('sunrise', tomorrow);
                                } else { // nach Nacht (Untergang vorbei (erst wieder morgen, Aufgang kommt heute oder morgen)
                                    sonnenuntergang = getAstroDate('sunset', tomorrow);
                                    sonnenaufgang = (today.getHours() > 12 && today.getHours() <= 23) ? getAstroDate('sunrise', tomorrow) :  getAstroDate('sunrise', today); // es ist vor Mitternacht (bzw. vor 23:XXUhr), dann morgen, sonst heute
                                }
                                if(getState(idSonnenaufgang).val != sonnenaufgang){
                                    setState(idSonnenaufgang, sonnenaufgang.toLocaleTimeString('de-DE', { hour12: false }));
                                }
                                
                                if(getState(idSonnenuntergang).val != sonnenuntergang){
                                    setState(idSonnenuntergang, sonnenuntergang.toLocaleTimeString('de-DE', { hour12: false }));
                                }
                            }
                            
                            
                            function neue_tageszeit(abschnitt) {
                                setState(idTageszeit, tageszeiten[parseInt(abschnitt, 10)]);
                                log('neue Tagezeit: ' + tageszeiten[parseInt(abschnitt, 10)], 'info');
                                zeiten_speichern();
                            }
                            
                            
                            // Nacht
                            schedule({astro: "night", shift: 120}, function () { neue_tageszeit(0) });
                            
                            // Morgengdämmerung
                            schedule({astro: "nightEnd"}, function () { neue_tageszeit(1) });
                            
                            // Morgen
                            schedule({astro: "sunrise"}, function () { neue_tageszeit(2) });
                            
                            // Vormittag (beginnt 120min vor Sonnenhöchststand)
                            schedule({astro: "solarNoon", shift: -120}, function () { neue_tageszeit(3) });
                            
                            // Mittag
                            schedule({astro: "solarNoon"}, function () { neue_tageszeit(4) });
                            
                            // Nachmittag
                            schedule({astro: "solarNoon", shift: 60}, function () { neue_tageszeit(5) });
                            
                            // Abenddämmerung (nach Sonnenuntergang)
                            schedule({astro: "dusk"}, function () { neue_tageszeit(6) });
                            
                            // Abend
                            schedule({astro: "night"}, function () { neue_tageszeit(7) });
                            
                            // Astrotag checken
                            schedule("*/1 * * * *", function () {
                               if (isAstroDay) setState(idAstrotag, true);
                               if (!isAstroDay) setState(idAstrotag, false);
                               zeiten_speichern();
                            });
                            
                            Homoran bahnuhr 2 Replies Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @Bielefelder81 last edited by

                              @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

                              Vermute ich.

                              ich auch, ich kann aber kein js 😞

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                Bielefelder81 @Homoran last edited by

                                @homoran Hast du eine andere Möglichkeit für mich? 😉 Dann nehme ich die gern, damit die Lampe endlich nur im Dunkeln angeht 😉

                                Thomas Braun Homoran 2 Replies Last reply Reply Quote 0
                                • Thomas Braun
                                  Thomas Braun Most Active @Bielefelder81 last edited by

                                  @bielefelder81

                                  Ich nutze dafür den 'followthesun'-Adapter.
                                  Und einen user-Account, nicht den root.

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

                                    @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

                                    Hast du eine andere Möglichkeit für mich

                                    nee, Systemzeit ist die häufigste Ursache, aber die passt ja.

                                    @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

                                    heute um 14:25 Uhr der Wert zuletzt aktualisiert.

                                    auf nachmittag.
                                    das passt ja.

                                    @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

                                    astro: "solarNoon", shift: 60

                                    das nächste wäre

                                    @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

                                    Abenddämmerung (nach Sonnenuntergang)

                                    das kommt in Bielefeld ungefähr jetzt

                                    der Fehler mit dem Licht muss also woanders liegen

                                    edit: Sonnenuntergang in Bielefeld heute ca. 21:40

                                    B 1 Reply Last reply Reply Quote 0
                                    • B
                                      Bielefelder81 @Homoran last edited by

                                      @homoran Oh 😞 Dann weiß ich nicht. Wann exakt die Lampen angehen weiß ich nicht. Glaube aber, dass es schon bereits vor 18 Uhr angeht, obwohl es deutlich zu hell für Licht im Flur ist. "Früher" funktionierte das.

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • B
                                        Bielefelder81 @Thomas Braun last edited by

                                        @thomas-braun Den Root hatte ich eben nur in der Konsole auf Proxmox angemeldet, um nach der Uhrzeit zu schauen.

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

                                          @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

                                          Wann exakt die Lampen angehen weiß ich nicht.

                                          laut Skript fix um

                                          @bielefelder81 sagte in Astrozeit spinnt - Lampen sind zu früh an:

                                          let von, bis, low_von = '20:30:00';

                                          B 1 Reply Last reply Reply Quote 0
                                          • B
                                            Bielefelder81 @Homoran last edited by Bielefelder81

                                            @homoran Nee ab 20:30 Uhr soll es "dunkler" beleuchtet sein... Denn das Licht im Flur sieht man im Kinderzimmer. Vor 20:30 Uhr kann das Flurlicht ruhig auf 100% sein. So war es eigentlich geplant.
                                            Das Skript checkt: Licht im Wohnzimmer an, ja nein? Wenn ja, dann kein Licht an. Wenn nein, dann geht das Flurlicht an (Wenn nach 20:30 Uhr dann nur 30% oder so)

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            42
                                            1646
                                            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