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 solltest die Funktion "weiter" auch aufrufen.
Dann sollte es funktionieren.Gruß
dna909
-
Sorry das habe ich nicht verstanden! Was meinst du mit "weiter"? Ich habe von Java keine Ahnung!!!
-
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
-
So habe ich verändert nun bekomme ich einen Fehler: error javascript.0 script.js.Garten.Pool compile failed:
at script.js.Garten.Pool:34 -
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.
-
@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
-
Man was soll ich sagen vielen Dank! Es funktioniert ... Ich wünsche einen schöne Tag.