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.
    • Homoran
      Homoran Global Moderator Administrators @Bielefelder81 last edited by

      @bielefelder81 aber wann??
      ich seh den Trigger nicht

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

        @homoran Also ich weiß nur. Er checkt mit dem BWM im Flur, ob Bewegung da ist. Wenn Bewegung erkannt, checkt das Skript ob im Wohnzimmer das Licht an ist. Wenn das Licht an ist, dann bleibt der Flur aus. Wenn aber im Wohnzimmer das Licht aus ist, dann checkt er die Astrozeit und macht die Lampe an. Ab 20:30 Uhr dann halt nur mit 30%...

        Von Range Sonnenuntergang Bis Range Sonnenaufgang

        Homoran 1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active @Bielefelder81 last edited by

          @bielefelder81
          Ich stelle dir mal mein Script ein zum Vergleichen:

          // Tageszeiten Script
          
          
          function weiter() {
          
          // Variablen
              var vStunde = new Date().getHours();
              var vMinute = new Date().getMinutes();
              var sunset = getAstroDate("sunset");
              var sunrise = getAstroDate("sunrise");
          
              var akt_zeit = 0.01 * vMinute + vStunde;
              var i_tagesbeginn = 0.01 * parseInt(sunrise.toLocaleTimeString().substr(3,2)) + parseInt(sunrise.toLocaleTimeString().substr(0,2));
              var i_tagesende = 0.01 * parseInt(sunset.toLocaleTimeString().substr(3,2)) + parseInt(sunset.toLocaleTimeString().substr(0,2));
              var i_mittag = 13.00; // Mittagszeit
              var v_tageszeit = 'Nacht';
          
              if (akt_zeit < i_tagesende + 2) v_tageszeit = 'Abend'; 
              if (akt_zeit < i_tagesende + 1) v_tageszeit = 'Dämmerung';
              if (akt_zeit < i_tagesende) v_tageszeit = 'Nachmittag';
              if (akt_zeit < i_mittag + 1) v_tageszeit = 'Mittag';
              if (akt_zeit < i_mittag - 1) v_tageszeit = 'Vormittag';
              if (akt_zeit < i_tagesbeginn) v_tageszeit = 'Morgengrauen';
              if (akt_zeit < i_tagesbeginn - 1) v_tageszeit = 'Frühmorgens';
              if (akt_zeit < i_tagesbeginn - 2) v_tageszeit = 'Nacht';
          
              setState('javascript.0.System.System.Tageszeit', v_tageszeit);
          }
          
          schedule("*/10 * * * *", function () {
              weiter();
          });
          
          

          Überprüfe es mal mit deinem.
          Und du prüfst jede Minute; auch hier mal überlegen ob das Sinn bringt.

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

            @bielefelder81 ok, das passt zu dem was ich da gelesen habe.

            Also:
            welche "Lampen sind zu früh an"?

            und wieso spinnt die Astrozeit?
            bzw. wo kommt die Astrozeit bei den Lampen ins Spiel?

            ich sehe da keine Zusammenhänge

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

              @homoran Die Lampe1 und Lampe2 im Flur geht zu früh an.
              Wie gesagt, ich habe die Skripts nur so bekommen und es funktionierte sonst immer. Ich steige da sowieso nicht durch. Dachte ihr seht das und wisst sofort "Aaah, ja. Das fehlt was..." - Fertig 🙂

              1 Reply Last reply Reply Quote 0
              • Jey Cee
                Jey Cee Developer last edited by

                Da fehlt ein Wesentlicher Teil im Skript, damit Zeit auch entsprechend Aktualisiert wird.

                
                //Bei Änderung der Zeiten Aktualisieren
                on({id: '0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang'},
                    () => {
                        von = getState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenuntergang').val;
                    })
                
                on({id: '0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang'},
                    () => {
                        bis = getState('0_userdata.0.Allgemein.Astro.Tageszeit.Sonnenaufgang').val;
                    })
                
                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @bahnuhr last edited by

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

                  Überprüfe es mal mit deinem.

                  wenn es nach dem Nachmittag (solarNoon+60') erst die Abenddämmerung gibt, läuft IMHO alles ok.

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

                    Hi zusammen, ich habe heute mal wieder das Problem, dass mein Astro Flurlicht Script nicht korrekt funktioniert.
                    In den Objekten steht als aktuelle Tageszeit "Nachmittag" drin. Dann geht natürlich nicht die Lampe an...
                    131e41c2-1af1-4b45-a6c8-4c41046961c8-image.png

                    Ich bekomme die Warnung "Astrozeit cannot calculate night, nightend für die Koordinaten".

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

                      @bielefelder81

                      Das Thema Nacht wurde im (Beta)-Javascript-Adapter angepackt. Welche Version hast du da?

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

                        @thomas-braun Das kann ich dir leider nicht beantworten. Im Script steht aber sowas wie "Erstellt: 01.06.2015 von Pix" 😉
                        Der Javascript Adapter ist bei mir 8.3.1

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

                          @bielefelder81

                          Ich spreche aber auch von deinem iobroker.javascript-Adapter...

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

                            @thomas-braun Habe ich anschließend auch kapiert und oben editiert.

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

                              @bielefelder81
                              Möglich das es in 8.3.1 noch nicht drin ist. Ist ganz frischer Code.

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

                                @thomas-braun Aber ich habe an dem Astroscript , dass ich seit ewigen Zeiten nicht geändert habe, nichts geändert...
                                Es funktionierte ja vorher mit der anderen Javascript Version auch.

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

                                  @bielefelder81

                                  8.4.2 (2024-05-28)

                                  (klein0r) Fixed createState (removed redundant native attributes)
                                  (winnyschuster) Fixed astro custom component
                                  
                                  B 1 Reply Last reply Reply Quote 0
                                  • B
                                    Bielefelder81 @Thomas Braun last edited by

                                    @thomas-braun Das verstehe ich nicht... Aber ich benutzte bis dato auch nie die Astrofunktion vom Javascript Adapter, soweit ich weiß. Hab damals von jemandem ein Script bekommen und das erstellt unter 0_userdata eigene Datenpunkte für Astro.

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

                                      /* System Tageszeiten
                                      
                                      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();
                                      });
                                      

                                      Jetzt meldet das Script aber plötzlich, dass "new Date" da das Date nicht existiert.
                                      Unten im Script steht auch "setState(idTageszeit, tageszeiten[parseInt(abschnitt, 10)]);" und dort wird jetzt parseInt als Fehler angezeigt.

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

                                        @bielefelder81

                                        Dann muss der Code dort angeschaut werden. Dein Problem dürfte sein, dass es bei dir gerade nicht im astronomischen Sinne Nacht wird.

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

                                          ich könnte wetten, die Meldung kommt gegen 00:01 Uhr.
                                          und sie komnt vom js Adapter

                                          Da berechnet der Adapter seine aktuellen Astrozeiten, ob jemand sie nutzt oder nicht.
                                          Bielefeld liegt im Moment in der nachtlosen Zone, da kann der Adapter keine astronomische Nacht errechnen.

                                          Ab einer der nächsten Versionen wird die Meldung aber unterdrückt werden.

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

                                            @homoran sagte: Da berechnet der Adapter seine aktuellen Astrozeiten, ob jemand sie nutzt oder nicht.

                                            Den Haken kann man in der Konfiguration entfernen.

                                            Im Skript von Pix sehe ich aber die Verwendung von "night" und "nightEnd", die ebenfalls zu einer entsprechenden Warnung führt.

                                            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
                                            1679
                                            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