Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      disaster123 last edited by

      Wie messt Ihr denn vernünftig die Temperatur an einem Kupferrohr? Ich habe das bisher mit Zigbee Funkfühlern nicht hinbekommen....

      A BananaJoe 2 Replies Last reply Reply Quote 0
      • A
        AndyGR42 @disaster123 last edited by AndyGR42

        So wirklich smart wird das mit BWM. Da wir faktisch überall das Licht per Hue Motion Sensoren steuern wird dies im neuen Haus auch die Zirkulationspumpe aktivieren.

        Ach ja, die Legionellenspülung mit hoher Temperatur 1x die Woche kann man da auch automatisieren. Ich weiß ja, wann der Kessel hochheizt.

        wendy2702 1 Reply Last reply Reply Quote 0
        • BananaJoe
          BananaJoe Most Active @disaster123 last edited by BananaJoe

          @disaster123 sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

          Wie messt Ihr denn vernünftig die Temperatur an einem Kupferrohr? Ich habe das bisher mit Zigbee Funkfühlern nicht hinbekommen....

          So etwas wie ein Wemos D1 Mini + DS18B20 Temperaturfühlern wäre dein Freund.

          Auf den Wemos kannst du einfach Tasmota aufspielen, den Wemos selbst per USB-Netzteil mit Strom versorgen.
          Du kannst bei Tasmota dann bis zu 8 dieser Temperatursensoren anschließen, die werden alle parallel geschaltet, du brauchst einmal einen 4.7K Wiederstand zusätzlich. Also ein Wemos misst dann 8 Temperaturen gleichzeitig.
          Die Daten landen per MQTT am ioBroker, alternativ mit dem Sonoff-Adapter.
          https://tasmota.github.io/docs/DS18x20/

          Die Temperaturfühler gibt es in 2 Bauarten, du willst die mit langem Kabel + Metallkapsel, z.B. https://www.amazon.de/gp/product/B07KNQJ3D7

          Die kannst du einfach mit Kabelbinder, Klebeband usw. (gerne etwas wärmeleitendes wie Metallkabelbinder) an den Kupferrohren befestigen (ggf. unter der Isolierung).

          Als Gehäuse für den Wemos mit den Kabeln reicht zur Not auch eine Abzeigdose.

          1 Reply Last reply Reply Quote 0
          • wendy2702
            wendy2702 @AndyGR42 last edited by wendy2702

            @andygr42 sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

            So wirklich smart wird das mit BWM.

            Hmm,

            hatte ich auch mal überlegt aber auch dann dauert es immer noch ziemlich bis das Wasser einmal durchgewältzt wurde und auch an der entferntesten Zapfstelle sofort warmes wasser kommt.

            Ein weiterer Nachteil: jedes mal wenn jemand den Raum betrifft springt die Pumpe an, egal ob Warmwasser benötigt wird oder nicht oder wie willst du das verhindern?

            Das einzige was für mich "Bedarfsgerecht" ist, ist die Anforderung per manuellem Befehl. Sei es per Taster, Sprache oder einer anderen menschlichen Aktion.

            Bei der Steuerung per Temp Fühler habe ich nicht wirklich verstanden was es bringen soll. Bis da ein nennenswerter Unterschied festgestellt wird, sei es durch Öffnen des Hahnes oder wenn die Temp des Wassers sinkt/steigt will ich schon Warmwasser haben. Wenn dann erst die Pumpe anspringt kann ich auch solange laufen lassen.

            Aber vielleicht verstehe ich das auch nur falsch und mich kann jemand erleuchten.

            Only my 2cents

            A 1 Reply Last reply Reply Quote 0
            • A
              AndyGR42 @wendy2702 last edited by

              @wendy2702 Ich denke, das hängt auch vom Einzelfall ab. Ein manuelles Einschalten kommt für mich nicht in Frage. Der WAF ist definitiv zu niedrig und wenn Du dann noch Kinder hast, wird das mal gar nix. Da würde ich lieber bei Zeitschaltuhr morgens und abends bleiben.

              Im aktuellen Haus kann ich in der Küche darauf komplett verzichten. Die Spüle ist praktisch direkt über der TWWP und es ist schnell warm. Im Gäste WC verzichten wir fast ganz auf warmes Wasser (am Eckventil ziemlich abgedreht). Wäre aber auch schnell da. Das Duschbad unten wird kaum genutzt. Bleibt noch das Bad oben. Da möchte ich (fast) immer warmes Wasser haben. Egal ob nur jemand kurz auf dem Klo war oder duschen möchte, es wird fast immer benötigt.

              Im neuen Haus könnte es auch für die Küche interessant werden. Hier wäre z.B. denkbar, an Stelle eines BWM einen Präsenzsensor zu nutzen und die Pumpe erst zeitverzögert einzuschalten. Damit halt nicht jedes Mal, wenn jemand zum Kühlschrank latscht, das Wasser zirkuliert. Wenn jemand länger in der Küche ist, steigt auch die Wahrscheinlichkeit, dass er warmes Wasser benötigt. Eben die Finger waschen oder einen Apfel abspülen geht auch mit kaltem Wasser.

              Am Ende müsste man tatsächlich mal über einen längeren Zeitraum den Energieverbrauch messen und entschieden, was besser ist.

              JLeg 1 Reply Last reply Reply Quote 0
              • JLeg
                JLeg @AndyGR42 last edited by

                @andygr42 sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                @wendy2702 Ich denke, das hängt auch vom Einzelfall ab. Ein manuelles Einschalten kommt für mich nicht in Frage. Der WAF ist definitiv zu niedrig und wenn Du dann noch Kinder hast, wird das mal gar nix. Da würde ich lieber bei Zeitschaltuhr morgens und abends bleiben.

                nach einigem Herumprobieren auch mit kommerziellen Automatik-Lösungen haben wir jetzt beides - Zeitschaltung morgend u. abends, plus an den "Hauptzapfstellen" Taster, die für 5 Minuten die Circopumpe laufen lassen. Das klappt insgesamt jetzt gut, und sogar Kinder verstehen das sehr schnell... 🙂

                1 Reply Last reply Reply Quote 0
                • wendy2702
                  wendy2702 last edited by

                  @jleg sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                  nach einigem Herumprobieren auch mit kommerziellen Automatik-Lösungen haben wir jetzt beides - Zeitschaltung morgend u. abends, plus an den "Hauptzapfstellen" Taster, die für 5 Minuten die Circopumpe laufen lassen. Das klappt insgesamt jetzt gut, und sogar Kinder verstehen das sehr schnell...

                  So habe ich das auch.

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators last edited by

                    ich werf da mal was in den Ring

                    https://www.stall.biz/project/wiffi-pump-4-energiesparende-steuerung-der-zirkulationspumpe-mit-heizungsueberwachung

                    wendy2702 1 Reply Last reply Reply Quote 1
                    • wendy2702
                      wendy2702 @Homoran last edited by

                      @homoran Hattest du eine Seite vorher schon 😀

                      Frage mich welche Hochleistungszirkulationspumpe da zum Einsatzkommen muss damit das Warme wasser schneller am Hahn ist.

                      Hat da jemand Erfahrungswerte?

                      JLeg alk 2 Replies Last reply Reply Quote 0
                      • JLeg
                        JLeg @wendy2702 last edited by

                        @wendy2702 sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                        @homoran Hattest du eine Seite vorher schon 😀

                        Frage mich welche Hochleistungszirkulationspumpe da zum Einsatzkommen muss damit das Warme wasser schneller am Hahn ist.

                        Hat da jemand Erfahrungswerte?

                        unsere vermutlich nicht ungewöhnliche Stratos Eco-Z lässt sich von 6 - 60W einstellen. Und 60W ballern schon ganz gut 😉 - im Timerbetrieb reichen bei uns 10-12W völlig…

                        wendy2702 1 Reply Last reply Reply Quote 1
                        • wendy2702
                          wendy2702 @JLeg last edited by

                          @jleg sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                          Stratos Eco-Z

                          OK.

                          Dann muss ich wohl auch mal in eine neue Pumpe investieren damit das Wasser schneller an der richtigen Stelle warm ist.

                          1 Reply Last reply Reply Quote 0
                          • alk
                            alk @wendy2702 last edited by alk

                            @wendy2702 Habe hier eininge Versuche gemacht und in einem typischen Haushalt/Haus mit Brauchwasserspeicher im Keller und Bäder im EG, OG, DG braucht eine typische Umwäzpumpe ca. 20sec und die Leitung ist genügend voll mit warmem Wasser. Von nun an kommt ja auch, ohne Pumpe, genügend warmes Wasser nach.

                            1 Reply Last reply Reply Quote 0
                            • alk
                              alk @Cumulus 0 last edited by

                              @cumulus-0 Mit einem Schlater ist es auch ein gute Möglichkeit. Aktuell braucht es bis warmes Wasser kommt ca. 20sec nachdem du das Wasser aufgedreht hast.

                              1 Reply Last reply Reply Quote 0
                              • BananaJoe
                                BananaJoe Most Active last edited by

                                Also bei mir geht im Bad das Radio an wenn jemand Licht anmacht ... da könnte ich auch gleich die Pumpe 20 Sekunden laufen lassen ...

                                Oder per ZigBee Türkontakt. Dann bräuchte es aber etwas um festzustellen ob man rein oder rausgeht. Oder man geht nach Zeit und ob sich die Wasseruhr vorher gedreht hat (was diese nicht getan haben sollte)

                                Frederik Buss 1 Reply Last reply Reply Quote 1
                                • Frederik Buss
                                  Frederik Buss @BananaJoe last edited by Frederik Buss

                                  @bananajoe Da hast Du mich auf eine super Idee gebracht. Ich hatte vorher schon die Zirkulationspumpe per Shelly angesteuert. Ich habe zwar im Haus auch 2 Wemos verbaut, aber für die Zirkulationspumpe finde ich die Shelly Lösung einfacher und wenn man den Eco Modus einschaltet und die Cloud ausschaltet ist der Stromverbrauch der Shellys auch wirklich niedrig (~0,4 W).
                                  Jedenfalls habe ich über Homematic ein kleines Script aktiviert, was die Pumpe für 2 Minuten laufen lässt, sowie eine Variable setzt, wenn der Lichtschalter betätigt wird. Täglich prüft morgens ein weiteres Script ob am Vortag die Pumpe gelaufen ist und schaltet automatisch ein, wenn nicht. Somit wird jeden Tag mindestens einmal das Wasser umgewälzt, Desinfektionsschaltung läuft nach wie vor wöchentlich.
                                  Im Bad ist zusätzlich ein Bewegungsmelder installiert, welcher aber das Licht nur gedimmt einschaltet. Somit drücken wir den Schalter in der Regel auch nur dann, wenn auch wirklich Bedarf besteht.

                                  1 Reply Last reply Reply Quote 2
                                  • I
                                    IlmenauRatte @h07d0q last edited by

                                    @h07d0q Ich habe das mit einem sonoff Basic R3 gelöst.
                                    Da hat man esp, Relais und Netzteil alles in einem Gerät.
                                    Viel besser als Rules ist Script, dazu muss man tasmota selbst kompilieren, das ist aber sehr easy.
                                    Und wenn man original maxim ds18b20 bestellt, hat man auch keine Temperatur Ausreißer.

                                    1 Reply Last reply Reply Quote 1
                                    • Noschvie
                                      Noschvie @h07d0q last edited by

                                      Hallo @h07d0q
                                      wie ist deine Langzeit-Erfahrung mit deiner Steuerung?
                                      Ist deine akt. Version im Web zu finden? Möchte sie gerne auch einsetzen bzw. umsetzen, danke im Voraus!

                                      1 Reply Last reply Reply Quote 0
                                      • Noschvie
                                        Noschvie @Homoran last edited by

                                        @homoran sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                                        habt ihr euch mal bei stall.biz den wiffi-pump angesehen?

                                        Der Algorithmus ist leider nicht Open Source, die Platine sieht eigentlich ganz gut und brauchbar aus.

                                        1 Reply Last reply Reply Quote 0
                                        • H
                                          h07d0q last edited by h07d0q

                                          @noschvie
                                          meine aktuelle Version habe ich minimal angepasst.

                                          //https://forum.iobroker.net/post/133815
                                          //VL
                                          const idTempVL = 'sonoff.0.HWR.DS18B20-2_Temperature';
                                          const iddTVL = '0_userdata.0.WWZirkulationspumpe.dTVL';
                                          const swOn = 0.7;  // Grenzwert in K/min
                                          var speedVL
                                          var speedVLold = 0;
                                          //RL
                                          const idTempRL = 'sonoff.0.HWR.DS18B20-1_Temperature';
                                          const iddTRL = '0_userdata.0.WWZirkulationspumpe.dTRL';
                                          const swOff = 0.3;  // Grenzwert in K/min
                                          var speedRL
                                          var speedRLold = 0;
                                          
                                          var timer = null, alarmTimer;
                                          var iAlarmTimer = 40*60000;   // Wenn die Pumpe außergewöhnlich lange läuft
                                          const minTime = 120000;   // Minimum Zeit in Millisekunden, welche die Pumpe laufen soll, bevor abgeschalten werden kann (TRL ist noch unter swOff)
                                          const minTemp = 38;      // Minimum Temperatur, bevor die Pumpe wieder läuft
                                          const minPercent = 0.8;  // Minimum Prozent von RL/VL bevor abgeschalten wird
                                          var checkMinTimeErreicht = false;      // Check für minTime
                                          var checkMinSpeedVL = 1;         // Check für minimalen speedVL für Ausschalten, sonst wird zu früh abgeschalten
                                          var h1, h2
                                          const idAktor = 'sonoff.0.HWR.POWER2';
                                          var aktor = getState(idAktor).val;
                                          on({id: idAktor, ack: true}, function(dp) {aktor = dp.state.val;});
                                          
                                          // Erweiterter Log im ioBroker
                                          const LOG_INFO = true;    // Informationen loggen
                                          const LOG_DEBUG = false;   // Erweiterter Log für Debugging
                                          const Telegram_DEBUG = false;   // Erweiterter Log für Debugging
                                          
                                          
                                          //////////////////////////////////////////////////////////
                                          /* Einschalten bei steigender Vorlauftemperatur */
                                          on(idTempVL, function(dp) {  // Triggern bei Wertänderung
                                             h1 = 60000 * (dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc);  // K/min
                                             speedVL = (h1 + speedVLold)/2;
                                             //if (LOG_DEBUG) console.debug(([Math.round(speedVL*100)/100,' speedVL = (',Math.round(h1*100)/100,' + ',Math.round(speedVLold*100)/100,')/2 K/min'].join('')));
                                             speedVLold = h1;
                                             if (speedVL < -5 || speedVL > 5) {return;}
                                             //if (LOG_DEBUG) console.debug((['state - oldState: ',dp.state.val,' - ',dp.oldState.val,' = ',Math.round((dp.state.val - dp.oldState.val)*100)/100].join('')));
                                             //if (LOG_DEBUG) console.debug((['TDiff: ',(dp.state.lc - dp.oldState.lc),'ms'].join('')));
                                             //if (LOG_DEBUG) console.debug(speedVL + ' K/min.');
                                             setState(iddTVL, Math.round(speedVL*1000)/1000, true);
                                             
                                             if (LOG_DEBUG) console.debug('VL: ' + speedVL + ' >= ' + swOn + ' & ' + !aktor + ' & ' + getState(idTempVL).val + ' <= ' + minTemp);
                                             if (speedVL >= swOn && !aktor && getState(idTempVL).val <= minTemp) {
                                                setState(idAktor,true);
                                                var messageText =['Zirkulationspumpe an.  (*dTVL: ',Math.round(speedVL*1000)/1000,', dTRL: ',Math.round(speedRL*1000)/1000,')'].join('');
                                                //if (Telegram_DEBUG) sendTo("telegram", "send", { text: messageText });
                                                if (LOG_INFO) console.log((messageText));
                                                
                                                /* Prüfung mit Alarm */
                                                if (!getState("0_userdata.0.Anwesenheit.Status.anyonePresent").val) {
                                                    var messageText =['Zirkulationspumpe an, obwohl niemand da ist!\r\n(*dTVL: ',Math.round(speedVL*1000)/1000,', dTRL: ',Math.round(speedRL*1000)/1000,')'].join('');
                                                    sendTo("telegram", "send", { text: messageText });
                                                    console.error((messageText));
                                                }
                                                if (LOG_INFO) console.log(Math.round(speedVL*100)/100 + ' K/min');
                                                if (LOG_INFO) console.log('Temperatur ist um mehr als ' + swOn + ' K/min gestiegen.');
                                                //clearTimeout(timer);
                                                timer = setTimeout(function() {
                                                    //if(aktor) setState(idAktor, false);
                                                  checkMinTimeErreicht = true
                                                }, minTime);
                                                alarmTimer = setTimeout(function() {
                                                  var messageText = 'speedRL: ' + Math.round(speedRL*1000)/1000 + ' <= ' + swOff + '\r\nspeedRL: ' + Math.round(speedRL*1000)/1000 + ' > 0 \r\nspeedRL: ' + Math.round(speedRL*1000)/1000 + ' > ' + Math.round(speedRLold*1000)/1000 + '(old)\r\naktor: ' + aktor + '\r\ncheckMinTimeErreicht: ' + checkMinTimeErreicht + '\r\nSpeedVl: ' + Math.round(speedVL*1000)/1000 + ' <= ' + checkMinSpeedVL + '\r\nRL/VL Temp: ' + (getState(idTempRL).val+4.0) + '/' + getState(idTempVL).val + ' = ' + Math.round(((getState(idTempRL).val+4.0)/getState(idTempVL).val)*100)/100 + ' > ' +  minPercent;
                                                  sendTo("telegram", "send", { text: 'Zirkulationspumpe läuft seit mehr als ' + iAlarmTimer/60000 + ' Minuten!\r\n\r\n' + messageText });
                                                }, iAlarmTimer);
                                             }
                                          });
                                          
                                          /* Ausschalten bei fallender Rücklauftemperatur, nach minimaler Zeit, bei stagnierender Vorlauftemperatur */
                                          /* neu: minPercent */
                                          on(idTempRL, function(dp) {  // Triggern bei Wertänderung
                                              h2 = 60000 * (dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc);  // K/min
                                              speedRL = (h2 + speedRLold)/2;
                                              //if (LOG_DEBUG) console.debug(([Math.round(speedRL*100)/100,' speedRL = (',Math.round(h2*100)/100,' + ',Math.round(speedRLold*100)/100,')/2 K/min'].join('')));
                                              speedRLold = h2;
                                              if (speedRL < -5 || speedRL > 5) {return;}
                                              setState(iddTRL, Math.round(speedRL*1000)/1000, true);
                                              var messageText = 'speedRL: ' + Math.round(speedRL*1000)/1000 + ' <= ' + swOff + '\r\nspeedRL: ' + Math.round(speedRL*1000)/1000 + ' > 0 (deaktiviert) \r\nspeedRL: ' + Math.round(speedRL*1000)/1000 + ' < ' + Math.round(speedRLold*1000)/1000 + '(old)\r\naktor: ' + aktor + '\r\ncheckMinTimeErreicht: ' + checkMinTimeErreicht + '\r\nSpeedVl: ' + Math.round(speedVL*1000)/1000 + ' <= ' + checkMinSpeedVL + '\r\nRL/VL Temp: ' + (getState(idTempRL).val+4.0) + '/' + getState(idTempVL).val + ' = ' + Math.round(((getState(idTempRL).val+4.0)/getState(idTempVL).val)*100)/100 + ' > ' +  minPercent;
                                              if (LOG_DEBUG) console.debug('RL! ' + messageText);
                                              //if(speedRL <= swOff && speedRL > 0 && speedRL < speedRLold && aktor && checkMinTimeErreicht && speedVL <= checkMinSpeedVL && (getState(idTempRL).val/getState(idTempVL).val) > minPercent) {
                                              if(speedRL <= swOff && speedRL < speedRLold && aktor && checkMinTimeErreicht && speedVL <= checkMinSpeedVL && (getState(idTempRL).val/getState(idTempVL).val) > minPercent) {
                                                  clearTimeout(timer);
                                                  checkMinTimeErreicht = false
                                                  setState(idAktor,false);
                                                  messageText = 'Zirkulationspumpe aus\r\n' + messageText
                                                  if (Telegram_DEBUG) sendTo("telegram", "send", { text: messageText });
                                                  if (LOG_INFO) console.log((messageText));
                                                  clearTimeout(alarmTimer);
                                              }
                                          });
                                          
                                          //Debug
                                          /*
                                          if (LOG_DEBUG) {
                                          on({id: new RegExp(idTempVL + "$|" + idTempRL + "$"), change: "ne"}, async function (obj) {
                                              console.debug((['(dTVL: ',Math.round(speedVL*1000)/1000,', dTRL: ',Math.round(speedRL*1000)/1000,', aktor: ',aktor,', timeout: ',checkMinTimeErreicht ,')'].join('')));
                                          });
                                          }
                                          */
                                          

                                          Das läuft so jetzt schon seit mehr als zwei Jahren und meine Frau hat sich nicht beschwert 😁 Die Infos per Telegram müsste ich eigentlich mal einstampfen. Der Alarm bei zu langer Laufzeit ist auf jeden Fall hilfreich, manchmal ist es in Fehlalarm, wenn der Aktor seit der Aktivierung keine WLAN Verbindung hat z.B.. Wie oben schon erwähnt, ist es nicht zu erwarten, dass beim Zapfen direkt Heißwasser kommt, aber nach kurzer Zeit, oder wenn man kurz zapft und dann wartet.

                                          Noschvie 1 Reply Last reply Reply Quote 1
                                          • Noschvie
                                            Noschvie @h07d0q last edited by

                                            @h07d0q sagte in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                                            meine aktuelle Version

                                            Danke! Möchte gerne Zeit investieren und diesen Algorithmus unter Tasmota mit Berry implementieren... mal sehen, ob ChatGPT dafür eine Hilfe ist.

                                            H 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            esp8266 projekt javasript json string mqtt-broker-client-adapter nodemcu tasmota mqtt relay-switch tasmota 1wire
                                            19
                                            45
                                            8493
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo