NEWS
Payload String zerlegen
-
@rieders Am besten ist es aus dem Debugfenster einfach den Pfad kopieren. Sprich du schaust, was aus debug2 rauskommt und kopierst den Pfad, des Wertes den Du anzeigen willst.
Wenn ich also Dein Objekt nehme (Dein Flow lässt sich nicht importieren, da Du keine CodeTags verwendest) und möchte den Total Wert in der Text Node anzeigen, gehe ich mit dem Cursor dahin und kopieren den Pfad:
Dann kommt folgendes raus:
payload.SDM630.Total
Das kannst Du nun direkt in der text node verwenden oder die payload verändern um es dann in einer gauge anzuzeigen.
In der Text-Node:
Mit der Change-Node:
Hier mal mein Flow richtig exportiert in CodeTags:
-
Vielen Dank für die Hilfe.
Das Auslesen funktioniert super.
Ich weiß nur nicht wie du aus dem debug2 den Pfad ausgelesen hast, bei mir sieht das ganz anders aus.Jetzt kann ich die Daten an Venus OS übergeben und hoffentlich als virtualen Zähler sehen.
-
@rieders Hab ich gar nicht, da ich deinen Flow ja nicht importieren konnte (nicht in CodeTags), aber Du hast ja die Daten zum Glück bzw. das Objekt gepostet und so habe ich es einfach in die Inject Node geschrieben. Du kannst übrigens direkt in ein Objekt wandeln lassen, dann kannst du das direkt nach der mqtt-In Node machen, in dem Du Dir ein analysiertes Objekt ausgeben lässt.
Dann brauchst nach der mqtt-In auch nichts mehr konvertieren.
-
@mickym
Sorry, das ich mich hier mit ranhänge. Mein Problem ist denk mal ähnlich.
Ich möchte relatives Dimmen von KNX auf Zigbee umsetzen.
Dazu müßte wohl auch der Payload zerlegt werdenHier die Ausgaben vom KNX.
Taster ist gedrückt und soll runterdimmen:
{"topic":"1/4/26","devicename":"","payload":{"decr_incr":0,"data":1},"payloadmeasureunit":"unknown","payloadsubtypevalue":"unknown","knx":{"event":"GroupValue_Write","dpt":"3.007","dptdesc":"Dimming control","source":"1.1.4","destination":"1/4/26","rawValue":[1]},"previouspayload":{"decr_incr":0,"data":0},"_msgid":"34735868e6770bd1"}
Taster losgelassen, dimmen soll stoppen:
{"topic":"1/4/26","devicename":"","payload":{"decr_incr":0,"data":0},"payloadmeasureunit":"unknown","payloadsubtypevalue":"unknown","knx":{"event":"GroupValue_Write","dpt":"3.007","dptdesc":"Dimming control","source":"1.1.4","destination":"1/4/26","rawValue":[0]},"previouspayload":{"decr_incr":0,"data":1},"_msgid":"a4982ca3e5461702"}
Taster ist gedrückt und soll hochdimmen:
{"topic":"1/4/26","devicename":"","payload":{"decr_incr":1,"data":1},"payloadmeasureunit":"unknown","payloadsubtypevalue":"unknown","knx":{"event":"GroupValue_Write","dpt":"3.007","dptdesc":"Dimming control","source":"1.1.4","destination":"1/4/26","rawValue":[9]},"previouspayload":{"decr_incr":0,"data":0},"_msgid":"12ada754ecbda05f"}
Taster losgelassen, dimmen soll stoppen:
{"topic":"1/4/26","devicename":"","payload":{"decr_incr":0,"data":0},"payloadmeasureunit":"unknown","payloadsubtypevalue":"unknown","knx":{"event":"GroupValue_Write","dpt":"3.007","dptdesc":"Dimming control","source":"1.1.4","destination":"1/4/26","rawValue":[0]},"previouspayload":{"decr_incr":1,"data":1},"_msgid":"dabb632a5c74b60d"}
Änderungen sehe ich hier jeweils bei :
{"decr_incr":x,"data":x}Die Befehle für die Zigbee Leuchtmittel hab ich getestet, bei direktem schicken auf den DP funktionieren die schonmal.
z.B.
hochdimmen={"brightness_move": 40}
runterdimmen={"brightness_move": -40}
stoppen={"brightness_move": 0}Hab schon etliche Stunden mit der "Change" Node rumprobiert, allerdings ohne Erfolg
Wie muß ich vorgehen, um die KNX Befehle auf Zigbee umzusetzen?
-
@frankthegreat Na ja - da ist noch etwas mehr Logik im Spiel und das muss man sich trotz aller Flows genau überlegen. Ich hab ja mal einen softdimmer ähnlich mit einem vis Widget erstellt.
das mit dem hoch und runter Dimmen - kann man grundsätzlich mit mehreren Arten machen wahrscheinlich gibts den brightness Datenpunkt im Zigbee auch als absolute Werte. Move geht auch und vereinfacht das Ganze wohl eher.
Im Prinzip, wenn es sich so darstellt, dann wäre
data: 1 immer gedrückt = dimmen
data: 0 immer losgelassen = stoppendecr_incr: 1 bei data 1 = hochdimmen
decr_incr: 0 bei data 1 = runterdimmen.Da wir immer stoppen egal wie gerade gedimmt wurde, ist uns egal welchen Zustand das Teil vorher hatte. Auf dieser Basis probieren wird das mal - kleinen Moment.
So müsste das jetzt mal quick & dirty funktionieren:
Statt der Inject Node halt Deine KNX Nodes dran machen und hinten halt in den brightness_move Datenpunkt ausgeben.
Das geht auch mit einer switch Node - nur dann muss man halt JSONATA verwenden und bei der ersten Übereinstimmung stoppen - dafür schaut der Flow übersichtlicher aus.
-
@mickym
Jepp...und läuft auf AnhiebSupi, danke dir. Abend gerettet.
Ich hatte hauptsächlich versucht in diesen DP zu schreiben. Da hatt's aber mit der Umwandlung nicht geklappt.
Aber so geht's natürlich auch.
Nochmal DANKE
-
-
-
@1984chris ich will die einzelnen Werte L1,L2,L3 Ströme A_L1,A_l2 usw an die influxDB übertragen
-
@1984chris Wenn ich Dir helfen soll, dann solltest Du den Wert in die Zwischenablage kopieren und hier in Codetags einbetten.
Dann woher hast Du das - kommt das aus einer iobroker IN Node oder aus einer mqtt Node?
Willst Du alle Werte in einzelne Datenpunkte zerlegen oder nur einzelne Werte extrahieren und weiter verarbeiten?
Einzelne Werte kopierst Du in die Zwischenablage in dem Du mit der Maul im Debug Fenster neben den Wert fährst.Wenn Du es in der Zwischenablage hast, dann kopierst Du es bitte in Code-Tags wie hier dargestellt:
Und wie gesagt - wer es nett, wenn Du ein paar Zeilen dazu schreiben möchtest, was Du möchtest
-
@1984chris sagte in Payload String zerlegen:
@1984chris ich will die einzelnen Werte L1,L2,L3 Ströme A_L1,A_l2 usw an die influxDB übertragen
Dann wäre es wohl sinnvoll einzelne Werte zu erstellen, dann empfehle ich Dir meinen Flow - der den ganzen JSON in einzelne Datenpunkte schreibt:
https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
Dann brauchst Du nur diesen Flow zu importieren.
Im 1. Post ist eigentlich alles beschrieben und welche Einstellungen Du machen willst. Falls Du noch Fragen hast, dann gerne. Also hängt davon ab, ob Du nur ein paar Werte haben willst oder alle Werte einzeln haben möchtest.
-
@mickym ```
{"Time":"2023-05-16T19:45:29","Tagstrom":{"V_L1":233,"V_L3":236,"V_L3":236,"A_L1":0.63,"A_L2":2.33,"A_L3":0.32,"W_IN":590,"W_OUT":0,"kWh_total_IN":19147.756,"kWh_total_OUT":776.383},"WäPu":{"V_L1":232,"V_L3":236,"V_L3":235,"A_L1":0.48,"A_L2":0.00,"A_L3":0.02,"W_IN":112,"W_OUT":0,"kWh_total_IN":21698.535,"kWh_total_OUT":0.000}}
die Daten kommen von einenm Nodred in mqtt ich bekomme das auf der Debugseite nicht so angezeigt wie du im Beispiel. Will die einzelnen Werte dan in eine influxDB und weiter mit GRAFANA....
-
@1984chris Wie gesagt wenn Du alle Werte haben willst, hast Du meinen Flow importiert und das Erstellen von Objekten zugelassen?
-
@1984chris sagte in Payload String zerlegen:
{"Time":"2023-05-16T19:45:29","Tagstrom":{"V_L1":233,"V_L3":236,"V_L3":236,"A_L1":0.63,"A_L2":2.33,"A_L3":0.32,"W_IN":590,"W_OUT":0,"kWh_total_IN":19147.756,"kWh_total_OUT":776.383},"WäPu":{"V_L1":232,"V_L3":236,"V_L3":235,"A_L1":0.48,"A_L2":0.00,"A_L3":0.02,"W_IN":112,"W_OUT":0,"kWh_total_IN":21698.535,"kWh_total_OUT":0.000}}
In dem Tagstrom ist ein komisches Zeichen - hast Du den String über Wert kopieren reinkopiert oder mit der Maus?
{ "Time": "2023-05-16T19:45:29", "Tagstrom": { "V_L1": 233, "V_L3": 236, "A_L1": 0.63, "A_L2": 2.33, "A_L3": 0.32, "W_IN": 590, "W_OUT": 0, "kWh_total_IN": 19147.756, "kWh_total_OUT": 776.383 }, "WäPu": { "V_L1": 232, "V_L3": 235, "A_L1": 0.48, "A_L2": 0, "A_L3": 0.02, "W_IN": 112, "W_OUT": 0, "kWh_total_IN": 21698.535, "kWh_total_OUT": 0 } }
So funktioniert es.
-
Mit der Maus, wenn ich über Wert kopieren reinkopiere kommt
[123,34,84,105,109,101,34,58,34,50,48,50,51,45,48,53,45,49,54,84,49,57,58,52,53,58,50,57,34,44,34,84,97,103,115,116,114,111,109,1,34,58,123,34,86,95,76,49,34,58,50,51,51,44,34,86,95,76,51,34,58,50,51,54,44,34,86,95,76,51,34,58,50,51,54,44,34,65,95,76,49,34,58,48,46,54,51,44,34,65,95,76,50,34,58,50,46,51,51,44,34,65,95,76,51,34,58,48,46,51,50,44,34,87,95,73,78,34,58,53,57,48,44,34,87,95,79,85,84,34,58,48,44,34,107,87,104,95,116,111,116,97,108,95,73,78,34,58,49,57,49,52,55,46,55,53,54,44,34,107,87,104,95,116,111,116,97,108,95,79,85,84,34,58,55,55,54,46,51,56,51,125,44,34,87,195,164,80,117,34,58,123,34,86,95,76,49,34,58,50,51,50,44,34,86,95,76,51,34,58,50,51,54,44,34,86,95,76,51,34,58,50,51,53,44,34,65,95,76,49,34,58,48,46,52,56,44,34,65,95,76,50,34,58,48,46,48,48,44,34,65,95,76,51,34,58,48,46,48,50,44,34,87,95,73,78,34,58,49,49,50,44,34,87,95,79,85,84,34,58,48,44,34,107,87,104,95,116,111,116,97,108,95,73,78,34,58,50,49,54,57,56,46,53,51,53,44,34,107,87,104,95,116,111,116,97,108,95,79,85,84,34,58,48,46,48,48,48,125,125]
-
@1984chris Na OK - ich weiss nicht was Du da genau gemacht hast.
Wie gesagt wenn Du meinen Flow importierst - habe ich gerade gemacht - dann erhälst Du folgende Struktur
Wenn Du mein Flow hast - dann brauchst Du nur die neue Node und eine iobroker-Out Node:
wie gesagt die Fremdobjekte erstellen zulassen und in der Node angeben unter welchem Datenpunkt die Datenpunkte angelegt werden sollen:
Hier zum Import:
In der NodeRed Adapter konfig schauen, dass Fremdobjekte erstellt werden dürfen und die Konvertierung ausgeschaltet ist.
-
Bin blutiger Anfänger in NodeRed und habe keine Programierkenntnisse,hab mir gedacht das geht so einfach.
-
@1984chris Geht dich auch einfach. Also Schritt für Schritt:
- Hast Du die Einstellungen in der Adapterkonfiguration gemacht?
- Weißt Du wie man einen Flow importiert?
-
Ich habe noch kein iobrocker.
habe via Docker MQTT NODERED InfluxDB und GRAFANA laufen -
@1984chris Ah OK - gut das ändert natürlich einiges.
Gut kannst Du mal einen Screenshot von Deinem Flow machen und dann stelle bitte in deinen mqtt-Nodes ein, dass das Objekt komplett analysiert werden soll.
Dann solltest du nun in dem Debug Fenster keinen String sondern ein Objekt bekommen. Wenn Du das hast - dann mach da mal ein Screenshot von Deinem Debug Fenster.
Welche Influx DB Version nutzt Du denn?