Jetzt neu: Mit Tageslänge und Mondphase
In ioBroker kannst Du mit den Astro Funktionen eine ganze Menge abfragen. Aber jede Astrozeit immer in jedem Skript abzufragen ist lästig, oder? Richtig! Mit diesem Skript kannst du global alle Werte der Astro Funktion abfragen und in passenden Datenpunkten abspeichern. Das Skript erstellt beim ersten Aufruf automatisch die benötigten Datenpunkte und sollte im common Bereich erstellt werden. Der Aufruf des Skripts geschieht alle 30 Minuten automatisch und kann in der letzten Zeile angepasst werden.
Hier kann es natürlich vorkommen, das die ein oder andere Tageszeit übersprungen wird, da sie nur 2-5 Minuten (gerade im Sommer: Sonnenauf- und untergang innerhalb von 5 Minuten) auseinander liegen. Zusätzlich gibt es 6 Variablen, die den aktuellen Astro – Zustand anzeigen (tageszeitAstro, naechsteTageszeitAstro, tageszeitLesbar, naechsteTageszeitLesbar, aktuelleAstroZeit, Tag). Die Variable Tag steht zwischen Sonnenauf- und untergang auf Tag.
Extra: Bei jedem Durchlauf des Skriptes wird überprüft, ob die eingetragene Uhrzeit bereits vergangen ist. Wenn ja, wird hier schon der Wert für die nächste Zeit dieses Ereignisses gespeichert. Auch bekommst du im Log immer eine Übersicht, wie der aktuelle Durchlauf des Skriptes abgelaufen ist.
Screenshot der verfügbaren Variablen
Ausgabe im Log
Skript
/* * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln> * * Dieses Skript dient zur freien Verwendung in ioBroker zur Erfassung der Astro-Zeiten. * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung * und Performance entwickelt. * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind. * * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf * https://www.kreyenborg.koeln * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der, * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht! * * Ansprüche gegenüber Dritten bestehen nicht. * * 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 = "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(); var uhrzeit = zeit_formatieren(datum); // Zustand der Daten var aktuell = 0; var aktualisiert = 0; var keine_aktualisierung = 0; var astro_index = 0; // Aktuellen Tagesabschnitt bestimmen var ergebnis = -1; var naechste_element = false; // Aktuelle & kommende Tageszeit var aktuelle_tageszeit = 0; var 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 = mondphase.phase; var status = 'Neumond'; if (mond > 0.05) status = 'Viertelmond zunehmend'; if (mond > 0.2) status = 'Halbmond zunehmend'; if (mond > 0.3) status = 'Dreiviertelmond zunehmend'; if (mond > 0.45) status = 'Vollmond'; if (mond > 0.55) status = 'Dreiviertelmond abnehmend'; if (mond > 0.7) status = 'Halbmond abnehmend'; if (mond > 0.8) status = 'Viertelmond abnehmend'; if (mond > 0.95) status = '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);
Einbindung in VIS
Um nun die aktuelle Tageszeit in VIS anzeigen zu können, kannst Du einfach ein String Widget auf deine View ziehen und den Datenpunkt verknüpfen.
Folgender Datenpunkt wird dem String zugewiesen:
javascript.0.Astro.tageszeitLesbar
Moin, ich wohne in 21614 Buxtehude, ist bei Hamburg und ich bekomme laufend WARN-Meldungen.
javascript.0
2024-07-08 11:00:00.086 warn script.js.Scripte.Astro: Cannot calculate astro date “night” for 53.475187, 9.721973
javascript.0
2024-07-08 11:00:00.081 warn script.js.Scripte.Astro: Cannot calculate astro date “nightEnd” for 53.475187, 9.721973
liegt warscheinlich daran, das ich zu weit im Norden wohne, aber wie kann ich das verhindern.
Im Voraus besten Dank.
VG Robbie
Hallo Robbie,
Du könntest diese Astrozeiten einfach aus dem Skript auskommentieren.
Gruß,
Stephan
Hallo,
ich habe gerade auf die neue Version 1.4 aktualisiert.
Da wird mit eine Zeile als Fehler markiert.
Dies ist die Zeile 50
Code: const suncalc = require(‘suncalc’);
Da wird im Editor folgender Fehler angezeigt:
Cannot find module ‘suncalc’ or its corresponding type declarations.(2307)
Ist das richtig so?
Hallo,
Bitte den aktuellen Javascript Adapter verwenden.
Hallo Stephan,
wie greifst du auf die “Astrofunktion(Länge,Breite)” auf die Systemvariablen des Längen- und Breitengrad zu? Also welche Variablen sind das? Eingetragen sind die bei mir, aber ich kann die Variablen dazu nicht finden – Danke!
Gruß,
Toni
Hallo Toni,
hier wird Dir geholfen: https://www.kreyenborg.koeln/wissensdatenbank/astro-sonnenaufgang-und-untergang-abfragen/
Gruß,
Stephan
Hallo zusammen,
auch bei mir seit kurzem das gleiche Problem…
Gruß
Tom
Hallo Thomas,
die Lösung steht doch bereits über deinem Beitrag.
Gruß,
Stephan
Hallo Stephan,
ja, wenn man so drüber nachdenkt, kann das sein.
Könnte man die Felder dann mit dem Script leeren oder beide Angaben auf 00:00 Uhr setzen?
Denn, was mich auch wundert, dass die Werte nicht bestätigt sind.
Dank dir.
Hallo Mario,
schaue ich mir nach meinem Urlaub nochmal an.
Gruß,
Stephan
Hallo,
ich verwende das Script in der aktuell auf der Seite verfügbaren Version.
Was ich aktuell sehe,ist, dass die Datenpunkte night und nightEnd nicht aktualisiert werden und auch nicht bestätigt sind (also rote Schrift).
Ist das normal? Kann das behoben werden?
Danke.
Hallo Mario,
Dies kommt in den Sommermonaten schon einmal vor, das die Datenpunkte nicht gefüllt werden, da sie durch die Astro-Funktion nicht verfügbar sind.
Gruß,
Stephan
Super, Danke ….
Hallo, ja genau
Hallo Sepp,
seit eben gibt es 2 neue Datenpunkte in dem Skript:
– tageslaenge: Zeit zwischen Sonnenauf- und untegang
– tageslaenge_minuten: Wie vorheriger Datenpunkt – nur als Minuten
Ich hoffe, dies ist, was gewünscht wurde.
Angenehmes Wochenende!
Gruß,
Stephan
Hallo Stephan,
super Script. Läuft einwandfrei, und hat mir schon sehr oft geholfen.
Das einzige was mir fehlt ist die Tageslänge.
Vielleicht gibts ja mal ein update 🙂
MfG
Hallo Sepp,
Du meinst die Länge – wie lang es hell ist – eines Tages in Stunden und Minuten?
Gruß,
Stephan
Hallo zusammen,
vielen Dank für das tolle Script,
leider kommt bei mir direkt eine Fehlermeldung. Hatte das schon mal einer ?
08:29:24.195 info javascript.0 (35033) Start javascript script.js.common.Astrozeit
08:29:24.200 error javascript.0 (35033) script.js.common.Astrozeit compile failed: at script.js.common.Astrozeit:35
Das Script macht dann nicht weiter. Hat einer eine Lösung dafür ?
Hallo Andreas,
tut mir Leid, wenn Du ein Poblem mit dem Skript hast.
Fügst Du das Skript als TypeScript oder JavaScript ein?
Alle Skripte auf dieser Seite sind Javascripts – hier könnte also der Fehler zu suchen sein.
Bitte prüfe dies einmal.
Gruß,
Stephan
Hallo Stephan,
ich habe das Script als Javascript hinzugefügt.
Hallo Andreas,
bitte einmal einen Screenshot von dem Script im JavaScript Adapter mit Zeile 35 sichtbar per Mail an Stephan@Kreyenborg.koeln
Danke.
Hey,
Ich stelle jetzt auch noch einmal die Frage:
Wo kann man den Script anpassen, damit die Datenpunkte unter 0_userdata,=.* erzeugt werden?
Die Anwort von Dir war ja:
aufgrund der Sicherheitsrichtlinie, ist es JavaScript Skripten nicht erlaubt, außerhalb des eigenen Ordners zu schreiben – lesen hingegen ist baumübergreifend erlaubt.
Jetzt wird aber immer wieder empfohlen, dass selbst erstellte Datenpunkte nit mehr unter Javascript abgelegt werden sollen sondern unter 0_userdata.
Also muss es doch eine Möglichkeit gegeben. Kannst Du mir hierbei weiterhelfen ?
Gruß PD
Hallo Peter,
diese Art der benutzerdefinierten Objekte im Ordner 0_userdata ist ein Vorschlag der Community, den man nutzen kann oder eben nicht.
Zu lesen hier: Link
Da meine Skripte zum Javascript gehören, legen sie ihre Objekte auch dort an.
Gruß,
Stephan
Hallo Stephan,
Danke für den Tipp. Fehler gefunden. Die Koordinaten in den ioBroker Einstellungen waren korrekt (s.o. “latitude/longitude sind eingetragen”). Der Javascript Adapter hat diese jedoch nicht übernommen, obwohl “Systemeinstellungen verwenden” angegeben war. Nach manuellem Einstellen der Koordinaten im Javascript Adapter funktioniert es.
Falls jemand anderes das gleiche Problem hat:
ioBroker Admin Ver. 5.1.23
Javascript Adapter Ver. 5.2.8
Hallo Stephan,
danke für Dein Script. Ich habe es schon länger ohne Probleme am laufen. Jetzt habe ich einen neuen iobroker aufgesetzt und bekomme nach Ausführen des Scripts (v. 1.21) Warnungen und es werden keine Zeiten in die Datenpunkte eingetragen.
latitude/longitude sind eingetragen. Hast Du eine Idee, was da schief gelaufen ist?
00:10:47.853 info javascript.0 (4612) Start javascript script.js.common.Astrozeiten
00:10:47.870 info javascript.0 (4612) script.js.common.Astrozeiten: Astro: Erster Start des Skriptes!
00:10:47.871 info javascript.0 (4612) script.js.common.Astrozeiten: Astro: Datenpunkte erstellt!
00:10:47.880 info javascript.0 (4612) script.js.common.Astrozeiten: registered 0 subscriptions and 1 schedule
00:10:50.879 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.885 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.893 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.899 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.908 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.916 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.923 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.928 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.934 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.940 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.946 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.951 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.956 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.962 warn javascript.0 (4612) at Object.datenpunkte_fuellen (script.js.common.Astrozeiten:72:9)
00:10:50.964 info javascript.0 (4612) script.js.common.Astrozeiten: Astro: Erste Datenpunkte gefüllt!
00:10:52.880 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.884 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.888 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.903 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.907 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.910 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.925 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.930 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.934 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.940 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.947 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.952 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.955 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.959 warn javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:144:17)
00:10:52.964 error javascript.0 (4612) at Object.update_astro_zeiten (script.js.common.Astrozeiten:195:59)
Gruß, Ilja
Hallo Ilja,
Wenn Du einen neuen ioBroker aufgesetzt hast, schaue bitte, ob auch die Koordinaten zum Wohnort richtig eingetragen worden sind.
Ich denke, hier ist der Fehler zu suchen.
Oder, der Datenbaum unterhalb Javascript ist nicht beschreibbar.
Gruß,
Stephan
Hallo,
Danke erstmals für das tolle Script.
Bei mir zeigt das Script heute um 17:14 “Mittag” an. Mir fehlen die nicht astronomischen Begriffe Vormittag oder Nachmittag. Wie kann ich das in dein Script einbauen.
Gruß Peter
Hallo Peter,
Die Werte Vormittag und Nachmittag (früher Abend) sind im Skript vorhanden.
Das Skript zeigt bei mir aktuell auch Mittag an, da astrologisch noch Mittag ist.
Gruß,
Stephan
Hey da!
Danke für das tolle Script. Nutze ich bereits seit ca. 6 Monaten.
Jetzt habe ich allerdings seit ein paar Tagen folgende Fehlermeldung:
javascript.0 2021-06-06 11:21:35.092 error (5146) Cannot get astro date for “night”
javascript.0 2021-06-06 11:21:35.088 error (5146) Cannot get astro date for “nightEnd”
Die beiden Datenpunkte bleiben auf 00:00 Uhr, hat da jemand eine Idee, woran das liegen könnte?!
MfG
Karsten
Hallo Karsten,
etwas über deinem Kommentar habe ich Tim/Klaus geantwortet. Diese Fehlerbehebung hilft auch bei dir 😉
Gruß,
Stephan
Hi,
seit heute hab ich Fehler im Log.
Sonst noch jemand?
javascript.0 2021-06-05 19:00:00.022 error (11120) Cannot get astro date for “night”
javascript.0 2021-06-05 19:00:00.012 error (11120) Cannot get astro date for “nightEnd”
Gruß
Mike
Hallo Mike,
etwas über deinem Kommentar habe ich Tim/Klaus geantwortet. Diese Fehlerbehebung hilft auch bei dir 😉
Gruß,
Stephan
Hi Stephan,
wer lesen kann ist klar im Vorteil. 😉
Danke dir!
Gruß
Mike
Hallo, super,
eine Frage für mich als Neuling:
Die Datenpunkte werden ja unter javascript.0* erzeugt.
Wie muss ich das Script anpassen um die Datenpunkte unter 0_userdata,=.* erzeugen zukönnen?
Danke für dein Feedback
Ralph
Hallo Ralph,
aufgrund der Sicherheitsrichtlinie, ist es JavaScript Skripten nicht erlaubt, außerhalb des eigenen Ordners zu schreiben – lesen hingegen ist baumübergreifend erlaubt.
Gruß,
Stephan
Muss leider auch nochmal was zu dem Fehler fragen:
“javascript.0 (568) Cannot get astro date for “nightEnd” ”
“javascript.0 (568) Cannot get astro date for “night” ”
Ist es möglich, dass man zumindest die Fehlermeldung von Javascript umgeht / abfängt?
Derzeit kommen alle 30 Minuten diese beiden Fehler im Log.
Danke und Gruß
Hi Tim,
als “Work-Around” würde ich folgendes vorschlagen.
Zeile 34 – 37 wie folgt ersetzen:
// Objekte der Astro Zeiten
const objekt = ["nauticalDawn", "nauticalDawn", "dawn", "sunrise", "sunriseEnd", "goldenHourEnd", "solarNoon", "goldenHour",
"sunsetStart", "sunset", "dusk", "nauticalDusk", "nauticalDusk", "nadir", "tageszeitAstro", "naechsteTageszeitAstro",
"tageszeitLesbar", "naechsteTageszeitLesbar", "aktuelleAstroZeit", "Tag", "sunriseUnix", "sunsetUnix"];
In dem Code sind die Elemente “night” und “nightEnd” mit “nauticalDusk” und “nauticalDawn” ersetzt (etwa 5 Minuten Zeitunterschied) worden.
Somit müsstest Du, wenn du auf “night” oder “nightEnd” verwiesen hast, die nächsten Datenpunkte “nauticalDusk” und “nauticalDawn” verwenden.
Angenehmes Wochenende!
Gruß,
Stephan
Danke dir. Nehme es gerne erstmal so 🙂
Klappt auch.
Aber du wandelst doch später einen invaliden Wert in 00:00 Uhr um, wieso kommt diese Meldung dann überhaupt?
Hätte dann gedacht, wenn es keinen Wert gibt, bekommt man halt stattdessen 0 Uhr zurück
Hi Tim,
die Funktion “getAstroDate” hat leider keine “interne Fehlerbehandlung” – somit loggt sie einfach den Fehler und gibt nicht true/false zurück.
Hi,
danke für die schnelle Antwort.
Hab’s mal auf 15 Minuten geändert, hat es aber nicht viel verbessert.
Ist draußen schon gescheit dunkel wenn der Trigger greift. 🙁
Danke und Gruß
Mike