NEWS
assigning a string / which expects a number
-
Hallo zusammen,
ich bin noch recht neu auf dem Gebiet ioBroker (JavaScript). Aber durch das Forum hier habe ich schon viel lernen können und bisher auch immer eine Antwort gefunden. Diesmal komme ich aber leider nicht weiter...
Ich habe mir folgendes Script, welches mir den Sonnenstand errechnet, eingebunden.
/* 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.0.Steuerungsflags.Elevation"; var Azimut = "javascript.0.Steuerungsflags.Azimut"; var suncalc = require('suncalc'); const config = getObject('system.config'); const lat = config.common.latitude; const long = config.common.longitude; createState(Elevation, 0, {type: 'number', unit: '°'}); createState(Azimut, 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, a = sunpos.azimuth * 180 / Math.PI + 180; setState(Elevation,h.toFixed(1)); /*sonne_elevation*/ setState(Azimut,a.toFixed()); /*sonne_azimut*/ } schedule("*/5 * * * *", Sonnenstand_berechnen); // alle 5 Minuten zur vollen Minute Sonnenstand_berechnen(); // bei Scriptstart
Nur zur Vollständigkeit, die Zeilen 11, 12 und 13 habe ich angepasst, sonst ist es die original Übernahme.
Nun bekomme ich aber zyklisch folgende Fehlermeldung:
You are assigning a string to the state "javascript.0.Steuerungsflags.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.
Kann mir Bitte jemand sagen wo ein String definiert wird bzw. wie ich den "Fehler" beheben kann?
Die Anzeige in Grafana funktioniert soweit mit dem Script.Besten Dank im Voraus,
Stefan -
@daruse sagte: wo ein String definiert wird bzw. wie ich den "Fehler" beheben kann?
Zeilen 23, 24: .toFixed() wandelt eine Zahl in einen String. Richtig:
setState(Elevation, Math.round(h * 10) / 10); /*sonne_elevation*/ setState(Azimut, Math.round(a)); /*sonne_azimut*/
-
@paul53 WOW Danke, so schnell hätte ich nicht mit einer Antwort gerechnet.
Funktioniert, besten Dank!