NEWS
[gelöst] Azimut und Elevation vom Wiffi spinnen
-
Seit einigen Tagen habe ich mehrmals täglich Aussetzer in der Berechnung der Solarposition über den Wiffi:
Die anderen Werte kommen aber in der selben Zeit weiter, so dass ich eine fehlerhafte Abfrage ausschließen kann.
Auch auf der CCU setzen zeitgleich die Werte der Solarposition aus dem wiffi aus.Ein Reboot des Wiffi brachte nur von gestern abend bis zu dem im Graphen gezeigten Aussetzer Besserung.
Das parallel noch immer auf der CCU laufende Script von @funkleuchtturm liefert weiterhin die richtigen Werte.
Das parallel auf ioBroker laufende Uralt-Skript von 2015, jedoch nicht.
/* System Sonnenstand {1} Sonne Azimut und Elevation in Variablen schreiben {1} erstellt: 06.07.2015 nach ioBroker Forum http://forum.iobroker.net/viewtopic.php?f=21&t=975&sid=6f0ba055de5f82eed6809424f49ca93b#p7635 */ var Elevation = "javascript.1.Sonnenstand.Elevation"; var Azimut = "javascript.1.Sonnenstand.Azimut"; var zenit = formatDate(getAstroDate('solarNoon'), 'hh:mm') + ' Uhr'; var nadir = formatDate(getAstroDate('nadir'), 'hh:mm') + ' Uhr'; var suncalc = require('suncalc'), result = getObject("system.adapter.javascript.0"), lat = result.native.latitude, long = result.native.longitude; createState(Elevation, 0) ; // , {unit: '°'}); createState(Azimut, 0) ; // , {unit: '°'}); createState('Sonnenstand.Zenit', '12:00', {type: "string"}); createState('Sonnenstand.Nadir', '00:00', {type: "string"}); function Sonnenstand_berechnen () { var now = new Date(); var sunpos = suncalc.getPosition(now, lat, long); console.log(sunpos); var h = sunpos.altitude * 180 / Math.PI, a = sunpos.azimuth * 180 / Math.PI + 180; setState("Sonnenstand.Elevation", Math.round(10 * h) / 10,true); setState("Sonnenstand.Azimut", Math.round(a),true); setState("Sonnenstand.Zenit", zenit, true); setState("Sonnenstand.Nadir", nadir, true); } schedule("*/5 * * * *", Sonnenstand_berechnen); // alle 5 Minuten zur vollen Minute Sonnenstand_berechnen(); // bei Scriptstart
Hier habe ich diverse Variablen über console.log ausgeben lassen und bin bei der
sunpos
auf unplausible Werte gestoßen:
11:00:00.083 info javascript.1 (21904) script.js.Wetter_und_Klima.Sonnenstand: {'azimuth':-1.5663300872338395,'altitude':1.0120699553297068}
Kann mir bitte jemand sagen, wo ich dran schrauben muss?
EDIT:
ich glaube es liegt hier dran:result = getObject("system.adapter.javascript.1"), lat = result.native.latitude, long = result.native.longitude;
ich kann diese Objekte nicht finden
-
@homoran sagte: ich kann diese Objekte nicht finden
Hast Du die Koordinaten in der Konfiguration der Javascript-Instanz 1 eingetragen?
var zenit = formatDate(getAstroDate('solarNoon'), 'hh:mm') + ' Uhr'; var nadir = formatDate(getAstroDate('nadir'), 'hh:mm') + ' Uhr';
Diese Berechnung darf nicht nur bei Skript-Start erfolgen, sondern mind. einmal pro Tag.
-
@paul53 sagte in Azimut und Elevation vom Wiffi spinnen:
Hast Du die Koordinaten in der Konfiguration der Javascript-Instanz 1 eingetragen?
ja!
deswegen hatte ich auch mal javascript.1 probiert, im ersten Versuch stand da aus alten Tagen noch .0, wo nur use system config angehakt war@paul53 sagte in Azimut und Elevation vom Wiffi spinnen:
Diese Berechnung darf nicht nur bei Skript-Start erfolgen, sondern mind. einmal pro Tag.
Das wäre dann finetuning - Danke!
-
@homoran sagte: ja! deswegen hatte ich auch mal javascript.1 probiert
Dann müssten die Koordinaten im Tab "NATIV" von "system.adapter.javascript.1" oben zu sehen sein.
-
@paul53 sagte97):
Dann müssten die Koordinaten im Tab "NATIV" von "system.adapter.javascript.1" oben zu sehen sein.
Ja!
Da sind sie -
@homoran sagte: Da sind sie
Dann müssen sie auch im Skript eingelesen werden. Ergänze mal in Zeile 16:
log('Latitude: ' + lat + ' °, Longitude: ' + long + ' °');
-
@paul53 sagte:
@homoran sagte: Da sind sie
Damm müssen sie auch im Skript eingelesen werden. Ergänze mal in Zeile 16:
log('Latitude: ' + lat + ' °, Longitude: ' + long + ' °');werde ich machen, hatte gerade in RAW nachgesehen:
"native": { "latitude": "50.xxxxx", "longitude": "6.yyyyy", "libraries": "dewpoint", "libraryTypings": "", "mirrorPath": "", "sunriseEvent": "nightEnd", "sunriseOffset": "", "sunriseLimitStart": "06:00", "sunriseLimitEnd": "12:00", "sunsetEvent": "dusk", "sunsetOffset": "", "sunsetLimitStart": "18:00", "sunsetLimitEnd": "23:00", "mirrorInstance": 0, "enableSetObject": true, "enableSendToHost": false, "enableExec": true, "subscribe": false, "useSystemGPS": false, "allowSelfSignedCerts": false },
und noch mal eine Frage zu:
@paul53 sagte in Azimut und Elevation vom Wiffi spinnen:
Diese Berechnung darf nicht nur bei Skript-Start erfolgen, sondern mind. einmal pro Tag.
wenn ich es richtig sehe, ist das doch Bestandteil der Funktion Sonnenstand_berechnen, die doch auch im schedule aufgerufen wird
schedule("*/5 * * * *", Sonnenstand_berechnen);
EDIT:
Das log gibt die korrekte Geoposition aus -
@homoran sagte: ist das doch Bestandteil der Funktion Sonnenstand_berechnen
Eben nicht. Die Ermittlung der Werte erfolgt außerhalb.
-
@paul53 sagte:
Eben nicht. Die Ermittlung der Werte erfolgt außerhalb.
Danke! - dann habe ich an der falschen Stelle gesucht.
-
ich glaube ich habe den Fehler gefunden:
Nachdem ich die setState() Befehle angepasst habe, indem ich
setState(Elevation, Math.round(10 * h) / 10,true); setState(Azimut, Math.round(a),true); setState("javascript.1.Sonnenstand.Zenit", zenit, true); setState("javascript.1.Sonnenstand.Nadir", nadir, true);
die Pfade angepasst habe, läuft es jetzt anscheinend.
Habe den Fall mal auf gelöst gesetzt.
PS warum der Wiffi auf einmal spinnt weiß ich allerdings immer noch nicht
-
@homoran sagte: die Pfade angepasst habe, läuft es jetzt anscheinend.
Läuft das Skript in Instanz 0?
-
@paul53 sagte in [gelöst] Azimut und Elevation vom Wiffi spinnen:
Läuft das Skript in Instanz 0?
nein, in Instanz .1
trotzdem wird einiges in .0 angelegt - und auf dem Testrechner lief es früher in .0