Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Poolpumpe Laufzeit / Wetter abhängig

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Poolpumpe Laufzeit / Wetter abhängig

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

      Hallo Zusammen,

      habe mich versucht mit Blockly an der Steuerung meiner Pumpe des Pools.
      Die Pumpe versorgt die Solaranlage aber dient zeitgleich auch der Umwälzung/Filtration des Wassers.

      Um hier möglichist effektiv zu sein, möchte ich die Pumpenlaufzeit so begrenzen dass

      a) die Pumpe läuft wenn die Sonne scheint (hierzu habe ich eine Systemvariable welche über den Homematic Temp-Diff-Sensor gefütter wird)

      b) die Pumpe unabhängig vom Wetter mindesten 2. Stunden am Tag läuft

      Mein Problem ist der Betriebstundenzähler. Hier habe ich mir bisher so beholfen:
      Poolpumpe skript.JPG

      Ziel ist es eigentlich das die Pumpe am Tag auch bei schlechtem Wetter 2 Stunden läuft. Dazu benötige ich folgende Logik:

      Sobald morgens Sysvar Sonne_scheint (true) steuere Aktor Poolpumpe(AN) und zähle die Laufzeit.
      Sollte zwischendurch Schatten sein (Sysvar Sonne_scheint (false) steuere Aktor Poolpumpe (AUS)
      Sollte die Sysvar Sonne_scheint wieder auf (true) wechseln,steuere Aktor Poolpumpe(AN) und akkumuliere die Laufzeit.
      Um 17:00 Uhr prüfe ob Laufzeit Poolpumpe an diesem Tag <120 Minuten, wenn ja dann Aktor Poolpumpe(AN) bis Laufzeit 120 Minuten erreicht sind.
      Sollte zwischen 17:00 Uhr und 19:00 Uhr die Sysvar Sonne_scheint(true) sein, dann steuere Aktor Poolpumpe (AN) (unabhängig von der Laufzeit)
      Um 19:00 Uhr steuere Aktor Poolpumpe (AUS)
      Um 23:59 Uhr setzte Laufzeit zurück auf "0"

      Die Schwierigkeit ist der Betriebsstundenzähler. Dieser schreibt die Laufzeit in eine Systemvariable, allerdings nur bei Wechsel des Zustands.
      Sollte den ganzen Tag die Sonne scheinen, würde ich keine Laufzeit in der Variablen haben. ich könnte mir behelfen indem ich um 16:59 Uhr die Sysvar Sonne_scheint kurz ausmache und falls sie an war wieder an mache.

      Schöner wäre aber die Laufzeit alle 5 Minuten in der Sysvar zu aktualisieren.

      Hat jemand von euch eine Idee wie ich das am vernünftigsten hinbekomme?

      Vielen Dank im Voraus,

      miwi

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

        @miwi sagte in Poolpumpe Laufzeit / Wetter abhängig:

        Die Schwierigkeit ist der Betriebsstundenzähler. Dieser schreibt die Laufzeit in eine Systemvariable, allerdings nur bei Wechsel des Zustands.
        Sollte den ganzen Tag die Sonne scheinen, würde ich keine Laufzeit in der Variablen haben. ich könnte mir behelfen indem ich um 16:59 Uhr die Sysvar Sonne_scheint kurz ausmache und falls sie an war wieder an mache.

        Überhaupt nicht!
        beim Anschalten der Pumpe einen Timer loslaufen lassen, der sich alle Minute erhöht
        Punmpentimer.png

        <xml xmlns="http://www.w3.org/1999/xhtml">
          <variables>
            <variable type="" id="u5)B[cP{w)aPq9e;VA=S">Offset_old</variable>
            <variable type="undefined" id="Pumpentimer">Pumpentimer</variable>
          </variables>
          <block type="on_ext" id="8pdRI3sfko=W;q(x{FnX" x="187" y="-638">
            <mutation items="1"></mutation>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id=")tmPN|eKYm)B)6(Xnr(h">
                <field name="oid">hm-rpc.0.NEQ1547414.3.STATE</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="update" id="bX@l=r.c.?-.{h!9qQ#$">
                <mutation delay_input="false"></mutation>
                <field name="OID">Messwerte.0.Pool.Druck_real</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="math_arithmetic" id="cuZ4e33I~4mWk|]MuNc5" inline="false">
                    <field name="OP">MINUS</field>
                    <value name="A">
                      <shadow type="math_number" id="8jL5=/./^2L7ZE*^Gc1#">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="get_value" id="FRiY{6uJ$DiL`psN$zpJ">
                        <field name="ATTR">val</field>
                        <field name="OID">hm-rpc.0.NEQ1547414.3.STATE</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="q[{QPPf#{bRFQ$FQpf8L">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="get_value" id="^L_,k8L{[oLb5dVSw1Y2">
                        <field name="ATTR">val</field>
                        <field name="OID">Messwerte.0.Pool.Druckoffset</field>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
            </statement>
            <next>
              <block type="on_ext" id="7dfyAn6SRa*[nLlE6wNr">
                <mutation items="1"></mutation>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <value name="OID0">
                  <shadow type="field_oid" id="22fT?@[Ak,Y,5ARfKDR0">
                    <field name="oid">hm-rpc.0.JEQ0646431.1.STATE</field>
                  </shadow>
                </value>
                <statement name="STATEMENT">
                  <block type="controls_if" id=")z={;q=@viwHI1]x-E!n">
                    <mutation elseif="1"></mutation>
                    <value name="IF0">
                      <block type="logic_compare" id="/jjj`+cYZAPxHH@;p6IO">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="get_value" id="AT;0x.hm%lz`yuC5zo!~">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.JEQ0646431.1.STATE</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_boolean" id="zJR/?W/^sfA1]`#W_fHR">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="variables_set" id="k7,Ld^-49s3[mLyl?k_9">
                        <field name="VAR" id="u5)B[cP{w)aPq9e;VA=S" variabletype="">Offset_old</field>
                        <value name="VALUE">
                          <block type="get_value" id="uKiT7U5B$q=V32ga+CX~">
                            <field name="ATTR">val</field>
                            <field name="OID">Messwerte.0.Pool.Druckoffset</field>
                          </block>
                        </value>
                        <next>
                          <block type="controls_if" id="5{e1pE9g`CG$cM9rb1aL">
                            <value name="IF0">
                              <block type="logic_compare" id="SbT;@;s+#]+zqJOnx:?}">
                                <field name="OP">LT</field>
                                <value name="A">
                                  <block type="math_arithmetic" id="+h$eqKw!..R:[jqasXR1" inline="false">
                                    <field name="OP">MINUS</field>
                                    <value name="A">
                                      <shadow type="math_number" id=":ZMsb0D}2s:fL%}j;TL1">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="get_value" id="/_3qrVxW-WAe#2sk0`76">
                                        <field name="ATTR">val</field>
                                        <field name="OID">hm-rpc.0.NEQ1547414.3.STATE</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <shadow type="math_number" id="@oBz3x:s+e@-R3!hP|oH">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="get_value" id="I#F[Cpf1JFvl4@jPEJfK">
                                        <field name="ATTR">val</field>
                                        <field name="OID">Messwerte.0.Pool.Druckoffset</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_number" id="O{,!/%{0jWdi!u!X0%s3">
                                    <field name="NUM">15</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="update" id="F]Qh`p+zD!_rJ(gum~XU">
                                <mutation delay_input="false"></mutation>
                                <field name="OID">Messwerte.0.Pool.Druckoffset</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="get_value" id="g?V-c%Y#i;x,M?,TXQcu">
                                    <field name="ATTR">val</field>
                                    <field name="OID">hm-rpc.0.NEQ1547414.3.STATE</field>
                                  </block>
                                </value>
                              </block>
                            </statement>
                            <next>
                              <block type="timeouts_setinterval" id="G!s)U6u#zWhpShasC(-D">
                                <field name="NAME">Pumpentimer</field>
                                <field name="INTERVAL">60000</field>
                                <field name="UNIT">ms</field>
                                <statement name="STATEMENT">
                                  <block type="update" id="y.9uq.0[L$M^N])z3a9^">
                                    <mutation delay_input="false"></mutation>
                                    <field name="OID">Messwerte.0.Pool.Pumpenlaufzeit</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="math_arithmetic" id="Q~k8WA?`O{=W1lrVa3{_">
                                        <field name="OP">ADD</field>
                                        <value name="A">
                                          <shadow type="math_number" id="d,c/@aBkqFRf?N@Yr-5G">
                                            <field name="NUM">1</field>
                                          </shadow>
                                          <block type="get_value" id="(YEhHL(.~lc}}AHoBuML">
                                            <field name="ATTR">val</field>
                                            <field name="OID">Messwerte.0.Pool.Pumpenlaufzeit</field>
                                          </block>
                                        </value>
                                        <value name="B">
                                          <shadow type="math_number" id="d*iR./#qhS+Ez#Ij5-5!">
                                            <field name="NUM">1</field>
                                          </shadow>
                                          <block type="math_number" id=")tjSs-H$l;izgCW_GF5{">
                                            <field name="NUM">1</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                  </block>
                                </statement>
                                <next>
                                  <block type="update" id="p/Ix384%K0UDVKZDgfSH">
                                    <mutation delay_input="false"></mutation>
                                    <field name="OID">Messwerte.0.Pool.Not-Aus</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="Q6mCM#Ap_U1SmcZg.Sko">
                                        <field name="BOOL">FALSE</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="update" id="T@Qrlc/|3IASJ:E%~d#W">
                                        <mutation delay_input="false"></mutation>
                                        <field name="OID">Messwerte.0.Pool.Aus-Counter</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="math_number" id="/SuBDnd%5nJG~_--RgbY">
                                            <field name="NUM">0</field>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                    <value name="IF1">
                      <block type="logic_compare" id="~moo/6J([tr6PFL4:L+`">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="get_value" id="oz:()`fafBlUP+|y1*8X">
                            <field name="ATTR">val</field>
                            <field name="OID">hm-rpc.0.JEQ0646431.1.STATE</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_boolean" id="l#OlV{PU`v3.~d%|xNab">
                            <field name="BOOL">FALSE</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO1">
                      <block type="timeouts_clearinterval" id="cr(4vRV.1.P_r{32*dRe">
                        <field name="NAME">Pumpentimer</field>
                      </block>
                    </statement>
                  </block>
                </statement>
                <next>
                  <block type="schedule" id="w/JIBBL)Uq0mr|w=@bXo">
                    <field name="SCHEDULE">45 59 23 * * *</field>
                    <statement name="STATEMENT">
                      <block type="update" id="53{]?pcLg;9z`r(FMh*]">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">Messwerte.0.Pool.Laufzeit_Vortag</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="get_value" id="bA+p,3+iuyNvPt[4g)/r">
                            <field name="ATTR">val</field>
                            <field name="OID">Messwerte.0.Pool.Tageslaufzeit</field>
                          </block>
                        </value>
                        <next>
                          <block type="update" id="BJB5X-e%EadoRxy1^`==">
                            <mutation delay_input="true"></mutation>
                            <field name="OID">Messwerte.0.Pool.Tageslaufzeit</field>
                            <field name="WITH_DELAY">TRUE</field>
                            <field name="DELAY_MS">500</field>
                            <field name="UNIT">ms</field>
                            <field name="CLEAR_RUNNING">FALSE</field>
                            <value name="VALUE">
                              <block type="get_value" id="(R)}ndTT=n[G3G,SbNMV">
                                <field name="ATTR">val</field>
                                <field name="OID">Messwerte.0.Pool.Pumpenlaufzeit</field>
                              </block>
                            </value>
                            <next>
                              <block type="update" id="DoE41r9kUV/=Ad8ohVvo">
                                <mutation delay_input="true"></mutation>
                                <field name="OID">Messwerte.0.Pool.Pumpenlaufzeit</field>
                                <field name="WITH_DELAY">TRUE</field>
                                <field name="DELAY_MS">1000</field>
                                <field name="UNIT">ms</field>
                                <field name="CLEAR_RUNNING">FALSE</field>
                                <value name="VALUE">
                                  <block type="math_number" id="%yz1z|..HvC`PGJ-,};S">
                                    <field name="NUM">0</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </xml>
        

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

          Super. Funktioniert.

          Allerdings geht bei mir nicht aktualisieren sondern nur steuern.

          Poolpumpe skript1.JPG

          Welche Möglichkeit habe ich denn die 120 Minuten nach 17 Uhr Geschichte einzubinden?

          Vielen Dank !!!!

          miwi

          Homoran paul53 2 Replies Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @miwi last edited by

            @miwi sagte in Poolpumpe Laufzeit / Wetter abhängig:

            Allerdings geht bei mir nicht aktualisieren sondern nur steuern.

            "steuere" ist für Adapter vorbehalten. In eigenen Datenpunkten MUSS aktualisiere funktionieren.

            @miwi sagte in Poolpumpe Laufzeit / Wetter abhängig:

            Welche Möglichkeit habe ich denn die 120 Minuten nach 17 Uhr Geschichte einzubinden?

            CRON auf 0,17,0,0,0 setzen, Laufzeit auslesen, 120-Laufzeit rechnen, wenn >0 dann pumpe an für die Differenz (respektive bis der Counter auf 120 steht)

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @miwi last edited by

              @miwi sagte:

              Allerdings geht bei mir nicht aktualisieren sondern nur steuern.

              Ist "Laufzeit Poolpumpe" eine SV der CCU ?

              @miwi sagte in Poolpumpe Laufzeit / Wetter abhängig:

              Welche Möglichkeit habe ich denn die 120 Minuten nach 17 Uhr Geschichte einzubinden?

              Vorschlag

              Blockly_temp.JPG

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="KK_K1*4!#u#L5r]7fK|u">sonne</variable>
                 <variable id=";Z},Dn+Bo98||o|F3lN?">ein</variable>
                 <variable id="?$;0.@hZeIZufDiQ`Fbh">laufzeit</variable>
                 <variable type="interval" id="Intervall">Intervall</variable>
                 <variable id="Z(:_=RIT;X$`2]DB:Iw%">mindestein</variable>
               </variables>
               <block type="variables_set" id=";$){Z[|%Vr`8++B^=cxu" x="63" y="-37">
                 <field name="VAR" id="KK_K1*4!#u#L5r]7fK|u">sonne</field>
                 <value name="VALUE">
                   <block type="get_value" id="2G5ltNqEH3nW_[ItEox+">
                     <field name="ATTR">val</field>
                     <field name="OID">ID auswählen</field>
                   </block>
                 </value>
                 <next>
                   <block type="variables_set" id="{rka@A0_6*}9_rvx]avy">
                     <field name="VAR" id="?$;0.@hZeIZufDiQ`Fbh">laufzeit</field>
                     <value name="VALUE">
                       <block type="get_value" id="fl9#5i2}q@bWUH7Gt`ND">
                         <field name="ATTR">val</field>
                         <field name="OID">ID auswählen</field>
                       </block>
                     </value>
                     <next>
                       <block type="procedures_callnoreturn" id="KgJzRV|4b.$Loc0hYC4V" inline="true">
                         <mutation name="pumpenlaufzeit">
                           <arg name="ein"></arg>
                         </mutation>
                         <value name="ARG0">
                           <block type="get_value" id="mF/+tpJyqZ?Vhu~ru)!G">
                             <field name="ATTR">val</field>
                             <field name="OID">ID auswählen</field>
                           </block>
                         </value>
                         <next>
                           <block type="comment" id="(I4(/%U!HWmeN[u!4}p~">
                             <field name="COMMENT">Sonne</field>
                             <next>
                               <block type="on_ext" id="`Dzq,Mj/+y`:+,0~X#$z">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                 <field name="CONDITION">ne</field>
                                 <field name="ACK_CONDITION"></field>
                                 <value name="OID0">
                                   <shadow type="field_oid" id="57Kq|m%~1XfKBt7mK*AU">
                                     <field name="oid">default</field>
                                   </shadow>
                                 </value>
                                 <statement name="STATEMENT">
                                   <block type="variables_set" id="t$r5dkC$eBQ-idN1,lzd">
                                     <field name="VAR" id="KK_K1*4!#u#L5r]7fK|u">sonne</field>
                                     <value name="VALUE">
                                       <block type="on_source" id=".=}K/bM?#*BIi1W.q52Q">
                                         <field name="ATTR">state.val</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="control" id="yjqpJkC:fmd8`LAVJ1oD">
                                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                         <field name="OID">Object ID</field>
                                         <field name="WITH_DELAY">FALSE</field>
                                         <value name="VALUE">
                                           <block type="variables_get" id="..!S0Sz0QKSJONOrT9eU">
                                             <field name="VAR" id="KK_K1*4!#u#L5r]7fK|u">sonne</field>
                                           </block>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </statement>
                                 <next>
                                   <block type="comment" id="Dm[Y%P.WIH;vYQE^_dN?">
                                     <field name="COMMENT">Pumpe</field>
                                     <next>
                                       <block type="on_ext" id="ZvB?olx]3GQf5.I-clT?">
                                         <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                         <field name="CONDITION">ne</field>
                                         <field name="ACK_CONDITION"></field>
                                         <value name="OID0">
                                           <shadow type="field_oid" id="_r`XmuW/9[UNGZTe}%fb">
                                             <field name="oid">default</field>
                                           </shadow>
                                         </value>
                                         <statement name="STATEMENT">
                                           <block type="procedures_callnoreturn" id="$/sd,I$tY)QlMaFtfE[B" inline="true">
                                             <mutation name="pumpenlaufzeit">
                                               <arg name="ein"></arg>
                                             </mutation>
                                             <value name="ARG0">
                                               <block type="on_source" id="Ez;Bse*m-[0T}.rNmj_[">
                                                 <field name="ATTR">state.val</field>
                                               </block>
                                             </value>
                                           </block>
                                         </statement>
                                         <next>
                                           <block type="schedule" id="}=@qWYlmj;#i3{9572$l">
                                             <field name="SCHEDULE">0 17 * * *</field>
                                             <statement name="STATEMENT">
                                               <block type="controls_if" id="l+yJ6w!HmSW4,km12?3i">
                                                 <value name="IF0">
                                                   <block type="logic_compare" id="KZw%)+tr}DGj)WX.;s}3">
                                                     <field name="OP">LT</field>
                                                     <value name="A">
                                                       <block type="variables_get" id="|FpU}csnI7:44PwVPX!3">
                                                         <field name="VAR" id="?$;0.@hZeIZufDiQ`Fbh">laufzeit</field>
                                                       </block>
                                                     </value>
                                                     <value name="B">
                                                       <block type="math_number" id="m=y{i=/Vi5I300FMY0/U">
                                                         <field name="NUM">120</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <statement name="DO0">
                                                   <block type="variables_set" id="Mo?OV~4pb~%x~F(1Tu!5">
                                                     <field name="VAR" id="Z(:_=RIT;X$`2]DB:Iw%">mindestein</field>
                                                     <value name="VALUE">
                                                       <block type="logic_boolean" id="uoux8a`yJEyg:P!jXOsu">
                                                         <field name="BOOL">TRUE</field>
                                                       </block>
                                                     </value>
                                                     <next>
                                                       <block type="controls_if" id="Yyin(1ejVQo.uDgsMB?{">
                                                         <value name="IF0">
                                                           <block type="logic_negate" id="Uf!xC9YP2D;kHI#={QpV">
                                                             <value name="BOOL">
                                                               <block type="variables_get" id="8v$b%r~W,6^q{PZo7na!">
                                                                 <field name="VAR" id="KK_K1*4!#u#L5r]7fK|u">sonne</field>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </value>
                                                         <statement name="DO0">
                                                           <block type="control" id="NNzld`X(C;Mn+v6qXHtp">
                                                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                             <field name="OID">Object ID</field>
                                                             <field name="WITH_DELAY">FALSE</field>
                                                             <value name="VALUE">
                                                               <block type="logic_boolean" id="axRAQ@$F1vF+Y^3K5TIr">
                                                                 <field name="BOOL">TRUE</field>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </statement>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </statement>
                                               </block>
                                             </statement>
                                           </block>
                                         </next>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
               <block type="procedures_defnoreturn" id="hIzlV3JP-YCVj-J1O!C?" x="587" y="-37">
                 <mutation>
                   <arg name="ein" varid=";Z},Dn+Bo98||o|F3lN?"></arg>
                 </mutation>
                 <field name="NAME">pumpenlaufzeit</field>
                 <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                 <statement name="STACK">
                   <block type="controls_if" id="ZlvI*PEU[kefXy6OgTX%">
                     <mutation else="1"></mutation>
                     <value name="IF0">
                       <block type="variables_get" id="wdin+69AVLYIt0?v6_d3">
                         <field name="VAR" id=";Z},Dn+Bo98||o|F3lN?">ein</field>
                       </block>
                     </value>
                     <statement name="DO0">
                       <block type="timeouts_setinterval" id="U+np8D+pw/qdri/1~DD`">
                         <field name="NAME">Intervall</field>
                         <field name="INTERVAL">1</field>
                         <field name="UNIT">min</field>
                         <statement name="STATEMENT">
                           <block type="math_change" id="Ni`{jdmvb]`HF^oAmp5^">
                             <field name="VAR" id="?$;0.@hZeIZufDiQ`Fbh">laufzeit</field>
                             <value name="DELTA">
                               <shadow type="math_number" id="z8XXP+8hI^vLP9xjC!~@">
                                 <field name="NUM">1</field>
                               </shadow>
                             </value>
                             <next>
                               <block type="update" id="{v26(Ox$b`}Hflq|nJoV">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">Object ID</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="variables_get" id="55tI78PxQA6xip?OR}0Z">
                                     <field name="VAR" id="?$;0.@hZeIZufDiQ`Fbh">laufzeit</field>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="controls_if" id="Yha!Lz){yKb0GmS,Hu:M">
                                     <value name="IF0">
                                       <block type="logic_compare" id="V}_H3@v6I~-UhR.sp5p_">
                                         <field name="OP">GTE</field>
                                         <value name="A">
                                           <block type="variables_get" id="exU(5}4WQM.Yt^$YA5Eg">
                                             <field name="VAR" id="?$;0.@hZeIZufDiQ`Fbh">laufzeit</field>
                                           </block>
                                         </value>
                                         <value name="B">
                                           <block type="math_number" id="bITTq1WDOT+X)5,oslE#">
                                             <field name="NUM">120</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <statement name="DO0">
                                       <block type="controls_if" id="DxDPnQ=7c}7:p|Dzn$JD">
                                         <value name="IF0">
                                           <block type="logic_operation" id="wZT4|0++,lZ_43q~|izX" inline="false">
                                             <field name="OP">AND</field>
                                             <value name="A">
                                               <block type="logic_negate" id="7s,EN$N@F,]P0DB{zC`K">
                                                 <value name="BOOL">
                                                   <block type="variables_get" id="aekYqGy*C_7eFv8bme1^">
                                                     <field name="VAR" id="KK_K1*4!#u#L5r]7fK|u">sonne</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <value name="B">
                                               <block type="variables_get" id="X3ID%3slLN!fXP^@jAYY">
                                                 <field name="VAR" id="Z(:_=RIT;X$`2]DB:Iw%">mindestein</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <statement name="DO0">
                                           <block type="control" id="PyN,qr9n4WEB7IUslgM3">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                             <field name="OID">Object ID</field>
                                             <field name="WITH_DELAY">FALSE</field>
                                             <value name="VALUE">
                                               <block type="logic_boolean" id="h$ZqvkEkg=gx%,u^dNHZ">
                                                 <field name="BOOL">FALSE</field>
                                               </block>
                                             </value>
                                           </block>
                                         </statement>
                                         <next>
                                           <block type="variables_set" id="s,;G0ewk5JI@#6`hvz_I">
                                             <field name="VAR" id="Z(:_=RIT;X$`2]DB:Iw%">mindestein</field>
                                             <value name="VALUE">
                                               <block type="logic_boolean" id="d2cDP63R~jV?EUlq,HPe">
                                                 <field name="BOOL">FALSE</field>
                                               </block>
                                             </value>
                                           </block>
                                         </next>
                                       </block>
                                     </statement>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                     </statement>
                     <statement name="ELSE">
                       <block type="timeouts_clearinterval" id="%|/KgV8$tN*@~9_#[AnO">
                         <field name="NAME">Intervall</field>
                       </block>
                     </statement>
                   </block>
                 </statement>
               </block>
               <block type="schedule" id="7^t@=MSgFKMyU=m@g1:R" x="713" y="437">
                 <field name="SCHEDULE">59 23 * * *</field>
                 <statement name="STATEMENT">
                   <block type="variables_set" id="VYN%ri5L4thrl)ybv}`K">
                     <field name="VAR" id="?$;0.@hZeIZufDiQ`Fbh">laufzeit</field>
                     <value name="VALUE">
                       <block type="math_number" id="c=pU4!!2gHrB1IyACZ{j">
                         <field name="NUM">0</field>
                       </block>
                     </value>
                     <next>
                       <block type="update" id="#i1Yb|#EEU|/Y~OwYj=7">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                         <field name="OID">Object ID</field>
                         <field name="WITH_DELAY">FALSE</field>
                         <value name="VALUE">
                           <block type="math_number" id="j|:gd(!Kv=t@T;lnVT:w">
                             <field name="NUM">0</field>
                           </block>
                         </value>
                       </block>
                     </next>
                   </block>
                 </statement>
               </block>
              </xml>
              

              miwi Homoran 2 Replies Last reply Reply Quote 1
              • miwi
                miwi @paul53 last edited by

                Vielen Dank Euch beiden.

                Pumpenlaufzeit ist eine SysVar in der CCU. (gibts da eine bessere Lösung ?)

                Ich werde morgen früh testen und dann berichten.

                Nochmals vielen Dank!!!!

                miwi

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

                  @miwi sagte in Poolpumpe Laufzeit / Wetter abhängig:

                  Pumpenlaufzeit ist eine SysVar in der CCU.

                  dann muss es "steuere" sein!

                  @miwi sagte in Poolpumpe Laufzeit / Wetter abhängig:

                  gibts da eine bessere Lösung ?

                  in den Objekten einen eigenen Datenpunkt anlegen unter 0_userdata.0

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

                    @paul53
                    Du kannst es nicht lassen 😉
                    Super!

                    Da muss ich mich auch nochmal durchbeissen

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

                      Hallo zusammen,

                      ich habe in den letzten Tagen versucht "im Rahmen meiner Möglichkeiten" die Logik von Skripten zu verstehen.
                      Hierzu hatte ich mir selbst ein Blockly erstellt, welches auch einigermaßen funktioniert.

                      Das Skript von Paul habe ich mir näher angesehen, jedoch verstehe ich manche Abläufe nicht.
                      Ich habe das Skript mal kopiert und bei den unklaren Schritten Kommentare zugefügt.

                      Pumpe1.jpg
                      Pumpe2.jpg

                      Vielen Dank für die super Hilfe !!!!

                      miwi

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @miwi last edited by paul53

                        @miwi sagte:

                        bei den unklaren Schritten Kommentare zugefügt.

                        1. Ja, Pumpenaktor
                        2. Ja, SV "Sonne scheint"

                        Die ersten 3 Blöcke werden bei Start des Skriptes ausgeführt, die weiteren bei Trigger-Ereignissen.

                        1. Wert enthält den Wert des Trigger-Datenpunktes, ist also wahr, wenn die Sonne scheint
                        2. Die Pumpe soll einschalten, wenn die Sonne scheint
                        3. Ja, der Pumpenaktor
                        4. Wert enthält den Wert des Trigger-Datenpunktes, ist also wahr, wenn die Pumpe läuft
                        5. pumpenlaufzeit(ein) ist eine Funktion. Bei Aufruf der Funktion wird an die Variable ein übergeben, dass die Pumpe läuft
                        6. Ja, der Datenpunkt "Pumpenlaufzeit" wird aktualisiert
                        7. mindestein = false bedeutet, dass die Mindestlaufzeit von 120 Minuten erreicht wurde

                        Weshalb soll die Pumpe nur in der Zeit von 11:00 bis 19:00 Uhr laufen ?

                        Blockly_temp.JPG

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

                          Danke für die Erklärung. Dies macht es für mich jetzt verständlich.

                          Eine Frage noch: In Punkt 4. Welches Objekt soll mit "sonne" gesteuert werden? Der Aktor kennt ja nur true oder false.

                          Die Laufzeitbeschränkung ist nur der Hosenträger zum Gürtel. Die SysVar Sonne_scheint wird nur bei einer Differenz der HM Temp-Diffsensoren auf true gestellt und ist somit Abhängig vom Sonnenstand. Somit ist je nach Jahreszeit diese Variable zwischen 11:00 bis ca. 19:00 Uhr wahr (je nach Jahreszeit und Sonneneinstrahlung).
                          Mit der Festlegung der Uhrzeiz soll nur sichergestellt werden, dass die Pumpe nicht aus irgendeinem Grund später oder früher läuft.
                          Zusätzlich werde ich noch eine Prüfung um 19:05 Uhr einbauen, die prüft ob der Aktor auch tatsächlich aus ist.

                          Gruß

                          miwi

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @miwi last edited by paul53

                            @miwi sagte:

                            Welches Objekt soll mit "sonne" gesteuert werden? Der Aktor kennt ja nur true oder false.

                            ... und die SV "Sonne scheint" und somit die Variable sonne auch.

                            @miwi sagte in Poolpumpe Laufzeit / Wetter abhängig:

                            diese Variable zwischen 11:00 bis ca. 19:00 Uhr wahr (je nach Jahreszeit und Sonneneinstrahlung).

                            Wenn das ohnehin so ist, kann die zusätzliche Abfrage der Uhrzeit (und die 2 Zeit-Trigger) entfallen.

                            1 Reply Last reply Reply Quote 0
                            • D
                              dan11hh last edited by dan11hh

                              Ich hoffe ich darf mich hier auch einmal einschalten. Habe gerade an unserer Pumpe einen Shelly3EM installiert und möchte die Zustände in einen benutzerdefinierten Datenpunkt schreiben. Hintergrund der etwas komplizierten konstruktion ist, dass ich noch einen manuellen Schalter an den Schütz-Schalter, der die 400V schaltet, gebaut habe. Sprich, es könnte sein, dass das Relais des Shelly "wahr" anzeigt und die Pumpe nicht läuft, weil der Hardware-Schalter abgeschaltet ist. Er zeigt mir nach meinem Blockly auch brav true an für "PumpeStatus" aber eben auch bei "PumpeFehlfunktion". Sollte aber "PumpeStatus"=true und "PumpeFehlfunktion"=falseKann mir jemand helfen? 1000 Dank.!Bildschirmfoto 2020-06-04 um 17.51.29.png

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @dan11hh last edited by paul53

                                @dan11hh
                                Keine Trigger innerhalb von Triggern verwenden !

                                Vorschlag:

                                Blockly_temp.JPG

                                EDIT: falls nicht Intervall ergänzt.

                                1 Reply Last reply Reply Quote 0
                                • D
                                  dan11hh last edited by

                                  Hallo Paul, vielen Dank für Deinen Vorschlag. Das sieht auf jeden Fall schon "professioneller" aus, als mein laienhaftes zusammengeklicke. Irgendwie stehe ich oft mit Blockly auf Kriegsfuß und bin schon deshalb am überlegen ob ich mir nicht Javascript etwas genauer anschauen sollte. Ich probier deinen Vorschlag morgen einmal aus und gebe dann Rückmeldung. Vielen Dank für Deine Hilfe! Grüße Daniel

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    dan11hh last edited by

                                    Hallo Paul,

                                    ich hab das jetzt mal nachgebaut (auch um deinen Vorschlag zu durchschauen). Ich versteh es aber leider nicht ganz oder es führt mich nicht wirklich zu meinem Ziel. Was ich möchte ist:

                                    Triggern ob das Relais vom Shelly "true" ist. Wenn das so ist, dann soll noch die Bedingung überprüft werden, ob auch Strom fließt ( Wert>0). Falls ja, dann soll es den Zustand des Objekts PumpeStatus auf true setzen, gleichzeitig PumpeFehler auf false. Dann soll es noch das Objekt PumpeLaufzeit um jeweils eine Minute hochzählen und zwar solange Strom fließt und das Relais auf true steht. Falls nicht, möchte ich das Objekt PumpeFehler auf true setzen und PumpeStatus auf false.

                                    Ich verstehe die Zuweisung beim Fehler in deinem Vorschlag nicht so ganz. Macht das Sinn, wenn ich obiges Erreichen möchte. Blockly und ich werden aktuell wirklich keine Freunde. Auf der CCU2 kam ich mit den zusammengeklickten Skripten immer gut klar, aber Blockly ist leider oft ein Buch mit sieben Siegeln. seufz
                                    1000 Dank für Deine Hilfe!!!

                                    paul53 1 Reply Last reply Reply Quote 0
                                    • paul53
                                      paul53 @dan11hh last edited by paul53

                                      @dan11hh sagte:

                                      Macht das Sinn, wenn ich obiges Erreichen möchte.

                                      Ja, wenn nur dann Strom fließt, wenn die Pumpe per Shelly eingeschaltet ist. Dann genügt es, den Stromfluss als "Pumpe läuft" auszuwerten. Shelly enthält den Sollzustand, die Variable strom den Istzustand.

                                      @dan11hh sagte in Poolpumpe Laufzeit / Wetter abhängig:

                                      Ich verstehe die Zuweisung beim Fehler in deinem Vorschlag nicht so ganz.

                                      Wenn Stromfluss und Shelly sich widersprechen, wird es als Fehler gewertet.

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        dan11hh last edited by

                                        Oh man, wahrscheinlich ist Dein Skript viel zu effizient für mich. Wo wird denn kontrolliert ob Strom fließt? Der Wert des Datenpunktes der über 0 sein muss, wird ja gar nicht abgefragt, oder?

                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @dan11hh last edited by paul53

                                          @dan11hh sagte:

                                          Der Wert des Datenpunktes der über 0 sein muss, wird ja gar nicht abgefragt, oder?

                                          Das ist der untere Trigger. Genügt der Kommentar "Strom" nicht ?
                                          Die Variable strom wird true, wenn Stromfluss (Wert des Trigger-Datenpunktes) > 0.1 ist.

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            dan11hh last edited by

                                            Tja offenbar bei mir Hohlbirne nicht. Wahrscheinlich liegt es daran, dass ich nicht weiß in welche Datenpunkte du schreibst/liest. (kannst du ja auch nicht wissen) Ich denke, es ist eher ein grundsätzliches Blockly Verständnis Problem. Ich wurschtel mal weiter. Was heißt denn "Wert"? Ist das einfach eine zusätzliche Variable? Und: Verweisen die beiden Trigger aufs gleiche Objekt? Werden die Trigger in Deinem Vorschlag einfach hintereinander abgearbeitet? Ich verstehe überhaupt nicht wieso nicht vorher die Variable Strom nicht definiert werden muss (Format, Zustand, etc.).

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            871
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            4
                                            25
                                            1587
                                            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