NEWS
[gelöst] X/Y Koordinaten eines Bildes in VIS abhängig einer CCU Variable
-
@chka Wenn ich Dein Skript in Skripte speicher, wird die Protokolldatei mit Warnungen vollgeschrieben.
2024-04-20 10:42:00.023 - warn: javascript.0 (19119) You are assigning a string to the state "javascript.0.Sonnenstand.Elevation" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions. 2024-04-20 10:42:00.026 - warn: javascript.0 (19119) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1819:20) 2024-04-20 10:42:00.027 - warn: javascript.0 (19119) at Object.Sonnenstand_berechnen (script.js.Sonnenstand.Sonnenstand:48:5) 2024-04-20 10:42:00.027 - warn: javascript.0 (19119) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1620:34) 2024-04-20 10:42:00.027 - warn: javascript.0 (19119) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:171:15) 2024-04-20 10:42:00.028 - warn: javascript.0 (19119) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28 2024-04-20 10:42:00.028 - warn: javascript.0 (19119) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7) 2024-04-20 10:42:00.028 - warn: javascript.0 (19119) at listOnTimeout (node:internal/timers:569:17) 2024-04-20 10:42:00.029 - warn: javascript.0 (19119) at processTimers (node:internal/timers:512:7) 2024-04-20 10:42:00.044 - info: javascript.0 (19119) State value to set for "javascript.0.Sonnenstand.Elevation" has to be type "number" but received type "string"
-
@pistus bei MIR ist javascript.0.Sonnenstand.Elevation eine number bei DIR ein string.
das hat nichts mit speichern zu tun, sondern es läuft was erste Mal durch! -
@chka Die Daten für Azimuth und Elevation kommen doch aus der Systemkonfiguration.
Bei diesem Skript für den Sonnenstand gibt es keine Fehlermeldung und Warnungen.
const suncalc = require('suncalc2'); const result = getObject('system.config'); const lat = result.common.latitude; const long = result.common.longitude; //const result = getObject("system.adapter.javascript.0"); //const lat = result.native.latitude; //const long = result.native.longitude; const idEle = 'Sonnenstand.Elevation'; const idAzi = 'Sonnenstand.Azimuth'; createState(idEle, 0, {type: 'number', unit: '°'}); createState(idAzi, 0, {type: 'number', unit: '°'}); function Sonnenstand_berechnen () { var now = new Date(); var sunpos = suncalc.getPosition(now, lat, long); var h = sunpos.altitude * 180 / Math.PI; var a = sunpos.azimuth * 180 / Math.PI + 180; setState(idEle, Math.round(10 * h) / 10, true); //setState(idAzi, Math.round(a), true); setState(idAzi, Math.round(Math.round(10 * a) / 10), true); } schedule("* * * * *", Sonnenstand_berechnen);
Hier wird aber im Skript der Typ number programmiert
createState(idEle, 0, {type: 'number', unit: '°'}); createState(idAzi, 0, {type: 'number', unit: '°'});
-
@pistus dies script läuft bei mir seit jahren
/* System Sonnenstand Sonne Azimut und Elevation in Variablen schreiben 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, {unit: '°'}); createState('Sonnenstand.Azimut', 0, {unit: '°'}); createState('Sonnenstand.X', 0, {unit: 'px'}); createState('Sonnenstand.Y', 0, {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",h.toFixed(1)); setState("javascript.0.Sonnenstand.Azimut",a.toFixed()); setState("javascript.0.Sonnenstand.X",x.toFixed()); setState("javascript.0.Sonnenstand.Y",y.toFixed()); 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("*/1 * * * *", Sonnenstand_berechnen); Sonnenstand_berechnen(); // bei Scriptstart
mehr kann ich dazu nicht sagen
-
@chka Deshalb habe ich ja versucht Dein Skript bei mir zu installieren.
Ich muss passen, weil ich einfach nicht weiter komme.
-
@pistus sagte in [gelöst] X/Y Koordinaten eines Bildes in VIS abhängig einer CCU Variable:
Dein Skript bei mir zu installieren.
Ein Skript wird nicht installiert sondern im JavaSkriptAdapter angelegt.
Zusätzlich dann folgendes beachten:
-
@djmarc75 Das Skript wurde im JavaSkriptAdapter angelegt.
in Vis muss das Widget basic string genommen werden und und als QuellID javascript.0.Sonnenstand.HTML.
Im Widget steht aber eine hm Id. Ich habe aber kein hm. -
@pistus dann ignoriere die id einfach was steht denn beid dir in der
javascript.0.Sonnenstand.HTML<img src="/vis/img/10_sun.png" height="50" width="50" style="float: left; margin: 125px 0px 0px 717px;" >
-
<img src="/vis-2.0/main/10_sun.png" height="100" width="100" style="float: left; margin: 156px 0px 0px 732px;">
Edit: Die URL ist
http://192.168.178.64:8082/vis-2/?main#Sonnenstand
-
@pistus wenn der wert sich jetzt ändert dann passt das doch.
Dein Problem ist jetzt das es in vis2 nicht angezeigt wird? -
@chka Die Sonne wird angezeigt, ändert aber nicht Ihre Position. Dazu kommen die unzähligen Warnmeldungen in der Protokolldatei.
-
@pistus sagte in [gelöst] X/Y Koordinaten eines Bildes in VIS abhängig einer CCU Variable:
die unzähligen Warnmeldungen in der Protokolldatei.
liegen an dem falschen Datentyp deines Datenpunktes.
Zeig doch bitte mal die Objektdaten davon. -
-
- Expertenmodus an
- dann rechts auf den dann erscheinenden Bleistift
- Reiter Objektdaten
- den Inhalt hier in code-tags posten.
-
{ "common": { "unit": "°", "name": "Sonnenstand.Azimut", "role": "state", "type": "mixed" }, "native": { "unit": "°", "name": "Sonnenstand.Azimut", "role": "state", "type": "mixed" }, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1713353051011, "_id": "javascript.0.Sonnenstand.Azimut", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
{ "common": { "type": "number", "unit": "°", "name": "Sonnenstand.Elevation", "role": "state" }, "native": { "type": "number", "unit": "°", "name": "Sonnenstand.Elevation", "role": "state" }, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1711981079388, "_id": "javascript.0.Sonnenstand.Elevation", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
{ "common": { "name": "Sonnenstand.HTML", "role": "state", "type": "mixed" }, "native": {}, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1713353051014, "_id": "javascript.0.Sonnenstand.HTML", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@pistus Danke!
Azimut ist mixed, Elevation ist Number.
Und genau dort kommt doch die Meldung@pistus sagte in [gelöst] X/Y Koordinaten eines Bildes in VIS abhängig einer CCU Variable:
2024-04-17 16:11:00.043 - info: javascript.0 (19119) State value to set for "javascript.0.Sonnenstand.Elevation" has to be type "number" but received type "string
Das Script scheint da einen String hineinzuschreiben
@chka sagte in [gelöst] X/Y Koordinaten eines Bildes in VIS abhängig einer CCU Variable:
setState("javascript.0.Sonnenstand.Elevation",h.toFixed(1));
ich kann kein Javascript, aber das dürfte einen String ergeben
-
einfach alles auf mixed und gut so wird es normalerweise auch angelegt
-
@chka Was muss ich im Skript ändern?
-
@pistus sagte in [gelöst] X/Y Koordinaten eines Bildes in VIS abhängig einer CCU Variable:
@chka Was muss ich im Skript ändern?
ich kann kein Javascript, aber eine Wandlung in Zahl, sollte helfen.
Oder am anderen Ende angreifen und
@chka sagte in [gelöst] X/Y Koordinaten eines Bildes in VIS abhängig einer CCU Variable:
einfach alles auf mixed und gut
(wobei ich gar nicht weiss ob es mixed offiziell überhaupt noch gibt)
-