NEWS
SOLVED Datenpunkte Astro Zeiten
-
Hallo zusammen
Ich habe schon diverse skripte gefunden aber alle erzeugen bei mir Fehler im log, gibt es ein aktuelles Skript oder soll ich das nehmen von pix?
https://forum.iobroker.net/post/42076
Dabei bekomme ich sehr viele Fehlermeldungen im log
Edit habe es jetzt nochmal unter global eingefügt, bekomme jedoch keine Fehlermeldung im log aber auch keine Datenpunkte
Grüße
-
@eule66 said in Datenpunkte Astro Zeiten:
error: javascript.0 script.js.common.Astro: The "getState" method cannot be used synchronously, because the adapter setting "Do not subscribe to all states on start" is enabled.
Da steht doch schon die Ursache. Schalte das in den Adaptereinstellungen ab und gut ist.
Einfach in die Javascript-Instanz im Admin und das Häkchen bei "Nicht alle Zustände beim Start abbonieren" entfernen.Gruß
dna909
-
Dann häng doch auch mal das logfile mit an. Was kommen denn für Fehlermeldungen???
Ohne Logfile ist das Rätselraten. Wie sieht dein Script aus?? Ist es gestartet??
Gruß
dna909
-
@eule66 sagte:
habe es jetzt nochmal unter global eingefügt
Das ist ein Fehler !! Die Gruppe global ist nur für in anderen (nicht globalen) Skripten häufig verwendete eigene Funktionen zu verwenden.
-
@paul53 Davon mal ganz abgesehen
-
So also folgendes Skript habe ich jetzt unter common abgespeichert und gestartet
/* System Tageszeoten Skript meldet Tageszeiten Nacht;Frühmorgens;Morgengrauen;Vormittag;Mittag;Nachmittag;Dämmerung;Abend; Basis: http://www.homematic-inside.de/tecbase/homematic/scriptlibrary/item/tageszeit-in-abschnitte-unterteilen oder hier: https://github.com/ioBroker/ioBroker.javascript#astro--funktion https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#getastrodate erstellt: 01.06.2015 von Pix 11.12.2015 getAstroDate ermittelt nun auch Sonnenaufgang und Untergang Astrotag (isAstroDay) eingebaut */ // Variablen erstellen createState('Tageszeit', { name: 'Tageszeit' }); createState('Tageszeit.Sonnenaufgang', { name: 'nächster Sonnenaufgang Uhrzeit', desc: 'sunrise (top edge of the sun appears on the horizon)' }); createState('Tageszeit.Sonnenuntergang', { name: 'nächster Sonnenuntergang Uhrzeit', desc: 'sunset (sun disappears below the horizon, evening civil twilight starts)' }); createState('Tageszeit.Astrotag', false, { read: true, write: true, type: 'boolean', name: 'Astologischer Tag', desc: 'Zeit zwischen Sonnenauf- und untergang' }); var idTageszeit = "Tageszeit", tageszeiten = ['Nacht', 'Morgendämmerung', 'Morgen', 'Vormittag', 'Mittag', 'Nachmittag', 'Abenddämmerung', 'Abend'], idAstrotag = "Tageszeit.Astrotag", idSonnenaufgang = "Tageszeit.Sonnenaufgang", idSonnenuntergang = "Tageszeit.Sonnenuntergang"; 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 schedule("*/1 * * * *", function () { if (isAstroDay) setState(idAstrotag, true); if (!isAstroDay) setState(idAstrotag, false); zeiten_speichern(); });
dazu kommen folgende Fehlermeldungen im log
2019-04-16 12:52:53.464 - info: javascript.0 Start javascript script.js.common.Astro 2019-04-16 12:52:53.570 - info: javascript.0 script.js.common.Astro: registered 0 subscriptions and 18 schedules 2019-04-16 12:53:00.034 - error: javascript.0 script.js.common.Astro: The "getState" method cannot be used synchronously, because the adapter setting "Do not subscribe to all states on start" is enabled. 2019-04-16 12:53:00.035 - error: javascript.0 script.js.common.Astro: Please disable that setting or use "getState" with a callback, e.g.: getState("Tageszeit.Astrotag", (err, state) => { ... }); 2019-04-16 12:53:00.048 - error: javascript.0 Error in callback: TypeError: Cannot read property 'val' of undefined 2019-04-16 12:53:00.049 - error: javascript.0 at zeiten_speichern (script.js.common.Astro:43:39) 2019-04-16 12:53:00.050 - error: javascript.0 at Object. (script.js.common.Astro:83:3) 2019-04-16 12:53:00.050 - error: javascript.0 at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34) 2019-04-16 12:53:00.051 - error: javascript.0 at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) 2019-04-16 12:53:00.051 - error: javascript.0 at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 2019-04-16 12:53:00.051 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) 2019-04-16 12:53:00.052 - error: javascript.0 at ontimeout (timers.js:498:11) 2019-04-16 12:53:00.052 - error: javascript.0 at tryOnTimeout (timers.js:323:5) 2019-04-16 12:53:00.052 - error: javascript.0 at Timer.listOnTimeout (timers.js:290:5) 2019-04-16 12:53:00.076 - error: javascript.0 script.js.common.Astro: The "getState" method cannot be used synchronously, because the adapter setting "Do not subscribe to all states on start" is enabled. 2019-04-16 12:53:00.076 - error: javascript.0 script.js.common.Astro: Please disable that setting or use "getState" with a callback, e.g.: getState("Tageszeit.Astrotag", (err, state) => { ... }); 2019-04-16 12:53:00.077 - error: javascript.0 Error in callback: TypeError: Cannot read property 'val' of undefined 2019-04-16 12:53:00.078 - error: javascript.0 at zeiten_speichern (script.js.common.Astro:43:39) 2019-04-16 12:53:00.078 - error: javascript.0 at Object. (script.js.common.Astro:83:3) 2019-04-16 12:53:00.078 - error: javascript.0 at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34) 2019-04-16 12:53:00.078 - error: javascript.0 at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) 2019-04-16 12:53:00.078 - error: javascript.0 at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 2019-04-16 12:53:00.079 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) 2019-04-16 12:53:00.079 - error: javascript.0 at ontimeout (timers.js:498:11) 2019-04-16 12:53:00.079 - error: javascript.0 at tryOnTimeout (timers.js:323:5) 2019-04-16 12:53:00.082 - error: javascript.0 at Timer.listOnTimeout (timers.js:290:5)
Grüße
-
@eule66 said in Datenpunkte Astro Zeiten:
error: javascript.0 script.js.common.Astro: The "getState" method cannot be used synchronously, because the adapter setting "Do not subscribe to all states on start" is enabled.
Da steht doch schon die Ursache. Schalte das in den Adaptereinstellungen ab und gut ist.
Einfach in die Javascript-Instanz im Admin und das Häkchen bei "Nicht alle Zustände beim Start abbonieren" entfernen.Gruß
dna909
-
ok danke das wars schon, keine Fehlermeldungen im log mehr
bekomme aber nur Sonnenaufgang und Sonnenuntergang angezeigt, die restlichen Zeiten nicht,an was könnte das noch liegen?
danke für eure hilfe
Gruß Ronny