Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
esp8266 projektjavasriptjson stringmqtt-broker-client-adapternodemcu tasmota mqttrelay-switchtasmota 1wire
45 Beiträge 19 Kommentatoren 11.6k Aufrufe 28 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H h07d0q

    @alk Richtig, genau so ist es aufgebaut (in diesem Fall ein Sonoff Dual R2, der auch die Außenbeleuchtung schaltet)
    wiffi-pump habe ich davor auch gesehen, möglicherweise hat er mich inspiriert ;)

    Ich hab das Skript oben mit meiner aktuellen Version aktualisiert - es kamen ein paar Kommentare dazu und eine Alarmmeldung wenn niemand im Haus ist und die Zirkulationspumpe aktiviert wird (zu Testzwecken und jetzt drin geblieben).
    731ece0d-0d2e-4460-a279-2a772a1dad46-image.png
    Zu Analysezwecken habe ich auch eine Heatmap in Grafana aufgebaut :D

    Natürlich wäre es schicker wenn die Logik wie bei Eugen Stall alles im Mikrocontroller umgesetzt wäre, dann hätte man eine kürzere Verzögerung für das Zuschalten der Pumpe. Das mit der Auswertung und Analyse müsste man dann anders lösen wenn man das möchte. Und ich bräuchte dann einen weiteren ESP nur für diese Aufgabe, außer man bekommt das irgendwie auch mit Tasmota Rules hin.
    Naja wer weiß... "irgendwann" mal ;)

    NoschvieN Offline
    NoschvieN Offline
    Noschvie
    schrieb am zuletzt editiert von
    #35

    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 Antwort Letzte Antwort
    0
    • HomoranH Homoran

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

      NoschvieN Offline
      NoschvieN Offline
      Noschvie
      schrieb am zuletzt editiert von
      #36

      @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 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        h07d0q
        schrieb am zuletzt editiert von h07d0q
        #37

        @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 :grin: 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.

        NoschvieN 1 Antwort Letzte Antwort
        1
        • H 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 :grin: 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.

          NoschvieN Offline
          NoschvieN Offline
          Noschvie
          schrieb am zuletzt editiert von
          #38

          @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 Antwort Letzte Antwort
          0
          • NoschvieN Noschvie

            @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 Offline
            H Offline
            h07d0q
            schrieb am zuletzt editiert von
            #39

            @noschvie said in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

            mal sehen, ob ChatGPT dafür eine Hilfe ist.

            Viel Erfolg :grimacing:

            NoschvieN 1 Antwort Letzte Antwort
            0
            • H h07d0q

              @noschvie said in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

              mal sehen, ob ChatGPT dafür eine Hilfe ist.

              Viel Erfolg :grimacing:

              NoschvieN Offline
              NoschvieN Offline
              Noschvie
              schrieb am zuletzt editiert von
              #40

              @h07d0q die Analyse durch ChatGPT findest du hier:
              https://gist.github.com/Noschvie/239cfa9c463f940ff0bd7a9bdc1bdebe

              Nun geht's an die Transferierung bzw. Konvertierung nach Berry auf ein Tasmota Device...

              H 1 Antwort Letzte Antwort
              1
              • NoschvieN Noschvie

                @h07d0q die Analyse durch ChatGPT findest du hier:
                https://gist.github.com/Noschvie/239cfa9c463f940ff0bd7a9bdc1bdebe

                Nun geht's an die Transferierung bzw. Konvertierung nach Berry auf ein Tasmota Device...

                H Offline
                H Offline
                h07d0q
                schrieb am zuletzt editiert von
                #41

                @noschvie said in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                geht's

                Ohh interessant! Vor allem, dass es vermutlich auch über Rules gehen würde, allerdings vermisse ich den Teil der Rücklauftemperatur-Überwachung zur Abschaltung...

                Schon komisch so eine detaillierte Analyse seines zusammengefrickelten Codes zu lesen:grin:

                NoschvieN 1 Antwort Letzte Antwort
                0
                • H h07d0q

                  @noschvie said in WW Zirkulationspumpe bedarfsgerecht ein- und ausschalten:

                  geht's

                  Ohh interessant! Vor allem, dass es vermutlich auch über Rules gehen würde, allerdings vermisse ich den Teil der Rücklauftemperatur-Überwachung zur Abschaltung...

                  Schon komisch so eine detaillierte Analyse seines zusammengefrickelten Codes zu lesen:grin:

                  NoschvieN Offline
                  NoschvieN Offline
                  Noschvie
                  schrieb am zuletzt editiert von
                  #42

                  @h07d0q der Berry Code ist fehlerhaft, was die Syntax betrifft. Aber ich komme trotzdem weiter, durch Nachfragen und google...
                  Habe mir eine Berry Class erstellt zum Tracken der Vor- und Rücklauf-Temperatur und zum Berechnen der Speed usw... es dauert weil unerfahren mit Berry, aber es wird...
                  In welchem Intervall werden bei dir die Trigger Funktionen aufgerufen?

                  NoschvieN 1 Antwort Letzte Antwort
                  0
                  • NoschvieN Noschvie

                    @h07d0q der Berry Code ist fehlerhaft, was die Syntax betrifft. Aber ich komme trotzdem weiter, durch Nachfragen und google...
                    Habe mir eine Berry Class erstellt zum Tracken der Vor- und Rücklauf-Temperatur und zum Berechnen der Speed usw... es dauert weil unerfahren mit Berry, aber es wird...
                    In welchem Intervall werden bei dir die Trigger Funktionen aufgerufen?

                    NoschvieN Offline
                    NoschvieN Offline
                    Noschvie
                    schrieb am zuletzt editiert von
                    #43

                    Hab's gefunden: die Trigger Funktionen werden im Inerval von 10 Sekunden aufgerufen.

                    H 1 Antwort Letzte Antwort
                    0
                    • NoschvieN Noschvie

                      Hab's gefunden: die Trigger Funktionen werden im Inerval von 10 Sekunden aufgerufen.

                      H Offline
                      H Offline
                      h07d0q
                      schrieb am zuletzt editiert von
                      #44

                      @noschvie oh sorry, deine Frage im letzten Post habe ich übersehen.. die Trigger reagieren auf Wertänderung der States vom Tasmota Sensor. Da dieser im Standard alle 10s abgerufen wird, sollte das nicht in meinem Code stehen, da dort die Zeit zwischen neuem und allem Trigger zum Rechnen verwendet wird und nicht starre 10s. Ich könnte mir vermutlich eine eigene Tasmota Firmware kompilieren, welche die Sensoren öfter über MQTT raushaut, aber es funktioniert auch so ausreichend gut.

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        mf2105
                        schrieb am zuletzt editiert von
                        #45

                        @alk tldr, wollte ich auch mal so lösen. Inzwischen stehen einfach ein Echo DOT bzw Plus (mit Zigbee) in Küche und Bad (u.a.), die auch das Licht, Musik, Radio, Rolläden steuern und die Türklingel (Ring) signalisieren.
                        An der WWZP ist einfach eine Zigbee- Steckdose zwischengesteckt. Wenn nun jmd WW braucht sagt man einfach "Alexa, Wasser" und die ZP läuft für 1min und gut ist..
                        Mehr Energie kann man glaube ich nicht sparen...

                        1 Antwort Letzte Antwort
                        1
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        550

                        Online

                        32.5k

                        Benutzer

                        81.7k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe