Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Bewässerung mit Schleife

    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

    Bewässerung mit Schleife

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

      Ich versuche eine Bewässerungssteuerung aufzubauen.
      Das Magnetventil kommuniziert per MQTT, das funktioniert.
      Nun will ich ein Blockly schreiben, dass einen Bodenfeuchtesensor (der funktioniert) abfragt und bei Unterschreiten der Giess-Schwelle das Ventil einschaltet.
      Das Ventil soll für 30 Sek offen sein und dann wieder schließen.
      Wenn dann nach ca 5 Min. Wartezeit die Bodenfeuchte noch unter der (oberen) Feuchte-Schwelle ist, dann soll nochmals für 30 Sek. bewässert werden.
      Diese Schleife soll maximal 3x wiederholt werden.
      Ich habe das mal so probiert:

      <block xmlns="https://developers.google.com/blockly/xml" type="on" id="Gis*AbH[ZWPQmZ9kEyRe" x="-188" y="-462">
        <field name="OID">0_userdata.0.Bodenfeuchte.giessalarm</field>
        <field name="CONDITION">true</field>
        <field name="ACK_CONDITION"></field>
        <statement name="STATEMENT">
          <block type="debug" id="mxFJUE0lG`x~$61cdtd5">
            <field name="Severity">error</field>
            <value name="TEXT">
              <shadow type="text" id="kw#t5A%:+@DzhRLdTbA-">
                <field name="TEXT">giessen ist wahr!</field>
              </shadow>
            </value>
            <next>
              <block type="controls_if" id="x$F(H03~oZpoBDwx(77;">
                <value name="IF0">
                  <block type="logic_compare" id="Q;4[1%6SE_-B=Oqv.9`U">
                    <field name="OP">LT</field>
                    <value name="A">
                      <block type="get_value_var" id="73aPk14dgE;]f%.q~wje">
                        <field name="ATTR">val</field>
                        <value name="OID">
                          <shadow type="field_oid" id="!+~8!l}XZW)xOhn%TkuG">
                            <field name="oid">mqtt.0.Bodenfeuchte.Zitronenbaum.Feuchtigkeit</field>
                          </shadow>
                        </value>
                      </block>
                    </value>
                    <value name="B">
                      <block type="get_value_var" id=".HTGY5%g~S6h^;FPnc~V">
                        <field name="ATTR">val</field>
                        <value name="OID">
                          <shadow type="field_oid" id="k[Vo/xRpUilcj6qVa4{e">
                            <field name="oid">0_userdata.0.Bodenfeuchte.Giessschwelle</field>
                          </shadow>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="controls_repeat_ext" id="nEuR@]%;?$K8C4%G4$Iu">
                    <value name="TIMES">
                      <shadow type="math_number" id="gQU^:x-kWvcWdQ~c*8Ho">
                        <field name="NUM">3</field>
                      </shadow>
                    </value>
                    <statement name="DO">
                      <block type="controls_if" id="bf=;fx}QzPz/;f@7dk!Q">
                        <mutation else="1"></mutation>
                        <value name="IF0">
                          <block type="logic_compare" id="!}j)8_*HcAx=}o`uU-m$">
                            <field name="OP">LT</field>
                            <value name="A">
                              <block type="get_value_var" id="a}aAY.zO4QQqA$a5*b0v">
                                <field name="ATTR">val</field>
                                <value name="OID">
                                  <shadow type="field_oid" id="*GOO.g^l3j?FX2yx|z*r">
                                    <field name="oid">mqtt.0.Bodenfeuchte.Zitronenbaum.Feuchtigkeit</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                            <value name="B">
                              <block type="get_value_var" id="yAkc;5:]-A@{8B1{u.mg">
                                <field name="ATTR">val</field>
                                <value name="OID">
                                  <shadow type="field_oid" id="/SK`bau{8cD565(OEB9h">
                                    <field name="oid">0_userdata.0.Bodenfeuchte.Feuchteschwelle</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="debug" id="+3$#yTk(ZNnO*w.FB1Y)">
                            <field name="Severity">error</field>
                            <value name="TEXT">
                              <shadow type="text" id="U{KUwLn:+k8!)Kvi@c*,">
                                <field name="TEXT">giesszyklus an</field>
                              </shadow>
                            </value>
                            <next>
                              <block type="control" id="2ainF?e~eeh))*=cc`6h">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">mqtt.0.Gartenpumpe</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id="^7}I9D-[$K;vK8@S]*Ge">
                                    <field name="BOOL">TRUE</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="timeouts_settimeout" id="4k2)k+YYKo@XTmx0i0sM">
                                    <field name="NAME">giessdauer</field>
                                    <field name="DELAY">30</field>
                                    <field name="UNIT">sec</field>
                                    <statement name="STATEMENT">
                                      <block type="control" id="2CX[gpCjkp6Np]jO+3W?">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                        <field name="OID">mqtt.0.Gartenpumpe</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="!EJEzpsUw#_0kfS.Z7P;">
                                            <field name="BOOL">FALSE</field>
                                          </block>
                                        </value>
                                      </block>
                                    </statement>
                                    <next>
                                      <block type="timeouts_settimeout" id="$}**H|?wg|55QFikjmDw">
                                        <field name="NAME">wartezeit</field>
                                        <field name="DELAY">1</field>
                                        <field name="UNIT">min</field>
                                        <statement name="STATEMENT">
                                          <block type="debug" id="1O$O_!4|@IN;H%vE4zrx">
                                            <field name="Severity">error</field>
                                            <value name="TEXT">
                                              <shadow type="text" id="ENJ^fV5!iCDI?YmZd[Sl">
                                                <field name="TEXT">Wartezeit</field>
                                              </shadow>
                                            </value>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </statement>
                        <statement name="ELSE">
                          <block type="controls_flow_statements" id="5PAKb(0]^?Dsj|W-eh@O">
                            <field name="FLOW">BREAK</field>
                          </block>
                        </statement>
                        <next>
                          <block type="debug" id="wJ/KaV_7H[EtAUqo$]u+">
                            <field name="Severity">error</field>
                            <value name="TEXT">
                              <shadow type="text" id="A|NaC8pz4^PP#%J*ne@O">
                                <field name="TEXT">Schleife beendet</field>
                              </shadow>
                            </value>
                            <next>
                              <block type="update" id="?i;vV{^J6`_G7zul^od:">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">0_userdata.0.Bodenfeuchte.giessalarm</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="logic_boolean" id="eeGz+#R]!zI=[:.Ry3ys">
                                    <field name="BOOL">FALSE</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </statement>
      </block>
      

      Was passiert ist, dass die Schleife 3x rasend schnell durchlaufen wird. Vollkommen unabhängig von den Giess und Wartezeiten. Also: Solange der erste Giesszyklus läuft (30 Sek) wird die Schleife schon beendet und keine weiteren Giesszyklen werden ausgelöst obohl die Bodenfeuchte nicht angestiegen ist.
      Wie kann ich das bsser machen?

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

        @andreas-9 sagte: Wie kann ich das bsser machen?

        Z.B. so:

        Blockly_temp.JPG

        Version mit Schleife:

        Blockly_temp.JPG

        A 1 Reply Last reply Reply Quote 1
        • A
          Andreas 9 @paul53 last edited by

          @paul53 Vielen Dank! So funktionierts!
          Ich habe deinen Vorschlag mit der functon genommen.
          Noch ne Frage: Ich hatte zuerst versucht das Blockly "Wiederhole solange" oder "Wiederhole bis" zu verwenden.
          Das hat regelmäßig zum Neustart der javascript-Instanz geführt.
          Könnte man doe o.a. Problematik auch mit Schleifen lösen?

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

            @andreas-9 sagte: versucht das Blockly "Wiederhole solange" oder "Wiederhole bis" zu verwenden.

            Das führt regelmäßig zu einer Endlosschleife, wenn man die Abbruchbedingung falsch (z.B. einen DP-Wert) wählt.

            A 1 Reply Last reply Reply Quote 0
            • A
              Andreas 9 @paul53 last edited by

              @paul53 Dann geht das also nicht:
              "Wiederhole bis" DP Bodenfeuchtigkeit > DPFeuchteschwelle?

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

                @andreas-9 sagte: Dann geht das also nicht:

                Nicht, wenn die Schleife unverzögert durchläuft. Das führt zum Absturz der JS-Instanz.
                Mit einer ausreichend langen Pause (90 s) in der Schleife würde es funktionieren.

                A 1 Reply Last reply Reply Quote 0
                • A
                  Andreas 9 @paul53 last edited by

                  @paul53 said in Bewässerung mit Schleife:

                  Pause (90 s) in der Schleife würde

                  Ahhh... Aber Pause wird ja ungene verwendet - hab ich mal gehört.👂

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

                    @andreas-9 sagte: Pause wird ja ungene verwendet

                    Ich bevorzuge auch die Version mit den Timeouts in einer Funktion.

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      Andreas 9 @paul53 last edited by

                      @paul53 said in Bewässerung mit Schleife:

                      Ich bevorzuge auch die Version mit den Timeouts in einer Funktion.
                      Prima! Nochmals vielen Dank!

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      401
                      Online

                      31.9k
                      Users

                      80.2k
                      Topics

                      1.3m
                      Posts

                      2
                      9
                      81
                      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