Seite 1 von 1

Timeout oder was muß ich dafür nutzen

Verfasst: Mo 1. Mai 2023, 16:50
von scschrauber
Hallo allerseits,
ich habe einen Wassergeführten Kaminofen einbauen lassen und habe nun das Problem, daß der Ladomat angesteuert werden muß.
Zum Einsatz hierfür kommen 2 Temperaturfühler der eine ist in der Tauchhülse der Wassertasche im Ofen und der andere am Abgasrohr.

Folgendes Szenario ergibt sich daraus, das Abgasrohr (DS18B20-1) ist kalt! Der Ofen wird angefeuert, die Temperatur (DS18B20-2) in der Wassertasche steigt und bei 57°C schaltet die Umwälzpumpe des Ladomat ein!

Soweit so gut, jetzt kommt aber mein Problem, die U-Pumpe soll abschalten wenn das Abgasrohr unter 45°C fällt, da dieses aber beim Start noch kleiner 45°C ist, wird die U-Pumpe gleich wieder abgeschaltet. Gibt es die Möglichkeit,daß das abschalten nach dem einschalten der U-Pumpe für eine gewisse Zeit unterbunden wird?

Ich habe in meinem Blockly die Temperatur (DS18B20-2) im (Abschalter) mit UND verknüpft da der Ofen normalerweise im Kaltzustand keine Wärme über 55°C hat, das Problem hier ist aber auch, daß das Abgasrohr nicht schnell genug auf Temperatur kommt und somit die U-Pumpe abschaltet.
Ich weis leider nicht ob ich diese Timeouts oder Trigger verwenden muß, da ich absoluter Laie bin.

Vielen Dank falls mir jemand in meinem Blockly helfen kann.
MfG
Björn

<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="H6cN!}4tE6Ax6)z^ekFn" x="-228" y="408">
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="44uQX`fC7/?D6eP8Ba#_">
<value name="IF0">
<block type="logic_compare" id="G_/#DgxNv5d;QCm+sgVX">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="*n/TTk^R0$k1IpEY4bwK">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Y3!S~f1}-)khz;XWh?AT">
<field name="NUM">57</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id=";2kk%NNU+wV4^IdZPoaC">
<value name="IF0">
<block type="logic_compare" id="}j*~8gr9xR/OK20V}m7z">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="2-j.0D7E935nUki_tkKa">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="IUs)WVMnk*@$[sk[EIvF">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id=":RG?/Z!zASF2Rab}Optv">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="f#%Gza`}M?c#_kPG+u+3">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
<next>
<block type="on" id="w0XT`yJIx#?=]~)p3DLS">
<field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="LO2Jra85]KfdC=5N$An,">
<value name="IF0">
<block type="logic_operation" id="Ls|~*~}1DG^+{OX!:KCE">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="``2$hS(?O{acj0Y{E)?;">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="1#RmoW9_Dn[KM23:YZ.H">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Sumf{+w3)XAlz4I~TL-p">
<field name="NUM">55</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="99a7s`_m`iZ$YTqHgD!@">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="L5vBr4KfM1=}x}`%h|sj">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="mSS/2SfWS61uY~c^],A|">
<field name="NUM">45</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id="TiE`*YpH/tQ,#/q_u-7X">
<value name="IF0">
<block type="logic_compare" id="ESK6WN1;fqOmy%kA%yI5">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="Zs3gT9ixgt8~WGLO8HGu">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="~1#Q/xd*tBT.Kg{Qo=GQ">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="i)s52#I4LR3.LlMFb[P1">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="ak}NfC$V4rE+vEkK]}qK">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
<next>
<block type="on" id="86Q*!c@6n0VXAG@wp6TX">
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="z%hd.|K|#WJ{18VOT`(]">
<value name="IF0">
<block type="logic_operation" id="p(|/2;9j4G,}%{2o@BZE">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="2lVoYip;%rSOC.Ftai^=">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="pM87C5G[8C%kO$,PS_JM">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="q5eXLnMjAr0zvI6n,f^m">
<field name="NUM">55</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="ys@@6%$Pu}rCyZD#61uX">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="4ih+|3Jr^CGmw|GV#%]{">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Nu6uglEzV/_b2_pD;XHA">
<field name="NUM">45</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id="d59dlT@69=ZLhq6-t?y=">
<value name="IF0">
<block type="logic_compare" id="=O5vo;v*-tz*9T%!om{N">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="ta[=~wP+wGyek6|qT{zU">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="oZuiGX}nyaFc+HQT5I~?">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="x]y=wpfm-Ctu=_fP5@H:">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="Ayi]P?KG!GweU!dMF,|7">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</xml>

Re: Timeout oder was muß ich dafür nutzen

Verfasst: Mo 1. Mai 2023, 17:24
von Admin
Hallo Björn,

herzlich willkommen im Forum.

Ich bin jetzt auch nicht der mega Blockly Spezialist, aber du könntest das mal versuchen. Ich habe unsere Boiler Steuerung so ähnlich gelöst.
Gib mir bitte eine Rückmeldung ob es geht.


Code: Alles auswählen

<xml xmlns="https://developers.google.com/blockly/xml">
  <variables>
    <variable id="W@wVUVW02TvcV_9L4o%C">temp_erreicht</variable>
  </variables>
  <block type="on" id="H6cN!}4tE6Ax6)z^ekFn" x="-228" y="408">
    <field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
    <field name="CONDITION">ne</field>
    <field name="ACK_CONDITION"></field>
    <statement name="STATEMENT">
      <block type="controls_if" id="44uQX`fC7/?D6eP8Ba#_">
        <value name="IF0">
          <block type="logic_compare" id="G_/#DgxNv5d;QCm+sgVX">
            <field name="OP">GTE</field>
            <value name="A">
              <block type="get_value" id="*n/TTk^R0$k1IpEY4bwK">
                <field name="ATTR">val</field>
                <field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
              </block>
            </value>
            <value name="B">
              <block type="math_number" id="Y3!S~f1}-)khz;XWh?AT">
                <field name="NUM">57</field>
              </block>
            </value>
          </block>
        </value>
        <statement name="DO0">
          <block type="control" id=":RG?/Z!zASF2Rab}Optv">
            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
            <field name="OID">sonoff.0.Temp Ofen.POWER</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="logic_boolean" id="f#%Gza`}M?c#_kPG+u+3">
                <field name="BOOL">TRUE</field>
              </block>
            </value>
          </block>
        </statement>
      </block>
    </statement>
    <next>
      <block type="on" id="w0XT`yJIx#?=]~)p3DLS">
        <field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
        <field name="CONDITION">ne</field>
        <field name="ACK_CONDITION"></field>
        <statement name="STATEMENT">
          <block type="controls_if" id="LO2Jra85]KfdC=5N$An,">
            <value name="IF0">
              <block type="logic_compare" id="[){OATv~|p[|(J?.WaQn">
                <field name="OP">EQ</field>
                <value name="A">
                  <block type="variables_get" id="TVs[4C3o]:MFLL!vS$I*">
                    <field name="VAR" id="W@wVUVW02TvcV_9L4o%C">temp_erreicht</field>
                  </block>
                </value>
                <value name="B">
                  <block type="logic_boolean" id="O.cOxSSmfs^lYV(A^#-L">
                    <field name="BOOL">TRUE</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="control" id="i)s52#I4LR3.LlMFb[P1">
                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                <field name="OID">sonoff.0.Temp Ofen.POWER</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="logic_boolean" id="ak}NfC$V4rE+vEkK]}qK">
                    <field name="BOOL">FALSE</field>
                  </block>
                </value>
              </block>
            </statement>
          </block>
        </statement>
        <next>
          <block type="variables_set" id="SbT4o3UUl75X6{[/}UE4">
            <field name="VAR" id="W@wVUVW02TvcV_9L4o%C">temp_erreicht</field>
            <value name="VALUE">
              <block type="logic_boolean" id="00xg;yw2gZ[NQ4~ZmAId">
                <field name="BOOL">FALSE</field>
              </block>
            </value>
            <next>
              <block type="schedule" id="EgzxR|PhZYA)OKl@L#I}">
                <field name="SCHEDULE">* * * * *</field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="i9rhzWlp;o,lGoC#ypVn">
                    <value name="IF0">
                      <block type="logic_compare" id="VA3TsnkI~S^;`hhCkgOC">
                        <field name="OP">GTE</field>
                        <value name="A">
                          <block type="get_value" id="V9*9z1/;ur:j]ekfj%Na">
                            <field name="ATTR">val</field>
                            <field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="math_number" id="Ioxz)D$C_pv;.{i,~U~d">
                            <field name="NUM">45</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="variables_set" id="V%d4_,;c/puog?2.#{Z`">
                        <field name="VAR" id="W@wVUVW02TvcV_9L4o%C">temp_erreicht</field>
                        <value name="VALUE">
                          <block type="logic_boolean" id="^1JpKnA0jlW}f68)GlMy">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

Re: Timeout oder was muß ich dafür nutzen

Verfasst: Mo 1. Mai 2023, 17:57
von scschrauber
Ich werde das nachher mal testen, der Schichtspeicher ist jetzt voll geladen durch die Solarthermie.

Gebe dir morgen bescheid ob es funktioniert!

Schönen Abend
Björn

Re: Timeout oder was muß ich dafür nutzen

Verfasst: Mo 1. Mai 2023, 18:48
von scschrauber
Bin doch schneller mit dem testen, habe die Sensoren einfach mit heißem und kaltem Wasserglas und anderen Temp-werten umgetaucht ;)
die Pumpe schaltet kurz ab, wenn die Temperatur 2 zum einschalten aktiv ist.
Ist die Temp2 unter dem Einschaltwert und Temp1 auch dann schaltet die Pumpe ab.

Das Problem dabei ist, das die ganze Zeit das Warme Wasser gepumpt wird auch wenn der Ofen kein Feuer mehr hat, somit funktioniert dieser
dann als Heizung, statt Heizquelle. Vielleicht ist die gesamte Idee auch nicht gut durchdacht?

Ein weiteres Problem wäre noch, daß nach dem abschalten, ich wieder Holz nachlegen kann und somit die Pumpe wieder einschalten müßte!

Ich habe 3 Tempsensoren am Sonoff, Temp1=Abgasrohr, Temp2=Vorlauf Wassertasche, Temp3 Rücklauf Wassertasche

Re: Timeout oder was muß ich dafür nutzen

Verfasst: Di 2. Mai 2023, 15:07
von scschrauber
Habe mein altes Blockly wieder eingesetzt und habe es dahin geändert, daß die Temp zum einschalten größer sein muß als der letzte Wert,
dies scheint gut zu funktionieren, nun muß ich mich nur noch herantesten wie warm das Ofenrohr noch ist, wenn da kaum noch Glut ist.

<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on" id="H6cN!}4tE6Ax6)z^ekFn" x="-228" y="408">
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
<field name="CONDITION">ge</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="44uQX`fC7/?D6eP8Ba#_">
<value name="IF0">
<block type="logic_compare" id="G_/#DgxNv5d;QCm+sgVX">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="*n/TTk^R0$k1IpEY4bwK">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Y3!S~f1}-)khz;XWh?AT">
<field name="NUM">65</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id=";2kk%NNU+wV4^IdZPoaC">
<value name="IF0">
<block type="logic_compare" id="}j*~8gr9xR/OK20V}m7z">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="2-j.0D7E935nUki_tkKa">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="IUs)WVMnk*@$[sk[EIvF">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id=":RG?/Z!zASF2Rab}Optv">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="f#%Gza`}M?c#_kPG+u+3">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
<next>
<block type="on" id="w0XT`yJIx#?=]~)p3DLS">
<field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="LO2Jra85]KfdC=5N$An,">
<value name="IF0">
<block type="logic_operation" id="Ls|~*~}1DG^+{OX!:KCE">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="``2$hS(?O{acj0Y{E)?;">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="1#RmoW9_Dn[KM23:YZ.H">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Sumf{+w3)XAlz4I~TL-p">
<field name="NUM">55</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="99a7s`_m`iZ$YTqHgD!@">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="L5vBr4KfM1=}x}`%h|sj">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="mSS/2SfWS61uY~c^],A|">
<field name="NUM">35</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id="TiE`*YpH/tQ,#/q_u-7X">
<value name="IF0">
<block type="logic_compare" id="ESK6WN1;fqOmy%kA%yI5">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="Zs3gT9ixgt8~WGLO8HGu">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="~1#Q/xd*tBT.Kg{Qo=GQ">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="i)s52#I4LR3.LlMFb[P1">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="ak}NfC$V4rE+vEkK]}qK">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
<next>
<block type="on" id="86Q*!c@6n0VXAG@wp6TX">
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="z%hd.|K|#WJ{18VOT`(]">
<value name="IF0">
<block type="logic_operation" id="p(|/2;9j4G,}%{2o@BZE">
<field name="OP">AND</field>
<value name="A">
<block type="logic_compare" id="2lVoYip;%rSOC.Ftai^=">
<field name="OP">GTE</field>
<value name="A">
<block type="get_value" id="pM87C5G[8C%kO$,PS_JM">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-2_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="q5eXLnMjAr0zvI6n,f^m">
<field name="NUM">55</field>
</block>
</value>
</block>
</value>
<value name="B">
<block type="logic_compare" id="ys@@6%$Pu}rCyZD#61uX">
<field name="OP">LTE</field>
<value name="A">
<block type="get_value" id="4ih+|3Jr^CGmw|GV#%]{">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.DS18B20-1_Temperature</field>
</block>
</value>
<value name="B">
<block type="math_number" id="Nu6uglEzV/_b2_pD;XHA">
<field name="NUM">35</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="controls_if" id="d59dlT@69=ZLhq6-t?y=">
<value name="IF0">
<block type="logic_compare" id="=O5vo;v*-tz*9T%!om{N">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="ta[=~wP+wGyek6|qT{zU">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="oZuiGX}nyaFc+HQT5I~?">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="x]y=wpfm-Ctu=_fP5@H:">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">sonoff.0.Temp Ofen.POWER</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="Ayi]P?KG!GweU!dMF,|7">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</xml>