Pumpensteuerung Solar
Moderator: Co-Administratoren
-
- Beiträge: 38
- Registriert: 02.12.2020, 21:34
- System: CCU
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Pumpensteuerung Solar
Hallo,
Ich habe eine Pool-Pumpe die ich gerne ansteuern würde. Ich habe dazu einfach einen HMIP-Schaltaktor 1 Fach dazwischen gebastelt, womit ich ein und ausschalten kann.
Zusätzlich habe ich eine Systemvariable, die mit meinen aktuellen Stromverbrauch anzeigt.
Jetzt würde ich gerne, dass wenn der Stromzähler auf -600W geht, die Pumpe einschaltet. Gleichzeitig möchte ich, dass die Pumpe ausschaltet, wenn 0 oder mehr angezeigt wird. Dazu möchte ich, dass Ausschalten um 20 Sekunden verzögern und das einschalten um 10 Sekunden.
Hintergrund: Kurze spitzen im Haus, oder Wolken am Himmel sollen die Pumpe nicht abschalten.
Soweit wäre der Flow klar, nur stören die Überschneidungen. Wenn die Sonne scheint, wird „einschalten“ geschickt. Kommt eine Wolke, wird „ausschalten“ geschickt. Also passiert es regelmäßig dass die Pumpe ausschaltet und sofort wieder an.
Wie kann ich denn effektiv erreichen, dass eine Aktion abgebrochen wird ?
Also wenn der Flow „Pumpe ausschalten“ aktiv ist und bei der Verzögerung steht, muss das abgebrochen werden, wenn „Pumpe einschalten“ getriggert wird.
Hier mein bisheriger Aufbau:
* Bitte "Aquariumbelüftung" einfach ignorieren. Das habe ich gemacht, da ich das Aquarium hier habe und sehe was passiert. Und dort passiert nicht viel. Dauernd Pumpe an / aus finde ich schlecht und die Nachbarn müssen ja auch nicht genervt werden. Danke!!
Ich habe eine Pool-Pumpe die ich gerne ansteuern würde. Ich habe dazu einfach einen HMIP-Schaltaktor 1 Fach dazwischen gebastelt, womit ich ein und ausschalten kann.
Zusätzlich habe ich eine Systemvariable, die mit meinen aktuellen Stromverbrauch anzeigt.
Jetzt würde ich gerne, dass wenn der Stromzähler auf -600W geht, die Pumpe einschaltet. Gleichzeitig möchte ich, dass die Pumpe ausschaltet, wenn 0 oder mehr angezeigt wird. Dazu möchte ich, dass Ausschalten um 20 Sekunden verzögern und das einschalten um 10 Sekunden.
Hintergrund: Kurze spitzen im Haus, oder Wolken am Himmel sollen die Pumpe nicht abschalten.
Soweit wäre der Flow klar, nur stören die Überschneidungen. Wenn die Sonne scheint, wird „einschalten“ geschickt. Kommt eine Wolke, wird „ausschalten“ geschickt. Also passiert es regelmäßig dass die Pumpe ausschaltet und sofort wieder an.
Wie kann ich denn effektiv erreichen, dass eine Aktion abgebrochen wird ?
Also wenn der Flow „Pumpe ausschalten“ aktiv ist und bei der Verzögerung steht, muss das abgebrochen werden, wenn „Pumpe einschalten“ getriggert wird.
Hier mein bisheriger Aufbau:
* Bitte "Aquariumbelüftung" einfach ignorieren. Das habe ich gemacht, da ich das Aquarium hier habe und sehe was passiert. Und dort passiert nicht viel. Dauernd Pumpe an / aus finde ich schlecht und die Nachbarn müssen ja auch nicht genervt werden. Danke!!
-
- Beiträge: 513
- Registriert: 29.05.2019, 22:19
- Wohnort: Bargfeld
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 49 Mal
Re: Pumpensteuerung Solar
Moin
Musst du eine Hystherese einbauen. Ich habe das für meine Poolheizung gemacht um die Sonne zu erkennen per Helligkeit. Der Helligkeitssensor gibt jede Minute die Helligkeit aus, damit gehe ich in einen Switch node wo ich die einschalt und die auschaltschwelle festgelegt habe. Die Ausgänge des Switch node gehen auf jeweils einen Trigger node. Der Trigger für Sonnen an wird bei größer 30000 Lux angestoßen, macht erstmal nix und nach 2 Minuten kommt dort mein Signal sonne scheint raus. Der zweite Ausgang vom Switch node ist auf 20000 Lux (also sonne scheint nicht mehr) und Resettet den Trigger Node für Sonne scheint, dh wenn 2 Minuten die Lux stärke nicht unter 20000 war wird eingeschaltet. Fürs auschalten ein zweiter Trigger node der 5 Minuten wartet und bei kleiner 20000 Lux gestartet wird bzw bei größer 30000 Lux einen Reset macht.
Gibt vielleicht bessere Lösungen aber funktioniert bei mir so.
in dem Beispiel ein Wert kleiner 10 stößt den einen Trigger an der nach 25 Sek (soll ja zum testen nicht so lange dauern) das Aussignal sendet.
Passiert in dieser Zeit nix oder ein Wert größer 10 aber kleiner 30 kommt, passiert auch nix. Nach 25 Sek ist dann aus. Sollte inerhalb von der Zeit ein Wert größer 30 kommen wird der Trigger Resettet und der andere gesetzt. Wenn du nur für das ausschalten das haben möchtest lass den kurzen Trigger weg und schalte gleich beim überschreiten der schwelle ein.
Musst du eine Hystherese einbauen. Ich habe das für meine Poolheizung gemacht um die Sonne zu erkennen per Helligkeit. Der Helligkeitssensor gibt jede Minute die Helligkeit aus, damit gehe ich in einen Switch node wo ich die einschalt und die auschaltschwelle festgelegt habe. Die Ausgänge des Switch node gehen auf jeweils einen Trigger node. Der Trigger für Sonnen an wird bei größer 30000 Lux angestoßen, macht erstmal nix und nach 2 Minuten kommt dort mein Signal sonne scheint raus. Der zweite Ausgang vom Switch node ist auf 20000 Lux (also sonne scheint nicht mehr) und Resettet den Trigger Node für Sonne scheint, dh wenn 2 Minuten die Lux stärke nicht unter 20000 war wird eingeschaltet. Fürs auschalten ein zweiter Trigger node der 5 Minuten wartet und bei kleiner 20000 Lux gestartet wird bzw bei größer 30000 Lux einen Reset macht.
Gibt vielleicht bessere Lösungen aber funktioniert bei mir so.
Code: Alles auswählen
[{"id":"99e86b00.834d58","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"2076b68e.8a2f5a","type":"switch","z":"99e86b00.834d58","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"30","vt":"num"},{"t":"lt","v":"10","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":310,"y":300,"wires":[["f8e44427.7de108","d58e5569.ba75e8"],["cb4f944a.999358","167f1732.d89029"]]},{"id":"df930ccc.3b87f","type":"inject","z":"99e86b00.834d58","name":"","props":[{"p":"payload"},{"p":"topic","v":"","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"9","payloadType":"num","x":140,"y":260,"wires":[["2076b68e.8a2f5a"]]},{"id":"9abcce05.0202f","type":"inject","z":"99e86b00.834d58","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"31","payloadType":"num","x":140,"y":360,"wires":[["2076b68e.8a2f5a"]]},{"id":"cb4f944a.999358","type":"trigger","z":"99e86b00.834d58","name":"","op1":"","op2":"0","op1type":"nul","op2type":"str","duration":"25","extend":false,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":690,"y":280,"wires":[["8d9da229.d8de6"]]},{"id":"f8e44427.7de108","type":"trigger","z":"99e86b00.834d58","name":"","op1":"","op2":"1","op1type":"nul","op2type":"str","duration":"10","extend":false,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":690,"y":360,"wires":[["8d9da229.d8de6"]]},{"id":"167f1732.d89029","type":"change","z":"99e86b00.834d58","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":440,"wires":[["f8e44427.7de108"]]},{"id":"d58e5569.ba75e8","type":"change","z":"99e86b00.834d58","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":220,"wires":[["cb4f944a.999358"]]},{"id":"8d9da229.d8de6","type":"debug","z":"99e86b00.834d58","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":940,"y":320,"wires":[]}]
Passiert in dieser Zeit nix oder ein Wert größer 10 aber kleiner 30 kommt, passiert auch nix. Nach 25 Sek ist dann aus. Sollte inerhalb von der Zeit ein Wert größer 30 kommen wird der Trigger Resettet und der andere gesetzt. Wenn du nur für das ausschalten das haben möchtest lass den kurzen Trigger weg und schalte gleich beim überschreiten der schwelle ein.
- Dateianhänge
-
- flow.txt.txt
- (2.19 KiB) 29-mal heruntergeladen
Gruß Florian
-
- Beiträge: 38
- Registriert: 02.12.2020, 21:34
- System: CCU
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Pumpensteuerung Solar
Hallo,
Danke für die Antwort. Ist ja sehr ausführlich. Werde ich mir heute Abend mal genauer ansehen.
Edit:
Wow perfekt. Das ist ja ein voll funktionsfähiger Flow genau wie ich ihn brauche.
Import => Inputs ändern => Device ändern => Fertig läuft
Vielen dank dafür!!! Wahnsinn!!
Ende Edit
Weißt du eventuell, ob es auch einen Baustein gibt wo ich eine Zeit hoch zählen lassen kann?
Also ich würde dann gerne täglich erfassen wollen, wie lang die Pumpe gelaufen ist.
Damit ich dann täglich um 17 Uhr prüfen kann ob es wenigstens 2h waren. Wenn nicht soll die dann noch zusätzlich laufen.
Danke
Danke für die Antwort. Ist ja sehr ausführlich. Werde ich mir heute Abend mal genauer ansehen.
Edit:
Wow perfekt. Das ist ja ein voll funktionsfähiger Flow genau wie ich ihn brauche.
Import => Inputs ändern => Device ändern => Fertig läuft
Vielen dank dafür!!! Wahnsinn!!
Ende Edit
Weißt du eventuell, ob es auch einen Baustein gibt wo ich eine Zeit hoch zählen lassen kann?
Also ich würde dann gerne täglich erfassen wollen, wie lang die Pumpe gelaufen ist.
Damit ich dann täglich um 17 Uhr prüfen kann ob es wenigstens 2h waren. Wenn nicht soll die dann noch zusätzlich laufen.
Danke
-
- Beiträge: 522
- Registriert: 07.01.2017, 16:48
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 48 Mal
- Danksagung erhalten: 66 Mal
Re: Pumpensteuerung Solar
Nicht hochzuholen, aber runterzuholen kann der hier: https://flows.nodered.org/node/node-red ... -countdown
-
- Beiträge: 38
- Registriert: 02.12.2020, 21:34
- System: CCU
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Pumpensteuerung Solar
Super, den schaue ich mir mal an danke!
Ich kann ja auch auf 0 zählen und dann abfragen wenn >0 einschalten.
Jetzt habe ich nur noch ein Problem.
Und zwar habe ich eine Systemvariable die ich "wirkenergie_ges" genannt habe. Diese beinhaltet wie der Name schon sagt meinen Aktuellen Stromverbrauch vom zähler. Diesen übermittel ich per Script:
Die Homematic zeigt innerhalb von einer Sekunde den geänderten Wert in der Liste der Systemvariablen an.
Im RedMatic nutze ich dafür einen sysvar node der auf diese änderung reagiert.
Der node braucht aber locker 20 Sekunden länger. Unter dem node steht auch noch bestimmt 20 Sekunden der alte wert, obwohl in der Sysvar schon lange der neue Wert steht.
Kann man die Häufigkeit Ändern, die der node auf Änderungen prüft?
Danke!
Ich kann ja auch auf 0 zählen und dann abfragen wenn >0 einschalten.
Jetzt habe ich nur noch ein Problem.
Und zwar habe ich eine Systemvariable die ich "wirkenergie_ges" genannt habe. Diese beinhaltet wie der Name schon sagt meinen Aktuellen Stromverbrauch vom zähler. Diesen übermittel ich per Script:
Code: Alles auswählen
$url = 'http://user:pass@192.168.0.50:8181/blabla.exe?Antwort=dom.GetObject("wirkenergie_ges").State('.$entityBody.')';
Im RedMatic nutze ich dafür einen sysvar node der auf diese änderung reagiert.
Der node braucht aber locker 20 Sekunden länger. Unter dem node steht auch noch bestimmt 20 Sekunden der alte wert, obwohl in der Sysvar schon lange der neue Wert steht.
Kann man die Häufigkeit Ändern, die der node auf Änderungen prüft?
Danke!
-
- Beiträge: 522
- Registriert: 07.01.2017, 16:48
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 48 Mal
- Danksagung erhalten: 66 Mal
Re: Pumpensteuerung Solar
Sysvar werden von Redmatic im Abstand von (glaube ich) 30 Sekunden gepullt. Vielleicht kann man das auch einstellen.
Aber woher kommt denn überhaupt der Wert für die Sysvar? Kannst du nicht den Zähler auch aus Redmatic auslesen und damit dann weiterarbeiten?
Aber woher kommt denn überhaupt der Wert für die Sysvar? Kannst du nicht den Zähler auch aus Redmatic auslesen und damit dann weiterarbeiten?
-
- Beiträge: 38
- Registriert: 02.12.2020, 21:34
- System: CCU
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Pumpensteuerung Solar
Ja das habe ich auch gerade rausgefunden beim suchen. Blöd mit den 30 Sekunden.
Ich glaube nicht dass es anders geht.
Der Wert kommt aus VZLogger.
VZLogger ruft eine php-Datei auf und diese php-Datei schreibt die systemvariable
Edit:
Ok ich könnte ein inject machen der jede Sekunde startet und den Wert aus einer influxdb ausliest. Denn dort speichert VZLogger den Wert auch noch ab.
Ich glaube nicht dass es anders geht.
Der Wert kommt aus VZLogger.
VZLogger ruft eine php-Datei auf und diese php-Datei schreibt die systemvariable
Edit:
Ok ich könnte ein inject machen der jede Sekunde startet und den Wert aus einer influxdb ausliest. Denn dort speichert VZLogger den Wert auch noch ab.
-
- Beiträge: 38
- Registriert: 02.12.2020, 21:34
- System: CCU
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Pumpensteuerung Solar
Hallo nochmal,
Also das klappt soweit perfekt. Ich habe jetzt einen Flow der jede Sekunde 1x die influx ausließt und den Wert in einer Datei speichert.
Meine anderen Flows habe ich so geändert, dass jede Sekunde ein inject läuft, der dann diese Datei ausliest und den Wert verarbeitet.
@ptweety:
Der Countdown funktioniert leider nicht wie er müsste. Er fängt zwar an zu laufen und zählt rückwärts, wird aber jedesmal zurückgesetzt.
Wenn man ihn also wieder startet, zählt er wieder vom Startwert aus. Soweit ich sehe, kann man das nicht ändern. Oder übersehe ich etwas?
Danke!
Also das klappt soweit perfekt. Ich habe jetzt einen Flow der jede Sekunde 1x die influx ausließt und den Wert in einer Datei speichert.
Meine anderen Flows habe ich so geändert, dass jede Sekunde ein inject läuft, der dann diese Datei ausliest und den Wert verarbeitet.
@ptweety:
Der Countdown funktioniert leider nicht wie er müsste. Er fängt zwar an zu laufen und zählt rückwärts, wird aber jedesmal zurückgesetzt.
Wenn man ihn also wieder startet, zählt er wieder vom Startwert aus. Soweit ich sehe, kann man das nicht ändern. Oder übersehe ich etwas?
Danke!
-
- Beiträge: 513
- Registriert: 29.05.2019, 22:19
- Wohnort: Bargfeld
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 49 Mal
Re: Pumpensteuerung Solar
Moin
Das gut das es funktioniert. Mittlerweile habe ich festgestellt das es sogar fertige Hysterese nodes gibt, hätte ich Garnicht selber bauen müssen.
In den combine nodes von Hobbyquaker ist ein Bangbang node der macht eine Hysterese (den hatte ich sogar schon drauf) und einen Hysterese Node gibt's auch noch einzeln.
So geht es natürlich auch.
Zum Laufzeit messen habe ich auch noch nix wirklich brauchbares gefunden. Ich will das für meine Pumpe auch machen und bin eigentlich schon soweit mir selbst ne Funktion zu schreiben die wenn die Pumpe gestartet wird entweder die Zeit wegschreibt und beimabschalten dann die Laufzeit ausrechnet oder ich mache es einfach das duef Funktion jede Minute getriggert wird und ich einfach die Minuten zähle (ist einfacher).
Das gut das es funktioniert. Mittlerweile habe ich festgestellt das es sogar fertige Hysterese nodes gibt, hätte ich Garnicht selber bauen müssen.
In den combine nodes von Hobbyquaker ist ein Bangbang node der macht eine Hysterese (den hatte ich sogar schon drauf) und einen Hysterese Node gibt's auch noch einzeln.
So geht es natürlich auch.
Zum Laufzeit messen habe ich auch noch nix wirklich brauchbares gefunden. Ich will das für meine Pumpe auch machen und bin eigentlich schon soweit mir selbst ne Funktion zu schreiben die wenn die Pumpe gestartet wird entweder die Zeit wegschreibt und beimabschalten dann die Laufzeit ausrechnet oder ich mache es einfach das duef Funktion jede Minute getriggert wird und ich einfach die Minuten zähle (ist einfacher).
Gruß Florian
-
- Beiträge: 522
- Registriert: 07.01.2017, 16:48
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 48 Mal
- Danksagung erhalten: 66 Mal
Re: Pumpensteuerung Solar
Letzteres geht mit einfachen Bordmitteln z.B. wie folgt:
Code: Alles auswählen
[{"id":"3dbba324.c710fc","type":"inject","z":"f48abf30.643098","name":"Reset","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 17 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":430,"y":1800,"wires":[["f0a419f6.36e768"]]},{"id":"8b07a956.32d94","type":"inject","z":"f48abf30.643098","name":"Start","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":430,"y":1860,"wires":[["f5ff59b8.b49ef8"]]},{"id":"c4acc0fe.483ba","type":"inject","z":"f48abf30.643098","name":"Stop","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":430,"y":1900,"wires":[["6b5d5e48.0279d8"]]},{"id":"96a878b6.8755b8","type":"inject","z":"f48abf30.643098","name":"Count","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/1 7-16 * * *","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":430,"y":1960,"wires":[["67b603ef.7926dc"]]},{"id":"f0a419f6.36e768","type":"change","z":"f48abf30.643098","name":"","rules":[{"t":"set","p":"counter","pt":"flow","to":"{\"count\":false,\"value\":0}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":610,"y":1800,"wires":[[]]},{"id":"f5ff59b8.b49ef8","type":"change","z":"f48abf30.643098","name":"","rules":[{"t":"set","p":"counter.count","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":1860,"wires":[[]]},{"id":"6b5d5e48.0279d8","type":"change","z":"f48abf30.643098","name":"","rules":[{"t":"set","p":"counter.count","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":630,"y":1900,"wires":[[]]},{"id":"67b603ef.7926dc","type":"switch","z":"f48abf30.643098","name":"","property":"counter.count","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":570,"y":1960,"wires":[["556f3733.1561d8"]]},{"id":"556f3733.1561d8","type":"change","z":"f48abf30.643098","name":"","rules":[{"t":"set","p":"counter.value","pt":"flow","to":"$flowContext('counter').value + 1","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":1960,"wires":[[]]},{"id":"a2c304e7.d9a7b8","type":"inject","z":"f48abf30.643098","name":"Check","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"$flowContext('counter')","payloadType":"jsonata","x":430,"y":2020,"wires":[["5ad3f985.bd3f98"]]},{"id":"5ad3f985.bd3f98","type":"debug","z":"f48abf30.643098","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":590,"y":2020,"wires":[]}]