NEWS
JSON Werte in Datenpunkte
-
@paul53 said in JSON Werte in Datenpunkte:
function iter(name, obj) { for(let i in obj) { if(typeof obj[i] == 'object') iter(name + '.' + i, obj[i]); else { log(name + '.' + i + ': ' + obj[i]); if(existsState(name + '.' + i) setState(name + '.' + i, obj[i]); else createState(name + '.' + i, obj[i]); // type: "mixed" } } } function SendRequest(){ var options = { url: 'http://URLVON3DRUCKER', }; request(options, function (error, response, body){ if (!error) iter('0_userdata.0.3DPrinter', JSON.parse(body)); else console.error(error); }); } schedule('*/5 * * * * *', SendRequest);
Danke schon mal für dein Hilfe
Leider hat es nicht ganz funktioniert:
javascript.0 2020-07-29 22:56:55.543 error (24214) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2020-07-29 22:56:55.543 error (24214) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) javascript.0 2020-07-29 22:56:55.542 error (24214) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-07-29 22:56:55.542 error (24214) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17) javascript.0 2020-07-29 22:56:55.542 error (24214) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1124:17) javascript.0 2020-07-29 22:56:55.541 error (24214) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1533:17) javascript.0 2020-07-29 22:56:55.541 error (24214) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1480:37) javascript.0 2020-07-29 22:56:55.541 error (24214) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1257:28) javascript.0 2020-07-29 22:56:55.540 error (24214) at Object.createScript (vm.js:277:10) javascript.0 2020-07-29 22:56:55.540 error (24214) at new Script (vm.js:83:7) javascript.0 2020-07-29 22:56:55.540 error (24214) SyntaxError: Unexpected identifier javascript.0 2020-07-29 22:56:55.539 error (24214) ^^^^^^^^ javascript.0 2020-07-29 22:56:55.539 error (24214) if(existsState(name + '.' + i) setState(name + '.' + i, obj[i]); javascript.0 2020-07-29 22:56:55.539 error at script.js.common.Skript_1:6 javascript.0 2020-07-29 22:56:55.539 error (24214) script.js.common.Skript_1 compile failed:
-
@Kevin sagte:
Leider hat es nicht ganz funktioniert:
existsState(id) wird anscheinend angemeckert. Welche Version des Javascript-Adapters ?
-
@paul53 Sollte eigentlich die aktuellste Version sein: 4.6.21
-
@Kevin
Sorry, da fehlt eine schließende Klammer vor setState. Habe sie ergänzt. -
@paul53 Perfekt danke für die schnelle Hilfe. Genau wie ich es mir vorgestellt habe.
-
@Kevin sagte:
Genau wie ich es mir vorgestellt habe.
Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [gelöst].
-
@paul53 Ich habe noch eine Frage
Lässt sich verhindern, dass die Abfrage durchgeführt wird, wenn der Drucker ausgeschaltet ist?
javascript.0 2020-07-31 07:08:11.796 error (24214) Request error: Error: connect ETIMEDOUT 91.15.159.27:8000 javascript.0 2020-07-31 07:08:11.795 error (24214) script.js.common.3D_Printer: {'errno':'ETIMEDOUT','code':'ETIMEDOUT','syscall':'connect','address':'IP','port':8000}
-
-
@paul53 Ich könnte es über einen Datenpunkt an der Fritzbox abfragen. Dann wäre Datenpunkt 3Drucker.active auf true sobald er im netzwerk ist
-
@Kevin sagte:
über einen Datenpunkt an der Fritzbox abfragen
Dann mache die Abfrage als erstes in der Funktion SendRequest().
function SendRequest(){ if(getState('abc.0.xyz.3Drucker.active').val) { var options = { url: 'http://URLVON3DRUCKER' }; request(options, function (error, response, body){ if (!error) iter('0_userdata.0.3DPrinter', JSON.parse(body)); else console.error(error); }); } }