NEWS
Smartmeter -> NR
-
@mickym
Ja, das stimmt natürlich - muss ich schauen wie ich das am besten machen kann. Bevorzugen würde ich eine Lösung im Mqtt Broker.
Grundsätzlich wüsste ich nicht wie ich das sonst umsetzen soll, als beide Werte zu vergleichen (Differenz) -
@hpgo Na dann speicher das einfach unter einem Topic - hier mal wie man es mit Flowvariablen macht. Wenn Du mqtt topics nimmst, dann musst Du die sowieso wieder in Flowvariablen abspeichern - also parallel und dann setzen.
So einfach habe ich mir das vorgestellt:
[ { "id": "4bb2def3f08ebd30", "type": "inject", "z": "c7b1863ec3de5b58", "name": "trigger um Mitternacht", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "00 00 * * *", "once": false, "onceDelay": 0.1, "topic": "", "payload": "true", "payloadType": "bool", "x": 570, "y": 440, "wires": [ [ "16258346f6ff4528" ] ] }, { "id": "87acd33c808325b1", "type": "debug", "z": "c7b1863ec3de5b58", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 1050, "y": 440, "wires": [] }, { "id": "16258346f6ff4528", "type": "change", "z": "c7b1863ec3de5b58", "name": "", "rules": [ { "t": "set", "p": "aktuell", "pt": "msg", "to": "smartmeter.kwh", "tot": "flow" }, { "t": "set", "p": "vortag", "pt": "msg", "to": "$flowContext(\"smartmeter.vortag\") ? $flowContext(\"smartmeter.vortag\") : 0\t\t\t", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "aktuell - vortag", "tot": "jsonata" }, { "t": "set", "p": "smartmeter.vortag", "pt": "flow", "to": "aktuell", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 810, "y": 440, "wires": [ [ "87acd33c808325b1" ] ] } ]
In der payload ist also der Verbrauch und zum Schluss wird der aktuelle Stand schon in den Wert vortag kopiert, um den dann beim nächsten Tageswechsel zur Verfügung zu haben.
-
@mickym
Ok ich glaube, ich beginne zu verstehen wie du das meist.
Leider ist das heute schon zu viel für mich, brauch ne mütze voll schlaf - werde mir das morgen nochmal genau anschauen und wenn ich darf auch nachfragen bei dir.Für heute vielen lieben Dank
-
@hpgo sagte in Smartmeter -> NR:
@mickym
Ok ich glaube, ich beginne zu verstehen wie du das meist.
Leider ist das heute schon zu viel für mich, brauch ne mütze voll schlaf - werde mir das morgen nochmal genau anschauen und wenn ich darf auch nachfragen bei dir.Für heute vielen lieben Dank
Na klar doch! - Freue mich immer, wenn es noch Leute gibt, die dieses fantastische Tool nutzen. Schlaf gut!!!
-
@hpgo Hier mal ein ganzer Flow - mit mqtt als Zwischenspeicher. Und statt der Divide Node habe ich eine normale genommen, da ich diese 1. nicht habe und ich Nodes vermeide, wenn ich das mit Boardmitteln erreichen kann:
Der erste Teil ist quasi dein bisheriger Flow ohne diese Divide Node (ich gehe mal davon aus, dass Du hier nur die payload durch 1000 teilst).
Im mittleren Teil werden die Inhalte der mqtt topics permanent für den Flow verfügbar gemacht.
Und der letzte teil triggert zum Tageswechsel, rechnet den Tagesverbrauch als Differenz zum Vortag aus und setzt den Vortageswert neu und speichert alles wieder im mqtt ab. Dadurch dass ich die Werte in den mqtt topics als retain abspeichere, werden die Flowvariablen automatisch nach Neustart des Flows wieder belegt.
Übrigens wenn Du in den mqtt-In Nodes die Opition ein analysiertes JSON Objekt nutzt, dann kannst DU Dir die JSON Node wahrscheinlich auch sparen.
Das nutze ich auch unten um Zahlenwerte rauszubekommen. Funktioniert leider bei normalen Stings nicht, habe ich aber mal an die NOde-Red Entwickler weiter gegeben und dürfte vielleicht in Node-Red Version 3.0.x enthalten sein.
https://discourse.nodered.org/t/improvement-of-mqtt-in-nodes/55445
https://github.com/node-red/node-red/blob/98b4b0dce057047c414e7a41b7220384c0c1d11a/CHANGELOG.md
Hoffe ich mal.
-
@mickym
Wow, ein großes Dankeschön von mir für die Mühe. Jetzt muss ich mir das mal genauer anschauen.Edit: Echt bombe, was du da in kurzer Zeit zusammengeklickt hast, dafür hätte ich Tage gebraucht.
Nochmal vielen Dank, bin dir wirklich dankbar, auch wenn ich vor allem im letzten Teil nicht alles verstehe.Lg
-
@hpgo sagte in Smartmeter -> NR:
Nochmal vielen Dank, bin dir wirklich dankbar, auch wenn ich vor allem im letzten Teil nicht alles verstehe.
LgNa dann raus mit der Sprache - welche Node ist Dir unklar. Nur vom Fragen lernt man.
... oder welcher Teil des Flows (unten nach der Inject Node?)
-
@mickym
Tut mir leid das ich mich erst jetzt wieder melde, war unverhofft weg über Pfingsten.
Genau, vor allem die 2 Regel in der Change Node "$flowContext("smartmeter.vortag") ? $flowContext("smartmeter.vortag") : 0" verstehe ich gar nicht.
? und $ Zeichen?Werde jetzt mal schauen, ob das mit dem Tagesverbrauch so funktioniert.
Nochmals vielen lieben Dank an dich! -
@hpgo Nun alle Funktionen in JSONATA beginnen mit einem $
Ansonsten ist das einfach eine normale Bedigung, die es sowohl unter Javascript also auch unter JSONATA gibt:
Es wird hier nur der conditional Operator ? genommen: https://docs.jsonata.org/other-operators
In diesem Fall:
Wenn ein Inhalt der Flow Variable smartmeter.vortag gelesen werden kann ( da sie bereits gesetzt/initialisiert wurde ), soll der Inhalt der Flow Variable smartmeter.vortag zurückgegeben werden, falls nicht, dann soll 0 zurückgeggeben werden.
In der Change Node wird mit der 2. Regel als die Eigenschaft vortag des msg Objektes entweder auf 0 oder auf den Wert der Flowvariable smartmeter.vortag gesetzt.Man kann das Ganze aber auch ohne JSONATA Funkionen umsetzen:
-
... ich bin dir echt dankbar, leider melde ich mich erst jetzt wieder, unsere Familie ist größer geworden und deshalb bleibt für mein Hobby kaum noch Zeit.
Ich werd mir deinen Flow hoffentlich am Abend genauer anschauen können. Außerdem hab ich dann auch noch eine Frage zu Daten persistent (über einen NR Neustart) halten/speichern in NR (Änderung in der settings.js). Dazu mache ich dann ein eigenes Thema auf.
Danke und Lg
-
@hpgo sagte in Smartmeter -> NR:
... ich bin dir echt dankbar, leider melde ich mich erst jetzt wieder, unsere Familie ist größer geworden und deshalb bleibt für mein Hobby kaum noch Zeit.
Ich werd mir deinen Flow hoffentlich am Abend genauer anschauen können. Außerdem hab ich dann auch noch eine Frage zu Daten persistent (über einen NR Neustart) halten/speichern in NR (Änderung in der settings.js). Dazu mache ich dann ein eigenes Thema auf.
Danke und Lg
Da werde ich Dir nicht viel dazu sagen könne, da keine Daten im Dateisystem speichere. Bei mir sind die ja in der Regel im iobroker oder im mqtt.