NEWS
JSON Daten auslesen
-
An was liegts? `
Nicht am Skript, denn ich habe es gerade getestet und erhalte keinen Fehler "compile failed", sondernscript.js.common.Test2: Fehler request: Error: connect ETIMEDOUT 192.168.178.10:80da kein Gerät an der IP-Adresse vorhanden ist.
-
Hallo,
createState() und setState() sind die Befehle. Ich empfehle dir diese Dokumentation
http://www.iobroker.net/docu/?page_id=2786&lang=de
und speziell http://www.iobroker.net/docu/?page_id=5385&lang=de
Einführung in die Programmierung mit JavaScript
Ebenso den Blick in andere Skripte hier im Forum.
Pix
-
Common oder Global Script?
Das hier geht nicht…
var request = require('request');
function versionen() {
request('http://x.x.x.x/json', function(error,response, body) {
if(error) log('Fehler request: ' + error, 'error');
else {
var obj = JSON.parse(body);
log('Hardware-Version' + obj.Hardware-Version);
log('Firmware-Version' + obj.Firmware-Version);
}
});
}
versionen(); // Skriptstart
-
Bekomme folgende Fehler…
13:11:26.315 javascript.0 Start javascript script.js.Scripts.Skript1
13:11:26.316 javascript.0 script.js.Scripts.Skript1: registered 0 subscriptions and 0 schedules
13:11:26.354 javascript.0 ReferenceError: Version is not defined at Request._callback (script.js.Scripts.Skript1:9:51) at Request.self.callback (/opt/iobroker/node_modules/request/request.js:186:22) at emitTwo (events.js:126:13) at Request.emit (events.js:214:7) at Request. (/opt/iobroker/node_modules/request/request.js:1163:10) at emitOne (events.js:116:13) at Request.emit (events.js:211:7) at IncomingMessage. (/opt/iobroker/node_modules/request/request.js:1085:12) at Object.onceWrapper (events.js:313:30) at emitNone (events.js:111:20)
13:11:26.384 Caught by controller[0]: at Request._callback (script.js.Scripts.Skript1:9:51)
-
ReferenceError: Version is not defined at Request._callback (script.js.Scripts.Skript1:9:51) `
In meinem Skript gibt es keine Zeichenpostion 51 in Zeile 9. Sorry, habe meine Glaskugel verlegt.Bitte Programm-Code und Log-Ausgaben in Code tags (5. Button ) posten !
-
Hier der Code…
var request = require('request'); function versionen() { request('http://192.168.178.21/json', function(error,response, body) { if(error) log('Fehler request: ' + error, 'error'); else { var obj = JSON.parse(body); log('Hardware-Version' + obj.Hardware-Version); log('Firmware-Version' + obj.Firmware-Version); } }); } versionen(); // SkriptstartUnd hier das Log dazu…
07:34:07.094 [info] javascript.0 Stop script script.js.Scripts.Skript1 07:51:45.909 [info] javascript.0 Start javascript script.js.Scripts.Skript1 07:51:45.909 [info] javascript.0 script.js.Scripts.Skript1: registered 0 subscriptions and 0 schedules 07:51:45.974 [error] javascript.0 ReferenceError: Version is not defined at Request._callback (script.js.Scripts.Skript1:9:51) at Request.self.callback (/opt/iobroker/node_modules/request/request.js:186:22) at emitTwo (events.js:126:13) at Request.emit (events.js:214:7) at Request. (/opt/iobroker/node_modules/request/request.js:1163:10) at emitOne (events.js:116:13) at Request.emit (events.js:211:7) at IncomingMessage. (/opt/iobroker/node_modules/request/request.js:1085:12) at Object.onceWrapper (events.js:313:30) at emitNone (events.js:111:20) 07:51:46.004 [error] Caught by controller[0]: at Request._callback (script.js.Scripts.Skript1:9:51) -
Randbemerkung für JavaScript -> Objektbezeichner, Funktionen, Variablen. Bei selbst vergebenen Namen gelten folgende Regeln:
sie dürfen keine Leerzeichen enthalten
sie dürfen nur aus Buchstaben und Ziffern bestehen - das erste Zeichen muss ein Buchstabe sein; es sind Groß- und Kleinbuchstaben erlaubt. Groß- und Kleinschreibung werden unterschieden!
sie dürfen keine deutschen Umlaute oder scharfes S enthalten
sie dürfen als einziges Sonderzeichen den Unterstrich "_" enthalten
sie dürfen nicht mit einem reservierten Wort identisch sein.
-
sie dürfen als einziges Sonderzeichen den Unterstrich "_" enthalten `
Stimmt, - ist nicht zulässig. Bei unzulässigen Bezeichnern muss man eine andere Schreibweise verwenden.log('Hardware-Version ' + obj['Hardware-Version']); log('Firmware-Version ' + obj['Firmware-Version']); -
Bei selbst vergebenen Namen gelten folgende Regeln:
Die Regeln sind nicht ganz korrekt. Genauer:
Ein Bezeichner darf nur aus Buchstaben, Dezimalziffern (0-9), dem Dollarzeichen ($) sowie dem Unterstrich (_) bestehen. Jedes dieser Zeichen darf an beliebiger Stelle vorkommen, mit Ausnahme der Ziffern, welche nicht an erster Stelle stehen dürfen. Groß- und Kleinbuchstaben werden unterschieden. Bezeichner dürfen nicht mit einem reservierten Wort identisch sein.
-
Da war selfHTML (Quelle) wohl etwas lax. Einfach das $ zu unterschlagen :-)
-
Da war selfHTML (Quelle) wohl etwas lax. `
Ja. https://molily.de/js/variablen.html#bezeichner. -
Sehe schon Code wie „ein[emoji813]FürTiere“ vor mir. Wäre lustig mit Emoticons … [emoji12]
-
Sehe schon Code wie „ein[emoji813]FürTiere“ vor mir. Wäre lustig mit Emoticons … [emoji12] `
Auch wenn es in JSON nicht erlaubt ist, als Variablenname geht sowas… (bitte nicht!)
https://mathiasbynens.be/notes/javascript-identifiers
The following are all examples of valid JavaScript variable names. // How convenient! var π = Math.PI; // Sometimes, you just have to use the Bad Parts of JavaScript: var ಠ_ಠ = eval; // Code, Y U NO WORK?! var ლ_ಠ益ಠ_ლ = 42; // How about a JavaScript library for functional programming? var λ = function() {}; // Obfuscate boring variable names for great justice var \u006C\u006F\u006C\u0077\u0061\u0074 = 'heh'; // …or just make up random ones var Ꙭൽↈⴱ = 'huh'; // While perfectly valid, this doesn’t work in most browsers: var foo\u200Cbar = 42; // This is *not* a bitwise left shift (`<<`): var 〱〱 = 2; // This is, though: 〱〱 << 〱〱; // 8 // Give yourself a discount: var price_9̶9̶_89 = 'cheap'; // Fun with Roman numerals var Ⅳ = 4; var Ⅴ = 5; Ⅳ + Ⅴ; // 9 // Cthulhu was here var Hͫ̆̒̐ͣ̊̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̳͕̯̭̱̲̣̠̜͋̍O̴̦̗̯̹̼ͭ̐ͨ̊̈͘͠M̶̝̠̭̭̤̻͓͑̓̊ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ = 'Zalgo'; -
Wenn alle Unicode-Buchstaben erlaubt sind warum klappt es dann mit dem - beim Objekt-Property nicht? - ist kein Buchstabe? Liegt’s am JSON.parse()?
-
- ist kein Buchstabe? `
Richtig. - ist ein unerlaubtes Sonderzeichen.
- ist kein Buchstabe? `
-
Wenn alle Unicode-Buchstaben erlaubt sind warum klappt es dann mit dem - beim Objekt-Property nicht? - ist kein Buchstabe? Liegt’s am JSON.parse()? `
- ist ein Minus.
Wäre es erlaubt, könnte JS nicht wissen, ob du mit - einen Teil der Eigenschaft meinst oder subtrahieren willst:
obj.lange-eigenschaft; // (obj.lange minus eigenschaft) oder (ist eigenschaft Teil des Namens)? -
Super Erklärung für Ingo1977. Hoffentlich liest er noch mit ;-)
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden