NEWS
Fehlermeldung "Wrong type of…: "string"
-
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. -
In diesem Fall sind jedoch Quell-Datenpunkt und Ziel-Datenpunkt identisch vom Typ "number" > siehe Screenshot. Daher verstehe ich die Meldung auch nicht.
-
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);
-
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":1534932
Kannst 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
-
Und bekomme ich das mit Blockly dennoch gelöst oder muss ich dann ein Javascript daraus bauen? Blockly wäre schön `
Ja, Konvertierung: nach Zahl -
Macht es Sinn das auf Github als Fehler zu melden? `
Ja, es ist ein Fehler, wenn common.type: "number" und der Wert als String übergeben wird. -
Vielen Dank für deine Hilfe! Ich teste teste das mal mit Blockly und eröffne bei Github einen Issue.