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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly Poolsteuerung

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    280

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Blockly Poolsteuerung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blockly
4 Beiträge 2 Kommentatoren 347 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Online
    D Online
    DennisMenger
    schrieb am zuletzt editiert von DennisMenger
    #1

    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 Antwort Letzte Antwort
    0
    • BBTownB Offline
      BBTownB Offline
      BBTown
      schrieb am zuletzt editiert von BBTown
      #2

      @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

      ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.1.0 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

      D 1 Antwort Letzte Antwort
      0
      • BBTownB 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 Online
        D Online
        DennisMenger
        schrieb am zuletzt editiert von
        #3

        @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?

        BBTownB 1 Antwort Letzte Antwort
        0
        • D DennisMenger

          @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?

          BBTownB Offline
          BBTownB Offline
          BBTown
          schrieb am zuletzt editiert von BBTown
          #4

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

          ioBroker auf NUC (VM debian v13 (Trixie ), node v22.21.0 npm v10.9.4, js-controller v7.1.0 jsonl/jsonl / HomeMatic CCU-2 (Wired und Funk) / Philips HUE / echo.DOT / Broadlink RM pro / SONOS

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


          Support us

          ioBroker
          Community Adapters
          Donate

          561

          Online

          32.7k

          Benutzer

          82.5k

          Themen

          1.3m

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

          • Du hast noch kein Konto? Registrieren

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