NEWS
[gelöst] places Adapter: type "number" but received type
-
@lobomau sagte in places Adapter: type "number" but received type "string":
@lobomau log bleibt nach Änderung zu number
Es geht um den Datentyp im Ziel-State. Also
places.0.lobomau.latitude
. Wenn Duiot.0.services.custom_lat
zu number änderst, dann hilft das nichts. -
Da die Meldung mit
places.0
versehen ist und das Skript oben korrekterweise eine Zahl schreibt (parseFloat
) gehe ich grade davon aus, dass das ein Bug im places Adapter ist und nicht im Skript. -
@haus-automatisierung da hatte ich auch geschaut. Da ist die ganze Zeit numbers. Dann können wir das ja ausschließen!?
Also vermutlich ein Fehler im places-Adapter wie @AlCalzone meint!?
Nur komisch... hab nur ich den Fehler und den Adapter in Betrieb? Den issue hatte ich vor einiger Zeit erstellt.places.0.lobomau.latitude:
{ "type": "state", "common": { "name": "latitude", "role": "value.gps.latitude", "type": "number", "read": true, "write": true, "custom": { "influxdb.0": { "enabled": true, "changesOnly": true, "debounce": "1000", "retention": "31536000", "changesRelogInterval": 0, "changesMinDelta": 0, "storageType": "", "aliasId": "" } } }, "native": {}, "from": "system.adapter.places.0", "user": "system.user.admin", "ts": 1545598159836, "_id": "places.0.lobomau.latitude", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 } }
-
@lobomau Warum setzt Du die States eigentlich direkt? Laut Doku müsstest Du doch mit messages / sendTo arbeiten um die Position zu aktualisieren?!
-
@haus-automatisierung ok... dann hat wohl jemand die Doku nicht gelesen
Mal schauen ob ich das verstehe und umsetzen kann...Edit.: ok.. man kann Adapter auswälhen bei sendTo
-
@lobomau ich hatte doch die Doku gelesen und habe es auch im Einsatz. Aber nur im Vorschritt. Die GPS Daten kommen vom iot-Adapter und dieser schickt es zu places. Hier liegt vermutlich der Hund begraben. Denn hier wird ein string verarbeitet.
Oh Mann ... den Gedanken hatte ich bereits vor einigen Wochen. Ich wollte hier schon fragen wie ich das unten anpassen muss, damit ein number da raus kommt:on({id: "iot.0.services.custom_geo", change: "ne"}, function (obj) { var LocationString = obj.state.val; var res = LocationString.split(","); var lat = res[0]; var lon = res[1]; sendTo('places.0', { user: "lobomau", latitude: lat, longitude: lon, timestamp: obj.state.ts }, function (res) { log(JSON.stringify(res)); }); });
-
wie oben auch:
var lat = parseFloat(res[0]); var lon = parseFloat(res[1]);
-
@alcalzone kannst du mir noch etwas helfen? Javascript ist nicht meine Welt. Ich weiß schon mal wie es nicht geht:
on({id: "iot.0.services.custom_geo", change: "ne"}, function (obj) { //var LocationString = obj.state.val; //var res = LocationString.split(","); var lat = parseFloat(res[0]); var lon = parseFloat(res[1]); sendTo('places.0', { user: "lobomau", latitude: lat, longitude: lon, timestamp: obj.state.ts }, function (res) { log(JSON.stringify(res)); }); });
Fehlermeldung:
javascript.0 2022-03-22 12:30:03.620 error at processImmediate (internal/timers.js:464:21) javascript.0 2022-03-22 12:30:03.619 error at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56) javascript.0 2022-03-22 12:30:03.619 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:562:29) javascript.0 2022-03-22 12:30:03.618 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1160:38) javascript.0 2022-03-22 12:30:03.617 error at Object.<anonymous> (script.js.common.Anwesendheit.iot-places:5:26) javascript.0 2022-03-22 12:30:03.616 error Error in callback: ReferenceError: res is not defined
Try & error Versuch 2 geht auch nicht:
on({id: "iot.0.services.custom_geo", change: "ne"}, function (obj) { //var LocationString = obj.state.val; var res = LocationString.split(","); var lat = parseFloat(res[0]); var lon = parseFloat(res[1]); sendTo('places.0', { user: "lobomau", latitude: lat, longitude: lon, timestamp: obj.state.ts }, function (res) { log(JSON.stringify(res)); }); });
-
@lobomau Na jetzt hast du die Variablen auskommentiert, auf die der Code sich bezieht. Ich meinte nur dass du Zeile 5 und 6 anpassen musst wie gezeigt.
-
@alcalzone das war ja einfach! Geht jetzt