NEWS
JSON Daten auslesen
-
const request = require('request'); const link = 'http://x.x.x.x/JSON'; function versionen() { request(link, 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
-
Mit welchem Adapter lese ich die am besten aus und bringe die Werte nach ioBroker?
Eine Möglichkeit ist die Nutzung des systeminfo-Adapters [https://github.com/frankjoke/ioBroker.s … /README.md](https://github.com/frankjoke/ioBroker.systeminfo/blob/master/README.md)
> It handles text, HTML, json and XML data types wizh special query mechanisms.…
json for json data to be parsed, on Web entries this means that the received text will be handled as json directly and the regexp/filter will be a JsonParse statement/filter. `
-
22:05:17.706 javascript.0 Stop script script.js.common.Skript1
22:05:18.385 javascript.0 Start javascript script.js.common.Skript1
22:05:18.385 javascript.0 script.js.common.Skript1 compile failed: at script.js.common.Skript1:1
??
-
Poste bitte Dein Skript (in code tags).
-
1:1 der Code, der oben steht… nur die IP Adresse angepasst.
An was liegts?
-
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:80
da kein Gerät an der IP-Adresse vorhanden ist.
-
Danke, scheint zu funktionieren.
Wie erzeuge ich nun Einträge unter den Objekten, die ich dann weiterverwenden kann?
-
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(); // Skriptstart
Und 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';