@chka
Ich habe das Script komplett auf Zahlen (numbers) umgestellt. Vor dem Start bitte die alten Datenpunkte löschen, da sie nun neu als Typ Number angelegt werden.
// setState("javascript.0.Sonnenstand.HTML",'<img src="/vis.0/icons/Images/sun.png" height="50" width="50" style="float: left; margin: '+ y.toFixed() +'px 0px 0px '+x.toFixed()+'px;" >');
//
/* 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 suncalc = require('suncalc'),
result = getObject("system.adapter.javascript.0"),
lat = result.native.latitude,
long = result.native.longitude;
createState('Sonnenstand.Elevation', 0, {type: 'number', unit: '°'});
createState('Sonnenstand.Azimut', 0, {type: 'number', unit: '°'});
createState('Sonnenstand.X', 0, {type: 'number', unit: 'px'});
createState('Sonnenstand.Y', 0, {type: 'number', unit: 'px'});
createState('Sonnenstand.HTML');
//Hier die Koordinaten einstellen
var Xm = 500; //500
var Ym = 250; // 250
var rot = 90; // Winkel in dem Grundriss gegenüber Nord verdreht ist
var r = 250;
function Sonnenstand_berechnen () {
var now = new Date();
//log("-----------------------------------------------");
// log("latitude : " + result.native.latitude,'info');
// log("longitude: " + result.native.longitude,'info');
var sunpos = suncalc.getPosition(now, lat, long);
// log("sunpos: " + sunpos,'info');
var h = sunpos.altitude * 180 / Math.PI,
a = sunpos.azimuth * 180 / Math.PI + 180;
/**
Formel: https://www-user.tu-chemnitz.de/~heha/viewchm.php/hs/SelfDXD.chm/directxgraphics/theorie/dg_ber.html
radWinkel:= 40 / 180 * Pi; // radWinkel = 0.698131...
x_koordinate:= cos( radWinkel ) * 5; // x_koordinate = 3,830222...
y_koordinate:= sin( radWinkel ) * 5; // y_koordinate = 3,213938...
**/
var azimuth = a.toFixed(); //sunpos.azimuth;
var radWinkel =( azimuth -90 - rot )/ 180 * Math.PI;
var x = (Math.cos(radWinkel)* r)+Xm;
var y = (Math.sin(radWinkel) * r)+Ym;
setState("javascript.0.Sonnenstand.Elevation",parseFloat(h.toFixed(1)),true);
setState("javascript.0.Sonnenstand.Azimut",parseFloat(a.toFixed()),true);
setState("javascript.0.Sonnenstand.X",parseFloat(x.toFixed()),true);
setState("javascript.0.Sonnenstand.Y",parseFloat(y.toFixed()),true);
// setState("javascript.0.Sonnenstand.HTML",'<img src="/vis/img/10_sun.png" height="50" width="50" style="float: left; margin: '+ y.toFixed() +'px 0px 0px '+x.toFixed()+'px;" >');
setState("javascript.0.Sonnenstand.HTML",'<img src="/vis/img/Weather-Sun-icon.png" height="50" width="50" vspace="'+ y.toFixed() +'" hspace="'+x.toFixed()+'">');
}
schedule("* * * * *", Sonnenstand_berechnen);
Sonnenstand_berechnen(); // bei Scriptstart