NEWS
Auslesen Daten Stromzähler
-
@marco121990 Du setzt die payload auf die Eigenschaft des Objektes und dieses kopierst Du über das Debug Fenster raus.
Ich weiss nicht pb das Deine payload ist, aber falls es Deine payload ist dann setzt Du via Change Node die payload auf payload.Total_in usw.
-
@codierknecht sagte in Auslesen Daten Stromzähler:
@marco121990
Warum unbedingt per NodeRed (oder anderen Scripten)?
Du kannst Dir für die benötigten DP jeweils einen Alias anlegen und den Wert z.B. perJSON.parse(val).power_curr
über die Konvertierungsfunktion aus dem MQTT-DP auslesen. Diesen Alias-DP historisierst Du dann.
Vielleicht will man später noch andere Dinge mit NodeRed machen?
Man kann es auch mit Alias oder mit Blockly oder mit JavaScript machen, aber wenn man es im NodeRed Forum postet, gehe ich mal davon aus, dass man daran interessiert ist, wie es mit NodeRed funktioniert!!Wenn ich jedesmal im Blockly Forum posten würde, das man es auch mit NodeRed machen könnte, dann ....
In seinem ersten Post steht dass sich der TE in NodeRed einarbeiten möchte !!!!Ich würde gerne mit dem Auto von Hamburg nach Berlin fahren - ach fahr doch besser mit der Bahn.
-
Das habe ich so bereits versucht. Wenn ich den Pfad kopieren will erscheint das [""].Total_in. Das payload fehlt, damit ich es entsprechend per Change umwandeln kann.
-
aber wenn man es im NodeRed Forum postet
Das Unterforum habe ich natürlich mal wieder überlesen - Asche auf mein Haupt
Auf der anderen Seite: Wenn man NodeRed an der Ecke nur verwenden möchte, um irgendwie an die Einzelwerte zu kommen, geht's halt mit 'nem Alias deutlich einfacher, als sich erst mit NodeRed auseinandersetzen zu müssen.
Alternativen aufzuzeigen kann ja auch hilfreich sein -
@marco121990 Kannst Du mir mal Deinen ganzen Flow posten? Ja ist bisschen komisch, dass das Objekt keiner Nachrichteneigenschaft zugeordnet ist.
Ich gehe mal davon aus, dass es so ein Objekt ist?
-
@mickym
Habe nach einigen Fehlversuchen die Übergabe an die Influxdb zunächst wieder gelöscht und nur per debug ausgelesen.[ { "id": "f6f2187d.f17ca8", "type": "tab", "label": "Flow 1", "disabled": false, "info": "" }, { "id": "56f626e4b62c825a", "type": "mqtt in", "z": "f6f2187d.f17ca8", "name": "Strom", "topic": "tele/tasmota_Stromzaehler/SENSOR", "qos": "0", "datatype": "json", "broker": "6b0c5137b3a546c3", "nl": false, "rap": true, "rh": 0, "inputs": 0, "x": 150, "y": 100, "wires": [ [ "b26daa48e8b63891" ] ] }, { "id": "b26daa48e8b63891", "type": "debug", "z": "f6f2187d.f17ca8", "name": "debug 1", "active": true, "tosidebar": true, "console": true, "tostatus": false, "complete": "payload", "targetType": "jsonata", "statusVal": "", "statusType": "auto", "x": 370, "y": 100, "wires": [] }, { "id": "6b0c5137b3a546c3", "type": "mqtt-broker", "name": "Stromzaehler", "broker": "192.168.178.100", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" } ]
Da ich bei Youtube einige Videos zur Visualsierung über den Weg MQTT -> Note Red -> Influxdb -> Grafana gefunden habe, habe ich mich bisher nicht mit anderen Methoden auseinander gesetzt. Bin recht neu auf diesem Gebiet und habe nur wenig bis keine Ahnung davon.
Möchte iegentlich nur meinen Stromverbrauch aufzeichnen und grafisch auswerten.
-
@marco121990 Das wird von Tasmota übergeben:
22:40:54.825 MQT: tele/tasmota_Stromzaehler/STATE = {"Time":"2023-04-24T22:40:54","Uptime":"1T00:11:50","UptimeSec":87110,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":29,"MqttCount":1,"Wifi":{"AP":1,"SSId":"TP-Link","BSSId":"54:AF:97:D9:63:50","Channel":11,"Mode":"11n","RSSI":50,"Signal":-75,"LinkCount":1,"Downtime":"0T00:00:03"}}
22:40:54.834 MQT: tele/tasmota_Stromzaehler/SENSOR = {"Time":"2023-04-24T22:40:54","":{"Total_in":21816.99,"Total_out":7.12,"Power_curr":506}}
-
Wenn Du den Flow exportierst musst Du ihn unbedingt in Code-Tags einschliessen.
Sonst ist der nicht importierbar.
-
@marco121990 sagte in Auslesen Daten Stromzähler:
{"Time":"2023-04-24T22:40:54","Uptime":"1T00:11:50","UptimeSec":87110,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":29,"MqttCount":1,"Wifi":{"AP":1,"SSId":"TP-Link","BSSId":"54:AF:97:D9:63:50","Channel":11,"Mode":"11n","RSSI":50,"Signal":-75,"LinkCount":1,"Downtime":"0T00:00:03"}}
Ja das ist normalerweise eine payload.
Wenn Du das über eine iobroker-IN Node einfügst musst Du das erst in in ein Objekt wandeln - oder kommt es aus einer Mqtt- IN Node?
Wenn ich Dein Objekt nehme und in eine Inject Node nehme - ordne ich es einer payload zu - deswegen wollte ich den ganzen Flow haben, aber in code-Tags bitte.
-
@mickym Habe ich oben im ersten Post angepasst.
-
@mickym
Kommt aus einer Mqtt-in node -
@marco121990 Ja verstehe ich - Du kannst es auf Autoerkennung (1. Option lassen), dass ist die vielseitigste - das wird der payload zugewiesen.
Mach mal die Debug Node so, dass Du die Ausgabe nicht in das Systemlog schreibst, sondern ins debug Fenster.
und kein JSONATA als Ausgabe:
Sondern das msg. Objekt.
Das war bei Dir verkehrt. Dann sollte es mit dem Pfad kopieren funktionieren aus dem Debug Tab.
Wenn Du das richtig gestellt hast bekommst Du das in Deinem Debug Fenster:
Dann ist das Objekt auch Teil der payload Eigenschaft des Nachrichtenobjektes.
-
Wie gesagt der JSON stimmt nicht.
-
Das war schon einmal der erste Fehler.
Nun kann ich die Pfade als payload kopieren.Allerdings gibt er mir trotz Change alle 3 Werte aus.
So war die vorgehendweise in einem der Youtube Videos.
[ { "id": "56f626e4b62c825a", "type": "mqtt in", "z": "f6f2187d.f17ca8", "name": "Strom", "topic": "tele/tasmota_Stromzaehler/SENSOR", "qos": "0", "datatype": "auto-detect", "broker": "6b0c5137b3a546c3", "nl": false, "rap": true, "rh": 0, "inputs": 0, "x": 90, "y": 100, "wires": [ [ "707e6a5fd1adb822", "1de823b8ddeb6c63", "9ebb34cc2a3228e8" ] ] }, { "id": "b26daa48e8b63891", "type": "debug", "z": "f6f2187d.f17ca8", "name": "debug 1", "active": true, "tosidebar": true, "console": true, "tostatus": false, "complete": "payload", "targetType": "msg", "statusVal": "", "statusType": "auto", "x": 670, "y": 140, "wires": [] }, { "id": "707e6a5fd1adb822", "type": "change", "z": "f6f2187d.f17ca8", "name": "", "rules": [ { "t": "move", "p": "payload[\"\"].Total_in", "pt": "msg", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 350, "y": 200, "wires": [ [ "b26daa48e8b63891" ] ] }, { "id": "1de823b8ddeb6c63", "type": "change", "z": "f6f2187d.f17ca8", "name": "", "rules": [ { "t": "move", "p": "payload[\"\"].Total_out", "pt": "msg", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 360, "y": 240, "wires": [ [ "58e492acb7933ee1" ] ] }, { "id": "9ebb34cc2a3228e8", "type": "change", "z": "f6f2187d.f17ca8", "name": "", "rules": [ { "t": "move", "p": "payload[\"\"].Power_curr", "pt": "msg", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 370, "y": 280, "wires": [ [ "0be43a1afe4539c9" ] ] }, { "id": "58e492acb7933ee1", "type": "debug", "z": "f6f2187d.f17ca8", "name": "debug 2", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 680, "y": 200, "wires": [] }, { "id": "0be43a1afe4539c9", "type": "debug", "z": "f6f2187d.f17ca8", "name": "debug 3", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 680, "y": 260, "wires": [] }, { "id": "6b0c5137b3a546c3", "type": "mqtt-broker", "name": "Stromzaehler", "broker": "192.168.178.100", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "4", "keepalive": "60", "cleansession": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closeQos": "0", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" } ]
-
Ja das Problem ist, dass da kein richtiger JSON rauskommt. Mach bitte nochmal direkt eine debug Node an die mqtt-In NOde dran.
Und kopieren den kompletten Wert hier in CodeTags - der Eigenschaftsname fehlt nämlich komplett.
-
{"Time":"2023-04-24T23:10:24","":{"Total_in":21817.28,"Total_out":7.12,"Power_curr":554}}
-
@marco121990 sagte in Auslesen Daten Stromzähler:
Ja genau, dass ist das Problem - dass der Eigenschaftsname leer ist
-
@mickym sagte in Auslesen Daten Stromzähler:
@marco121990 sagte in Auslesen Daten Stromzähler:
Ja genau, dass ist das Problem - dass der Eigenschaftsname leer ist
Ok - ich glaube ich habe eine Umgehungslösung.
-
Das wird von tasmota anscheinend schon nicht übergeben oder?
23:15:54.844 MQT: tele/tasmota_Stromzaehler/STATE = {"Time":"2023-04-24T23:15:54","Uptime":"1T00:46:50","UptimeSec":89210,"Heap":18,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"TP-Link","BSSId":"54:AF:97:D9:63:50","Channel":11,"Mode":"11n","RSSI":54,"Signal":-73,"LinkCount":1,"Downtime":"0T00:00:03"}} 23:15:54.852 MQT: tele/tasmota_Stromzaehler/SENSOR = {"Time":"2023-04-24T23:15:54","":{"Total_in":21817.33,"Total_out":7.12,"Power_curr":514}}
-
@marco121990 Genau, das ist das Problem.
Du siehst beim State schaut es OK aus, aber ich habe eine Umgehungslösung.
Ich glaube dass Du im Tasmota noch irgendwas einstellen musst, aber zumindest kann man das Objekt teilen
Nimm den oberen Flow - der ist einfacher.