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. Error/Bug
  4. Astrofunktion sehr unzuverlässig??

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Astrofunktion sehr unzuverlässig??

Geplant Angeheftet Gesperrt Verschoben Error/Bug
3 Beiträge 2 Kommentatoren 1.2k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    AndyUM61
    schrieb am zuletzt editiert von
    #1

    Hallo,

    kann es sein, dass die Astrofunktion für die einzelnen Tagesabschnitte absolut unzuverlässig ist?

    Ich versuche einige Funktionen in meinen Scripts über Astro zu triggern, aber mal funktioniert es, und mal eben nicht.

    Hat dieses Problem auch jemand?

    Das Script ist eine Zusammenstellung einiger hier bereits vorgestellter Scripts.

    Ein Dankeschön an die, die ihre Code-Schnipsel wiederfinden!

    Es berechnet Sonnen-Auf und -Untergang, Elevation und Azimut der Sonne, und soll den aktuellen Astro-Tagesabschnitt setzen.

    Ich nutze das Script global.

    /* Informationen zu Sonne und Tag
    
    !! In Gruppe global !!
    
    Objekte die erstellt werden:
    javascript.0.Sonne.SonneElevation -> Elevation der Sonne
    javascript.0.Sonne.SonneAzimut -> Azimut der Sonne
    javascript.0.Sonne.Sonnenaufgang -> nächster Sonnenaufgang
    javascript.0.Sonne.Sonnenuntergang -> nächster Sonnenuntergang
    javascript.0.Sonne.Tageszeit -> Astrologische Tagesabschnitte
    javascript.0.Sonne.Astrotag -> Astrologischer Tag, Zeit zwischen Sonnenauf- und untergang
    
    */
    var suncalc = require('suncalc'),
        result = getObject("system.adapter.javascript.0"),
        lat = result.native.latitude,
        long = result.native.longitude;
    
    var TopicName = "javascript.0.Sonne"; // HauptObjekt
    createState(TopicName+'.SonneElevation', 0, {unit: '°', name:'ElevationSonne'});
    createState(TopicName+'.SonneAzimut', 0, {unit: '°', name:'AzimutSonne'});
    createState(TopicName+'.Sonnenaufgang', {name: 'nächster Sonnenaufgang', desc: 'sunrise (top edge of the sun appears on the horizon)'});
    createState(TopicName+'.Sonnenuntergang', {name: 'nächster Sonnenuntergang', desc: 'sunset (sun disappears below the horizon, evening civil twilight starts)'});
    createState(TopicName+'.Tageszeit', {name: 'Tageszeit', dest:'Astrologische Tagesabschnitte'});
    createState(TopicName+'.AstroTag', false, {read: true, write: true, type: 'boolean', name: 'Astologischer Tag', desc: 'Zeit zwischen Sonnenauf- und untergang'});
    
    var idSonnenaufgang = TopicName+'.Sonnenaufgang';
    var idSonnenuntergang = TopicName+'.Sonnenuntergang';
    var idTageszeit = TopicName+'.Tageszeit';
    var idAstrotag = TopicName+'.AstroTag';
    var idSonnenElevation = TopicName+'.SonneElevation';
    var idSonnenAzimut = TopicName+'.SonneAzimut';
    
    function Sonnenstand_berechnen () {
        var now = new Date();
    
        // log("-----------------------------------------------");
        // log("latitude : " + result.native.latitude,'info');
        // log("longitude: " + result.native.longitude,'info');
    
        var sunpos = suncalc.getPosition(now, lat, long);
        // log("sunpos: " + JSON.stringify(sunpos),'info');
    
        var h = sunpos.altitude * 180 / Math.PI,
            a = sunpos.azimuth * 180 / Math.PI + 180;
    
        setState(idSonnenElevation,h.toFixed(1));
        setState(idSonnenAzimut,a.toFixed());
    }
    
    var tageszeiten = ['Nacht',
                       'Morgendämmerung',
                       'Morgen',
                       'Vormittag',
                       'Mittag',
                       'Nachmittag',
                       'Abenddämmerung',
                       'Abend'];
    
    function zeiten_speichern () {
        var astrotag = getState(idAstrotag).val,
            sonnenaufgang,
            sonnenuntergang;
        var today = new Date();
        var 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
        }
        setState(idSonnenaufgang, sonnenaufgang.toLocaleTimeString());
        setState(idSonnenuntergang, sonnenuntergang.toLocaleTimeString());
    }
    
    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, Sonnenstand berechnen
    schedule("*/1 * * * *", function () {
       if (isAstroDay()) setState(idAstrotag, true);
       if (!isAstroDay()) setState(idAstrotag, false);
       zeiten_speichern();
       Sonnenstand_berechnen();
    });
    
    /* Weitere Astrozeiten:
        sunrise: sunrise (top edge of the sun appears on the horizon)
        sunriseEnd: sunrise ends (bottom edge of the sun touches the horizon)
        goldenHourEnd: morning golden hour (soft light, best time for photography) ends
        solarNoon: solar noon (sun is in the highest position)
        goldenHour: evening golden hour starts
        sunsetStart: sunset starts (bottom edge of the sun touches the horizon)
        sunset: sunset (sun disappears below the horizon, evening civil twilight starts)
        dusk: dusk (evening nautical twilight starts)
        nauticalDusk: nautical dusk (evening astronomical twilight starts)
        night: night starts (dark enough for astronomical observations)
        nightEnd: night ends (morning astronomical twilight starts)
        nauticalDawn: nautical dawn (morning nautical twilight starts)
        dawn: dawn (morning nautical twilight ends, morning civil twilight starts)
        nadir: nadir (darkest moment of the night, sun is in the lowest position)
    */
    

    Internette Grüße
    Andy

    RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

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

      @AndyUM61:

      Ich nutze das Script global. `
      Weshalb ? Alle Ergebnisse werden doch in Datenpunkten gespeichert. Als globales Skript wird es in jedes (nicht globale) Skript eingefügt und dort ausgeführt, was die CPU enorm belastet (vermutlich die Ursache für das unzuverlässige Funktionieren). Skripte die schedule() oder on() beinhalten, sollten niemals als globale Skripte verwendet werden !
      @AndyUM61:

      Ich versuche einige Funktionen in meinen Scripts über Astro zu triggern, aber mal funktioniert es, und mal eben nicht.

      Hat dieses Problem auch jemand? `
      Ich verwende nur das Sonnenstand-Skript, das bei mir absolut zuverlässig funktioniert.

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

      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        AndyUM61
        schrieb am zuletzt editiert von
        #3

        @paul53:

        Weshalb ? Alle Ergebnisse werden doch in Datenpunkten gespeichert. Als globales Skript wird es in jedes (nicht globale) Skript eingefügt und dort ausgeführt, was die CPU enorm belastet (vermutlich die Ursache für das unzuverlässige Funktionieren). Skripte die schedule() oder on() beinhalten, sollten niemals als globale Skripte verwendet werden ! `

        OK, DANKE!

        Da hatte ich noch gar nicht darüber nachgedacht.

        Ist aber logisch und werde ich gleich mal ändern.

        Internette Grüße
        Andy

        RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

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


        Support us

        ioBroker
        Community Adapters
        Donate

        778

        Online

        32.6k

        Benutzer

        82.1k

        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