NEWS
JSON File Auswerten
-
das ist schon mal ein guter Ansatz, ich muss mir jettz überlegen wie ich von meinem Fronius WR die Datei auf meinen iobroker bekomme. Der läuft auf einer Synology im docker. Wenn ich dort einen FTP service zum laufen bringe dann könnte ich das file direkt in den iobroker schreiben. Ob das "cat" command bei dieser Version läuft muss ich erst schauen, ich werde weiter berichten,
danke schon mal inzwischen für die Hilfe.
-
Wenn ich dort einen FTP service zum laufen bringe dann könnte ich das file direkt in den iobroker schreiben. `
Kannst Du nicht das Verzeichnis von Deinem FTP Server mounten?
Dann könntest Du den Pfad angeben.
-
Wenn ich dort einen FTP service zum laufen bringe dann könnte ich das file direkt in den iobroker schreiben. `
Kannst Du nicht das Verzeichnis von Deinem FTP Server mounten?
Dann könntest Du den Pfad angeben. `
ja denke schon nur weiss ich noch nicht wie ich das im iobroker terminal mache…
-
file auf meinen FTP Server geschrieben `
Ist die Datei dann auch per HTTP erreichbar oder ist das ein reiner FTP-Server? Falls ersteres kannst du mit dem request-Modul die Datei in regelmäßigen Abständen abrufen und dann auslesen. -
file auf meinen FTP Server geschrieben
Ist die Datei dann auch per HTTP erreichbar oder ist das ein reiner FTP-Server? Falls ersteres kannst du mit dem request-Modul die Datei in regelmäßigen Abständen abrufen und dann auslesen.
Leider ist die Datei nicht per HTTP erreichbar, ich werde aber noch schauen ob ich es irgendwie schaffe diese per HTTP zur Verfügung zu stellen
-
file auf meinen FTP Server geschrieben
Ist die Datei dann auch per HTTP erreichbarso jetzt ist die Datei auch per HTTP erreichbar, jetzt bräuchte ich nur noch Hilfe mit dem request-modul. Wie muss ich das konfigurieren bzw. wie kann ich meine Datei dann per HTTP abfragen?
habe folgende URL wo ich mein file angezeigt bekomme: 192.168.1.33/files/digital_out.json
bekomme dann dieses file angezeigt, und möchte da eigentlich nur den teil in Rot markeirt abfragen:
{
"pin 0" : {
"direction" : "out",
"function" : "SystemOperationalManagementGranted",
"set" : false,
"type" : "DIGITAL"
},
"pin 1" : {
"direction" : "out",
"function" : "EMRS_OUTPUT_1",
"set" : true,
"type" : "DIGITAL"
},
"pin 2" : {
"direction" : "in",
"function" : "EVU_INPUT_1",
"set" : false,
"type" : "DIGITAL"
},
"pin 3" : {
"direction" : "in",
"function" : "EVU_INPUT_2",
"set" : false,
"type" : "DIGITAL"
},
"pin 4" : {
"direction" : "in",
"function" : "SystemOperationalManagementRequest",
"set" : false,
"type" : "DIGITAL"
},
"pin 5" : {
"direction" : "in",
"function" : "SystemOperationalManagementAcknowledge",
"set" : false,
"type" : "DIGITAL"
},
"pin 6" : {
"direction" : "in",
"function" : "EVU_INPUT_5",
"set" : false,
"type" : "DIGITAL"
},
"pin 7" : {
"direction" : "in",
"function" : "EVU_INPUT_6",
"set" : false,
"type" : "DIGITAL"
},
"pin 8" : {
"direction" : "in",
"function" : "EVU_INPUT_7",
"set" : false,
"type" : "DIGITAL"
},
"pin 9" : {
"direction" : "in",
"function" : "EVU_INPUT_8",
"set" : false,
"type" : "DIGITAL"
}
}
-
jetzt bräuchte ich nur noch Hilfe mit dem request-modul. Wie muss ich das konfigurieren bzw. wie kann ich meine Datei dann per HTTP abfragen? `
Du brauchst den JavaScript-Adapter und trägst in dessen Konfiguration bei "zusätliche Module" request ein.Hier findest du Dokumentation dazu: https://github.com/request/request
Der einfachste Fall, der für dich ausreichen sollte steht ganz oben. Baue ein neues Skript (nicht unter global!):
var request = require('request'); // Diese Funktion immer ausführen, wenn du neue Daten abrufen willst, z.b. per schedule: request('!!!hier die URL hin!!!', function (error, response, body) { if (error) { log("Fehler aufgetreten: " + error); } else { var json = JSON.parse(body); // Daten aus json auswerten (siehe anderes Skript in diesem Thread) } });
-
Etwa so
var request = require('request'); var url = '...'; createState('Wechselrichter.pin1.set', false, { type: 'boolean', read: true, write: true }); function wr() { request(url, function(error,response, body) { if(error) log('Fehler request: ' + error, 'error'); else { var obj = JSON.parse(body); setState('Wechselrichter.pin1.set', obj['pin 1'].set); // Wert von Pin 1: set in Datenpunkt } }); } schedule('*/1 * * * *', wr); // jede Minute
-
und trägst in dessen Konfiguration bei "zusätliche Module" request ein. `
Das ist nicht erforderlich, denn 'request' ist schon im JS-Adapter installiert. -
@ALLE
Vielen Dank für eure Hilfe. Funktioniert perfekt jetzt, hab wieder etwas dazugelernt
LG
Duke