NEWS
Rasp2 serial überwachen, per mqtt an iobroker übertragen.
-
@beliar_666 OK - ich kann den Flow nicht mehr zurück importieren - weil die Importfunktion ein Problem mit den regulären Ausdrücken hat. In Zukunft bitte den Export in </> Code Tags.
Aber ich habe trotzdem gesehen, wo das Problem ist. In der Switch Node steht msg.top da muss aber stehen msg.topic.
Wenn die Strings so sind, wie Du sie unten gepostet hast - dann die Change und Switch Node wie folgt konfigurieren - hierdie Screenshots - erstmal gesamt - ich habe natürlich wieder die Inject Nodes anstelle der seriellen Node hingehängt um den Input zu simulieren:
So die erste Change Node - da wird der Input scheitern schaut so aus. Die musst Du halt aus dem Screenshot nun selbst abbilden.
Achte darauf dass Du am Anfang beim Ändern auf reguläre Ausdrücke gestellt hast .* und dann kannst Du sowohl beim topic oder payload den gleichen regulären Ausdruck verwenden:
(\d)\s(.*)
Das msg.topic ist dann $1 und msg.payload ist $2.
Die switch Node muss so aussehen:
Achte auf Typ und das nach msg.topic unterschieden wird - wie in der Change Node zuvor definiert:
-
@mickym sagte in Rasp2 serial überwachen, per mqtt an iobroker übertragen.:
Also nach Change teilt er mir die 2 auf, siehe Screenshot. Aber der Switch blockt wieder. Nachg dem Switch bleibt die Ausgabe wieder leer.
-
@beliar_666 Ja passt doch - der switch teilt das dann auf die beiden Äste. ggf. muss man am Schluss noch die Zeilenschaltung entfernen. - Du könntest den regulären Ausdruck nochmals wie folgt ändern
(\d)\s(.*)\s
Mach halt mal einen Screenshot des switch hast du msg.top gegen msg.topic geändert wie gesagt?
-
-
@beliar_666 Nun vielleicht ist da irgendein Steuerzeichen drin, dass ich nicht sehe.
Dann mach mal in dem Switch statt == 1 ==> enthält 1 bzw. enthält 2
-
@beliar_666 Andernfalls zeig mal den Screenshot dieser Debug-Nodes mit dem vollständigen Nachrichtenobjekt und klappe bitte alle Daten aus (Pfeil nach unten)
-
@mickym Genau das war es so wie es ausschaut kommen jetzt Daten hinterm Switch an.
Aber nun kam mir grad noch etwas in den Sinn, wenn jetzt weitere Sender hinzu kommen, die dann als Kennung 0, 3, 4, 5, etc. haben, wie binde ich die dann in den change ein? Oder geht das dann gar nicht?
-
@beliar_666
Geht alles - aber wenn das variable ist - dann muss man halt den topic erst später aufteilen. Dann machen wir nur einen Ast. Ich überlege mir mal eine Alternative. -
@mickym Ich habe jetzt grad mal den Flow zu ende gebracht. Ich glaube in einem Zweig ist ein Fehler. Denn beim Datensatz 1 kommt nur der Wert be an.
nun vermute ich den Fehler im change im Zweig 1 oder 2, denn die sind identisch und lauten beide auf $1. Oder ist das hier richtig weil es nach dem switch getrennte Zweige sind?
-
@beliar_666
So nun mal eine weitere Version - Sorgen macht mir zwar dieses komische Steuerzeichen - aber schaun wir mal.Nachdem der Import mit den regulären Ausdrücken Probleme macht - hier erst mal der Flow die regulären Ausdrücken nacharbeiten.
In die 1. Change Node folgenden regulären Ausdruck:
(\d)\s(.*)
In die 2. Change Node folgenden regulären Ausdruck:
(.*)=(.*)
Das ist das Ergebnis - aber mit dem Steuerzeichen, weiß ich nicht 100%ig obs klappt.
-
@mickym sagte in Rasp2 serial überwachen, per mqtt an iobroker übertragen.:
Das klappt soweit, bis auf kleine Schönheitsfehler. 1 Werdt kommt Doppelt und die Sensorkennung wird auch mit aufgenommen. Das ist aber jetzt eher zu vernachlässigen.
Und hier erkennt der dann automatisch wenn eine andere Kennung als 1 oder 2 kommt?
Ah, die Werte kamen nicht doppelt. die kamen vorher al be_ und kommen jetzt als be__ und v kommt jetzt als __v aber das ist nicht weiter tragisch.
Die einzelnen Werte müssen eh noch umgerechnet werden und bekommen dann lesbare Datenpunkte
-
@beliar_666 Die Sensorkennung wird mitgenommen - das sehe ich aber nicht als Problem - das die Werte doppelt kommen, kann ich leider nicht nachvollziehen:
Momentan bekommt er alle Sensoren mit einer einstelligen Zahl mit - falls es 2stellige Sensorenbezeihnungen gibt - musst den regulären Ausdruck in der 1. Change Node wie folgt ändern:
(\d+)\s(.*)
Der Topic der Sensoren wird nun aus dem Sensor Datenpunkt selbst gebildet:
In der change NOde setze msg.top siehst Du das der Topic unter dem die Datenpunkte erstellt werden nun
über den Sensorwert gebildet wird:
Wenn Dich der Sensorwert stört kannst ja in der Change Node wo die msg.top gesetzt wird noch den Wert löschen:
-
@mickym
Ah, die Werte kamen nicht doppelt. die kamen vorher al be_ und kommen jetzt als be__ und v kommt jetzt als __v aber das ist nicht weiter tragisch.Warum der bei mir be__ und __v macht und bei Dir nicht? Aber das ist wirklich nicht tragisch.
Die einzelnen Werte müssen eh noch umgerechnet werden und bekommen dann lesbare Datenpunkte
-
@beliar_666 Ich hab Dir das ja zum Löschen noch des Sensorwertes noch mitgeschickt. Das Problem ist das man die Steuerzeichen nicht sieht.
Im Prinzip musst Du auch nicht alles so als Datenpunkte abspeichern. Wie gesagt kannst Du nach der JOIN - Node nur auf die benötigten Eigenschaften zugreifen.
Du kannst ja mal den regulären Ausdruck in der 2. Change Node versuchen - ob der die Unterstriche wegmacht.
.?(\w+).?=(.*)
Du musst halt die Datenpunkte in dem mqtt Adapter löschen. Ich hoffe Du hast kein retain gesetzt - ansonsten musst halt die gesamte Datenbank im mqtt Adapter nochmal löschen.
-
@mickym Auf jeden Fall sag ich mal ganz Fett Danke. Ich werde morgen mal etwas experimentieren. Und mir die ganzen Nodes mal genau anschauen.
So ganz plausibel sind mir die Werte in den Nodes noch nicht, aber ansich sollte das ja zu verstehen sein. nun aber erstmal schnell ins Bett um 5 ist Nachtende....