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. ioBroker Allgemein
  4. [Gelöst] Quelle für Anzahl der Sonnenstunden?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    299

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[Gelöst] Quelle für Anzahl der Sonnenstunden?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
21 Beiträge 8 Kommentatoren 799 Aufrufe 4 Watching
  • Ä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.
  • BananaJoeB BananaJoe

    Lösung: Dieser Adapter hier: https://forum.iobroker.net/topic/81967/betatest-bright-sky-v0-6-x

    Original Post:

    Ich musste am Wochenende meine Integration per daswetter Adapter beenden.
    Ich habe nun auf den OpenWeatherMap-Adapter umgestellt und das klappt sehr gut,
    die Mondphasen haben ich gerade per Skript wieder hinzugefügt ( https://forum.iobroker.net/topic/80342/skript-für-mondphase-mondauf-und-untergang )

    Jetzt würden mir noch 2 1 Werte fehlen die den ich bisher über DasWetter bekommen hatte:

    • Uhrzeit des Sonnenhöchststand
    • Anzahl der Sonnenstunden (die Prognose, nicht einfach errechnet)

    Hätte da jemand eine Idee?

    Den Höchststand habe ich gerade dann doch im FollowTheSun Adapter gefunden:

    followthesun.0.short term.today.solarnoon_time
    
    bahnuhrB Online
    bahnuhrB Online
    bahnuhr
    Forum Testing Most Active
    schrieb am zuletzt editiert von bahnuhr
    #6

    @bananajoe
    Würde dir das Script von hier:
    https://www.kreyenborg.koeln
    helfen?

    Das Script bei mir:

    
    // * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
    // * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
    // * https://www.kreyenborg.koeln
    // * Skript Name:     Astro-Zeiten    |   Skript Version:  1.41   |   Erstell-Datum:   01. April 2021 | Update: 23. Dezember 2022
    
    // Datenpunkte neu erstellen
    var ueberschreiben = false;
    
    // Hauptdatenpunkt unterhalb javascript
    var datenpunkt = "javascript.0.System.Astro.";
    
    // Lesbare Zeiten
    var lesbare_zeiten = ["Früher Morgen", "Frühe Dämmerung", "Morgendämmerung", "Sonnenaufgang", "Vormittag", "später Vormittag", "Mittag",
        "früher Abend", "Abend", "Sonnenuntergang", "Abenddämmerung", "später Abend", "Nacht", "Mitternacht"];
    
    // Objekte der Astro Zeiten
    var objekt = ["nauticalDawn", "nauticalDawn", "dawn", "sunrise", "sunriseEnd", "goldenHourEnd", "solarNoon", "goldenHour",
        "sunsetStart", "sunset", "dusk", "nauticalDusk", "nauticalDusk", "nadir", "tageszeitAstro", "naechsteTageszeitAstro",
        "tageszeitLesbar", "naechsteTageszeitLesbar", "aktuelleAstroZeit", "Tag", "sunriseUnix", "sunsetUnix", "sommerzeit",
        "tageslaenge", "tageslaenge_minuten", "mondphase"];
    
    // Zustände der Astro-Zeiten
    var beschreibung = ["00 - Ende der Nacht", "01 - nautische Morgendämmerung", "02 - Morgendämmerung", "03 - Sonnenaufgang",
        "04 - Ende des Sonnenaufgangs", "05 - Ende der goldenen Stunde VM", "06 - Mittag", "07 - goldene Abendstunde",
        "08 - Start des Sonnenuntergangs", "09 - Sonnenuntergang", "10 - Dämmerung Abends", "11 - nautische Dämmerung abends",
        "12 - Start der Nacht", "13 - Mitternacht", "Aktuelle Tageszeit (Astro)", "Nächste Tageszeit (Astro)",
        "Aktuelle Tageszeit (lesbar)", "Nächste Tageszeit (lesbar)", "aktuelle Astrozeit",
        "Solange die Sonne scheint, ist Tag", "Sunrise Unix Zeitstempel", "Sunset Unix Zeitstempel", "Sommerzeit/Winterzeit",
        "Länge des Tages in HH:MM", "Länge des Tages in Minuten", "Aktuelle Mondphase"];
    
    // Suncalc
    const suncalc = require('suncalc');
    
    // Erstelle die benötigten Datenpunkte
    function datenpunkte_erstellen() {
        var numstatuss = objekt.length;
        let datum = new Date();
        for (var i = 0; i < objekt.length; i++) {
            let initial = "";
            if (i < 14) {
                let astro_zeit = zeit_formatieren(getAstroDate(objekt[i], datum));
                if (astro_zeit == "Invalid Date") {
                    astro_zeit = "00:00";
                }
                initial = astro_zeit
            } else {
                initial = "";
            }
            createState(datenpunkt + objekt[i], initial, ueberschreiben, {
                read: true,
                write: true,
                name: beschreibung[i],
                desc: beschreibung[i],
                type: "string",
                role: "value",
                unit: "",
                def: ""
            });
            numstatuss--;
            if (numstatuss === 0) {
                update_astro_zeiten();
            }
        }
        log("Astro: Datenpunkte erstellt!");
    }
    
    // Haupt-Skript
    function update_astro_zeiten() {
        var datum = new Date(), uhrzeit = zeit_formatieren(datum);
        // Zustand der Daten
            var aktuell = 0, aktualisiert = 0, keine_aktualisierung = 0, astro_index = 0;
        // Aktuellen Tagesabschnitt bestimmen
            var ergebnis = -1, naechste_element = false;
        // Aktuelle & kommende Tageszeit
            var aktuelle_tageszeit = 0, kommende_tageszeit = 0;
        // Tag
            var astroTag = "Nacht";
        for (var i = 0; i < 14; i++) {
            // Temporäre Zahl
                var tmp_ergebnis = 0;
            // Hole Uhrzeit aus aktuellem Datenpunkt
                var dp_zeit = getState(datenpunkt + objekt[i]).val;
            // Hole Index aktuelle Tageszeit
                var tmp_time_uhr = Date.parse('1970-01-01 ' + uhrzeit + ':00');
                var tmp_time_dp = Date.parse('1970-01-01 ' + dp_zeit + ':00');
            // Aktuelle Zeit ist kleiner als DP
                if (tmp_time_uhr < tmp_time_dp) {
                    tmp_ergebnis = tmp_time_dp - tmp_time_uhr;
                    if (tmp_ergebnis <= ergebnis || ergebnis == -1) { ergebnis = tmp_ergebnis; astro_index = i; naechste_element = true; }
                    // Aktuelle Zeit ist größer als DP
                    } else { tmp_ergebnis = tmp_time_uhr - tmp_time_dp;
                    if (tmp_ergebnis <= ergebnis || ergebnis == -1) { ergebnis = tmp_ergebnis; astro_index = i; naechste_element = false; }
                }
            // Datenpunkt ist kleiner als aktuelle Uhrzeit. Update!
            if (dp_zeit < uhrzeit) {
                // Neue Astro-Zeit für den nächsten Tag generieren
                    let morgen = new Date(); morgen.setDate(morgen.getDate() + 1); var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], morgen));
                // Datenpunkt und Astro Zeit sind gleich. Kein Update!
                if (dp_zeit == astro_zeit) { keine_aktualisierung++;
                } else {
                    if (astro_zeit == "Invalid Date") { astro_zeit = "00:00"; }
                    setState(datenpunkt + objekt[i], astro_zeit, true); aktualisiert++;
                }
            } else {
                // Zeit kommt noch! Kein Update!
                aktuell++;
            }
        }
        // Wenn wahr, ist der Abstand zum nächsten Zeitpunkt kleiner. Also -1 um aktuellen Index zu erhalten.
            if (naechste_element) { astro_index--; }
        // Navigiere zum richtigen Index
            if (astro_index > 12) { aktuelle_tageszeit = 13; kommende_tageszeit = 0;
            } else if (astro_index < 0) { aktuelle_tageszeit = 0; kommende_tageszeit = 1;
            } else { aktuelle_tageszeit = astro_index; kommende_tageszeit = astro_index + 1; }
        // Prüfe, ob aktuelle Uhrzeit zwischen Sonnenauf- und untergang liegt
            if (astro_index > 2 && astro_index < 10) { astroTag = "Tag"; }
        // Update aktuelle Tageszeit Astro (Text)
            setState(datenpunkt + objekt[14], text_formatieren(beschreibung[aktuelle_tageszeit]), true);
        // Update kommende Tageszeit Astro (Text)
            setState(datenpunkt + objekt[15], text_formatieren(beschreibung[kommende_tageszeit]), true);
        // Update aktuelle Tageszeit lesbar (Text)
            setState(datenpunkt + objekt[16], lesbare_zeiten[aktuelle_tageszeit], true);
        // Update kommende Tageszeit lesbar (Text)
            setState(datenpunkt + objekt[17], lesbare_zeiten[kommende_tageszeit], true);
        // Update aktuelle AstroZeit
            setState(datenpunkt + objekt[18], objekt[aktuelle_tageszeit], true);
        // Setze die Variable "Tag" auf "Tag", wenn Uhrzeit zwischen Sonnenauf- und untergang
            setState(datenpunkt + objekt[19], astroTag, true);
        // Setze Sommerzeit auf Sommerzeit, wenn in Sommerzeit
            setState(datenpunkt + objekt[22], pruefe_sommerzeit(datum), true);
        // Tageslänge berechnen - in Stunden und Minuten
            let laenge = tageslaenge(getAstroDate(objekt[9]), getAstroDate(objekt[3]));
            setState(datenpunkt + objekt[23], laenge.hh_mm, true);
            setState(datenpunkt + objekt[24], laenge.minuten.toString(), true);
        // Mondphase
            let phase = mondphase(datum); setState(datenpunkt + objekt[25], phase, true);
        // Setze die Variable Sunrise Unix
            let tmp_morgen = new Date();
            tmp_morgen.setDate(tmp_morgen.getDate() + 1);
            let unix_sunrise = getAstroDate("sunrise", tmp_morgen).getTime() * 1000;
            setState(datenpunkt + objekt[20], unix_sunrise.toString(), true);
        // Setze die Variable Sunset Unix
            let unix_sunset = getAstroDate("sunset", tmp_morgen).getTime() * 1000;
            setState(datenpunkt + objekt[21], unix_sunset.toString(), true);
        var ausgabe = "Astro: Gültige Zeiten: [aktueller Tag: " + aktuell + "] | [nächster Tag: " + keine_aktualisierung + "] | [Aktualisiert: " + aktualisiert +
            "] | Aktuelle Tageszeit: " + lesbare_zeiten[aktuelle_tageszeit] + " | Kommende Tageszeit: " + lesbare_zeiten[kommende_tageszeit];
        log(ausgabe);
    }
    
    // Funktion, um die Zeit in HH:MM zu formatieren
        function zeit_formatieren(zeit) {
            return zeit.toLocaleTimeString('de-DE', { hour12: false, hour: '2-digit', minute: '2-digit' });
        }
    
    // Funktion, um den Text zu formatieren. "Mittag" statt "6 - Mittag"
        function text_formatieren(text) {
            text = text.split("-")[1]; text = text.substr(1, text.length); return text;
        }
    
    function pruefe_sommerzeit(date = new Date()) {
        const januar = new Date(date.getFullYear(), 0, 1).getTimezoneOffset(); const juli = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); let sommerzeit = "";
        if (Math.max(januar, juli) !== date.getTimezoneOffset()) { sommerzeit = "Sommerzeit";
        } else { sommerzeit = "Winterzeit"; }
        return sommerzeit;
    }
    
    function tageslaenge(endzeit, startzeit) {
        // Basis - Sonnenauf- und Untergang
        var stundeDiff = Math.abs(endzeit.getTime() - startzeit.getTime()) / 1000; //in s
        var hDiff = Math.floor(stundeDiff / 3600) % 24; //in Stunden
        var minDiff = Math.floor(stundeDiff / 60) % 60; //in Minuten
        var lesbar = {};
        lesbar.hh_mm = hDiff + ":" + minDiff;
        lesbar.minuten = (hDiff * 60) + minDiff;
        return lesbar;
    }
    
    function mondphase(datum) {
        var mondphase = suncalc.getMoonIllumination(datum); var mond_beleuch = mondphase.fraction; var mond = mondphase.phase; var status = 'Neumond'; 
        if (mond > 0.05) status = parseInt(mond_beleuch*100) + '% 1/4 Mond zunehmend';
        if (mond > 0.2) status = parseInt(mond_beleuch*100) + '% 1/2 Mond zunehmend';
        if (mond > 0.3) status = parseInt(mond_beleuch*100) + '% 3/4 Mond zunehmend';
        if (mond > 0.45) status = parseInt(mond_beleuch*100) + '% Vollmond';
        if (mond > 0.55) status = parseInt(mond_beleuch*100) + '% 3/4 Mond abnehmend';
        if (mond > 0.7) status = parseInt(mond_beleuch*100) + '% 1/2 Mond abnehmend';
        if (mond > 0.8) status = parseInt(mond_beleuch*100) + '% 1/4 Mond abnehmend';
        if (mond > 0.95) status = parseInt(mond_beleuch*100) + '% Neumond';
        return status;
    }
    
    // Erster Start des Skripts und anlegen der Datenpunkte
    function update_astro_zeiten_erster_start() {
        log("Astro: Erster Start des Skriptes!")
        // Datenpunkte werden erstellt
            datenpunkte_erstellen();
    }
    
    // Erster Start und Initialisierung
        update_astro_zeiten_erster_start();
    
    // Alle 60 Minunten das Hauptskript ausführen
        schedule('*/30 * * * *', update_astro_zeiten);
    
    
    

    Sieht in Vis dann so aus:
    ed1dab1b-a795-4226-8d22-3e89cc279e2a-image.png

    Und die Zeiten dann halt ausrechnen.


    Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
    Danke.
    gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
    ScreenToGif :https://www.screentogif.com/downloads.html

    Ro75R 1 Antwort Letzte Antwort
    0
    • bahnuhrB bahnuhr

      @bananajoe
      Würde dir das Script von hier:
      https://www.kreyenborg.koeln
      helfen?

      Das Script bei mir:

      
      // * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
      // * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
      // * https://www.kreyenborg.koeln
      // * Skript Name:     Astro-Zeiten    |   Skript Version:  1.41   |   Erstell-Datum:   01. April 2021 | Update: 23. Dezember 2022
      
      // Datenpunkte neu erstellen
      var ueberschreiben = false;
      
      // Hauptdatenpunkt unterhalb javascript
      var datenpunkt = "javascript.0.System.Astro.";
      
      // Lesbare Zeiten
      var lesbare_zeiten = ["Früher Morgen", "Frühe Dämmerung", "Morgendämmerung", "Sonnenaufgang", "Vormittag", "später Vormittag", "Mittag",
          "früher Abend", "Abend", "Sonnenuntergang", "Abenddämmerung", "später Abend", "Nacht", "Mitternacht"];
      
      // Objekte der Astro Zeiten
      var objekt = ["nauticalDawn", "nauticalDawn", "dawn", "sunrise", "sunriseEnd", "goldenHourEnd", "solarNoon", "goldenHour",
          "sunsetStart", "sunset", "dusk", "nauticalDusk", "nauticalDusk", "nadir", "tageszeitAstro", "naechsteTageszeitAstro",
          "tageszeitLesbar", "naechsteTageszeitLesbar", "aktuelleAstroZeit", "Tag", "sunriseUnix", "sunsetUnix", "sommerzeit",
          "tageslaenge", "tageslaenge_minuten", "mondphase"];
      
      // Zustände der Astro-Zeiten
      var beschreibung = ["00 - Ende der Nacht", "01 - nautische Morgendämmerung", "02 - Morgendämmerung", "03 - Sonnenaufgang",
          "04 - Ende des Sonnenaufgangs", "05 - Ende der goldenen Stunde VM", "06 - Mittag", "07 - goldene Abendstunde",
          "08 - Start des Sonnenuntergangs", "09 - Sonnenuntergang", "10 - Dämmerung Abends", "11 - nautische Dämmerung abends",
          "12 - Start der Nacht", "13 - Mitternacht", "Aktuelle Tageszeit (Astro)", "Nächste Tageszeit (Astro)",
          "Aktuelle Tageszeit (lesbar)", "Nächste Tageszeit (lesbar)", "aktuelle Astrozeit",
          "Solange die Sonne scheint, ist Tag", "Sunrise Unix Zeitstempel", "Sunset Unix Zeitstempel", "Sommerzeit/Winterzeit",
          "Länge des Tages in HH:MM", "Länge des Tages in Minuten", "Aktuelle Mondphase"];
      
      // Suncalc
      const suncalc = require('suncalc');
      
      // Erstelle die benötigten Datenpunkte
      function datenpunkte_erstellen() {
          var numstatuss = objekt.length;
          let datum = new Date();
          for (var i = 0; i < objekt.length; i++) {
              let initial = "";
              if (i < 14) {
                  let astro_zeit = zeit_formatieren(getAstroDate(objekt[i], datum));
                  if (astro_zeit == "Invalid Date") {
                      astro_zeit = "00:00";
                  }
                  initial = astro_zeit
              } else {
                  initial = "";
              }
              createState(datenpunkt + objekt[i], initial, ueberschreiben, {
                  read: true,
                  write: true,
                  name: beschreibung[i],
                  desc: beschreibung[i],
                  type: "string",
                  role: "value",
                  unit: "",
                  def: ""
              });
              numstatuss--;
              if (numstatuss === 0) {
                  update_astro_zeiten();
              }
          }
          log("Astro: Datenpunkte erstellt!");
      }
      
      // Haupt-Skript
      function update_astro_zeiten() {
          var datum = new Date(), uhrzeit = zeit_formatieren(datum);
          // Zustand der Daten
              var aktuell = 0, aktualisiert = 0, keine_aktualisierung = 0, astro_index = 0;
          // Aktuellen Tagesabschnitt bestimmen
              var ergebnis = -1, naechste_element = false;
          // Aktuelle & kommende Tageszeit
              var aktuelle_tageszeit = 0, kommende_tageszeit = 0;
          // Tag
              var astroTag = "Nacht";
          for (var i = 0; i < 14; i++) {
              // Temporäre Zahl
                  var tmp_ergebnis = 0;
              // Hole Uhrzeit aus aktuellem Datenpunkt
                  var dp_zeit = getState(datenpunkt + objekt[i]).val;
              // Hole Index aktuelle Tageszeit
                  var tmp_time_uhr = Date.parse('1970-01-01 ' + uhrzeit + ':00');
                  var tmp_time_dp = Date.parse('1970-01-01 ' + dp_zeit + ':00');
              // Aktuelle Zeit ist kleiner als DP
                  if (tmp_time_uhr < tmp_time_dp) {
                      tmp_ergebnis = tmp_time_dp - tmp_time_uhr;
                      if (tmp_ergebnis <= ergebnis || ergebnis == -1) { ergebnis = tmp_ergebnis; astro_index = i; naechste_element = true; }
                      // Aktuelle Zeit ist größer als DP
                      } else { tmp_ergebnis = tmp_time_uhr - tmp_time_dp;
                      if (tmp_ergebnis <= ergebnis || ergebnis == -1) { ergebnis = tmp_ergebnis; astro_index = i; naechste_element = false; }
                  }
              // Datenpunkt ist kleiner als aktuelle Uhrzeit. Update!
              if (dp_zeit < uhrzeit) {
                  // Neue Astro-Zeit für den nächsten Tag generieren
                      let morgen = new Date(); morgen.setDate(morgen.getDate() + 1); var astro_zeit = zeit_formatieren(getAstroDate(objekt[i], morgen));
                  // Datenpunkt und Astro Zeit sind gleich. Kein Update!
                  if (dp_zeit == astro_zeit) { keine_aktualisierung++;
                  } else {
                      if (astro_zeit == "Invalid Date") { astro_zeit = "00:00"; }
                      setState(datenpunkt + objekt[i], astro_zeit, true); aktualisiert++;
                  }
              } else {
                  // Zeit kommt noch! Kein Update!
                  aktuell++;
              }
          }
          // Wenn wahr, ist der Abstand zum nächsten Zeitpunkt kleiner. Also -1 um aktuellen Index zu erhalten.
              if (naechste_element) { astro_index--; }
          // Navigiere zum richtigen Index
              if (astro_index > 12) { aktuelle_tageszeit = 13; kommende_tageszeit = 0;
              } else if (astro_index < 0) { aktuelle_tageszeit = 0; kommende_tageszeit = 1;
              } else { aktuelle_tageszeit = astro_index; kommende_tageszeit = astro_index + 1; }
          // Prüfe, ob aktuelle Uhrzeit zwischen Sonnenauf- und untergang liegt
              if (astro_index > 2 && astro_index < 10) { astroTag = "Tag"; }
          // Update aktuelle Tageszeit Astro (Text)
              setState(datenpunkt + objekt[14], text_formatieren(beschreibung[aktuelle_tageszeit]), true);
          // Update kommende Tageszeit Astro (Text)
              setState(datenpunkt + objekt[15], text_formatieren(beschreibung[kommende_tageszeit]), true);
          // Update aktuelle Tageszeit lesbar (Text)
              setState(datenpunkt + objekt[16], lesbare_zeiten[aktuelle_tageszeit], true);
          // Update kommende Tageszeit lesbar (Text)
              setState(datenpunkt + objekt[17], lesbare_zeiten[kommende_tageszeit], true);
          // Update aktuelle AstroZeit
              setState(datenpunkt + objekt[18], objekt[aktuelle_tageszeit], true);
          // Setze die Variable "Tag" auf "Tag", wenn Uhrzeit zwischen Sonnenauf- und untergang
              setState(datenpunkt + objekt[19], astroTag, true);
          // Setze Sommerzeit auf Sommerzeit, wenn in Sommerzeit
              setState(datenpunkt + objekt[22], pruefe_sommerzeit(datum), true);
          // Tageslänge berechnen - in Stunden und Minuten
              let laenge = tageslaenge(getAstroDate(objekt[9]), getAstroDate(objekt[3]));
              setState(datenpunkt + objekt[23], laenge.hh_mm, true);
              setState(datenpunkt + objekt[24], laenge.minuten.toString(), true);
          // Mondphase
              let phase = mondphase(datum); setState(datenpunkt + objekt[25], phase, true);
          // Setze die Variable Sunrise Unix
              let tmp_morgen = new Date();
              tmp_morgen.setDate(tmp_morgen.getDate() + 1);
              let unix_sunrise = getAstroDate("sunrise", tmp_morgen).getTime() * 1000;
              setState(datenpunkt + objekt[20], unix_sunrise.toString(), true);
          // Setze die Variable Sunset Unix
              let unix_sunset = getAstroDate("sunset", tmp_morgen).getTime() * 1000;
              setState(datenpunkt + objekt[21], unix_sunset.toString(), true);
          var ausgabe = "Astro: Gültige Zeiten: [aktueller Tag: " + aktuell + "] | [nächster Tag: " + keine_aktualisierung + "] | [Aktualisiert: " + aktualisiert +
              "] | Aktuelle Tageszeit: " + lesbare_zeiten[aktuelle_tageszeit] + " | Kommende Tageszeit: " + lesbare_zeiten[kommende_tageszeit];
          log(ausgabe);
      }
      
      // Funktion, um die Zeit in HH:MM zu formatieren
          function zeit_formatieren(zeit) {
              return zeit.toLocaleTimeString('de-DE', { hour12: false, hour: '2-digit', minute: '2-digit' });
          }
      
      // Funktion, um den Text zu formatieren. "Mittag" statt "6 - Mittag"
          function text_formatieren(text) {
              text = text.split("-")[1]; text = text.substr(1, text.length); return text;
          }
      
      function pruefe_sommerzeit(date = new Date()) {
          const januar = new Date(date.getFullYear(), 0, 1).getTimezoneOffset(); const juli = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); let sommerzeit = "";
          if (Math.max(januar, juli) !== date.getTimezoneOffset()) { sommerzeit = "Sommerzeit";
          } else { sommerzeit = "Winterzeit"; }
          return sommerzeit;
      }
      
      function tageslaenge(endzeit, startzeit) {
          // Basis - Sonnenauf- und Untergang
          var stundeDiff = Math.abs(endzeit.getTime() - startzeit.getTime()) / 1000; //in s
          var hDiff = Math.floor(stundeDiff / 3600) % 24; //in Stunden
          var minDiff = Math.floor(stundeDiff / 60) % 60; //in Minuten
          var lesbar = {};
          lesbar.hh_mm = hDiff + ":" + minDiff;
          lesbar.minuten = (hDiff * 60) + minDiff;
          return lesbar;
      }
      
      function mondphase(datum) {
          var mondphase = suncalc.getMoonIllumination(datum); var mond_beleuch = mondphase.fraction; var mond = mondphase.phase; var status = 'Neumond'; 
          if (mond > 0.05) status = parseInt(mond_beleuch*100) + '% 1/4 Mond zunehmend';
          if (mond > 0.2) status = parseInt(mond_beleuch*100) + '% 1/2 Mond zunehmend';
          if (mond > 0.3) status = parseInt(mond_beleuch*100) + '% 3/4 Mond zunehmend';
          if (mond > 0.45) status = parseInt(mond_beleuch*100) + '% Vollmond';
          if (mond > 0.55) status = parseInt(mond_beleuch*100) + '% 3/4 Mond abnehmend';
          if (mond > 0.7) status = parseInt(mond_beleuch*100) + '% 1/2 Mond abnehmend';
          if (mond > 0.8) status = parseInt(mond_beleuch*100) + '% 1/4 Mond abnehmend';
          if (mond > 0.95) status = parseInt(mond_beleuch*100) + '% Neumond';
          return status;
      }
      
      // Erster Start des Skripts und anlegen der Datenpunkte
      function update_astro_zeiten_erster_start() {
          log("Astro: Erster Start des Skriptes!")
          // Datenpunkte werden erstellt
              datenpunkte_erstellen();
      }
      
      // Erster Start und Initialisierung
          update_astro_zeiten_erster_start();
      
      // Alle 60 Minunten das Hauptskript ausführen
          schedule('*/30 * * * *', update_astro_zeiten);
      
      
      

      Sieht in Vis dann so aus:
      ed1dab1b-a795-4226-8d22-3e89cc279e2a-image.png

      Und die Zeiten dann halt ausrechnen.

      Ro75R Offline
      Ro75R Offline
      Ro75
      schrieb am zuletzt editiert von
      #7

      @bahnuhr es geht zumindest für mich darum, wie lange heute die Sonne insgesamt zu sehen ist und nicht von Wolken verdeckt. Für mich ist die Differenz zwischen Sonnenauf- und Untergang uninteressant.

      Ro75.

      SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

      bahnuhrB 1 Antwort Letzte Antwort
      0
      • Ro75R Ro75

        @bahnuhr es geht zumindest für mich darum, wie lange heute die Sonne insgesamt zu sehen ist und nicht von Wolken verdeckt. Für mich ist die Differenz zwischen Sonnenauf- und Untergang uninteressant.

        Ro75.

        bahnuhrB Online
        bahnuhrB Online
        bahnuhr
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #8

        @ro75

        Alles klar.
        Dann kauf dir einen HM Sonnensensor und loggen die Zeiten die über x sind.
        Das von heute:
        4533d5c6-7867-4428-acf5-d5274bac119a-image.png


        Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
        Danke.
        gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
        ScreenToGif :https://www.screentogif.com/downloads.html

        Ro75R HomoranH 2 Antworten Letzte Antwort
        0
        • bahnuhrB bahnuhr

          @ro75

          Alles klar.
          Dann kauf dir einen HM Sonnensensor und loggen die Zeiten die über x sind.
          Das von heute:
          4533d5c6-7867-4428-acf5-d5274bac119a-image.png

          Ro75R Offline
          Ro75R Offline
          Ro75
          schrieb am zuletzt editiert von
          #9

          @bahnuhr naja, ich möchte früh wissen, was ich erwarten kann und nicht erst abends sehen was war. Bei daswetter.com lief das sehr sehr gut - nur eben Geschichte.

          Ro75.

          SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

          bahnuhrB 1 Antwort Letzte Antwort
          0
          • bahnuhrB bahnuhr

            @ro75

            Alles klar.
            Dann kauf dir einen HM Sonnensensor und loggen die Zeiten die über x sind.
            Das von heute:
            4533d5c6-7867-4428-acf5-d5274bac119a-image.png

            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von
            #10

            @bahnuhr sagte in Quelle für Anzahl der Sonnenstunden?:

            loggen die Zeiten die über x sind.

            daa kann man in der Wetterstation sogar konfigurieren und wird dann in eine SysVar geschrieben.

            Nachteil ist aber dass das nicht als Prognose geht ;-) .

            kein Support per PN! - Fragen im Forum stellen -
            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            1 Antwort Letzte Antwort
            0
            • Ro75R Ro75

              @bahnuhr naja, ich möchte früh wissen, was ich erwarten kann und nicht erst abends sehen was war. Bei daswetter.com lief das sehr sehr gut - nur eben Geschichte.

              Ro75.

              bahnuhrB Online
              bahnuhrB Online
              bahnuhr
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #11

              @ro75
              Naja, das war der 2. Versuch.
              Jetzt fällt mir nix mehr ein.

              Prognose mag ich nicht.
              Stimmt sowieso nicht.


              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
              Danke.
              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
              ScreenToGif :https://www.screentogif.com/downloads.html

              Ro75R 1 Antwort Letzte Antwort
              0
              • bahnuhrB bahnuhr

                @ro75
                Naja, das war der 2. Versuch.
                Jetzt fällt mir nix mehr ein.

                Prognose mag ich nicht.
                Stimmt sowieso nicht.

                Ro75R Offline
                Ro75R Offline
                Ro75
                schrieb am zuletzt editiert von
                #12

                @bahnuhr Danke für die Ideen, definitiv. Aber das ist eben nicht was wir da suchen.

                Ro75.

                SERVER = Beelink U59 16GB DDR4 RAM 512GB SSD, FB 7490, FritzDect 200+301+440, ConBee II, Zigbee Aqara Sensoren + NOUS A1Z, NOUS A1T, Philips Hue ** ioBroker, REDIS, influxdb2, Grafana, PiHole, Plex-Mediaserver, paperless-ngx (Docker), MariaDB + phpmyadmin *** VIS-Runtime = Intel NUC 8GB RAM 128GB SSD + 24" Touchscreen

                T 1 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  die dwd api scheint diese informationen enthalten

                  6afc0bda-e881-49a7-b3e5-4bff00b0bd14-image.png

                  https://dwd.api.bund.dev/
                  https://dwd.api.proxy.bund.dev/v30/stationOverviewExtended?stationIds=10865,G005

                  dieeinzelwerte sind nicht so gut dokumentiert.
                  hier steht ein wenig dazu
                  https://github.com/bundesAPI/dwd-api

                  BananaJoeB Online
                  BananaJoeB Online
                  BananaJoe
                  Most Active
                  schrieb am zuletzt editiert von BananaJoe
                  #13

                  @oliverio sagte in Quelle für Anzahl der Sonnenstunden?:

                  die dwd api scheint diese informationen enthalten

                  6afc0bda-e881-49a7-b3e5-4bff00b0bd14-image.png

                  https://dwd.api.bund.dev/
                  https://dwd.api.proxy.bund.dev/v30/stationOverviewExtended?stationIds=10865,G005

                  dieeinzelwerte sind nicht so gut dokumentiert.
                  hier steht ein wenig dazu
                  https://github.com/bundesAPI/dwd-api

                  Könnte klappen:
                  3841aa3f-9dec-4732-ad44-4466f655f635-image.png

                  Das weist du woher das G005 kommt bzw. wofür das steht?
                  Für eine Station ID, Berlin-Marzahn ..

                  Laut dieser Seite wäre Achim bei Bremen 8373:
                  https://www.dwd.de/DE/leistungen/klimadatendeutschland/statliste/statlex_html.html?view=nasPublication&nn=16102

                  Ich hadere gerade wie denn die URL aussehen muss

                  ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                  1 Antwort Letzte Antwort
                  0
                  • BananaJoeB Online
                    BananaJoeB Online
                    BananaJoe
                    Most Active
                    schrieb am zuletzt editiert von
                    #14

                    Ok, Berlin-Marzan, vermutlich: Da kommt nur eine Zahl an die URL, man kann mehrere angeben.

                    https://dwd.api.proxy.bund.dev/v30/stationOverviewExtended?stationIds=G005

                    Jetzt muss ich nur eine in der Nähe finden

                    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                    1 Antwort Letzte Antwort
                    0
                    • BananaJoeB Online
                      BananaJoeB Online
                      BananaJoe
                      Most Active
                      schrieb am zuletzt editiert von BananaJoe
                      #15

                      Ok, viele Station sind wohl nicht abrufbar wegen nicht mehr da etc., in der letzten Spalte steht ein Datum, alles was länger her ist funktioniert nicht. Alles mit einem aktuellen Datum auch nicht immer.
                      Ich habe jetzt eine in Bremen gefunden:
                      52555305-0191-4d17-85f7-3cf0a2a2737c-image.png
                      https://dwd.api.proxy.bund.dev/v30/stationOverviewExtended?stationIds=10224

                      Demnach hatten wir heute 1590 * 0,1 min = 159 Minuten Sonnenschein? 2,5h
                      Meine Solaranlage brummte so richtig von 11:30 bis ca. 15:00, also 3,5h,
                      Naja, kommt in etwa hin und es sind ja 20km weiter

                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                      1 Antwort Letzte Antwort
                      0
                      • BananaJoeB BananaJoe

                        Lösung: Dieser Adapter hier: https://forum.iobroker.net/topic/81967/betatest-bright-sky-v0-6-x

                        Original Post:

                        Ich musste am Wochenende meine Integration per daswetter Adapter beenden.
                        Ich habe nun auf den OpenWeatherMap-Adapter umgestellt und das klappt sehr gut,
                        die Mondphasen haben ich gerade per Skript wieder hinzugefügt ( https://forum.iobroker.net/topic/80342/skript-für-mondphase-mondauf-und-untergang )

                        Jetzt würden mir noch 2 1 Werte fehlen die den ich bisher über DasWetter bekommen hatte:

                        • Uhrzeit des Sonnenhöchststand
                        • Anzahl der Sonnenstunden (die Prognose, nicht einfach errechnet)

                        Hätte da jemand eine Idee?

                        Den Höchststand habe ich gerade dann doch im FollowTheSun Adapter gefunden:

                        followthesun.0.short term.today.solarnoon_time
                        
                        H Offline
                        H Offline
                        hans_999
                        Gesperrt
                        schrieb am zuletzt editiert von
                        #16

                        @bananajoe said in Quelle für Anzahl der Sonnenstunden?:

                        Anzahl der Sonnenstunden (die Prognose, nicht einfach errechnet)

                        Wie wäre es mit den Daten von https://forecast.solar/
                        Liefert die Daten als JSON

                        {
                            "result": {
                                "watts": {
                                    "2019-06-22 05:15:00": 17,
                                    "2019-06-22 05:30:00": 22,
                                    "2019-06-22 05:45:00": 27,
                                    ...
                                    "2019-06-29 20:15:00": 14,
                                    "2019-06-29 20:30:00": 11,
                                    "2019-06-29 20:45:00": 7
                                },
                                "watt_hours": {
                                    "2019-06-22 05:15:00": 0,
                                    "2019-06-22 05:30:00": 6,
                                    "2019-06-22 05:45:00": 12,
                                    ...
                                    "2019-06-29 20:15:00": 2545,
                                    "2019-06-29 20:30:00": 2548,
                                    "2019-06-29 20:45:00": 2550
                                },
                                "watt_hours_day": {
                                    "2019-06-22": 2626,
                                    "2019-06-23": 2918,
                                    "2019-06-24": 2526,
                                    "2019-06-25": 2866,
                                    "2019-06-26": 2892,
                                    "2019-06-27": 1900,
                                    "2019-06-28": 2199,
                                    "2019-06-29": 2550
                                }
                            },
                            "message": {
                                "type": "success",
                                "code": 0,
                                "text": ""
                            }
                        }
                        

                        Erhältlich in verschiedenen Zugangsmodellen, darunter "Free for Life"

                        
                        
                        This works without API key for free, no subscription needed.
                        (You will not receive an API key for a donation.)
                        
                            Solar production forecast data
                            Forecast horizon: This and the next day
                            Data resolution: 1 hour
                        
                        Best for users without loggers to get a quick idea about coming solar production.
                        
                        1 Antwort Letzte Antwort
                        0
                        • Ro75R Ro75

                          @bahnuhr Danke für die Ideen, definitiv. Aber das ist eben nicht was wir da suchen.

                          Ro75.

                          T Nicht stören
                          T Nicht stören
                          ticaki
                          schrieb am zuletzt editiert von
                          #17

                          @ro75
                          Ich weiß ja nicht ob du es überlesen hast oder das falsch ist - im brightsky gibts das hier:
                          Bildschirmfoto 2025-11-12 um 22.51.51.png

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          BananaJoeB 1 Antwort Letzte Antwort
                          1
                          • T ticaki

                            @ro75
                            Ich weiß ja nicht ob du es überlesen hast oder das falsch ist - im brightsky gibts das hier:
                            Bildschirmfoto 2025-11-12 um 22.51.51.png

                            BananaJoeB Online
                            BananaJoeB Online
                            BananaJoe
                            Most Active
                            schrieb am zuletzt editiert von
                            #18

                            @ticaki sagte in Quelle für Anzahl der Sonnenstunden?:

                            brightsky

                            Der Adapter ist ja cool, kann ja sogar auch noch Solarprognose.
                            Er hat auch tatsächlich die Station in Bremen mit ausgewählt die ich auch schon gefunden hatte.

                            Dickes Danke!

                            ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                            T HomoranH 2 Antworten Letzte Antwort
                            0
                            • BananaJoeB BananaJoe

                              @ticaki sagte in Quelle für Anzahl der Sonnenstunden?:

                              brightsky

                              Der Adapter ist ja cool, kann ja sogar auch noch Solarprognose.
                              Er hat auch tatsächlich die Station in Bremen mit ausgewählt die ich auch schon gefunden hatte.

                              Dickes Danke!

                              T Nicht stören
                              T Nicht stören
                              ticaki
                              schrieb am zuletzt editiert von
                              #19

                              @bananajoe

                              Für das solar kannste dich bei @Homoran und @klassisch bedanken, die haben da soviel analysiert ,das ich sie mit den Adapterfunktionen unterstützen wollte :)

                              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                              Spenden

                              BananaJoeB 1 Antwort Letzte Antwort
                              0
                              • BananaJoeB BananaJoe

                                @ticaki sagte in Quelle für Anzahl der Sonnenstunden?:

                                brightsky

                                Der Adapter ist ja cool, kann ja sogar auch noch Solarprognose.
                                Er hat auch tatsächlich die Station in Bremen mit ausgewählt die ich auch schon gefunden hatte.

                                Dickes Danke!

                                HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von Homoran
                                #20

                                @bananajoe sagte in Quelle für Anzahl der Sonnenstunden?:

                                kann ja sogar auch noch Solarprognose.

                                leider ist die Treffequote nicht sooo toll.
                                Zumindest jetzt in der ttüben Zeit nicht.
                                Achtung Wimmelbild ;-) :

                                Screenshot_20251113-085217_Firefox.jpg

                                Die stündliche Vorhersage (estimate real, grau) ist im Prinzip gar nicht für ein entsprechendes Nutzungsprofil zu gebrauchen
                                Screenshot_20251113-090656_Firefox.jpg

                                Da scheint der DWD die zu erwartende Sonnenscheindauer einfach auf den Tag gemäß des Sonnenverlaufs zu verteilen.

                                Screenshot_20251113-085518_Firefox.jpg

                                Für beides kann der arme @ticaki nichts!
                                Die Rohdaten geben es leider nicht her

                                kein Support per PN! - Fragen im Forum stellen -
                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                1 Antwort Letzte Antwort
                                0
                                • T ticaki

                                  @bananajoe

                                  Für das solar kannste dich bei @Homoran und @klassisch bedanken, die haben da soviel analysiert ,das ich sie mit den Adapterfunktionen unterstützen wollte :)

                                  BananaJoeB Online
                                  BananaJoeB Online
                                  BananaJoe
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #21

                                  @ticaki hab jetzt erst realisiert das der Adapter von dir ist - Klasse Arbeit, Danke dafür!

                                  ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 10 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV APC 750W kaskadiert || Creality CR-10 SE 3D-Drucker

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


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate
                                  FAQ Cloud / IOT
                                  HowTo: Node.js-Update
                                  HowTo: Backup/Restore
                                  Downloads
                                  BLOG

                                  610

                                  Online

                                  32.7k

                                  Benutzer

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