NEWS
SOLVED Werte zerlegen Viessman adapter
-
Hallo,
Ich bräuchte mal Eure Hilfe. Mein Viessmann Adapter gibt unter Objekte folgende Zeichenkette aus.
[4,11,13,12,11,12,13,12]
jede einzelne Zahl würde ich gerne separieren zum weiterverwerten.
Wie stelle ich das am besten an? -
@karstent sagte in Werte zerlegen:
[4,11,13,12,11,12,13,12]
Es ist ein Array mit 8 Elementen. Zugriff auf die Elemente erfogt über den Index (0...7).
var arr = [4,11,13,12,11,12,13,12]; log(arr[0]); // 4
Falls es kein Array, sondern ein JSON ist, muss man das Array aus dem JSON erzeugen.
var arr = JSON.parse(json);
-
Kann dir leider nicht wirklich helfen, aber
https://github.com/ioBroker/ioBroker.parser
und
https://regex101.com/
müssten in die Richtung gehen. -
-
den Parser habe ich schon ausprobiert und die Seite https://regex101.com/ kenne ich auch. Einige Werte konnte ich durch \d[0-9] extrahieren. komischwerweise fällt dabei der erste Wert herunter. Was mache ich da falsch?
-
@karstent sagte in Werte zerlegen:
[4,11,13,12,11,12,13,12]
Es ist ein Array mit 8 Elementen. Zugriff auf die Elemente erfogt über den Index (0...7).
var arr = [4,11,13,12,11,12,13,12]; log(arr[0]); // 4
Falls es kein Array, sondern ein JSON ist, muss man das Array aus dem JSON erzeugen.
var arr = JSON.parse(json);
-
Mit dem Parser habe ich warscheinlich was falsch verstanden. Unter Url/Datei kann ich warscheinlich keine Datei aus den Objekten hinterlegen. Oder?
-
@karstent sagte in Werte zerlegen:
Unter Url/Datei kann ich warscheinlich keine Datei aus den Objekten hinterlegen. Oder?
Nein.
@paul53 hat dir die richtige Antwort schon gegeben. Du brauchst den parser nicht.
-
Hallo!
Ich als Anfänger versuche auch schon länger die Zeichenkette aus dem Viessmann Adapter aufzulösen und die Zahlen einzeln in Datenpunkte zu schreiben.
Wäre ein Profi so nett und würde mit bitte mit einem Beispielscript auf die Sprünge helfen?
Vielen Dank!! -
@mb53612 sagte:
die Zeichenkette aus dem Viessmann Adapter aufzulösen
Mit dieser "umfangreichen" Information musst Du wohl warten, bis jemand, der den Viessmann-Adapter kennt und anwendet, auf die Frage antwortet.
-
@paul53
Sorry!
Hier mein screenshot aus dem Adapter Viessmannapi.
Die als "Wert" gelieferten Daten (8 Zahlen in "day") möchte ich einzeln in Vis verwenden. Es handelt sich um den Gasverbrauch heute, gestern, vorgestern usw.
Für mich scheint es sinnvoll, die Werte zu trennen und in einzelne Datenpunkte zu schreiben.
Ich hoffe ich habe schon etwas mehr mitgeteilt. Wie gesagt bin ich hier blutiger Anfänger und wende mich erstmals an das Forum.
Auf jeden Fall: vielen Dank! -
// IDs anpassen ! const idDay = 'viessmann.0.xyz.heating.day'; const idTage = 'Viessmann.Heizung.Tag-' var arr = getState(idDay).val; if(typeof arr == 'string') arr = JSON.parse(arr); for(let i = 0; i < arr.length; i++) { createState(idTage + i, arr[i], {type: 'number', unit: 'm³'}); } on(idDay, function(dp) { // triggert bei Wertänderung arr = dp.state.val; if(typeof arr == 'string') arr = JSON.parse(arr); for(let i = 0; i < arr.length; i++) { setState(idTage + i, arr[i], true); } });
EDIT: Zeile 5 korrigiert
-
@paul53
Super!Vielen Dank!!!!! Läuft natürlich einwandfrei!