NEWS

[gelöst]Rolladensteuerung Astro nicht gestartet


  • 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ß


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


  • @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.


  • @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.


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

Suggested Topics

2.1k
Online

36.8k
Users

42.5k
Topics

588.7k
Posts