NEWS
Json 2 Datenpunkt
-
Hallo zusammen,
folgendes Script:
var url = "https://connect.paj-gps.de/api/customer";
var XMLHttpRequest = require('xhr2');
var xhr = new XMLHttpRequest();
xhr.open("GET", url);xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Authorization", "Bearer MeinToken");xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
console.log(xhr.responseText);
}};xhr.send();
liefert mir in"xhr.responseText" einen JSON Datensatz.
Nun möchte ich eizene Werte in Datenpunkte schreiben.Kann mir jemand helfen ???
Vielen Dank,
Michael -
gelöscht
-
@drfirebird sagte: liefert mir in"xhr.responseText" einen JSON Datensatz.
Wie sieht der aus?
Welche Werte sollen in Datenpunkte?Beispiel für Vorname:
let obj = JSON.parse(xhr.responseText).success; setState('0_userdata.0.Swagger.Nutzerdaten.Vorname', obj.firstname, true);
-
@paul53
Vielen Dank. -
moin. Möchte die info auf zeile 17 im Iobroker als datenpunkt hinterlegen...
leider habe ich keine ahnung wie das geht... die diverse anleitungen beziehen sich meist auf einen direkt erreichbaren datenpunkt...
danke
-
@vanom-vine bitte code als text in code-tags posten!
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1der Ausschnitt hilft wahrscheinlich auch nichts
-
@drfirebird
Wenn du XMLHttpRequest verwendest dann bist du aktuell im Browser/vis unterwegs?
Besser wäre es das Skript auf dem Server also Iobroker selbst laufen zu lassen. Leider ist XMLHttpRequest dort ohne zusätzliche Bibliothek nicht verfügbar.
https://www.npmjs.com/package/xmlhttprequestOder man verwendet eine andere Bibliothek wie axios, die bereits in Iobroker verfügbar ist.
Die Befehle um eine datenpunkt zu schreiben sind
Im Browser
vis.setValue(datenpunkt,wert);
Und unter Iobroker im Skript-Adapter
setState(datenpunkt,wert);Der datenpunkt muss jeweils schon angelegt worden sein.
-
@vanom-vine sagte: Möchte die info auf zeile 17 im Iobroker als datenpunkt hinterlegen...
Liegt das JSON schon in einem Datenpunkt vor?
Prinzipiell so:let zeile17 = JSON.parse(json).series[0].fields[0].values._chunks[0][0]; setState('0_userdata.0.meineWerte.Zeile17', zeile17, true); // In Datenpunkt vom Typ "number"
-
leider greife ich die Json von jemand anderes ab, daher habe ich sie nur so vorliegen, und kann den text auch nicht kopieren.
-
@vanom-vine sagte: greife ich die Json von jemand anderes ab
Wie? Du musst es in ein Skript bekommen.
EDIT: Zeile 17 enthält den Zeitstempel vom 27.08.22 09:05 Uhr MESZ.