NEWS
Json einlesen und verarbeiten
-
Hallo ich versuche mich an Json nur leider bekomme ich es nicht hin. Ich habe eine json die ich im Browser über http://192.168.X.X/start.json aufrufe. Das Ergebnis ist:
{ "time":"08:13:08", "date":"23.05.2019", "fw":"1.0.0", "cpu_temp":"33.96", "sensor1_qual":"0", "sensor1":"16.38", "sensor1_name":"Wassertemperatur", "sensor2_qual":"0", "sensor2":"11.94", "sensor2_name":"Außentemperatur", "sensor3_qual":"1", "sensor3":"4095.94", "sensor3_name":"Sensor 3", "sensor4_qual":"1", "sensor4":"4095.94", "sensor4_name":"Sensor 4", "relais1":"0", "relais1_name":"Filterpumpe", "relais2":"2", "relais2_name":"Solar", "relais3":"2", "relais3_name":"Heizung" }Jetzt wollte ich mir die Daten (Sensor 1 und Sensor 2) in zwei Variablen hinterlegen. Doch leider funktioniert es nicht.
// Pool createState('javascript.0.PoolController.sensor1',0, {type: 'number',name: 'sensor1',unit: '°C', read: true,write: true,role: 'per Script'}); createState('javascript.0.PoolController.sensor2',0, {type: 'number',name: 'sensor2',unit: '°C', read: true,write: true,role: 'per Script'}); // Werte holen ------------------------------------------------------------------------------------------------------------------------ function weiter() { var request = require('request'); request('http://192.168.178.75/start.json', function (error, response, body) { if (!error && response.statusCode == 200) { log ("json = " + body); var obj = JSON.parse(body); setState('javascript.0.PoolController.sensor1', obj.sensor1); setState('javascript.0.PoolController.sensor2', obj.sensor2); }); } } // alle 2 Minuten ------------------------------------------------------------------------------------------------------------------------ schedule("*/2 * * * *", function () { weiter(); // Werte holen });Was habe ich falsch gemacht?
-
Du hast die Funktion "weiter" in deinem Code --> function weiter() { ...
Diese muss aber auch aufgerufen werden, ansonsten passiert da nix.
Schreib ganz am Ende einfach mal noch ein weiter() hin, dann sollte die Funktion auch aufgerufen werden.
P.S.: das hier ist Javascript nicht Java :-)
Gruß
dna909
-
Ups, hatte den Code nicht bis zum Ende gelesen.
Vergiss das geschriebene.Du erstellst die Datenpunkte als type: number. Im JSON ist der type aber String.
Ändere beim createState den type mal auf string oder mixed.Dann sollte das eigentlich funktionieren.
-
Hallo ich versuche mich an Json nur leider bekomme ich es nicht hin. Ich habe eine json die ich im Browser über http://192.168.X.X/start.json aufrufe. Das Ergebnis ist:
{ "time":"08:13:08", "date":"23.05.2019", "fw":"1.0.0", "cpu_temp":"33.96", "sensor1_qual":"0", "sensor1":"16.38", "sensor1_name":"Wassertemperatur", "sensor2_qual":"0", "sensor2":"11.94", "sensor2_name":"Außentemperatur", "sensor3_qual":"1", "sensor3":"4095.94", "sensor3_name":"Sensor 3", "sensor4_qual":"1", "sensor4":"4095.94", "sensor4_name":"Sensor 4", "relais1":"0", "relais1_name":"Filterpumpe", "relais2":"2", "relais2_name":"Solar", "relais3":"2", "relais3_name":"Heizung" }Jetzt wollte ich mir die Daten (Sensor 1 und Sensor 2) in zwei Variablen hinterlegen. Doch leider funktioniert es nicht.
// Pool createState('javascript.0.PoolController.sensor1',0, {type: 'number',name: 'sensor1',unit: '°C', read: true,write: true,role: 'per Script'}); createState('javascript.0.PoolController.sensor2',0, {type: 'number',name: 'sensor2',unit: '°C', read: true,write: true,role: 'per Script'}); // Werte holen ------------------------------------------------------------------------------------------------------------------------ function weiter() { var request = require('request'); request('http://192.168.178.75/start.json', function (error, response, body) { if (!error && response.statusCode == 200) { log ("json = " + body); var obj = JSON.parse(body); setState('javascript.0.PoolController.sensor1', obj.sensor1); setState('javascript.0.PoolController.sensor2', obj.sensor2); }); } } // alle 2 Minuten ------------------------------------------------------------------------------------------------------------------------ schedule("*/2 * * * *", function () { weiter(); // Werte holen });Was habe ich falsch gemacht?
@w2kscout Zeile 8 kann ab JS Version 3.3.4 entfallen.
Ändere bitte ab Zeile 14
setState('javascript.0.PoolController.sensor1', parseFloat(obj.sensor1)); setState('javascript.0.PoolController.sensor2', parseFloat(obj.sensor2)); } else log(error, 'error'); }); // Ende request } // Ende function
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