Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Rolladensteuerung Astro nicht gestartet

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Rolladensteuerung Astro nicht gestartet

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

      Hallo zusammen,

      ich habe folgendes Script aus dem Forum hier:

      cconst sec = false; // Sekunden darstellen oder nicht
      
      const fC = false; // forceCreation ein/aus
      
      const pfad = "Astro"; // Pfad zum Objekt - Objektbaum-Hauptverzeichnis
      
      // *****************************************************************************
      
      // TAGESZEITEN - T E I L 
      
      // Tageszeiten nach eigenem Gusto (Shifts siehe schedules weiter unten)
      
      const tageszeiten = ["Nacht",
      
                         "Morgendämmerung",
      
                         "Sonnenaufgang",
      
                         "Morgen",
      
                         "Vormittag",
      
                         "Mittag",
      
                         "Nachmittag",
      
                         "Abend",
      
                         "Sonnenuntergang",
      
                         "Abenddämmerung"
      
                        ];
      
      const idTageszeit = "javascript." + instance  + "." + pfad + ".Tageszeit.current" /*Tageszeit*/,
      
          idTageszeitNext = "javascript." + instance  + "." + pfad + ".Tageszeit.next";
      
       
      
      createState(idTageszeit, "nächsten Wechsel abwarten", fC, {
      
        name: "Tageszeit",
      
        desc: "Name der Tageszeit",
      
        type: "string"
      
      });   
      
      createState(idTageszeitNext, "nächsten Wechsel abwarten", fC, {
      
        name: "nächste Tageszeit",
      
        desc: "Name der nächsten Tageszeit",
      
        type: "string"
      
      });
      
      function neue_tageszeit(abschnitt) {
      
        var akt = tageszeiten[parseInt(abschnitt, 10)],
      
        // wenn aktuelles Element ist letztes, dann nächstes ist erstes :-D
      
        nxt = (abschnitt + 1 === tageszeiten.length) ? tageszeiten[0] : tageszeiten[parseInt(abschnitt + 1, 10)];
      
        setState(idTageszeit, akt);
      
        setState(idTageszeitNext, nxt);
      
        log("neue Tagezeit: " + akt);
      
        log("nächste kommende Tagezeit: " + nxt);
      
      }
      
      // Nacht
      
      schedule({
      
        astro: "nauticalDusk", 
      
        shift: 45
      
      }, function () { 
      
        neue_tageszeit(0);
      
      });
      
      // Morgengdämmerung
      
      schedule({
      
        astro: "nauticalDawn",
      
        shift: -45
      
      }, function () {
      
        neue_tageszeit(1);
      
      });
      
      // Sonnenaufgang
      
      schedule({
      
        astro: "sunrise"
      
      }, function() {
      
        neue_tageszeit(2);
      
      });
      
      // Morgen
      
      schedule({
      
        astro: "sunriseEnd"
      
      }, function () {
      
        neue_tageszeit(3);
      
      });
      
      // Vormittag 
      
      schedule({
      
        astro: "goldenHourEnd",
      
        shift: 60
      
      }, function () {
      
        neue_tageszeit(4);
      
      });
      
      // Mittag
      
      schedule({
      
        astro: "solarNoon",
      
        shift: -30
      
      }, function () {
      
        neue_tageszeit(5);
      
      });
      
      // Nachmittag
      
      schedule({
      
        astro: "solarNoon",
      
        shift: 30
      
      }, function () {
      
        neue_tageszeit(6);
      
      });
      
      // Abend
      
      schedule({
      
        astro: "goldenHour",
      
        shift: -60
      
      }, function () {
      
        neue_tageszeit(7);
      
      });
      
      // Sonnenuntergang
      
      schedule({
      
        astro: "sunsetStart",
      
      }, function () {
      
        neue_tageszeit(8);
      
      });
      
      // Abenddämmerung (nach Sonnenuntergang)
      
      schedule({
      
        astro: "sunset"
      
      }, function () {
      
        neue_tageszeit(9);
      
      });
      
      // *****************************************************************************
      
      // A S T O - T E I L 
      
      /* Objekt Astrotag 
      
       Astrotag liegt zwischen Sonnauf- und untergang, 
      
       Astronacht liegt zwischen Sonnenunter- und aufgang */
      
      const idAstrotag =  "javascript." + instance + "." + pfad + ".Astrotag";
      
      // Objekt für Uhrzeiten der Astrozeiten
      
      const astrotime = {
      
        "elements" : [
      
            // Astrotag beginnt
      
            {
      
                "fname" : "sunrise", // function name
      
                "de" : {
      
                    "name" : "Sonnenaufgang",
      
                    "nxt" : "nächster",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Sunrise",
      
                    "desc" : "top edge of the sun appears on the horizon"
      
                },
      
                "astroday" : true //during astroday
      
            },
      
            {
      
                "fname" : "sunriseEnd", // function name
      
                "de" : {
      
                    "name" : "Ende Sonnenaufgang",
      
                    "nxt" : "nächstes",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "End of sunrise",
      
                    "desc" : "bottom edge of the sun touches the horizon"
      
                },
      
                "astroday" : true //during astroday
      
            },
      
            {
      
                "fname" : "goldenHourEnd", // function name
      
                "de" : {
      
                    "name" : "Ende der goldenen Stunde am Morgen",
      
                    "nxt" : "nächstes",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "End of golden hour",
      
                    "desc" : "morning golden hour (soft light, best time for photography) ends"
      
                },
      
                "astroday" : true //during astroday
      
            },
      
            {
      
                "fname" : "solarNoon", // function name
      
                "de" : {
      
                    "name" : "Sonnenhöchststand",
      
                    "nxt" : "nächster",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Solar noon",
      
                    "desc" : "sun is in the highest position"
      
                },
      
                "astroday" : true //during astroday
      
            },
      
            {
      
                "fname" : "goldenHour", // function name
      
                "de" : {
      
                    "name" : "Goldene Stunde (am Abend)",
      
                    "nxt" : "nächste",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Golden hour",
      
                    "desc" : "evening golden hour starts"
      
                },
      
                "astroday" : true //during astroday
      
            },
      
            {
      
                "fname" : "sunsetStart", // function name
      
                "de" : {
      
                    "name" : "Beginn Sonnenuntergang",
      
                    "nxt" : "nächster",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Sunset starts",
      
                    "desc" : "bottom edge of the sun touches the horizon"
      
                },
      
                "astroday" : true //during astroday
      
            },
      
            // Astronacht beginnt
      
            {
      
                "fname" : "sunset", // function name
      
                "de" : {
      
                    "name" : "Sonnenuntergang",
      
                    "nxt" : "nächster",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Sunset",
      
                    "desc" : "sun disappears below the horizon, evening civil twilight starts"
      
                },
      
                "astroday" : false //during astronight
      
            },
      
            {
      
                "fname" : "dusk",
      
                "de" : {
      
                    "name" : "Abenddämmerung",
      
                    "nxt" : "nächste",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Dusk",
      
                    "desc" : "evening nautical twilight starts"
      
                },
      
                "astroday" : false //during astronight
      
            },
      
            {
      
                "fname" : "nauticalDusk",
      
                "de" : {
      
                    "name" : "nautische Abenddämmerung",
      
                    "nxt" : "nächste",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Nautical dusk",
      
                    "desc" : "evening astronomical twilight starts"
      
                },
      
                "astroday" : false //during astronight
      
            },
      
            {
      
                "fname" : "nadir",
      
                "de" : {
      
                    "name" : "Nadir",
      
                    "nxt" : "nächster",
      
                    "desc" : "Fußpunkt gegenüber dem Zenit"
      
                },
      
                "en" : {
      
                    "name" : "Nadir",
      
                    "desc" : "darkest moment of the night, sun is in the lowest position"
      
                },
      
                "astroday" : false //during astronight
      
            },
      
            {
      
                "fname" : "nauticalDawn",
      
                "de" : {
      
                    "name" : "nautische Morgendämmerung",
      
                    "nxt" : "nächste",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "Nautical dawn",
      
                    "desc" : "morning nautical twilight starts"
      
                },
      
                "astroday" : false //during astronight
      
            },
      
            {
      
                "fname" : "dawn",
      
                "de" : {
      
                    "name" : "Morgendämmerung",
      
                    "nxt" : "nächste",
      
                    "desc" : ""
      
                },
      
                "en" : {
      
                    "name" : "dawn",
      
                    "desc" : "morning nautical twilight ends, morning civil twilight starts"
      
                },
      
                "astroday" : false //during astronight
      
            }
      
       
      
        ]
      
      };
      
       
      
      function writeAstroTimes(i) {
      
        // führende Nummer zur Sortierung in Admin/Objekte
      
        var nr = (i+1 < 10) ? "0" + (i+1) : (i+1);
      
        // Erstelle Objekt, falls nicht bereits vorhanden
      
        var idAstroObject = "javascript." + instance + "." + pfad + ".Zeiten." + nr + " - " + astrotime.elements[i].fname;
      
        createState(idAstroObject, " ", fC, {
      
            name: astrotime.elements[i].de.nxt + " " + astrotime.elements[i].de.name + " Uhrzeit",
      
            desc: astrotime.elements[i].en.desc,
      
            type: "string"
      
        });
      
       
      
        setTimeout(function() { // kurz warten, damit Objekte ggf. erst angelgt werden können
      
            var astrotag = getState(idAstrotag).val,
      
                temp;
      
            var today = new Date();
      
            var tomorrow = new Date(today.setDate(today.getDate()+1));
      
            var next_event;
      
            if (astrotag) { 
      
                // Wenn Tag (Aufgang vorbei (erst wieder morgen, Untergang kommt noch heute)
      
                next_event = (astrotime.elements[i].astroday) ? tomorrow : today; // prüfen
      
            } else { 
      
                // nach Nacht (Untergang vorbei (erst wieder morgen, Aufgang kommt heute oder morgen)
      
                next_event = (astrotime.elements[i].astroday) ? today : tomorrow; // prüfen
      
            }
      
            var fname = astrotime.elements[i].fname;
      
            temp = getAstroDate(fname, next_event);
      
            setState(idAstroObject, checkSec(temp.toLocaleTimeString('de-DE', { hour12: false })) );
      
        }, 3 * 1000);
      
      }
      
       
      
      // Zeit mit oder ohne Sekunden anzeigen
      
      function checkSec (zeit) {
      
        if (!sec) {
      
            var newString_arr = zeit.split(":");
      
            var newString = newString_arr[0] + ":" + newString_arr[1];
      
            return (newString);
      
        } else return (zeit);
      
      }
      
       
      
      function getAstroday() {
      
        // Astrotag bestimmen (boolean)
      
        createState(idAstrotag, false, fC, {
      
            type: "boolean",
      
            name: "Astrologischer Tag",
      
            desc: "Liegt die aktuelle Zeit zwischen Sonnenauf- und untergang"
      
        }); 
      
        setState(idAstrotag, isAstroDay());
      
      }
      
       
      
      function iterateAstrotimes() {
      
        // Zeiten für jede Astrozeit schreiben
      
        for (var i = 0; i < astrotime.elements.length; i++) {
      
            writeAstroTimes(i);
      
        }
      
      }
      
       
      
      // Astrotag checken
      
      schedule("*/1 * * * *", function () { // jede Minute
      
        getAstroday();
      
        iterateAstrotimes();
      
      });
      
       
      
      iterateAstrotimes();
      
      getAstroday();
      
       
      
      

      Dieses habe ich normal gestartet (grünes Pausensymbol wird angezeigt).

      Dazu habe ich mir folgendes Blockly erstellt:

      script.JPG

      Allerdings passiert leider nichts. Die zugeordneten Zeiten für Dämmerung etc. stimmen z.B. auch nicht mit denen überein, welche ich über Google bekomme.

      Was mache ich falsch?

      Danke und Gruß

      J 1 Reply Last reply Reply Quote 0
      • ?
        A Former User last edited by

        Das Script hat nichts mit der Astrosteuerung von iobroker zu tun
        sondern legt Datenpunkte an um damit weiter zu arbeiten.
        Wenn Du damit arbeiten willst musst Du auf den Trigger Astro verzichten und das Blockly anders aufbauen.
        Dein obiges Bild zeigt die iobroker Astrosteuerung.
        Hast Du in den iobroker Einstellungen Deine Geodaten eingetragen?

        Bildschirmfoto-20191217072134-1067x195.png
        Ganz nach unten scrollen und Deine Geodaten dort eintragen.
        Dann funktioniert auch die Astro Steuerung.

        1 Reply Last reply Reply Quote 0
        • J
          Jan1 @Mrks1337 last edited by Jan1

          @Markus-Wilbrenner
          Zeig mal den RAW vom DP 0.Rollade_(alle). Du verwendest hier einemal ne "1" und dann wieder "falsch". Das kann so nicht funktionieren. Selbst wenn man die Formatierung mal außer Acht lässt, wäre "nicht gleich" das Selbe wie "falsch" von der Logik und so soll Dein Script bei nicht gleich den Selben DP auf falsch stellen.

          1 Reply Last reply Reply Quote 0
          • Mrks1337
            Mrks1337 last edited by

            @Yetiberg Geodaten habe ich eingetragen (wird auch in der Anzeige korrekt angezeigt). Das Skript habe ich jetzt gestoppt und mein Blockly nochmals geändert wie @Jan1 angemerkt hat. Ich schau mal ob es damit heute Abend funktioniert.

            1 Reply Last reply Reply Quote 0
            • Mrks1337
              Mrks1337 last edited by

              @Jan1 Genau das Blocklyscript war das Problem. Vielen Dank für die Hilfe 🙂

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

              Support us

              ioBroker
              Community Adapters
              Donate

              930
              Online

              31.9k
              Users

              80.1k
              Topics

              1.3m
              Posts

              blockly javascript
              3
              5
              446
              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