NEWS
(Gelöst) Zeichenkette in Zahl umwandeln (Aqara/Deconz/Vibrationssensor/Winkel)
-
var Winkel; on({id: 'deconz.0.Sensors.34.orientation', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Winkel = parseFloat(((obj.state ? obj.state.val : "").split(',')[1])); if (Winkel < -20) { console.log(Winkel); setState("javascript.0.Garage"/*Garage*/, 'Geschlossen', true); } else if (Winkel > 0) { console.log(Winkel); setState("javascript.0.Garage"/*Garage*/, 'Offen', true); } });edit: sorry, finger waren schneller als das hirn.
@muckel sollte obj.state nicht gesetzt sein, nimmt er den Leerstring, splitted ihn nach Komma und nimmt das zweite Element des Arrays, um das nach Float zu Parsen. Es gibt aber kein zweites Element, entweder ist das schon der Fehler, oder zumindest ein potentieller Bug.
Alternative: als "Else" nimmst du "0,0,0"
-
var Winkel; on({id: 'deconz.0.Sensors.34.orientation', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Winkel = parseFloat(((obj.state ? obj.state.val : "").split(',')[1])); if (Winkel < -20) { console.log(Winkel); setState("javascript.0.Garage"/*Garage*/, 'Geschlossen', true); } else if (Winkel > 0) { console.log(Winkel); setState("javascript.0.Garage"/*Garage*/, 'Offen', true); } });edit: sorry, finger waren schneller als das hirn.
-
@muckel .split(',') kann nicht auf den Wert des Datenpunktes angewendet werden. Füge mal vor setze Winkel einen debug output Wert ein. Was erscheint dann im Log ?
-
@muckel sagte:
undefined
Du hast an debug output eine Variable Wert übergeben ? Es muss die Eigenschaft Wert des Triggerdatenpunktes sein.
-
@muckel .split(',') kann nicht auf den Wert des Datenpunktes angewendet werden. Füge mal vor setze Winkel einen debug output Wert ein. Was erscheint dann im Log ?
-
@paul53
wie recht du hast:23:58:27.903 info javascript.0 script.js.Garage_Offen_Zu: 7,-80,7
-
@muckel sagte:
7,-80,7
Das sieht eigentlich gut aus, garantiert aber nicht, dass der Datenpunkt tatsächlich einen String enthält. Logge mal den Typ von Wert (unter Konvertierung).
@paul53
00:04:59.382 info javascript.0 script.js.Garage_Offen_Zu: object{
"from": "system.adapter.deconz.0",
"user": "system.user.admin",
"ts": 1556892868113,
"common": {
"name": "Garagentor orientation",
"type": "string",
"read": true,
"write": false
},
"native": {},
"acl": {
"object": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator",
"state": 1636
},
"_id": "deconz.0.Sensors.34.orientation",
"type": "state"
} -
@paul53
00:04:59.382 info javascript.0 script.js.Garage_Offen_Zu: object{
"from": "system.adapter.deconz.0",
"user": "system.user.admin",
"ts": 1556892868113,
"common": {
"name": "Garagentor orientation",
"type": "string",
"read": true,
"write": false
},
"native": {},
"acl": {
"object": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator",
"state": 1636
},
"_id": "deconz.0.Sensors.34.orientation",
"type": "state"
} -
@muckel sagte:
object
Dann enthält er schon ein Array und muss nicht mehr gesplittet werden. Damit vereinfacht sich die Umwandlung:
setze Winkel auf nach Zahl in der Liste Wert nimm das 2. Element. -
@paul53
00:04:59.382 info javascript.0 script.js.Garage_Offen_Zu: object{
"from": "system.adapter.deconz.0",
"user": "system.user.admin",
"ts": 1556892868113,
"common": {
"name": "Garagentor orientation",
"type": "string",
"read": true,
"write": false
},
"native": {},
"acl": {
"object": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator",
"state": 1636
},
"_id": "deconz.0.Sensors.34.orientation",
"type": "state"
} -
@muckel sagte:
"type": "string",
Das garantiert nicht, dass der Wert tatsächlich einen String enthält. Wodurch wird der Wert des Datenpunktes geschrieben ?
-
-
Perfekt! Das wars! :relaxed:
Auf das wäre ich im Leben nicht gekommen. Danke schön.
Ich stelle es auf gelöst.CU and good night!
-
@muckel Wenn das Array bereits Zahlen enthält, kann die Konvertierung nach Zahl entfallen. Teste bitte:
setze Winkel auf in der Liste Wert nimm das 2. Element
debug output Typ von Winkel -
@muckel sagte:
Vom Deconz Adapter
Welche Version ?
Ich habe gesehen, dass in Version 1.1.0 bereits an einer Stelle "orientation" mit common.type: 'array' eingearbeitet wurde.
