NEWS
Erbitte Hilfe: Request - 9 Zeilen Code
-
Hallo zusammen,
ich Bitte um Eure Hilfe:
Nachdem es nun endlich aufgehört hat zu Regnen, habe ich den Pool betriebsbereit gemacht und die im Herbst gestoppten Scripte wieder gestartet. Wie ich nun gelesen habe, ist der request-Befehl bei einem Javascript-Update weggefallen. ==> Ergo das Poolthermometer funktioniert nicht mehr:
const url = 'http://192.168.16.83/api'; const idTemp1 = '0_userdata.0.Pool.Wassertemperatur'; schedule('* * * * *', function() { //every minute request(url, function(error, response, result) { let obj = JSON.parse(result); setState(idTemp1, parseFloat(obj.sensors['0'].value), true); }); });
Der darauf hin mir vom Entwickler vorgeschlagene (und von mir leicht angepasste) Code liefert zwar in den Datenpunkt, jedoch keinen Temperaturwert, sondern "(null)":
const axios = require('axios'); const url = 'http://192.168.16.83/api'; const idTemp1 = '0_userdata.0.Pool.Wassertemperatur'; // const idTemp2 = '0_userdata.0.Temp2IoT.Temperatur_Ambi'; schedule('* * * * *', async function() { //every minute try { let response = await axios.get(url); let obj = response.data; setState(idTemp1, parseFloat(obj.sensors['0'].Value), true); // setState(idTemp2, parseFloat(obj.sensors['1'].Value), true); } catch (error) { log(exMsg, 'error'); } });
Ich danke für´s Lesen und Eure Hilfe!
LG S.
-
@rotamint said in Erbitte Hilfe: Request - 9 Zeilen Code:
let obj = response.data;
füge mal zwischen zweile 12 und 13 folgende zeilen ein
console.log(JSON.parse(response.data)); obj=JSON.parse(response.data);
wenn du das dann im javascript adapter laufen lässt, schalte in der skript-ansicht oben rechts im käfersymbol noch debug und verbose an.
dann sieht man in der console etwas mehr. -
@oliverio Danke für Deine Hilfe!
Die Fehlermeldung bleibt der gleiche und es gibt keinen zusätzlichen Logeintrag...
javascript.0 2024-07-18 07:09:22.116 info Stopping script script.js.common.Pool.Skript_1 javascript.0 2024-07-18 07:09:00.148 error at processTicksAndRejections (node:internal/process/task_queues:95:5) javascript.0 2024-07-18 07:09:00.148 error at Object.<anonymous> (script.js.common.Pool.Skript_1:23:13) javascript.0 2024-07-18 07:09:00.147 error script.js.common.Pool.Skript_1: ReferenceError: exMsg is not defined javascript.0 2024-07-18 07:08:03.290 info script.js.common.Pool.Skript_1: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions javascript.0 2024-07-18 07:08:03.290 info script.js.common.Pool.Skript_1: schedule(cron=* * * * *) javascript.0 2024-07-18 07:08:03.251 info Start JavaScript script.js.common.Pool.Skript_1 (Javascript/js)
-
@rotamint sagte in Erbitte Hilfe: Request - 9 Zeilen Code:
script.js.common.Pool.Skript_1:23:13)
das kann nicht oder du postetst nicht alles
code Ziele 23 ist nicht da in deinem Post
const url = 'http://192.168.16.83/api'; httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => { if (err) { console.error(err); } else { const jsonData = JSON.parse(response.data); console.log(JSON.stringify(jsonData)); });
was ist damit... ohne cron ohne nix.. einfach nur so ...
-
@arteck sagte in Erbitte Hilfe: Request - 9 Zeilen Code:
@rotamint sagte in Erbitte Hilfe: Request - 9 Zeilen Code:
script.js.common.Pool.Skript_1:23:13)
das kann nicht oder du postetst nicht alles
code Ziele 23 ist nicht da in deinem Post
Entschuldige, klar. Hier nochmals:
const axios = require('axios'); const url = 'http://192.168.16.83/api'; const idTemp1 = '0_userdata.0.Pool.Wassertemperatur'; // const idTemp2 = '0_userdata.0.Temp2IoT.Temperatur_Ambi'; schedule('* * * * *', async function() { //every minute try { let response = await axios.get(url); let obj = response.data; console.log(JSON.parse(response.data)); obj=JSON.parse(response.data); setState(idTemp1, parseFloat(obj.sensors['0'].Value), true); // setState(idTemp2, parseFloat(obj.sensors['1'].Value), true); } catch (error) { log(exMsg, 'error'); } });
const url = 'http://192.168.16.83/api'; httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => { if (err) { console.error(err); } else { const jsonData = JSON.parse(response.data); console.log(JSON.stringify(jsonData)); });
was ist damit... ohne cron ohne nix.. einfach nur so ...
Ausgabe zu Deinem Vorschlag:
javascript.0 2024-07-18 07:34:44.254 error at processImmediate (node:internal/timers:478:21) javascript.0 2024-07-18 07:34:44.254 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1688:17) javascript.0 2024-07-18 07:34:44.253 error at /opt/iobroker/node_modules/iobroker.javascript/main.js:2230:17 javascript.0 2024-07-18 07:34:44.253 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2132:37) javascript.0 2024-07-18 07:34:44.253 error at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1866:21) javascript.0 2024-07-18 07:34:44.253 error at new Script (node:vm:99:7) javascript.0 2024-07-18 07:34:44.253 error SyntaxError: Unexpected token ')' javascript.0 2024-07-18 07:34:44.253 error ^ javascript.0 2024-07-18 07:34:44.253 error }); javascript.0 2024-07-18 07:34:44.252 error script.js.common.Pool.Skript_1_Test compile failed: at script.js.common.Pool.Skript_1_Test:18 javascript.0 2024-07-18 07:34:44.250 info Start JavaScript script.js.common.Pool.Skript_1_Test (Javascript/js)
-
@rotamint hab ne klammer vergessen
const url = 'http://192.168.16.83/api'; httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => { if (err) { console.error(err); } else { const jsonData = JSON.parse(response.data); console.log(JSON.stringify(jsonData)); } });
sollte tun
ansonsten
http://192.168.16.83/api
im browser aufrufen und screenshot posten von der ausgabe
-
@arteck sagte in Erbitte Hilfe: Request - 9 Zeilen Code:
@rotamint hab ne klammer vergessen
const url = 'http://192.168.16.83/api'; httpGet(url, { timeout: 5000, responseType: 'text' }, async (err, response) => { if (err) { console.error(err); } else { const jsonData = JSON.parse(response.data); console.log(JSON.stringify(jsonData)); } });
sollte tun
DANKE:
javascript.0 2024-07-18 08:37:19.097 info script.js.common.Pool.Skript_1_Test: {"systemname":"Poolthermometer","secure_counter":24127,"firmware":"2.3.05-b","sensors":[{"name":"Wassertemperatur","value":21.75,"mean-1":{"value":21.78437,"count":60,"period":3600},"mean-24":{"value":22.79323,"count":1440,"period":86400},"unit":"Celsius","time":"Thu Jul 18 08:37:18 2024"}]} javascript.0 2024-07-18 08:37:18.779 info script.js.common.Pool.Skript_1_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 2024-07-18 08:37:18.746 info Start JavaScript script.js.common.Pool.Skript_1_Test (Javascript/js)
ansonsten
http://192.168.16.83/api
im browser aufrufen und screenshot posten von der ausgabe
Vorschlag von oben liefert Daten, trotzdem zusätzlich anbei:
{ "systemname": "Poolthermometer", "secure_counter": 24112, "firmware": "2.3.05-b", "sensors": [ { "name": "Wassertemperatur", "value": 21.75, "mean-1": { "value": 21.78542, "count": 60, "period": 3600 }, "mean-24": { "value": 22.79371, "count": 1440, "period": 86400 }, "unit": "Celsius", "time": "Thu Jul 18 08:36:03 2024" } ] }
-
… ein höfliches „up“ zum Wochenende …
-
Es darf nicht
catch (error)
, sondern musscatch (exMsg)
heissen. Problem gelöst.