Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly Poolsteuerung

    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

    Blockly Poolsteuerung

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

      Hallo zusammen.

      Ich möchte mir eine automatische Poolsteuerung mit einem Blockly basteln. Wir haben seit einiger Zeit eine Photovoltaikanlage und ich möchte den Überhang nutzen und dann immer die Poolpumpe laufen lassen.
      Geschaltet wird die Pumpe mit einer Schaltsteckdose von Homematic. Immer wenn geschaltet wird, möchte ich eine Info per Telegram haben. Mein bisheriger Ansatz sieht so aus. Das Schalten an sich funktioniert auch bereits. Allerdings bekomme ich die Meldung über Telegram immer mehrfach. Mal 3 Stück zeitgleich, mal 10 Stück zeitgleich immer mit dem gleichen Status.

      pumpe1.png

      Später sollen dann auch Temperatursensoren rein und einen Zähler wie lange die Pumpe lief.
      Kann jemand helfen wodran es liegt, dass ich die Meldungen immer mehrfach bekomme?
      Parallel habe ich auch Blocklys für die Beendigung der Geschirrspülmaschine, Waschmaschine und Trockner laufen. Da kommt die Meldung immer nur einmal.

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable id="@|`:Br,CZRuTHBhCU!ye">heute_laufzeit_min</variable>
         <variable id="9cho|y$mo5]Cti2|vuA$">heute_laufzeit_std</variable>
       </variables>
       <block type="schedule" id="t`WnY;-:hBi^|)w[1R!A" x="-812" y="-37">
         <field name="SCHEDULE">*/5 7-19 * * *</field>
         <statement name="STATEMENT">
           <block type="controls_if" id="ke{Zou81:Y=Ft#.@?dqu">
             <value name="IF0">
               <block type="logic_compare" id="}2Gpy=OhFMy+_{}()JZ2">
                 <field name="OP">GT</field>
                 <value name="A">
                   <block type="get_value" id="pny;U%vcb`KYkxH:3tFc">
                     <field name="ATTR">val</field>
                     <field name="OID">plenticore.0.devices.local.Pv_P</field>
                   </block>
                 </value>
                 <value name="B">
                   <block type="math_arithmetic" id="/24D#=4qN/V1FdiDOF|J">
                     <field name="OP">ADD</field>
                     <value name="A">
                       <shadow type="math_number" id="y6V3#|b%M](;_Y*w$FUV">
                         <field name="NUM">1</field>
                       </shadow>
                       <block type="get_value" id="DwB4MF#8e`PKl.OaGjRd">
                         <field name="ATTR">val</field>
                         <field name="OID">plenticore.0.devices.local.Home_P</field>
                       </block>
                     </value>
                     <value name="B">
                       <shadow type="math_number" id="=/.x;0yI~95R#+S+qDmh">
                         <field name="NUM">500</field>
                       </shadow>
                     </value>
                   </block>
                 </value>
               </block>
             </value>
             <statement name="DO0">
               <block type="control" id="8k{Rb~sxs=j:[V[YpX.K">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                 <field name="OID">hmip.0.devices.3014F711A00001DBE9A626F3.channels.1.on</field>
                 <field name="WITH_DELAY">FALSE</field>
                 <value name="VALUE">
                   <block type="logic_boolean" id=",`#YC_DoI~tI!.mb)zLK">
                     <field name="BOOL">TRUE</field>
                   </block>
                 </value>
               </block>
             </statement>
             <next>
               <block type="controls_if" id="YQt1tguI=8=|.#6w:!,T">
                 <value name="IF0">
                   <block type="logic_compare" id="[X]9G;kXQV1J#b9-:yW+">
                     <field name="OP">LT</field>
                     <value name="A">
                       <block type="get_value" id="/c=yny8r#A-S8QItdfT?">
                         <field name="ATTR">val</field>
                         <field name="OID">plenticore.0.devices.local.Pv_P</field>
                       </block>
                     </value>
                     <value name="B">
                       <block type="get_value" id=".F3TpIuY;^2}NC]1Id]r">
                         <field name="ATTR">val</field>
                         <field name="OID">plenticore.0.devices.local.Home_P</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <statement name="DO0">
                   <block type="control" id="9s[lu~ro:QrnPUnLZS1a">
                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                     <field name="OID">hmip.0.devices.3014F711A00001DBE9A626F3.channels.1.on</field>
                     <field name="WITH_DELAY">FALSE</field>
                     <value name="VALUE">
                       <block type="logic_boolean" id=")dQD)n*^hJ:t$FNy;lF)">
                         <field name="BOOL">FALSE</field>
                       </block>
                     </value>
                   </block>
                 </statement>
                 <next>
                   <block type="on" id="C=XWOc!2R?C^fs~sR99%">
                     <field name="OID">hmip.0.devices.3014F711A00001DBE9A626F3.channels.1.on</field>
                     <field name="CONDITION">ne</field>
                     <field name="ACK_CONDITION"></field>
                     <statement name="STATEMENT">
                       <block type="controls_if" id="jPiV+R~Q-/B(-35oYU:c">
                         <value name="IF0">
                           <block type="logic_compare" id="QF4$hhRB.tIMkMv$lLRE">
                             <field name="OP">EQ</field>
                             <value name="A">
                               <block type="get_value" id="@/EWUSB,gFa#((1w3D3Q">
                                 <field name="ATTR">val</field>
                                 <field name="OID">hmip.0.devices.3014F711A00001DBE9A626F3.channels.1.on</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="logic_boolean" id="|BL%@H6o;1]g{HFBdC-@">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="telegram" id="_RI~7/3AssXcgf5tQ5=e">
                             <field name="INSTANCE"></field>
                             <field name="LOG">log</field>
                             <field name="SILENT">FALSE</field>
                             <field name="PARSEMODE">default</field>
                             <value name="MESSAGE">
                               <shadow type="text" id="2G-eDM3)hCR+0r+Xow%a">
                                 <field name="TEXT">Die Poolpumpe wurde eingeschaltet.</field>
                               </shadow>
                             </value>
                             <value name="USERNAME">
                               <block type="text" id="okXELE=.tdQCVgsQ6{!V">
                                 <field name="TEXT">Dennis</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                         <next>
                           <block type="controls_if" id="U,Pp|_csKBHY#.0c3pRy">
                             <value name="IF0">
                               <block type="logic_compare" id=")hc4(Gl9f_]Vbf`}4q=-">
                                 <field name="OP">EQ</field>
                                 <value name="A">
                                   <block type="get_value" id="HtdBs!R,Q0+]I:J=J_Zl">
                                     <field name="ATTR">val</field>
                                     <field name="OID">hmip.0.devices.3014F711A00001DBE9A626F3.channels.1.on</field>
                                   </block>
                                 </value>
                                 <value name="B">
                                   <block type="logic_boolean" id="N?g*n7D=c1fZRX`b/T$a">
                                     <field name="BOOL">FALSE</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <statement name="DO0">
                               <block type="telegram" id="*w?(q2Z+f-djOM0+l~zp">
                                 <field name="INSTANCE"></field>
                                 <field name="LOG">log</field>
                                 <field name="SILENT">FALSE</field>
                                 <field name="PARSEMODE">default</field>
                                 <value name="MESSAGE">
                                   <shadow type="text" id="{0sT3;YrUn=lNwUn%4,X">
                                     <field name="TEXT">Die Poolpumpe wurde ausgeschaltet.</field>
                                   </shadow>
                                 </value>
                                 <value name="USERNAME">
                                   <block type="text" id="T1Dt40@EWrk[7C,:%v%$">
                                     <field name="TEXT">Dennis</field>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
             </next>
           </block>
         </statement>
       </block>
       <block type="on" id="Xhb^8_kjd]R)7j03v^;g" disabled="true" x="-587" y="838">
         <field name="OID">hm-rpc.1.CUX9001001.1.TIME_ON_SUM</field>
         <field name="CONDITION">ne</field>
         <field name="ACK_CONDITION"></field>
         <statement name="STATEMENT">
           <block type="variables_set" id="Kkr(?s:kw1%180#[Jp2%">
             <field name="VAR" id="@|`:Br,CZRuTHBhCU!ye">heute_laufzeit_min</field>
             <value name="VALUE">
               <block type="math_modulo" id="cQ[`)6EEjIhr:NSkaisD">
                 <value name="DIVIDEND">
                   <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                     <field name="NUM">64</field>
                   </shadow>
                   <block type="get_value" id="0|u2|5=T15J!Sq,]lE]o">
                     <field name="ATTR">val</field>
                     <field name="OID">hm-rpc.1.CUX9001001.1.TIME_ON_SUM</field>
                   </block>
                 </value>
                 <value name="DIVISOR">
                   <shadow type="math_number" id="65~3/)m6)r%,lNDUzqP`">
                     <field name="NUM">60</field>
                   </shadow>
                 </value>
               </block>
             </value>
             <next>
               <block type="variables_set" id="f2:V|uA]USSg`TWfasMi">
                 <field name="VAR" id="9cho|y$mo5]Cti2|vuA$">heute_laufzeit_std</field>
                 <value name="VALUE">
                   <block type="math_arithmetic" id="3D0{Nu{/apqTC{/W_=/m">
                     <field name="OP">DIVIDE</field>
                     <value name="A">
                       <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                         <field name="NUM">1</field>
                       </shadow>
                       <block type="math_arithmetic" id="cUF*biOrWo_CwB[7T,qM">
                         <field name="OP">MINUS</field>
                         <value name="A">
                           <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                             <field name="NUM">1</field>
                           </shadow>
                           <block type="get_value" id="+:{#va_.pDUfVtw+D-f?">
                             <field name="ATTR">val</field>
                             <field name="OID">hm-rpc.1.CUX9001001.1.TIME_ON_SUM</field>
                           </block>
                         </value>
                         <value name="B">
                           <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                             <field name="NUM">1</field>
                           </shadow>
                           <block type="variables_get" id="A8@f4555UQYoGwf4)fTj">
                             <field name="VAR" id="@|`:Br,CZRuTHBhCU!ye">heute_laufzeit_min</field>
                           </block>
                         </value>
                       </block>
                     </value>
                     <value name="B">
                       <shadow type="math_number" id="UaIsjFgn-Q!SRKbl-I=a">
                         <field name="NUM">60</field>
                       </shadow>
                     </value>
                   </block>
                 </value>
                 <next>
                   <block type="update" id="D_3^%X5B]q;)o5Z?CH]+">
                     <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                     <field name="OID">javascript.0.Eigene_Variablen.Steuerung.Poolfilterpumpe.heutige_Laufzeit_h</field>
                     <field name="WITH_DELAY">TRUE</field>
                     <field name="DELAY_MS">2</field>
                     <field name="UNIT">sec</field>
                     <field name="CLEAR_RUNNING">FALSE</field>
                     <value name="VALUE">
                       <block type="convert_from_date" id="8nhl1R_`==VCu9=Z*J%_">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                         <field name="OPTION">hh:mm</field>
                         <value name="VALUE">
                           <block type="text_join" id="lf1!{ki-h#cj[hkbW6[+">
                             <mutation items="3"></mutation>
                             <value name="ADD0">
                               <block type="variables_get" id="Xn)fgMpD8F?i{^;EXPX=">
                                 <field name="VAR" id="9cho|y$mo5]Cti2|vuA$">heute_laufzeit_std</field>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="text" id="|b1Zw*x-{~@_GRKGD@5]">
                                 <field name="TEXT">:</field>
                               </block>
                             </value>
                             <value name="ADD2">
                               <block type="math_round" id="|hGaBy@YFW.C`/y/*[/m">
                                 <field name="OP">ROUND</field>
                                 <value name="NUM">
                                   <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number">
                                     <field name="NUM">3.1</field>
                                   </shadow>
                                   <block type="variables_get" id="k%CgE4vHx/-$}QFq2Fy6">
                                     <field name="VAR" id="@|`:Br,CZRuTHBhCU!ye">heute_laufzeit_min</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </value>
                   </block>
                 </next>
               </block>
             </next>
           </block>
         </statement>
       </block>
      </xml>
      

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

        @dennismenger
        Dein Trigger ist ein "Zeitplan"
        Wenn ich dich richtig verstanden habe, dann willst Du jedoch "Überschüsse" verwenden.
        Dann würde ich das auch als Trigger verwenden.
        "Wenn Überschuss vorhanden, dann ...."
        Damit es kein hin und her-geschalte rund um die 500 gibt, würde ich zudem einen Spanne (hysterese) beim Wert einbauen

        Ungefähr so:
        Wenn Wert >= 500 und Wert vorher < 490, dann einschalten
        Wenn Wert <= 500 und Wert vorher > 510, dann abschalten

        Vielleicht ist der Bereich in meinem Beispiel zu groß?!, dass musst Du selbst heraustüfteln

        D 1 Reply Last reply Reply Quote 0
        • D
          DennisMenger @BBTown last edited by

          @bbtown Danke schon mal.

          Mein Plan war es, dass ich am Tag zwischen 7.00 Uhr und 19.00 Uhr alle 5 Minuten überprüfen lassen, ob Überschuss vorhanden ist und ob der Überschuss auch groß genug ist, damit die Pumpe mit laufen kann. Die Pumpe hat einen Verbrauch von knapp 477 Watt. Daher habe ich die 500 als Spanne bzw. Puffer genommen. Er prüft ja nur alle 5 Minuten, ob der Überschuss auch groß genug ist. Können da dann die 7 zeitgleichen Meldungen herkommen?

          BBTown 1 Reply Last reply Reply Quote 0
          • BBTown
            BBTown @DennisMenger last edited by BBTown

            @dennismenger
            Meine Empfehlung wäre ja eben nicht ins blaue hinein etwas zu prüfen, sondern bei erreichen eine Zielwertes eine Aktion auszulösen wenn die Bedingungen erfüllt sind.

            In deinem jetzigen Blockly:
            Was passiert denn wenn der Überschuss genau um deinen Schwellwert hin und her pendelt?
            Was passiert wenn der Überschuss +500 ist?
            Was passiert wenn der Überschuss 5 Minuten später erneut +500 ist?
            Was passiert wenn der Überschuss noch mal 5 Minuten später +504 ist?
            usw.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            943
            Online

            31.9k
            Users

            80.1k
            Topics

            1.3m
            Posts

            blockly
            2
            4
            245
            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