NEWS
Node Red Optimierung PV Überschuss für Anfänger
-
Hallo in die Runde,
der Sommer kommt und somit auch der Ertrag bei den PV.
Ich bin hier am Optimieren und würde gerne mittels Node Red beim fast vollen Akku den Boiler einschalten. Wenn ich diesen während des Tages geheizt habe sollte er allerdings in der Nacht nicht mehr einschalten. Somit wenn die Sonne bleibt am nächsten Tag wieder heizen.
Sollte die Sonne ausbleiben sollte das Warmwasser in der Nacht mit dem günstigeren Nachtstrom aufbereitet werden.
Somit würde ich den Überschuss sinnvoll nutzen - gleichzeitig auch den überflüssigen AC Strom von Wechselrichter der ohnehin nicht so schnell in die Batterie verschoben werden kann auch optimal, also ohne 2 maligem Umwandeln verwenden.
Das einmalige Laden am Tag funktioniert soweit gut - dann möchte ich noch den BigTimer ansteuern. Dort sind die Zeiten für die Nacht definiert.Mit dem Delay sollte dieser aber nicht aktiv werden.
Irgendwie denke ich hier zu kompliziert.
Mit welchem Node ist es denn sinnvoll hier zu arbeiten - wie würdet ihr das lösen?
Besten Dank für jeden Tipp
-
@harry_vlbg Ja das ist alles etwas verworren - insbesondere wenn Du mehrere Ausgänge irgendwohin gehen lässt und damit Nachrichten unkontrolliert duplizierst.
Ich würde jede einzelne Bedingung mit switch Nodes formulieren und dann immer alle Fälle formulieren.
Beispiel:
ich bin hier am Optimieren und würde gerne mittels Node Red beim fast vollen Akku den Boiler einschalten. Wenn ich diesen während des Tages geheizt habe sollte er allerdings in der Nacht nicht mehr einschalten:
Also die Logik formulieren.
Einspeisung - Akku fast voll und Sonne (wobei wenn Sonne weg - ist vielleicht auch der Akku nicht voll? ) - Ja dann Boiler einschalten - Flow variable Boiler geheizt
- Nein Boiler nicht einschalten - Flow variable Boiler nicht geheiztusw.
Ansonsten würde ich nicht mehr mit dem Bigtimer arbeiten - sondern mit den Chronos Nodes - da kann man dann auch filtern oder auch Kontextvariablen nutzen, wenn man ursächlich keine Zeittrigger benötigt
Mit diesen Nodes (https://flows.nodered.org/node/node-red-contrib-chronos) - und einer Superbeschreibung und WIKI (https://github.com/jensrossbach/node-red-contrib-chronos/wiki) - bist Du eigentlich für das meiste gewappnet. -
@mickym
Danke für die Info - dann werde ich mich morgen mal einlesen.
Das mit dem BigTimer habe ich gemerkt das es nicht funktioniert. -
@harry_vlbg Das wichtigste ist, dass Du eine Logik mal als Text, wie in einem Kochbuch formulierst, dann erstellt man die Flows quasi automatisch. Versuch mal alle Regeln, die Dir einfallen - in Textform aufzuschreiben, so wie ich das unten gemacht habe.
-
ja wenn das so einfach wäre habe mal den chronos runtergeladen und angeschaut.
Da stoße ich an meine Grenzen.Grundsätzlich kenn ich das Kochbuch.
So wie es jetzt ist für den Tag passt recht gut.
Wenn die Batterie den Ladezustand erreicht hat wird der Boiler geheizt.
Dann nach 45 Minuten wieder deaktivert. Alles nur 1 mal pro Tag da die Übermittlung dann wieder für 12 Stunden unterbrochen wird. Somit müsste eh wieder der Tag kommen und das Spiel beginnt von vorne.
Schön wäre noch ein Schalter vorab um dies zu aktivieren/deaktivieren. Also den ganzen Flow. Dann könnte ich es im Urlaub deaktivieren.jetzt müsste ich mit einem Trigger den Zustand das geheizt worden ist speichern und somit die nächsten 12 Stunden nicht mehr einschalten.
Wenn nicht geheizt wurde sollte theoretisch am nächsten Tag von 01.00 Uhr bis 02:30 eingeschaltet werden.
und der Trigger müsste auch zurückgesetzt werden.... -
jetzt müsste ich mit einem Trigger den Zustand das geheizt worden ist speichern
Nein Du setzt einfach eine Flowvariable Boiler_geheizt zusemmen mit dem Befehl Boiler ein. Eine Frage noch was machen die http Request Nodes wenn Du mit Shelly Nodes schaltest?
Dann nimmst Du einen Zeittrigger - da langt eine Inject Node - die prüft den Status, ob der Boiler geheizt wurde. Wenn nein wird der Boiler geheizt und anschließend die Variable zurückgesetzt. Wenn ja wird nur die Variable gesetzt.
MIt dem Urlaub kannst Du eine globale Kontextvariable Urlaub setzen (kannst Du dann für mehrere Flows nehmen) und den Flow mit einer Switch Node blockieren, wenn Du im Urlaub bist. Diese setzt Du gleich am Anfang in Serie. Ich würde auch an Deiner Stelle nicht mit einer Delay Node 12 h warten, sondern anhand der Flowvariable ob der Boiler geheizt wurde. Denn in er muss ja auch bei Überschuss nicht geheizt werden, wenn Du ihn in der Nacht bereits geheizt hast. Du musst das immer ganzheitlich betrachten.
-
@mickym
also bei der Shelly Node verwende ich nur das ein/ausschalten
http://192.168.xx.xx/relay/0?turn=on
im Shelly selber mache ich nichts - aber vielleicht noch zu überdenken ob der mir was zurückgeben könnte ???
Das mit den 12 Stunden habe ich mir so gedacht da ja dieser Zustand auch 2 mal am Tag erreicht werden könnte. Dafür gibts mir dann aber über Telegramm die Info über den Akkustand.
Dann kann ich ganz analog bei Bedarf den Geschirrspüler oder die Waschmaschine einschalten.
Oder eben im Sommer den Außenkühlschrank dass das Bier nicht warm wird.
Klingt ja alles einfach wenn man das so liest bei dir -
@harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:
Klingt ja alles einfach wenn man das so liest bei dir
Na wenn Du Hilfe zu dem Geschriebenen brauchst, dann machen wir das gerne zusammen.
-
@mickym das wäre volle super. Können wir über Teams oder so?
Gerne kannst du mir deine eMail an mein Telegramm senden dann lade ich dich ein.
@harrybeinfortund natürlich deine Wunschzeit??
-
@harry_vlbg Nein - ich mache das meist hier im Thread. Ich finde dazu ist so ein Forum da, damit auch andere profitieren können.
Als allererstes aber nochmal die Frage, warum schaltest Du die Shelly über http, wenn Du die Shelly Nodes hast?
-
@mickym aber kannst du hier auf mein PC Zugreifen das wir das gemeinsam machen können oder wie stellst du dir das vor?
-
@harry_vlbg sagte in Node Red Optimierung PV Überschuss für Anfänger:
@mickym aber kannst du hier auf mein PC Zugreifen das wir das gemeinsam machen können oder wie stellst du dir das vor?
Nun Du kannst Deinen Flow exportieren und dann kann ich den importieren - ansonsten meist über Screenshots und halt schreiben. Solche Projekte habe ich schon mehrfach gemacht. Nur nochmal die Frage, warum Shelly Nodes UND http`?
-
@mickym den Shelly Node habe ich halt hier im Node Red und damit kann ich mittels http den Shelly ein und ausschalten.
war für mich der erste Ansatz und hat geklapptok dann werde ich mal das unnutze Zeugs löschen und dir die Json daten hier reinstellen
-
@mickym
dann ist das der Stand wie beim letzten Bild.
Also das mit den 12 Stunden passt so für mich. Wenn in der Nacht geheizt wird soll er dennoch am Tag bei den richtigen Bedingungen nachfeuern.[ { "id": "0be53785c72fb931", "type": "tab", "label": "Flow 1", "disabled": false, "info": "", "env": [] }, { "id": "cf09bc5276f7be79", "type": "shelly-gen2", "z": "0be53785c72fb931", "hostname": "192.168.178.54", "description": "Boiler_Bad", "mode": "polling", "verbose": false, "server": "", "outputmode": "event", "uploadretryinterval": 5000, "pollinginterval": "6000", "pollstatus": false, "getstatusoncommand": true, "devicetype": "SNSW-001P16EU", "devicetypemustmatchexactly": true, "captureblutooth": false, "outputs": 1, "x": 950, "y": 240, "wires": [ [ "aa58cc0f316c4f70" ] ], "inputLabels": [ "payload.switch0.id" ], "outputLabels": [ "1" ] }, { "id": "8fab423dfb34e072", "type": "switch", "z": "0be53785c72fb931", "name": "Ladezustand Batterie > 95%", "property": "payload", "propertyType": "msg", "rules": [ { "t": "gte", "v": "95", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 160, "y": 240, "wires": [ [ "93e2aa46a4a02ee0" ] ] }, { "id": "0b247bc8d9ca735e", "type": "victron-input-battery", "z": "0be53785c72fb931", "service": "com.victronenergy.battery/512", "path": "/Capacity", "serviceObj": { "service": "com.victronenergy.battery/512", "name": "Pytes battery" }, "pathObj": { "path": "/Capacity", "type": "float", "name": "Capacity (Ah)" }, "name": "", "onlyChanges": true, "roundValues": "no", "x": 140, "y": 60, "wires": [ [ "8fab423dfb34e072" ] ] }, { "id": "b2a7ee2ce7767b6b", "type": "http request", "z": "0be53785c72fb931", "name": "Shelly Befehl Boiler ein", "method": "GET", "ret": "txt", "paytoqs": "ignore", "url": "http://192.168.178.54/relay/0?turn=on", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 670, "y": 140, "wires": [ [ "cf09bc5276f7be79", "bc55c22dbd242ea5" ] ] }, { "id": "bc55c22dbd242ea5", "type": "delay", "z": "0be53785c72fb931", "name": "", "pauseType": "delay", "timeout": "45", "timeoutUnits": "minutes", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "allowrate": false, "outputs": 1, "x": 490, "y": 240, "wires": [ [ "a8814585a8e2257f" ] ] }, { "id": "a8814585a8e2257f", "type": "http request", "z": "0be53785c72fb931", "name": "Boiler aus nach 45 Min", "method": "GET", "ret": "txt", "paytoqs": "ignore", "url": "http://192.168.178.54/relay/0?turn=off", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 720, "y": 240, "wires": [ [ "cf09bc5276f7be79" ] ] }, { "id": "93e2aa46a4a02ee0", "type": "delay", "z": "0be53785c72fb931", "name": "1 Message pro 12 H", "pauseType": "rate", "timeout": "5", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "12", "rateUnits": "hour", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "allowrate": false, "outputs": 1, "x": 380, "y": 140, "wires": [ [ "b2a7ee2ce7767b6b" ] ], "info": "1 Message pro 12 Stunden um dem Boiler nicht mehrmals im tag einzuschalten.\n" }, { "id": "aa58cc0f316c4f70", "type": "change", "z": "0be53785c72fb931", "name": "Boiler geheizt", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "boiler geheizt", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1200, "y": 240, "wires": [ [] ] } ]
**MOD-EDIT: Code in code-tags gesetzt!*ĺ
-
@harry_vlbg Ja aber so kann man das nicht importieren.
Du musst das ganze in CodeTags packen und dann kannst Du das ganze noch mit einem Spoiler klein machen.
Also erst das Auge:
dann den Codecs in den Spoiler
und dann immer halb des Auges die CodeTags
und dann innerhalb der CodeTags den Code des Exports den "code_text" überschreiben
-
Also ändere Deinen Post nochmal . so dass der Export entsprechend importierbar ist.
Und dann werden wir uns um die Shelly Nodes kümmern - denn es macht keinen Sinn, dass Du HTTP und die Shelly Nodes verwendest.
-
-
@mickym hat das jetzt so geklappt?
funktioniert aber hervorragend mit http
Ist halte ein Gen2 -
@harry_vlbg Ja der import hat soweit funktioniert.
Das Victron Teil habe ich nicht, aber das kann ich mit Inject Nodes simulieren.
-
@mickym bin ich schon froh das ich das soweit geschafft habe
wäre einfacher auf meinem PC.
also du machst jetzt diesen Change Note mit der Variable Boiler geheizt und startest um 1 Uhr morgens am nächsten Tag den Boiler wenn er die letzten 12 Stunden nicht geheizt hat?