Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ansteuerung für Zeit X

    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

    Ansteuerung für Zeit X

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

      Hallo,

      ich habe einen Heizstab in meinem Boiler, den ich Ersatzweise für die Wärmepumpe im Sommer betreibe.
      Die Ansteuerung erfolgt über die Vis, ein Objekt. Das Blockly läuft los und steuert für 30min im regelmäßigen Abstand von 3 Sekunden ein Zeitrelais an.
      Sollte sich iobroker aufhängen oder fehlerhaft sein, wird nicht mehr angesteuert und der Heizstab saugt mir nicht die Hausbatterie leer. So der Grundgedanke.

      Gelegentlich kommt es aber vor, dass nicht nur 30min angesteuert wird, sondern ununterbrochen, bis ich entweder iobroker neu starte, oder das Skript beende.

      1. Warum ist das so?
      2. Wie kann ich das Blockly verbessern, damit es überhaupt nicht dazu kommen kann?
      3. Wie kann ich verhindern, wenn schon eine Person auf Heizen gedrückt hat, also das Skript läuft, jemand anderes den während die Ansteuerung schon läuft nochmals das Skript startet. Ich vermute, dass könnte auch Einfluss haben. Vielleicht gibt es die Möglichkeit, das zu verhindern

      4141eb16-8077-4d7a-9f1c-e245b01779e2-image.png

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable type="interval" id="Intervall">Intervall</variable>
          <variable type="interval" id="Intervall2">Intervall2</variable>
        </variables>
        <block type="on_ext" id="{GP]f31L:Z[:8=bu`p7e" x="-337" y="-2137">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">any</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="3ciF;@X=vqdnZWF}/ND*">
              <field name="oid">0_userdata.0.Boiler.HeizstabAN30min</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="iq/q#-=Abklf_EhtBYkK">
              <value name="IF0">
                <block type="logic_compare" id="tbh*PfF;vTS#Pf8@-3*J">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="on_source" id="1*`ZN7m4B|(U?{NvV/|-">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_boolean" id="5wKA#s?j!xMt@o:y4Dwp">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="timeouts_setinterval" id="U1Psj/[4{(8mM$SST!Y6">
                  <field name="NAME">Intervall</field>
                  <field name="INTERVAL">3</field>
                  <field name="UNIT">sec</field>
                  <statement name="STATEMENT">
                    <block type="control" id=".*}z95zpJQuIn@*M]9IF">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">s7.2.DBs.DB1.NI32_121_1_Boiler_Stufe_NUR_Heizstab_Puls-Ansteuerung</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="{VWJ!M7,.!5|vQt.XX$i">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </statement>
                  <next>
                    <block type="update" id="@qHjmj$O1vM]AQiJZ=HB">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">0_userdata.0.Boiler.HeizstabAN30min</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="-VP;T9%@oM4vS#*e~E~1">
                          <field name="BOOL">FALSE</field>
                        </block>
                      </value>
                      <next>
                        <block type="timeouts_wait" id="h4R*C^X]WZ#[d^X8^0N*">
                          <field name="DELAY">30</field>
                          <field name="UNIT">min</field>
                          <next>
                            <block type="timeouts_clearinterval" id="QQ+0)HsRZ1VUm!!87:Z{">
                              <field name="NAME">Intervall</field>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
        <block type="on_ext" id=");@yOqr(mMo~ALPv4/=5" disabled="true" x="888" y="-2063">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">any</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="Ij)-ngYVT#cLxp,?P/K|">
              <field name="oid">0_userdata.0.Boiler.HeizstabAN30min</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="aIsH%2KngNR,_:[!SCu?">
              <value name="IF0">
                <block type="logic_compare" id=".-%f^|%IP[42K`+KG12B">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="on_source" id="zz+uMp2gvk)x7SZMNR+}">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_boolean" id="f{dAWKeOZ,O$]txc0/}r">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="timeouts_setinterval" id="tK2zyxG,e1VL1Ja3GW*@">
                  <field name="NAME">Intervall2</field>
                  <field name="INTERVAL">2</field>
                  <field name="UNIT">sec</field>
                  <statement name="STATEMENT">
                    <block type="control" id="-*^#TQzRS9rZU.%~qlVC">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">s7.2.DBs.DB1.NI32_Boiler_Stufe_NUR_Heizstab_Ansteuerung_(Zusatzrelais-Dauersignal)</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="ka[OYk$9tzx9-?Kxw^bX">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </statement>
                  <next>
                    <block type="telegram" id="2KxsY+}@i0S6lY(!f[Qr">
                      <field name="INSTANCE"></field>
                      <field name="LOG"></field>
                      <field name="SILENT">FALSE</field>
                      <field name="PARSEMODE">default</field>
                      <field name="ESCAPING">FALSE</field>
                      <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                      <value name="MESSAGE">
                        <shadow type="text" id=":x~LJOhzhk@,0z:6E4`z">
                          <field name="TEXT">Heizstab für 30min an</field>
                        </shadow>
                      </value>
                      <value name="USERNAME">
                        <block type="text" id="J{SZDA#SsH4,8!VaU%aI">
                          <field name="TEXT">Michael</field>
                        </block>
                      </value>
                      <next>
                        <block type="timeouts_wait" id="J4k~5QLA2sx*N[ydPQc8">
                          <field name="DELAY">15</field>
                          <field name="UNIT">min</field>
                          <next>
                            <block type="timeouts_clearinterval" id="h_~J%?~6q]H].|nVVG_c">
                              <field name="NAME">Intervall</field>
                              <next>
                                <block type="control_ex" id="5H]wK@eIgjSX7HiSuTf=">
                                  <field name="TYPE">true</field>
                                  <field name="CLEAR_RUNNING">FALSE</field>
                                  <value name="OID">
                                    <shadow type="field_oid" id="wjSA(m4#v1;GcT{7iu@9">
                                      <field name="oid">0_userdata.0.Boiler.HeizstabAN30min</field>
                                    </shadow>
                                  </value>
                                  <value name="VALUE">
                                    <shadow type="logic_boolean" id="p+JC@nUbIB=s(DEUC}.U">
                                      <field name="BOOL">FALSE</field>
                                    </shadow>
                                  </value>
                                  <value name="DELAY_MS">
                                    <shadow type="math_number" id="(]yJ*3[CCC=HB);2p8_e">
                                      <field name="NUM">0</field>
                                    </shadow>
                                  </value>
                                  <next>
                                    <block type="telegram" id="V8v2.HaOWFe*~?{5:B;c">
                                      <field name="INSTANCE"></field>
                                      <field name="LOG"></field>
                                      <field name="SILENT">FALSE</field>
                                      <field name="PARSEMODE">default</field>
                                      <field name="ESCAPING">FALSE</field>
                                      <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                                      <value name="MESSAGE">
                                        <shadow type="text" id="~(oOqE6)X;)?zy%wnQq8">
                                          <field name="TEXT">Heizstab wieder aus</field>
                                        </shadow>
                                      </value>
                                      <value name="USERNAME">
                                        <block type="text" id="zOJ|[C)zoGPyK`#z,,V;">
                                          <field name="TEXT">Michael</field>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      

      Besten Dank für eure Hilfe.

      MartinP Dr. Bakterius paul53 3 Replies Last reply Reply Quote 0
      • MartinP
        MartinP @Mika 0 last edited by

        @mika-0 Vielleicht hängen die Probleme (1) und (2) mit dem Auftreten von (3) zusammen

        Für Verriegelung entsprechend Frage (3) könntest Du eine Variable "HeizenLäuft" definieren, mit "false" initialisieren, und zu Beginn des Triggers prüfen, ob die Variable auf false steht.
        Nur dann den Timer-Mechanismus starten, die Variable auf true setzen und nach dem Ablauf am ende nach dem stop der zyklischen Ausführung wieder auf false setzen...

        M 1 Reply Last reply Reply Quote 0
        • Dr. Bakterius
          Dr. Bakterius Most Active @Mika 0 last edited by

          @mika-0 Warum auf wurde aktualisiert und nicht auf wurde geändert getriggert? Denn dann würde es nach den 30 Minuten enden. So startest du immer wieder neu wenn der Datenpunkt aktualisiert wurde und das Intervall läuft mehrfach.

          Du kannst aber auch mit der Aktualisierung das laufende Intervall abbrechen. Dann würde mit jedem Start die Zeit neu zu laufen beginnen ohne das es mehrfach parallel läuft.

          MartinP 1 Reply Last reply Reply Quote 0
          • MartinP
            MartinP @Dr. Bakterius last edited by MartinP

            @dr-bakterius Es gibt eine noch bessere Variante, und zwar "ist größer als letztes" dann könnte man die "falls" Klammer weglassen
            287ea0aa-8a5a-4316-8e5f-8e27f9f2b39c-grafik.png
            Die Frage ist aber ob der Datenpunkt "HeizstabAN30nin" wirklich nur vom Skript gelöscht werden kann. Wenn von außerhalb gelöscht werden kann, ist das natürlich so nicht möglich...

            Ansonste würde diese Lösung auch die Hilfsvariable "HeizenLäuft" unnötig machen.

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

              @mika-0 sagte: nicht nur 30min angesteuert wird, sondern ununterbrochen

              Man muss einen Mehrfachstart des Intervalls verhindern, z.B. so:

              Blockly_temp.JPG

              1 Reply Last reply Reply Quote 1
              • M
                Mika 0 @MartinP last edited by

                OK danke euch allen.
                Ich werde diverse Möglichkeiten testen und euch berichten
                @martinp

                1. was bedeutet "false" initialisieren?
                2. wie geht das?
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                463
                Online

                31.9k
                Users

                80.1k
                Topics

                1.3m
                Posts

                4
                6
                86
                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