NEWS
Fehler Im Skript Cannot find name 'data' Engine 4.4.3
-
Hey, ich versuche wie hier beschrieben, die Daten zu Parsen und an den Geofency Adapter weiterzugeben :
https://forum.iobroker.net/topic/6422/geofency-0-2-0-message-support-und-authentication-fix/42
Ich habe das Java Skript auch dem iot Adapter angepasst.
Die Daten kommen auch an.
Die Variable 'User' wird dem Geofency Adapter auch einwandfrei übergeben.
Jedoch bei "Data" sagt mir schon der Skript Editor Fehler Cannot find name 'data'
somit werden natürlich auch die Daten nicht übergeben.
Muss ich data irgendwo vorher anlegen?
on({id: "iot.0.services.custom_Geofence_1", change: 'any'}, function(obj) {
log(JSON.stringify(obj));
try {
data = JSON.parse(obj.state.val);
}
catch (err) {
data = null;
}
if (! data) {
log('ERROR: Geofency data invalid: ' + data, 'error');
return;
}
var user = 'Device1-User';
sendTo('geofency.1', {'user': user, 'data': data});
}); -
@imushroom sagte in Fehler Im Skript Cannot find name 'data' Engine 4.4.3:
Muss ich data irgendwo vorher anlegen?
Nein, deklarieren.
let data = JSON.parse(obj.state.val);
-
okay, habe nicht so viel Erfahrungen mit Java Script... komme eher aus der C++ ecke und da auch nur grundlegendes...
Jetzt klappts auch.
Jedoch habe ich let data ganz oben im Skript deklariert...
let data on({id: "iot.0.services.custom_Geofence_1", change: 'any'}, function(obj) { log(JSON.stringify(obj)); try { data = JSON.parse(obj.state.val); } catch (err) { data = null; } if (! data) { log('ERROR: Geofency data invalid: ' + data, 'error'); return; } var user = 'Device1-User'; sendTo('geofency.1', {'user': user, 'data': data}); });
Ich gehe davon aus das ist korrekt so??
Wäre cool wenn du mir das erläutern kannst, damit ich die Syntax auch in Zukunft richtig mache
Vielen Dank!!!
-
@imushroom sagte:
Jedoch habe ich let data ganz oben im Skript deklariert...
Das geht natürlich auch. Sonst bei der ersten Wertzuweisung.