NEWS
MQTT Antwort parsen
-
Moin,
ich möchte einen Datenpunkt parsen welcher leider kein Json ist.
Ich lese per MQTT einen Marstek B2500 Speicher aus und bekomme nur einen Datenpunkt mit dem Wert z.B.p1=1,p2=1,w1=100,w2=101,usw
w1 ist hier die Leistung des 1. PV Eingang des Speichers, also 100Watt.
Das ganze möchte ich nun in einzelne Datenpunkte schreiben, aber alle Beispiele die ich finde haben keine = Zeichen sondern :.
Scripten ist nicht meine Lieblingsbaustelle
.
-
@andre-6 die
.split()
Methode wäre dein Freund:
https://www.w3schools.com/jsref/jsref_split.aspDu könntest erst an den
,
splitten, dann hättest du ein Array mit den einzelnenp1=1
Strings.
Die kannst du wiederum splitten anhand des=
Womit Skriptes du denn bisher? JavaScript? Blockly? NodeRed?
-
@bananajoe derzeit nur mit Blockly
-
@bananajoe sagte: , splitten, dann hättest du ein Array mit den einzelnen p1=1 Strings. Die kannst du wiederum splitten anhand des =
Etwa so, wenn nur Zahlenwerte enthalten sind:
-
p1=1,p2=1,w1=100,w2=101,usw
Ich würde es ohne Skripting mit Aliasen machen und einer Read-Konvertierung:
val.split(',').find(p => p.startsWith('w1=')).split('=')[1]
oder mit regulären Ausdrücken:
value.match(/w1=(\d+)/)[1]
Dabei das "w1" jeweils um den Parameter ersetzen, der gefragt ist.
EDIT: Dabei nicht von Fehlermeldungen des Read-Konverters irritieren lassen, nach dem erstmaligen Speichern sind die weg.
-
Oder Du kombinierst Blockly mit regulären Ausdrücken:
...und wandelst auch gleich in Zahlenwerte um.
-
@paul53 wo / wie hast du diesen Bausteinen her ?
ich finde nur den
-
@mickym ich hätte das schon gerne direkt als einzelne Datenpunkte
-
-
@paul53 aha...
und an die Stelle muss doch der Datenpunkt mit der zu zerlegenden Zeichenkette? -
ich bitte um Nachsicht, aber das ist echt nicht meins....
Ich möchte ja nicht nur den einen Wert habenmein erster Ansatz war es so zu lösen, aber da es ja kein Json ist geht das nicht
-
@andre-6 sagte: und an die Stelle muss doch der Datenpunkt mit der zu zerlegenden Zeichenkette?
An diese Stelle muss der Beginn der Datenpunkt-ID. Beispiel: "0_userdata.0.PV.Speicher." ergibt mit "w1" die Datenpunkt-ID "0_userdata.0.PV.Speicher.w1". Die Datenpunkte vom Typ "Zahl" müssen alle bereits erstellt sein.
-
@paul53 ok, also müssen alle Werte die ich in dem Quelldatenpunkt habe zwingend auch als einzelne Datenpunkte existieren.
Kann ich mir auch nur meine Rosinen raus picken? -
-
@paul53 vielen Dank, zwar noch nicht verstanden was wie und wo aber es läuft
-
@andre-6 Hallo Andre, kannst Du mir bitte sagen, wie du den Speicher ausliest.
Ich habe mir auch einen bestellt und möchte den einbinden.
Kann man in der App MQTT konfigurieren