NEWS
XML aus ALL3690 auslesen und Datenpunkte auslesen
-
Hallo,
ich bin absoluter Anfänger, konnte aber schon ein paar einfache DInge umsetzen.
Nun würde ich gern mein Allet 3690 einbinden.
XML Abfrage mit Praser bekomme ich hin:
<sensors>
<sensor>
<id>1</id>
<name>Phase L1</name>
<current>2.72</current>
<unit>A</unit>
<minmax>
<today>
<min>
<value>2.68</value>
<date>11.05.2021 06:04:35</date>
<timestamp>1620705875</timestamp>
</min>
.... usw.XML2JSON habe ich installiert.
Nun wäre ein Beispiel Skript Klasse.
Ich möchte die Daten abrufen und in die Datenbank schreiben um diese z.B. als Kurve auszugeben.Über Hilfe würde ich mich freuen.
Vg
-
Hallo,
ich bin absoluter Anfänger, konnte aber schon ein paar einfache DInge umsetzen.
Nun würde ich gern mein Allet 3690 einbinden.
XML Abfrage mit Praser bekomme ich hin:
<sensors>
<sensor>
<id>1</id>
<name>Phase L1</name>
<current>2.72</current>
<unit>A</unit>
<minmax>
<today>
<min>
<value>2.68</value>
<date>11.05.2021 06:04:35</date>
<timestamp>1620705875</timestamp>
</min>
.... usw.XML2JSON habe ich installiert.
Nun wäre ein Beispiel Skript Klasse.
Ich möchte die Daten abrufen und in die Datenbank schreiben um diese z.B. als Kurve auszugeben.Über Hilfe würde ich mich freuen.
Vg
@rvbrocken
Für xml2json gibt es doch auf der github /npm Seite ein Beispiel was brauchst du denn da noch genauer? -
Moin,
ich bin einen Schrittweiter. Der Allnet kann doch JSON.
Ich kann die Daten auslesen. aber mein Objekt wir nicht aktualisiert.


@rvbrocken
Also zum einen hast du keinn Trigger angelegt also etwas was dir züglich den Wert abholt. Somit wird es glaube ich nur einmal abgeholt und ich bin mir auch nicht sicher ob das Zahl nach stimmt. Kannst du das noch mal als JS zeigen? -
Danke für die Antwort.
Zahl steht drin, da sonst ein Fehler kommt.
You are assigning a object to the state "0_userdata.0.Test.TestValue" which expects a number. Please fix your code to use a number or change the state type to object. This warning might becomevar L1_Leistung;
try {
require("request")('http://192.168.170.74/xml/json.php?mode=all&id=103', async function (error, response, result) {
console.log(getAttr((function () { try {return JSON.parse(L1_Leistung);} catch(e) {return {};}})(), '0.value'));
setState("0_userdata.0.Test.TestValue"/0_userdata.0.Test.TestValue/, parseFloat(L1_Leistung), true);
}).on("error", function (e) {console.error(e);});
} catch (e) { console.error(e); }
console.log("request: " + 'http://192.168.170.74/xml/json.php?mode=all&id=103'); -
Danke für die Antwort.
Zahl steht drin, da sonst ein Fehler kommt.
You are assigning a object to the state "0_userdata.0.Test.TestValue" which expects a number. Please fix your code to use a number or change the state type to object. This warning might becomevar L1_Leistung;
try {
require("request")('http://192.168.170.74/xml/json.php?mode=all&id=103', async function (error, response, result) {
console.log(getAttr((function () { try {return JSON.parse(L1_Leistung);} catch(e) {return {};}})(), '0.value'));
setState("0_userdata.0.Test.TestValue"/0_userdata.0.Test.TestValue/, parseFloat(L1_Leistung), true);
}).on("error", function (e) {console.error(e);});
} catch (e) { console.error(e); }
console.log("request: " + 'http://192.168.170.74/xml/json.php?mode=all&id=103');@rvbrocken
Was zeigt denn der consolen Log? Kommt da ein Wert? -
Hallo,
ich habe es gefunden. In der Variable steht immer der komplette Datensatz.
Es muß also immer die Abfrage mit Attribut verwendet werden.

Jetz kommt noch ein Trigger. ;-)
Danke.
@rvbrocken
Ja das macht Sinn. Sah auch so aus das etwas fehlt konnte aber nicht genau sagen was wenn es jetzt klappt um so besser
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