NEWS
Fehlermeldung "Wrong type of…: "string"
-
Hallo zusammen,
vielleicht habt ihr eine Idee, ich finde gerade den Fehler nicht :shock:
Ich bekomme im Log folgenden Hinweis:
javascript.0 2018-08-22 09:15:06.166 warn at Object. (script.js.Status.Wetter-und-Klima.Variablen-Wetter-befuellen:31:3) javascript.0 2018-08-22 09:15:06.157 warn Wrong type of javascript.0.Status.Wetter-Klima.TempMax-Today: "string". Please fix, while deprecated and will not work in next versions.Wenn ich nun mir die Variable anschaue ist das aber definitiv kein String-Objekt sondern vom Typ Nummer:
{ "from": "system.adapter.cloud.0", "ts": 1534500143293, "common": { "name": "TempMax-Today", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "°C", "min": -50, "max": 100, "def": 0, "read": true, "write": true }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "javascript.0.Status.Wetter-Klima.TempMax-Today", "type": "state" }Im Blockly-Skript wird einfach nur der Wert aus Weatherunderground in diese Variable geschrieben:
setState("javascript.0.Status.Wetter-Klima.TempMax-Today"/*TempMax-Today*/, getState("weatherunderground.0.forecast.0d.tempMax").val, true);Wie kommt denn nun ioBroker darauf, dass der Wert TempMax-Today ein String-Wert ist?
Den Fehler habe ich noch bei vier weiteren Variablen, die aber ebenfalls nach dem gleichen Muster wie dieser Fall ist.
Habt ihr eine Idee?
Liebe Grüße
David
-
Komischerweise benutze ich aber einfach diese Standard-Blockly-Funktion und es wird ja auch nicht bei jeder Variablen angemerkt:

Hier die Quell-Variable:
{ "from": "system.adapter.weatherunderground.0", "ts": 1534497303725, "common": { "name": "high temperature", "type": "number", "unit": "°C", "role": "value.temperature.max.forecast.0", "read": true, "write": false }, "native": { "id": "forecast.0d.high.celsius" }, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "weatherunderground.0.forecast.0d.tempMax", "type": "state" }Einen Wert aus einer Variablen (Typ: Number) in ein anderes Variablen-Feld (Typ Number) schreiben muss doch auch via Blockly ohne Skripting funktionieren, oder nicht?
-
Einen Wert aus einer Variablen (Typ: Number) in ein anderes Variablen-Feld (Typ Number) schreiben muss doch auch via Blockly ohne Skripting funktionieren, oder nicht? `
Ja, aber nur dann, wenn der Quell-Datenpunkt tatsächlich einen Wert vom Typ "number" enthält. Das ist nicht in jedem Fall sicher. -
Wo "number" drauf steht muss nicht "number" drin sein. Einige Adapter sind recht schlampig programmiert. Überprüfe was drin ist:
log(typeof getState("weatherunderground.0.forecast.0d.tempMax").val); ```` `Die Ausgabe ergibt:
> script.js.Status.test: getState(id=weatherunderground.0.forecast.0d.tempMax, timerId=1210) => {"val":"30","ack":true,"ts":1534932909441,"q":0,"from":"system.adapter.weatherunderground.0","lc":1534932Kannst du daraus erkennen, welcher Variablentyp es ist? Auf jeden Fall scheint das Feld ja den Inhalt "30" und damit klar eine Nummer zu haben.
-
Das ist nicht die Log-Ausgabe.
@Kunibert:Auf jeden Fall scheint das Feld ja den Inhalt "30" und damit klar eine Nummer zu haben. `
Nein, der Wert kann 30 (number) oder "30" (string) sein. In der Log-Ausgabe des Wertes kann man es nicht unterscheiden. Deshalblog(typeof getState("weatherunderground.0.forecast.0d.tempMax").val);wird die Logausgabe wahrscheinlich sein
string -
Danke, du hast es vorhergesehen :-)
Das Log sagt String. Komisch, wo doch die Variable in der Definition "number" ist. Macht es Sinn das auf Github als Fehler zu melden?
Und bekomme ich das mit Blockly dennoch gelöst oder muss ich dann ein Javascript daraus bauen? Blockly wäre schön :)
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden