NEWS

[Gelöst] Blockly startet alle 50 Minuten


  • Hallo
    Ich habe ein Blockly für die Heizung was automatisch bei Fensteröffnung die DECT Thermostate ausschaltet.
    Bei Fensteröffnung sagt Alexa nach 20 sek. das die Balkontür geöffnet ist und schaltet die Thermostate auf aus. Bei Fensterschließung sagt Alexa nach 20 sek. "Balkontür ist geschlossen"
    Das funktioniert auch alles tadellos aber das merkwürdige ist, dass sie das alle 50 min. wieder sagt, dass die Balkontür geschlossen ist, obwohl sie gar nicht auf war.
    Ich weiß nicht wo diese 50 min herkommen.
    8de01b07-2336-4869-9dea-2765d083fb88-grafik.png

    Kann mir jemand sagen, wo sie das herholt?
    Danke

  • Forum Testing Most Active

    biker1602 du möchtest doch nur eine Aktion wenn true oder false deiner Balkontür?
    Dann sollte es auf wurde geändert, ansonsten läuft dein Script, immer wenn Balkontür aktualisiert wird( deine eventuellen 50min)


  • Danke werde ich gleich mal testen.


  • biker1602
    So wie crunchip das schreibt, wäre das schon der erste Ansatz, dann sollte man sich immer angewöhnen, dass man ein stop timeout direkt vor den timeout setzt. Das ist in Deinem Fall zwar nicht die Ursache, verhindert aber schon mal weitere Probleme.
    Dann hast in den FALLS Bedingungen das selbe Objekt wie im Trigger und hier ist es ebenfalls eleganter, wenn man das über "Wert" aus den Trigger Blöcken abfragt. Dann ist es auch nicht nötig extra noch mal auf "wahr" zu prüfen, da das die Grundfunktion der FALLS Bedingung ist. Im Gegenzug wenn man auf "falsch" prüfen möchte, macht man das einfacher in dem man "nicht""Wert" dafür verwendet.

  • Most Active

    Jan1

    Da muss ich mal einhaken und fragen.
    Ist die Erklärung in Deinem 2.Absatz einfach nur ein 2.Lösungsweg oder hat er andere Vorteile?


  • haselchen
    Der hat andere Vorteile.
    Der Wert wurde bei der Script Abarbeitung bereits im Trigger eingelesen und ist bekannt. Wenn Du nun also Wert verwendest, dann ist das bereits bekannt. Wenn Du da Objekt noch mal angibst, dann muss der Wert noch mal eingelesen werden und da kann es zu Laufzeitproblemen kommen, was sehr sehr selten der Fall sein wird. Allerdings ist es auch einfacher zu erstellen, weil ich nur ein Block einfügen muss 😉
    Somit hast zwei Vorteile, erstens sicherer und zweitens schneller.

  • Most Active

    Jan1

    Danke für die Erklärung.
    Dann versuche ich das in Zukunft umzustellen.
    Habe das meistens so umgesetzt wie der TE.


  • Jan1 said in Blockly startet alle 50 Minuten:

    o wie crunchip das schreibt, wäre das schon der erste Ansatz, dann sollte man sich immer angewöhnen, dass man ein stop timeout direkt vor den timeout setzt. Das ist in Deinem Fall zwar nicht die Ursache, verhindert aber schon mal weitere Probleme.

    Das habe ich nicht ganz verstanden denn ich habe doch unten ein timeout. Soll es oben drüber?

  • Forum Testing Most Active

    biker1602 ja darüber
    Und wenn du anstatt zweimal falls....false/sonst nimmst
    Sparst du dir das balkontür false
    Trigger Balkontür/ wurde geändert
    Timeout stop
    Timeout 20 sec
    ...Falls* Wert
    steuere xyz ...
    Sonst
    Steuere xyz....


  • biker1602
    poste das mal als Export in Code Tacks, dann bau ich das geschwind um. So verstehst das gleich.


  • <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
        <variable type="timeout" id="timeout">timeout</variable>
      </variables>
      <block type="on_ext" id="_GAXpeZECET+^MD+kDHC" x="-1021" y="-645">
        <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="xlgd^bXjY%1%OW96sm8~">
            <field name="oid">zigbee.0.00158d00045c9632.contact</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="timeouts_settimeout" id="EXO!NZp7=cz87vC0c;HS">
            <field name="NAME">timeout</field>
            <field name="DELAY">20</field>
            <field name="UNIT">sec</field>
            <statement name="STATEMENT">
              <block type="controls_if" id="mq*s5ki-0uH;+BVng#;w">
                <value name="IF0">
                  <block type="logic_compare" id="MnW4/UD`*^5@T[]Yv_c+">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="get_value" id="*Y;;k1txUFXPx6L[?Uyh">
                        <field name="ATTR">val</field>
                        <field name="OID">zigbee.0.00158d00045c9632.contact</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_boolean" id="!bepK1hm;bZtvX)!sT,5">
                        <field name="BOOL">FALSE</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control" id="%6P_@g_DpJ/cikTJI(U;">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">fritzdect.0.Comet_099950285545.mode</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="math_number" id="gx2$(+W}8Wo9z|@o}:ER">
                        <field name="NUM">1</field>
                      </block>
                    </value>
                    <next>
                      <block type="control" id="5=2EA1LTs`,t7Xc8}Wj6">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">fritzdect.0.Comet_099950290397.mode</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="CM6,IJyYAH1??64z(|]C">
                            <field name="NUM">1</field>
                          </block>
                        </value>
                        <next>
                          <block type="control" id="AV2f[=n.g?[+S-9|@Qi9">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">fritzdect.0.Comet_119630410624.mode</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="rqMuKRzIV)9@IRW{X?u%">
                                <field name="NUM">1</field>
                              </block>
                            </value>
                            <next>
                              <block type="control" id="xDvh==g:|Oc05+,04D%p">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">alexa2.0.Echo-Devices.G090LA09738502FL.Commands.speak</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="text" id="eL06WLH-XvHB^r@@vu+I">
                                    <field name="TEXT">Balkontür ist geöffnet</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </statement>
                <next>
                  <block type="controls_if" id=";6,4F:.Q*{/?J*dj$oh8">
                    <value name="IF0">
                      <block type="logic_compare" id="WtHg}F=Fw}3I4.;BI+2t">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="get_value" id=";XSV.HxXn]mXz2=)L9nv">
                            <field name="ATTR">val</field>
                            <field name="OID">zigbee.0.00158d00045c9632.contact</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_boolean" id="]O1F:ulDH~#IksCoB=4q">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="1J7))iXa=j{K$BuBez07">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">fritzdect.0.Comet_099950290397.mode</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="|aG:n~Hk7nZy)zJ?nZ9@">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                        <next>
                          <block type="control" id="RDwFqoEaESSrJI$43|E+">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">fritzdect.0.Comet_099950290397.mode</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="math_number" id="7-TUZ:kc)6{,O1r$II*-">
                                <field name="NUM">0</field>
                              </block>
                            </value>
                            <next>
                              <block type="control" id="0x7MQ%r/{!b:exTIf{!~">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">alexa2.0.Echo-Devices.G090LA09738502FL.Commands.speak</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="text" id="U}F,vgf,SWJlM4FYG:Yt">
                                    <field name="TEXT">Balkontür ist geschlossen</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="timeouts_cleartimeout" id="xk]d6Se:n2C~Q{IqN?0d">
                                    <field name="NAME">timeout</field>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </statement>
      </block>
    </xml>
    

  • Jan1 Das war so bestimmt verkehrt oder?


  • biker1602
    in Code Tacks, das sind die Klammern oben, fünftes Symbol von links. Editiere das oben einfach noch mal.


  • biker1602
    e368a73f-3d24-40fc-9d0f-51e3f60418cc-grafik.png

  • Forum Testing Most Active

    Jan1 genau so meinte ich es, wobei ich der Meinung bin, das
    sonst falls Wert
    weggelassen werden kann


  • crunchip
    ja kann weg, da "sonst falls" eh dem "falsch" entspricht und somit ein einfaches "sonst" auch reicht 😉
    Normal fängt man auch mit der Abfrage auf wahr an und ich habs so gelassen um das mit "nicht" "Wert" leichter zu zeigen.


  • Jan1 das hätte ich so ja nie hinbekommen vielen Dank.
    Du bist ja richtig fit. Darf ich dich nochmal zu einem anderen Problem befragen?


  • biker1602
    Klar und das hättest auch ohne Hilfe geschafft, war ja nicht wirklich falsch und es gibt massig Beispiele hier wie man das lösen kann. Es gibt eben nicht nur einen Weg der Lösung, sondern immer mehrere.


  • Jan1 Also ich habe es als neues Script angelegt und gestartet aber Alexa sagt jetzt nichts mehr?


  • biker1602
    baue debug Blöcke ein und schau was noch ausgeführt wird, dann weißt wo es klemmt
    Das sollte so laufen, da sich an der Funktion nichts geändert hat.

    Im übrigen kannst das Thermostat abschalten auch weg lassen, weil die Fritz das nur alle 10 Minuten synchronisiert und die Tür dann schon 10 Minuten offen sein muss, bevor das überhaupt greift 😉

Suggested Topics

1.8k
Online

34.6k
Users

40.7k
Topics

557.9k
Posts