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.
    • 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.2k
                        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