NEWS
Syntax im Script
-
Ich möchte die Anwesenheit von den Handys bei Tado auslesen. Beim Pfad von den Handys muss ich eine Zahl ->0 der 1 eingebenl, je nachdem wieviele Benutzer in dem Konto hinterlegt sind, bei mir sind es 2. Das mag das Script garnicht. Die besagte Stelle habe ich jetzt im Beitrag bei meinem Script fett, unterstrichen un kursiv hervorgehoben. Bitte um Hilfe
Zum Verständnius hänge ich die Api an.
Ich weiß man kann noch schöner das ganze programmieren. Das kopmmt im nächsten Schrtitt, wenn das hier funktioniert.
Das Script:
schedule("*/10 * * * *", function () { // Zeiteinstellung: Script aktualisiert alle 10 Min die Werte var Username = "xxx"; // tado Username (E-Mail Adresse) var Password = "xxx"; // tado Passwort var url = "https://my.tado.com/api/v2/me?username="+Username+"&password="+Password; // API URL //läd die Json herunter var request = require("request"); request(url, function (error, response, body) { //parst die Json var json = JSON.parse(body); //Datenpunkterstellung: createState("Anwesenheit Roman",false, {read: true, write: true, name: "Anwesenheit Roman", type: "boolean", def: false}); //Datenabfrage: setState("javascript.0.Anwesenheit Roman", json.mobileDevices.[b][i][u]0[/u][/i][/b].location.atHome); log(json.mobileDevices.[b][i][u]0[/u][/i][/b].location.atHome); }); });
-
Du musst mobileSevices[0].blubb schreiben
-
Meinst du so?
setState("javascript.0.Anwesenheit Roman", json.mobileDevices.mobileSevices[0].location.atHome); log(json.mobileDevices.mobileSevices[0].location.atHome);
dann kommt eine Fehlermeldung:
javascript.0 TypeError: Cannot read property '1' of undefined at Request._callback (script.js.Heizung.Anwenheit_Roman:22:79) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:186:22) at emitTwo (events.js:106:13) at Request.emit (events.js:191:7) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1163:10) at emitOne (events.js:96:13) at Request.emit (events.js:188:7) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1085:12) at IncomingMessage.g (events.js:292:16) at emitNone (events.js:91:20) 14:38:00.644 [error] Caught by controller[0]: at Request._callback (script.js.Heizung.Anwenheit_Roman:22:79)
-
Was ist denn Zeile 22 ?!
Ansonsten das createState ans Skript Anfang nicht jedes Mal neu wenn request gemacht wird.
-
setState("javascript.0.Anwesenheit Roman", json.mobileDevices.mobileSevices[0].location.atHome);
log(json.mobileDevices.mobileSevices[0].location.atHome); `
setState("javascript.0.Anwesenheit Roman", json.mobileDevices[1].location.atHome); log(json.mobileDevices[1].location.atHome);
Ist tatsächlich ein Leerzeichen in der ID "javascript.0.Anwesenheit Roman" ? Das sollte vermieden werden (Unterstrich) !
createState("Anwesenheit_Roman",false, {read: true, write: true, name: "Anwesenheit Roman", type: "boolean", def: false});
-
Die Fehlermeldung sagt das in deinem Objekt was aus dem json geparst wurde kein mobileDevices existiert. Warum musst du prüfen bzw Fehler absichern.