NEWS
Bereich aus ASCII-String herausfiltern
-
Hallo Gemeinde,
Ich bin ein absoluter Node-red Novize und scheitere wahrscheinlich deshalb an folgender Aufgabe.
Ich habe einen ASCII-String den ich von einer recht alten PV-Anlage über serielle Schnittstelle auslese.Das sieht dann so aus.
Eigentlich sollten die Daten alle 10 Sekunden kommen, tun sie aber nicht, das ist aber zweitrangig, hauptsache einmal pro Minute kommt was, was schon der Fall ist. Dennoch, vielleicht hat einer eine Idee woran das liegen kann. Der WR sendet alle 10 Sekunden, aber vom Node bekomme ich nicht alle Daten, warum auch immer.Das eigentliche Problem ist, ich brauche aus dem String nur die markierten 4 Stellen (hier die " 146". was die aktuelle Leistung des WR ist). Alles andere ist uninteresant. Wie komm ich an diese 4 Stellen?
Für ein paar Tips wäre ich echt dankbar
Grüße
Stephan
-
Ich sehe 10 werte und du willst immer den 9.
plus die Sekunden aus dem zeitstempel der Nachricht.
Um den 9. wert zu extrahieren könnte man einmal mit regex arbeiten.
Für diesen einfachen Fall würde ich einfach den String durch eine Split Funktion laufen lassen, die den String anhand von Leerzeichen in ein Array umwandelt und dann den 9. wert bzw. Index 8 entnehmen. -
Genau einfach mit einer ChangeNode und split in ein Array - allerdings vorher die überflüssigen Leerzeichen eliminieren, wie OliverIO gezeigt hat.
Da es immer ein bestimmter Wert ist, kann man dann über den Index darauf zugreifen und gleich in eine Zahl wandeln.
Die beiden Regeln kann man natürlich in einer ChangeNode zusammenfassen:
Hier zum Import:
Wenn Du es anhand Deiner Daten machen willst, dann kopiere die Daten (copy value) wie hier gezeigt in die Zwischenablage
und dann im Thread hier in code tags:
-
@oliverio super Tipp. vielen dank!
-
@mickym herzlichen dank, das probiere ich gleich.
War jetzt ein paar tage beruflich weg, weshalb ich erst jetzt antworten kann -
@mickym Ich hab das jetzt mal so gelöst
Habe festgestellt, dass wenn ich den String in gleich große Strings a 6 Zeichen teile, bekomme ich eine Maeldung mit genau den daten die ich brauch. Ich mach dann ein Array draus und filtere den Block aus, den ich brauch.
It vielleicht nicht die eleganteste Lösung, aber es scheint zu funktionieren. -
@patzelts said in Bereich aus ASCII-String herausfiltern:
Hallo Gemeinde,
Ich bin ein absoluter Node-red Novize und scheitere wahrscheinlich deshalb an folgender Aufgabe.
Ich habe einen ASCII-String den ich von einer recht alten PV-Anlage über serielle Schnittstelle auslese.Das sieht dann so aus.
Eigentlich sollten die Daten alle 10 Sekunden kommen, tun sie aber nicht, das ist aber zweitrangig, hauptsache einmal pro Minute kommt was, was schon der Fall ist. Dennoch, vielleicht hat einer eine Idee woran das liegen kann. Der WR sendet alle 10 Sekunden, aber vom Node bekomme ich nicht alle Daten, warum auch immer.Das eigentliche Problem ist, ich brauche aus dem String nur die markierten 4 Stellen (hier die " 146". was die aktuelle Leistung des WR ist). Alles andere ist uninteresant. Wie komm ich an diese 4 Stellen?
Für ein paar Tips wäre ich echt dankbar
Grüße
Stephan
-
@patzelts Na ja ich verstehe zwar nicht, was an meiner Lösung nicht funktioniert hat - aber wenn Du es gelöst hast, dann ist ja gut.