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
  5. Intervall stoppt nicht - Kontakte schalten

NEWS

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

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

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

Intervall stoppt nicht - Kontakte schalten

Geplant Angeheftet Gesperrt Verschoben Blockly
7 Beiträge 2 Kommentatoren 632 Aufrufe 1 Watching
  • Ä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.
  • I Offline
    I Offline
    IckZ
    schrieb am zuletzt editiert von IckZ
    #1

    Hallo!

    Ich beschäftige mich gerade mit den Timeouts und den Intervall-Funktionen und habe gestern mit Hilfe von @paul53 auch schon eine erste Logik erstellt.

    Wo mache ich hier aber den Denkfehler, dass die Intervalle kälter/wärmer zwar deaktiviert weren, wenn die Limits erreicht sind aber dann trotzdem weiterlaufen?

    2de44693-3550-468d-98a3-81c7f0a53a4e-grafik.png

    Hier auch noch der Export

    <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
        <variable id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</variable>
        <variable type="interval" id="Intervall_kaelter">Intervall_kaelter</variable>
        <variable type="interval" id="Intervall_waermer">Intervall_waermer</variable>
      </variables>
      <block type="on_ext" id="}+;*l[!Z|r06sM/=bPYp" x="-387" y="-2588">
        <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="Rz/a4W=#rIMKWt.S9C.v">
            <field name="oid">shelly.0.SHHT-1#B88AEE#1.tmp.temperatureC</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="controls_if" id="_XoZn[7q|1L+/sVOde9)">
            <mutation else="1"></mutation>
            <value name="IF0">
              <block type="logic_operation" id="lU-wa]~?P}.{n@@;egI0">
                <field name="OP">AND</field>
                <value name="A">
                  <block type="logic_compare" id="2cz23j3pVY4]0$,3(zVo">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="get_value" id="*:^L$2,Z#dardpSq@~n@">
                        <field name="ATTR">val</field>
                        <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Switch</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_boolean" id="%!3Y|5|MIsXMv:zE;@2k">
                        <field name="BOOL">TRUE</field>
                      </block>
                    </value>
                  </block>
                </value>
                <value name="B">
                  <block type="logic_compare" id="H2i?{)rBGzNQjYd~{{9M">
                    <field name="OP">GT</field>
                    <value name="A">
                      <block type="convert_tonumber" id="k|(YotaWT]0#6l-5#|_r">
                        <value name="VALUE">
                          <block type="get_value" id="%j[::W3;L+GglXhW[DHP">
                            <field name="ATTR">val</field>
                            <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Power</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <value name="B">
                      <block type="math_number" id="QlsPB[g(X8oLQD0/;f5W">
                        <field name="NUM">15</field>
                      </block>
                    </value>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="variables_set" id="Qf5MKSmT5DBmtN+82;)C">
                <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                <value name="VALUE">
                  <block type="math_number" id="J;G(zWizZaWm}H*b!yz`">
                    <field name="NUM">22</field>
                  </block>
                </value>
                <next>
                  <block type="debug" id="*b{,1Tx1Ywu;c]0Al4KL">
                    <field name="Severity">log</field>
                    <value name="TEXT">
                      <shadow type="text" id="i~LqIvHsx:^`fi_*5Tzs">
                        <field name="TEXT">Heizung ist an!</field>
                      </shadow>
                    </value>
                    <next>
                      <block type="controls_if" id="4E8F]{zAs,kat=s2E:$R">
                        <mutation elseif="1"></mutation>
                        <value name="IF0">
                          <block type="logic_compare" id="?NTfB%GksbJH3LlyPcni">
                            <field name="OP">GT</field>
                            <value name="A">
                              <block type="convert_tonumber" id="/2CPAt6nRj!rbI|iovP`">
                                <value name="VALUE">
                                  <block type="on_source" id="YQIM:/3MS{+po0fHLk2^">
                                    <field name="ATTR">state.val</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_arithmetic" id="CY5i,wjmZg0Pk,OV|kT+">
                                <field name="OP">ADD</field>
                                <value name="A">
                                  <shadow type="math_number" id="w(Yo?!oN]87S%Z@OvTNK">
                                    <field name="NUM">1</field>
                                  </shadow>
                                  <block type="variables_get" id=";w@B4b)t#p9NE7Vs?nvR">
                                    <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <shadow type="math_number" id="Ws@Zd8tB!!SrAa,apV)L">
                                    <field name="NUM">2</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="timeouts_clearinterval" id="OE6Hp+WK+DYZ~~bSL?6[">
                            <field name="NAME">Intervall_waermer</field>
                            <next>
                              <block type="debug" id="Bt@M;/H9|`+E3]Dawf95">
                                <field name="Severity">log</field>
                                <value name="TEXT">
                                  <shadow type="text" id="8,$(!f.WjmGoU7hEzOdA">
                                    <field name="TEXT">schalte waermer - deaktiviert</field>
                                  </shadow>
                                </value>
                                <next>
                                  <block type="timeouts_setinterval" id="f!obR;!~-HKoKm98=WP[">
                                    <field name="NAME">Intervall_kaelter</field>
                                    <field name="INTERVAL">60</field>
                                    <field name="UNIT">sec</field>
                                    <statement name="STATEMENT">
                                      <block type="control" id="GDz2le/EDI9%sAldXe=V">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                        <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="XyJ/]d5m]drNh.M-uY]x">
                                            <field name="BOOL">TRUE</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="control" id="I/SLoH3Zc6o!fPS]0Nw;">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                            <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                            <field name="WITH_DELAY">TRUE</field>
                                            <field name="DELAY_MS">500</field>
                                            <field name="UNIT">ms</field>
                                            <field name="CLEAR_RUNNING">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="dJL%B$~:ElRuZhXR}QO=">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="debug" id=")9_!,%[thf(+Fmdo6DTm">
                                                <field name="Severity">log</field>
                                                <value name="TEXT">
                                                  <shadow type="text" id="pT;;Uol/e67Y@699yCX3">
                                                    <field name="TEXT">schalte kaelter</field>
                                                  </shadow>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </next>
                              </block>
                            </next>
                          </block>
                        </statement>
                        <value name="IF1">
                          <block type="logic_compare" id="GFlyWC#^Wiw}.-iGbtN0">
                            <field name="OP">GT</field>
                            <value name="A">
                              <block type="convert_tonumber" id="25)xvH}C*;H!Hqc8bT6h">
                                <value name="VALUE">
                                  <block type="on_source" id="_dq%%)9z:1!ED{z2%{;J">
                                    <field name="ATTR">oldState.val</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_arithmetic" id="]O5Hyji$U9NWj%BmIvwg">
                                <field name="OP">ADD</field>
                                <value name="A">
                                  <shadow type="math_number">
                                    <field name="NUM">1</field>
                                  </shadow>
                                  <block type="variables_get" id="@=wuo;6P??V~JA]9$p])">
                                    <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <shadow type="math_number" id="DWLvf~,cbf-C~WT-31Xm">
                                    <field name="NUM">2</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO1">
                          <block type="timeouts_clearinterval" id="-`;y*ODDvClxsAOUdqGj">
                            <field name="NAME">Intervall_kaelter</field>
                            <next>
                              <block type="debug" id="|Wes}tdL!T6i7TqVUzAg">
                                <field name="Severity">log</field>
                                <value name="TEXT">
                                  <shadow type="text" id="pIzV/`bA~BD5RC5YP};B">
                                    <field name="TEXT">schalte kaelter - deaktiviert</field>
                                  </shadow>
                                </value>
                              </block>
                            </next>
                          </block>
                        </statement>
                        <next>
                          <block type="controls_if" id="N7H::r2!l3*j*yy$3Eb+">
                            <mutation elseif="1"></mutation>
                            <value name="IF0">
                              <block type="logic_compare" id="ed,y8tqXomuRZe@cekL2">
                                <field name="OP">LT</field>
                                <value name="A">
                                  <block type="convert_tonumber" id="XHuX)!?^Z^`(dWj1p9Xw">
                                    <value name="VALUE">
                                      <block type="on_source" id="ONwAqR!h-RG#P-)W_;U,">
                                        <field name="ATTR">state.val</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="variables_get" id="]~KsL:(1%9D(CK@X5RUW">
                                    <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="timeouts_clearinterval" id="#nvvT[URGIW6Ak^X?o{V">
                                <field name="NAME">Intervall_kaelter</field>
                                <next>
                                  <block type="debug" id="tAHgyV[8BxpfFSoOt%i?">
                                    <field name="Severity">log</field>
                                    <value name="TEXT">
                                      <shadow type="text" id="$(Qk$t?/m$F,!qbCj)=G">
                                        <field name="TEXT">schalte kaelter - deaktiviert</field>
                                      </shadow>
                                    </value>
                                    <next>
                                      <block type="timeouts_setinterval" id="/t*n9iz|?+`Ntst$56X-">
                                        <field name="NAME">Intervall_waermer</field>
                                        <field name="INTERVAL">60</field>
                                        <field name="UNIT">sec</field>
                                        <statement name="STATEMENT">
                                          <block type="control" id="/J#kb!]_U,ISlFYt_Cd7">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                            <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="`;r1Yx}.aBWc6MI:X~#p">
                                                <field name="BOOL">TRUE</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="control" id="BbC}!!_PSt4-{Cy)aW]j">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                                <field name="WITH_DELAY">TRUE</field>
                                                <field name="DELAY_MS">500</field>
                                                <field name="UNIT">ms</field>
                                                <field name="CLEAR_RUNNING">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="Rb6?#x~jk%{QR_iG)byn">
                                                    <field name="BOOL">FALSE</field>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="debug" id="`fQeONQC#h*4m_a~Ix^`">
                                                    <field name="Severity">log</field>
                                                    <value name="TEXT">
                                                      <shadow type="text" id="Z*ZyWTX:sY0gM4(BQ!AA">
                                                        <field name="TEXT">schalte waermer</field>
                                                      </shadow>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </next>
                                  </block>
                                </next>
                              </block>
                            </statement>
                            <value name="IF1">
                              <block type="logic_compare" id="_Oi~19+H1X,n|9R3Wxzc">
                                <field name="OP">LT</field>
                                <value name="A">
                                  <block type="convert_tonumber" id="h+AbeOIHSULP)zK_Ha|e">
                                    <value name="VALUE">
                                      <block type="on_source" id=".$76L.V@Pt.+L=z050{E">
                                        <field name="ATTR">oldState.val</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="variables_get" id="YbX0RG,R90d4ymHO:cMX">
                                    <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO1">
                              <block type="timeouts_clearinterval" id="0Tj!d01pE[xOCRI8QCFo">
                                <field name="NAME">Intervall_kaelter</field>
                                <next>
                                  <block type="debug" id="u8YpbzfHYTxqH1h5DKlY">
                                    <field name="Severity">log</field>
                                    <value name="TEXT">
                                      <shadow type="text" id="=jNqQoK4(1.bAjAE$/#[">
                                        <field name="TEXT">schalte waermer - deaktiviert</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
            <statement name="ELSE">
              <block type="debug" id="::dD/h{5pCQ[*kR)+0UT">
                <field name="Severity">log</field>
                <value name="TEXT">
                  <shadow type="text" id="G)ZJLe`uLVd(Ita$(1t?">
                    <field name="TEXT">Heizung ist aus!</field>
                  </shadow>
                </value>
              </block>
            </statement>
          </block>
        </statement>
      </block>
    </xml>
    
    paul53P 1 Antwort Letzte Antwort
    0
    • I IckZ

      Hallo!

      Ich beschäftige mich gerade mit den Timeouts und den Intervall-Funktionen und habe gestern mit Hilfe von @paul53 auch schon eine erste Logik erstellt.

      Wo mache ich hier aber den Denkfehler, dass die Intervalle kälter/wärmer zwar deaktiviert weren, wenn die Limits erreicht sind aber dann trotzdem weiterlaufen?

      2de44693-3550-468d-98a3-81c7f0a53a4e-grafik.png

      Hier auch noch der Export

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</variable>
          <variable type="interval" id="Intervall_kaelter">Intervall_kaelter</variable>
          <variable type="interval" id="Intervall_waermer">Intervall_waermer</variable>
        </variables>
        <block type="on_ext" id="}+;*l[!Z|r06sM/=bPYp" x="-387" y="-2588">
          <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="Rz/a4W=#rIMKWt.S9C.v">
              <field name="oid">shelly.0.SHHT-1#B88AEE#1.tmp.temperatureC</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="_XoZn[7q|1L+/sVOde9)">
              <mutation else="1"></mutation>
              <value name="IF0">
                <block type="logic_operation" id="lU-wa]~?P}.{n@@;egI0">
                  <field name="OP">AND</field>
                  <value name="A">
                    <block type="logic_compare" id="2cz23j3pVY4]0$,3(zVo">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="get_value" id="*:^L$2,Z#dardpSq@~n@">
                          <field name="ATTR">val</field>
                          <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Switch</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_boolean" id="%!3Y|5|MIsXMv:zE;@2k">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_compare" id="H2i?{)rBGzNQjYd~{{9M">
                      <field name="OP">GT</field>
                      <value name="A">
                        <block type="convert_tonumber" id="k|(YotaWT]0#6l-5#|_r">
                          <value name="VALUE">
                            <block type="get_value" id="%j[::W3;L+GglXhW[DHP">
                              <field name="ATTR">val</field>
                              <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Power</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="math_number" id="QlsPB[g(X8oLQD0/;f5W">
                          <field name="NUM">15</field>
                        </block>
                      </value>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="variables_set" id="Qf5MKSmT5DBmtN+82;)C">
                  <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                  <value name="VALUE">
                    <block type="math_number" id="J;G(zWizZaWm}H*b!yz`">
                      <field name="NUM">22</field>
                    </block>
                  </value>
                  <next>
                    <block type="debug" id="*b{,1Tx1Ywu;c]0Al4KL">
                      <field name="Severity">log</field>
                      <value name="TEXT">
                        <shadow type="text" id="i~LqIvHsx:^`fi_*5Tzs">
                          <field name="TEXT">Heizung ist an!</field>
                        </shadow>
                      </value>
                      <next>
                        <block type="controls_if" id="4E8F]{zAs,kat=s2E:$R">
                          <mutation elseif="1"></mutation>
                          <value name="IF0">
                            <block type="logic_compare" id="?NTfB%GksbJH3LlyPcni">
                              <field name="OP">GT</field>
                              <value name="A">
                                <block type="convert_tonumber" id="/2CPAt6nRj!rbI|iovP`">
                                  <value name="VALUE">
                                    <block type="on_source" id="YQIM:/3MS{+po0fHLk2^">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_arithmetic" id="CY5i,wjmZg0Pk,OV|kT+">
                                  <field name="OP">ADD</field>
                                  <value name="A">
                                    <shadow type="math_number" id="w(Yo?!oN]87S%Z@OvTNK">
                                      <field name="NUM">1</field>
                                    </shadow>
                                    <block type="variables_get" id=";w@B4b)t#p9NE7Vs?nvR">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <shadow type="math_number" id="Ws@Zd8tB!!SrAa,apV)L">
                                      <field name="NUM">2</field>
                                    </shadow>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="timeouts_clearinterval" id="OE6Hp+WK+DYZ~~bSL?6[">
                              <field name="NAME">Intervall_waermer</field>
                              <next>
                                <block type="debug" id="Bt@M;/H9|`+E3]Dawf95">
                                  <field name="Severity">log</field>
                                  <value name="TEXT">
                                    <shadow type="text" id="8,$(!f.WjmGoU7hEzOdA">
                                      <field name="TEXT">schalte waermer - deaktiviert</field>
                                    </shadow>
                                  </value>
                                  <next>
                                    <block type="timeouts_setinterval" id="f!obR;!~-HKoKm98=WP[">
                                      <field name="NAME">Intervall_kaelter</field>
                                      <field name="INTERVAL">60</field>
                                      <field name="UNIT">sec</field>
                                      <statement name="STATEMENT">
                                        <block type="control" id="GDz2le/EDI9%sAldXe=V">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                          <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                            <block type="logic_boolean" id="XyJ/]d5m]drNh.M-uY]x">
                                              <field name="BOOL">TRUE</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="control" id="I/SLoH3Zc6o!fPS]0Nw;">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                              <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                              <field name="WITH_DELAY">TRUE</field>
                                              <field name="DELAY_MS">500</field>
                                              <field name="UNIT">ms</field>
                                              <field name="CLEAR_RUNNING">FALSE</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="dJL%B$~:ElRuZhXR}QO=">
                                                  <field name="BOOL">FALSE</field>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="debug" id=")9_!,%[thf(+Fmdo6DTm">
                                                  <field name="Severity">log</field>
                                                  <value name="TEXT">
                                                    <shadow type="text" id="pT;;Uol/e67Y@699yCX3">
                                                      <field name="TEXT">schalte kaelter</field>
                                                    </shadow>
                                                  </value>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </statement>
                          <value name="IF1">
                            <block type="logic_compare" id="GFlyWC#^Wiw}.-iGbtN0">
                              <field name="OP">GT</field>
                              <value name="A">
                                <block type="convert_tonumber" id="25)xvH}C*;H!Hqc8bT6h">
                                  <value name="VALUE">
                                    <block type="on_source" id="_dq%%)9z:1!ED{z2%{;J">
                                      <field name="ATTR">oldState.val</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_arithmetic" id="]O5Hyji$U9NWj%BmIvwg">
                                  <field name="OP">ADD</field>
                                  <value name="A">
                                    <shadow type="math_number">
                                      <field name="NUM">1</field>
                                    </shadow>
                                    <block type="variables_get" id="@=wuo;6P??V~JA]9$p])">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <shadow type="math_number" id="DWLvf~,cbf-C~WT-31Xm">
                                      <field name="NUM">2</field>
                                    </shadow>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO1">
                            <block type="timeouts_clearinterval" id="-`;y*ODDvClxsAOUdqGj">
                              <field name="NAME">Intervall_kaelter</field>
                              <next>
                                <block type="debug" id="|Wes}tdL!T6i7TqVUzAg">
                                  <field name="Severity">log</field>
                                  <value name="TEXT">
                                    <shadow type="text" id="pIzV/`bA~BD5RC5YP};B">
                                      <field name="TEXT">schalte kaelter - deaktiviert</field>
                                    </shadow>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </statement>
                          <next>
                            <block type="controls_if" id="N7H::r2!l3*j*yy$3Eb+">
                              <mutation elseif="1"></mutation>
                              <value name="IF0">
                                <block type="logic_compare" id="ed,y8tqXomuRZe@cekL2">
                                  <field name="OP">LT</field>
                                  <value name="A">
                                    <block type="convert_tonumber" id="XHuX)!?^Z^`(dWj1p9Xw">
                                      <value name="VALUE">
                                        <block type="on_source" id="ONwAqR!h-RG#P-)W_;U,">
                                          <field name="ATTR">state.val</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="variables_get" id="]~KsL:(1%9D(CK@X5RUW">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="timeouts_clearinterval" id="#nvvT[URGIW6Ak^X?o{V">
                                  <field name="NAME">Intervall_kaelter</field>
                                  <next>
                                    <block type="debug" id="tAHgyV[8BxpfFSoOt%i?">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="$(Qk$t?/m$F,!qbCj)=G">
                                          <field name="TEXT">schalte kaelter - deaktiviert</field>
                                        </shadow>
                                      </value>
                                      <next>
                                        <block type="timeouts_setinterval" id="/t*n9iz|?+`Ntst$56X-">
                                          <field name="NAME">Intervall_waermer</field>
                                          <field name="INTERVAL">60</field>
                                          <field name="UNIT">sec</field>
                                          <statement name="STATEMENT">
                                            <block type="control" id="/J#kb!]_U,ISlFYt_Cd7">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                              <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="`;r1Yx}.aBWc6MI:X~#p">
                                                  <field name="BOOL">TRUE</field>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="control" id="BbC}!!_PSt4-{Cy)aW]j">
                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                  <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                                  <field name="WITH_DELAY">TRUE</field>
                                                  <field name="DELAY_MS">500</field>
                                                  <field name="UNIT">ms</field>
                                                  <field name="CLEAR_RUNNING">FALSE</field>
                                                  <value name="VALUE">
                                                    <block type="logic_boolean" id="Rb6?#x~jk%{QR_iG)byn">
                                                      <field name="BOOL">FALSE</field>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="debug" id="`fQeONQC#h*4m_a~Ix^`">
                                                      <field name="Severity">log</field>
                                                      <value name="TEXT">
                                                        <shadow type="text" id="Z*ZyWTX:sY0gM4(BQ!AA">
                                                          <field name="TEXT">schalte waermer</field>
                                                        </shadow>
                                                      </value>
                                                    </block>
                                                  </next>
                                                </block>
                                              </next>
                                            </block>
                                          </statement>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF1">
                                <block type="logic_compare" id="_Oi~19+H1X,n|9R3Wxzc">
                                  <field name="OP">LT</field>
                                  <value name="A">
                                    <block type="convert_tonumber" id="h+AbeOIHSULP)zK_Ha|e">
                                      <value name="VALUE">
                                        <block type="on_source" id=".$76L.V@Pt.+L=z050{E">
                                          <field name="ATTR">oldState.val</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="variables_get" id="YbX0RG,R90d4ymHO:cMX">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO1">
                                <block type="timeouts_clearinterval" id="0Tj!d01pE[xOCRI8QCFo">
                                  <field name="NAME">Intervall_kaelter</field>
                                  <next>
                                    <block type="debug" id="u8YpbzfHYTxqH1h5DKlY">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="=jNqQoK4(1.bAjAE$/#[">
                                          <field name="TEXT">schalte waermer - deaktiviert</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
              <statement name="ELSE">
                <block type="debug" id="::dD/h{5pCQ[*kR)+0UT">
                  <field name="Severity">log</field>
                  <value name="TEXT">
                    <shadow type="text" id="G)ZJLe`uLVd(Ita$(1t?">
                      <field name="TEXT">Heizung ist aus!</field>
                    </shadow>
                  </value>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @IckZ

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</variable>
          <variable type="interval" id="Intervall_kaelter">Intervall_kaelter</variable>
          <variable type="interval" id="Intervall_waermer">Intervall_waermer</variable>
        </variables>
        <block type="on_ext" id="}+;*l[!Z|r06sM/=bPYp" x="-387" y="-2588">
          <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="Rz/a4W=#rIMKWt.S9C.v">
              <field name="oid">shelly.0.SHHT-1#B88AEE#1.tmp.temperatureC</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="variables_set" id="Qf5MKSmT5DBmtN+82;)C">
              <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
              <value name="VALUE">
                <block type="math_number" id="J;G(zWizZaWm}H*b!yz`">
                  <field name="NUM">22</field>
                </block>
              </value>
              <next>
                <block type="controls_if" id="_XoZn[7q|1L+/sVOde9)">
                  <mutation else="1"></mutation>
                  <value name="IF0">
                    <block type="logic_operation" id="lU-wa]~?P}.{n@@;egI0">
                      <field name="OP">AND</field>
                      <value name="A">
                        <block type="logic_compare" id="2cz23j3pVY4]0$,3(zVo">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="get_value" id="*:^L$2,Z#dardpSq@~n@">
                              <field name="ATTR">val</field>
                              <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Switch</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_boolean" id="%!3Y|5|MIsXMv:zE;@2k">
                              <field name="BOOL">TRUE</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_compare" id="H2i?{)rBGzNQjYd~{{9M">
                          <field name="OP">GT</field>
                          <value name="A">
                            <block type="convert_tonumber" id="k|(YotaWT]0#6l-5#|_r">
                              <value name="VALUE">
                                <block type="get_value" id="%j[::W3;L+GglXhW[DHP">
                                  <field name="ATTR">val</field>
                                  <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Power</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="math_number" id="QlsPB[g(X8oLQD0/;f5W">
                              <field name="NUM">15</field>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="debug" id="*b{,1Tx1Ywu;c]0Al4KL">
                      <field name="Severity">log</field>
                      <value name="TEXT">
                        <shadow type="text" id="i~LqIvHsx:^`fi_*5Tzs">
                          <field name="TEXT">Heizung ist an!</field>
                        </shadow>
                      </value>
                      <next>
                        <block type="controls_if" id="4E8F]{zAs,kat=s2E:$R">
                          <mutation elseif="1"></mutation>
                          <value name="IF0">
                            <block type="logic_compare" id="?NTfB%GksbJH3LlyPcni">
                              <field name="OP">LT</field>
                              <value name="A">
                                <block type="convert_tonumber" id="/2CPAt6nRj!rbI|iovP`">
                                  <value name="VALUE">
                                    <block type="on_source" id="YQIM:/3MS{+po0fHLk2^">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_arithmetic" id="CY5i,wjmZg0Pk,OV|kT+">
                                  <field name="OP">ADD</field>
                                  <value name="A">
                                    <shadow type="math_number" id="w(Yo?!oN]87S%Z@OvTNK">
                                      <field name="NUM">1</field>
                                    </shadow>
                                    <block type="variables_get" id=";w@B4b)t#p9NE7Vs?nvR">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <shadow type="math_number" id="Ws@Zd8tB!!SrAa,apV)L">
                                      <field name="NUM">2</field>
                                    </shadow>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="timeouts_clearinterval" id="OE6Hp+WK+DYZ~~bSL?6[">
                              <field name="NAME">Intervall_kaelter</field>
                              <next>
                                <block type="debug" id="|Wes}tdL!T6i7TqVUzAg">
                                  <field name="Severity">log</field>
                                  <value name="TEXT">
                                    <shadow type="text" id="pIzV/`bA~BD5RC5YP};B">
                                      <field name="TEXT">schalte kaelter - deaktiviert</field>
                                    </shadow>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </statement>
                          <value name="IF1">
                            <block type="logic_compare" id="GFlyWC#^Wiw}.-iGbtN0">
                              <field name="OP">LT</field>
                              <value name="A">
                                <block type="convert_tonumber" id="25)xvH}C*;H!Hqc8bT6h">
                                  <value name="VALUE">
                                    <block type="on_source" id="_dq%%)9z:1!ED{z2%{;J">
                                      <field name="ATTR">oldState.val</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <value name="B">
                                <block type="math_arithmetic" id="]O5Hyji$U9NWj%BmIvwg">
                                  <field name="OP">ADD</field>
                                  <value name="A">
                                    <shadow type="math_number">
                                      <field name="NUM">1</field>
                                    </shadow>
                                    <block type="variables_get" id="@=wuo;6P??V~JA]9$p])">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <shadow type="math_number" id="DWLvf~,cbf-C~WT-31Xm">
                                      <field name="NUM">2</field>
                                    </shadow>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO1">
                            <block type="timeouts_setinterval" id="f!obR;!~-HKoKm98=WP[">
                              <field name="NAME">Intervall_kaelter</field>
                              <field name="INTERVAL">60</field>
                              <field name="UNIT">sec</field>
                              <statement name="STATEMENT">
                                <block type="control" id="GDz2le/EDI9%sAldXe=V">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="XyJ/]d5m]drNh.M-uY]x">
                                      <field name="BOOL">TRUE</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="control" id="I/SLoH3Zc6o!fPS]0Nw;">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                      <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                      <field name="WITH_DELAY">TRUE</field>
                                      <field name="DELAY_MS">500</field>
                                      <field name="UNIT">ms</field>
                                      <field name="CLEAR_RUNNING">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="dJL%B$~:ElRuZhXR}QO=">
                                          <field name="BOOL">FALSE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="debug" id=")9_!,%[thf(+Fmdo6DTm">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="pT;;Uol/e67Y@699yCX3">
                                              <field name="TEXT">schalte kaelter</field>
                                            </shadow>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                            </block>
                          </statement>
                          <next>
                            <block type="controls_if" id="N7H::r2!l3*j*yy$3Eb+">
                              <mutation elseif="1"></mutation>
                              <value name="IF0">
                                <block type="logic_compare" id="ed,y8tqXomuRZe@cekL2">
                                  <field name="OP">GT</field>
                                  <value name="A">
                                    <block type="convert_tonumber" id="XHuX)!?^Z^`(dWj1p9Xw">
                                      <value name="VALUE">
                                        <block type="on_source" id="ONwAqR!h-RG#P-)W_;U,">
                                          <field name="ATTR">state.val</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="variables_get" id="]~KsL:(1%9D(CK@X5RUW">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="timeouts_clearinterval" id="0Tj!d01pE[xOCRI8QCFo">
                                  <field name="NAME">Intervall_waermer</field>
                                  <next>
                                    <block type="debug" id="u8YpbzfHYTxqH1h5DKlY">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="=jNqQoK4(1.bAjAE$/#[">
                                          <field name="TEXT">schalte waermer - deaktiviert</field>
                                        </shadow>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF1">
                                <block type="logic_compare" id="_Oi~19+H1X,n|9R3Wxzc">
                                  <field name="OP">GT</field>
                                  <value name="A">
                                    <block type="convert_tonumber" id="h+AbeOIHSULP)zK_Ha|e">
                                      <value name="VALUE">
                                        <block type="on_source" id=".$76L.V@Pt.+L=z050{E">
                                          <field name="ATTR">oldState.val</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="variables_get" id="YbX0RG,R90d4ymHO:cMX">
                                      <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO1">
                                <block type="timeouts_setinterval" id="/t*n9iz|?+`Ntst$56X-">
                                  <field name="NAME">Intervall_waermer</field>
                                  <field name="INTERVAL">60</field>
                                  <field name="UNIT">sec</field>
                                  <statement name="STATEMENT">
                                    <block type="control" id="/J#kb!]_U,ISlFYt_Cd7">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="`;r1Yx}.aBWc6MI:X~#p">
                                          <field name="BOOL">TRUE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="control" id="BbC}!!_PSt4-{Cy)aW]j">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                          <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                          <field name="WITH_DELAY">TRUE</field>
                                          <field name="DELAY_MS">500</field>
                                          <field name="UNIT">ms</field>
                                          <field name="CLEAR_RUNNING">FALSE</field>
                                          <value name="VALUE">
                                            <block type="logic_boolean" id="Rb6?#x~jk%{QR_iG)byn">
                                              <field name="BOOL">FALSE</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="debug" id="`fQeONQC#h*4m_a~Ix^`">
                                              <field name="Severity">log</field>
                                              <value name="TEXT">
                                                <shadow type="text" id="Z*ZyWTX:sY0gM4(BQ!AA">
                                                  <field name="TEXT">schalte waermer</field>
                                                </shadow>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </statement>
                  <statement name="ELSE">
                    <block type="debug" id="::dD/h{5pCQ[*kR)+0UT">
                      <field name="Severity">log</field>
                      <value name="TEXT">
                        <shadow type="text" id="G)ZJLe`uLVd(Ita$(1t?">
                          <field name="TEXT">Heizung ist aus!</field>
                        </shadow>
                      </value>
                    </block>
                  </statement>
                </block>
              </next>
            </block>
          </statement>
        </block>
      </xml>
      

      EDIT: Damit die Bedingung für den vorherigen Wert auch bei Skriptstart erfüllt ist, würde ich den Datenpunktwert bei Start entsprechend setzen.

      Blockly_temp.JPG

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      I 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @IckZ

        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</variable>
            <variable type="interval" id="Intervall_kaelter">Intervall_kaelter</variable>
            <variable type="interval" id="Intervall_waermer">Intervall_waermer</variable>
          </variables>
          <block type="on_ext" id="}+;*l[!Z|r06sM/=bPYp" x="-387" y="-2588">
            <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="Rz/a4W=#rIMKWt.S9C.v">
                <field name="oid">shelly.0.SHHT-1#B88AEE#1.tmp.temperatureC</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="variables_set" id="Qf5MKSmT5DBmtN+82;)C">
                <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                <value name="VALUE">
                  <block type="math_number" id="J;G(zWizZaWm}H*b!yz`">
                    <field name="NUM">22</field>
                  </block>
                </value>
                <next>
                  <block type="controls_if" id="_XoZn[7q|1L+/sVOde9)">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <block type="logic_operation" id="lU-wa]~?P}.{n@@;egI0">
                        <field name="OP">AND</field>
                        <value name="A">
                          <block type="logic_compare" id="2cz23j3pVY4]0$,3(zVo">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="get_value" id="*:^L$2,Z#dardpSq@~n@">
                                <field name="ATTR">val</field>
                                <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Switch</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="logic_boolean" id="%!3Y|5|MIsXMv:zE;@2k">
                                <field name="BOOL">TRUE</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_compare" id="H2i?{)rBGzNQjYd~{{9M">
                            <field name="OP">GT</field>
                            <value name="A">
                              <block type="convert_tonumber" id="k|(YotaWT]0#6l-5#|_r">
                                <value name="VALUE">
                                  <block type="get_value" id="%j[::W3;L+GglXhW[DHP">
                                    <field name="ATTR">val</field>
                                    <field name="OID">shelly.0.SHPLG-S#1638EE#1.Relay0.Power</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <value name="B">
                              <block type="math_number" id="QlsPB[g(X8oLQD0/;f5W">
                                <field name="NUM">15</field>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="debug" id="*b{,1Tx1Ywu;c]0Al4KL">
                        <field name="Severity">log</field>
                        <value name="TEXT">
                          <shadow type="text" id="i~LqIvHsx:^`fi_*5Tzs">
                            <field name="TEXT">Heizung ist an!</field>
                          </shadow>
                        </value>
                        <next>
                          <block type="controls_if" id="4E8F]{zAs,kat=s2E:$R">
                            <mutation elseif="1"></mutation>
                            <value name="IF0">
                              <block type="logic_compare" id="?NTfB%GksbJH3LlyPcni">
                                <field name="OP">LT</field>
                                <value name="A">
                                  <block type="convert_tonumber" id="/2CPAt6nRj!rbI|iovP`">
                                    <value name="VALUE">
                                      <block type="on_source" id="YQIM:/3MS{+po0fHLk2^">
                                        <field name="ATTR">state.val</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_arithmetic" id="CY5i,wjmZg0Pk,OV|kT+">
                                    <field name="OP">ADD</field>
                                    <value name="A">
                                      <shadow type="math_number" id="w(Yo?!oN]87S%Z@OvTNK">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="variables_get" id=";w@B4b)t#p9NE7Vs?nvR">
                                        <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <shadow type="math_number" id="Ws@Zd8tB!!SrAa,apV)L">
                                        <field name="NUM">2</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="timeouts_clearinterval" id="OE6Hp+WK+DYZ~~bSL?6[">
                                <field name="NAME">Intervall_kaelter</field>
                                <next>
                                  <block type="debug" id="|Wes}tdL!T6i7TqVUzAg">
                                    <field name="Severity">log</field>
                                    <value name="TEXT">
                                      <shadow type="text" id="pIzV/`bA~BD5RC5YP};B">
                                        <field name="TEXT">schalte kaelter - deaktiviert</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </next>
                              </block>
                            </statement>
                            <value name="IF1">
                              <block type="logic_compare" id="GFlyWC#^Wiw}.-iGbtN0">
                                <field name="OP">LT</field>
                                <value name="A">
                                  <block type="convert_tonumber" id="25)xvH}C*;H!Hqc8bT6h">
                                    <value name="VALUE">
                                      <block type="on_source" id="_dq%%)9z:1!ED{z2%{;J">
                                        <field name="ATTR">oldState.val</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="math_arithmetic" id="]O5Hyji$U9NWj%BmIvwg">
                                    <field name="OP">ADD</field>
                                    <value name="A">
                                      <shadow type="math_number">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="variables_get" id="@=wuo;6P??V~JA]9$p])">
                                        <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <shadow type="math_number" id="DWLvf~,cbf-C~WT-31Xm">
                                        <field name="NUM">2</field>
                                      </shadow>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO1">
                              <block type="timeouts_setinterval" id="f!obR;!~-HKoKm98=WP[">
                                <field name="NAME">Intervall_kaelter</field>
                                <field name="INTERVAL">60</field>
                                <field name="UNIT">sec</field>
                                <statement name="STATEMENT">
                                  <block type="control" id="GDz2le/EDI9%sAldXe=V">
                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                    <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                    <field name="WITH_DELAY">FALSE</field>
                                    <value name="VALUE">
                                      <block type="logic_boolean" id="XyJ/]d5m]drNh.M-uY]x">
                                        <field name="BOOL">TRUE</field>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="control" id="I/SLoH3Zc6o!fPS]0Nw;">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                        <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER3</field>
                                        <field name="WITH_DELAY">TRUE</field>
                                        <field name="DELAY_MS">500</field>
                                        <field name="UNIT">ms</field>
                                        <field name="CLEAR_RUNNING">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="dJL%B$~:ElRuZhXR}QO=">
                                            <field name="BOOL">FALSE</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="debug" id=")9_!,%[thf(+Fmdo6DTm">
                                            <field name="Severity">log</field>
                                            <value name="TEXT">
                                              <shadow type="text" id="pT;;Uol/e67Y@699yCX3">
                                                <field name="TEXT">schalte kaelter</field>
                                              </shadow>
                                            </value>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                              </block>
                            </statement>
                            <next>
                              <block type="controls_if" id="N7H::r2!l3*j*yy$3Eb+">
                                <mutation elseif="1"></mutation>
                                <value name="IF0">
                                  <block type="logic_compare" id="ed,y8tqXomuRZe@cekL2">
                                    <field name="OP">GT</field>
                                    <value name="A">
                                      <block type="convert_tonumber" id="XHuX)!?^Z^`(dWj1p9Xw">
                                        <value name="VALUE">
                                          <block type="on_source" id="ONwAqR!h-RG#P-)W_;U,">
                                            <field name="ATTR">state.val</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <block type="variables_get" id="]~KsL:(1%9D(CK@X5RUW">
                                        <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <statement name="DO0">
                                  <block type="timeouts_clearinterval" id="0Tj!d01pE[xOCRI8QCFo">
                                    <field name="NAME">Intervall_waermer</field>
                                    <next>
                                      <block type="debug" id="u8YpbzfHYTxqH1h5DKlY">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                          <shadow type="text" id="=jNqQoK4(1.bAjAE$/#[">
                                            <field name="TEXT">schalte waermer - deaktiviert</field>
                                          </shadow>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </statement>
                                <value name="IF1">
                                  <block type="logic_compare" id="_Oi~19+H1X,n|9R3Wxzc">
                                    <field name="OP">GT</field>
                                    <value name="A">
                                      <block type="convert_tonumber" id="h+AbeOIHSULP)zK_Ha|e">
                                        <value name="VALUE">
                                          <block type="on_source" id=".$76L.V@Pt.+L=z050{E">
                                            <field name="ATTR">oldState.val</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <block type="variables_get" id="YbX0RG,R90d4ymHO:cMX">
                                        <field name="VAR" id="$bI:Qyw!.FUcwH}4I-bu">Temperaturschwelle</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <statement name="DO1">
                                  <block type="timeouts_setinterval" id="/t*n9iz|?+`Ntst$56X-">
                                    <field name="NAME">Intervall_waermer</field>
                                    <field name="INTERVAL">60</field>
                                    <field name="UNIT">sec</field>
                                    <statement name="STATEMENT">
                                      <block type="control" id="/J#kb!]_U,ISlFYt_Cd7">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                        <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE">
                                          <block type="logic_boolean" id="`;r1Yx}.aBWc6MI:X~#p">
                                            <field name="BOOL">TRUE</field>
                                          </block>
                                        </value>
                                        <next>
                                          <block type="control" id="BbC}!!_PSt4-{Cy)aW]j">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                            <field name="OID">sonoff.0.Sonoff4CH_Pro_Client1 .POWER2</field>
                                            <field name="WITH_DELAY">TRUE</field>
                                            <field name="DELAY_MS">500</field>
                                            <field name="UNIT">ms</field>
                                            <field name="CLEAR_RUNNING">FALSE</field>
                                            <value name="VALUE">
                                              <block type="logic_boolean" id="Rb6?#x~jk%{QR_iG)byn">
                                                <field name="BOOL">FALSE</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="debug" id="`fQeONQC#h*4m_a~Ix^`">
                                                <field name="Severity">log</field>
                                                <value name="TEXT">
                                                  <shadow type="text" id="Z*ZyWTX:sY0gM4(BQ!AA">
                                                    <field name="TEXT">schalte waermer</field>
                                                  </shadow>
                                                </value>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </statement>
                                  </block>
                                </statement>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="debug" id="::dD/h{5pCQ[*kR)+0UT">
                        <field name="Severity">log</field>
                        <value name="TEXT">
                          <shadow type="text" id="G)ZJLe`uLVd(Ita$(1t?">
                            <field name="TEXT">Heizung ist aus!</field>
                          </shadow>
                        </value>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </xml>
        

        EDIT: Damit die Bedingung für den vorherigen Wert auch bei Skriptstart erfüllt ist, würde ich den Datenpunktwert bei Start entsprechend setzen.

        Blockly_temp.JPG

        I Offline
        I Offline
        IckZ
        schrieb am zuletzt editiert von IckZ
        #3

        @paul53 oh wow - genial :) Bei dem Schema wird der Intervall auf alle Fälle immer vorher beendet. Irgendwo habe ich einen Knoten im Kopf, weshalb ich nicht erkenne, in welchem Fall der Intervall in meinem Code nicht abbrechen würde. Kannst du noch mal mit dem Finger drauf zeigen?

        Würde es im Prinzip nicht aufs Gleiche rauskommen, wenn ich in meinem Code jeweils kaelter und waermer vor jedem erneuten Start stoppe? Ich habe allerdings das Gefühl, dass es hier auch wieder zu Problemen kommen könnte:
        64cf34d1-ec57-4451-8251-7307943018ab-grafik.png

        Interessant finde ich als erstes auf alle Fälle dein EDIT, da ich mir gerade vorhin auch Gedanken zu dem Problem mit der Steckdose und der Inaktivität gemacht habe.

        Wenn kein oder nur ein geringer Verbraucher angeschlossen ist und die Steckdose (warum auch immer) an, wären "WERT" und "VORHERIGER WERT" immer annährend gleich aber immer unter dem Limit. So auch hier bei der Temperatur. Mit der Aktualisierung müsste das tatsächlich umgangen werden. Vielleicht sollte man den Wert nur in einer Variable speichern, damit die Temperatur-Logs o.ä. nicht beeinflusst werden.

        Ich denke die Tage auf alle Fälle noch einmal drauf rum. Vielen Dank für die erneute und schnelle Hilfe. Ich werde Rückmeldung geben, ob es so funktioniert!

        paul53P 1 Antwort Letzte Antwort
        0
        • I IckZ

          @paul53 oh wow - genial :) Bei dem Schema wird der Intervall auf alle Fälle immer vorher beendet. Irgendwo habe ich einen Knoten im Kopf, weshalb ich nicht erkenne, in welchem Fall der Intervall in meinem Code nicht abbrechen würde. Kannst du noch mal mit dem Finger drauf zeigen?

          Würde es im Prinzip nicht aufs Gleiche rauskommen, wenn ich in meinem Code jeweils kaelter und waermer vor jedem erneuten Start stoppe? Ich habe allerdings das Gefühl, dass es hier auch wieder zu Problemen kommen könnte:
          64cf34d1-ec57-4451-8251-7307943018ab-grafik.png

          Interessant finde ich als erstes auf alle Fälle dein EDIT, da ich mir gerade vorhin auch Gedanken zu dem Problem mit der Steckdose und der Inaktivität gemacht habe.

          Wenn kein oder nur ein geringer Verbraucher angeschlossen ist und die Steckdose (warum auch immer) an, wären "WERT" und "VORHERIGER WERT" immer annährend gleich aber immer unter dem Limit. So auch hier bei der Temperatur. Mit der Aktualisierung müsste das tatsächlich umgangen werden. Vielleicht sollte man den Wert nur in einer Variable speichern, damit die Temperatur-Logs o.ä. nicht beeinflusst werden.

          Ich denke die Tage auf alle Fälle noch einmal drauf rum. Vielen Dank für die erneute und schnelle Hilfe. Ich werde Rückmeldung geben, ob es so funktioniert!

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @IckZ sagte:

          Vielleicht sollte man den Wert nur in einer Variable speichern,

          Dann kann man "vorheriger Wert" nicht verwenden, denn den gibt es nur im Datenpunkt. Stattdessen müsste man sich den Wert in dieser Variablen merken.

          Blockly_temp.JPG

          Anmerkung: Ein Intervall von 60 s ist für thermische Prozesse sicher zu kurz. 10 Minuten würden besser passen.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          I 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @IckZ sagte:

            Vielleicht sollte man den Wert nur in einer Variable speichern,

            Dann kann man "vorheriger Wert" nicht verwenden, denn den gibt es nur im Datenpunkt. Stattdessen müsste man sich den Wert in dieser Variablen merken.

            Blockly_temp.JPG

            Anmerkung: Ein Intervall von 60 s ist für thermische Prozesse sicher zu kurz. 10 Minuten würden besser passen.

            I Offline
            I Offline
            IckZ
            schrieb am zuletzt editiert von
            #5

            @paul53 Guten Abend!

            Verstehe. So wie ich das sehe, aktualisiert "aktualisiere Wert" auch nicht den Wert im Gerät sondern nur im Code. Zumindest tauchen keine Ausreißer in meinen Testlogs auf die ich für Grafana erstellen lasse. Kann das sein?

            Zu deiner Anmerkung: Ja stimmt :). Ich habe die 60Sek aktuell auch nur testweise reingesetzt, damit ich schneller sehen kann, was passiert. Schneller geht leider nicht, da das Modul (welches schaltet) sonst ggf. Probleme bekommt.

            Trotzdem brüte ich noch über deinem und meinem Skript und würde mich über eine Erklärung freuen:

            Ausgangslage:
            Heizung geht an: 18 Grad (Wert). 23 Grad (vorheriger Wert bei Start gesetzt).

            • In deinem Skript läuft er bis in das letzte "sonst falls" und schaltet intervall wärmer an
            • Bei meinem in das letzte "falls" und schaltet intervall wärmer

            Werte ändern sich:
            Jetzt 24 Grad und 18 (vorheriger)

            • In deinem Skript würde ich vermute, dass er in das erste "sonst falls" geht und den eigentlich unteren "falls" ignoriert und damit fälschlicherweise kälter schaltet bevor er dann auch noch in das 2. falls geht und den Intervall für wärmer aktiviert? Fehlt da nicht ein und Wert > Temperaturschwelle im ersten "sonst falls"?

            • In meinem Skript würde ich denken, dass er in das letzte sonst falls geht und den Intervall für wärmer stoppt.

            Werte ändern sich wieder:
            Jetzt 21 Grad und 24 (vorheriger)

            • In deinem Skript (angenommen alles ist planmäßig aus) -> kälter geht aus (läuft aber nicht) -> wärmer geht an = top!
            • In meinem Skript -> wärmer geht an.

            Werte ändern sich wider
            Jetzt 25 vorheriger 21

            • In deinem Skript -> kälter geht an -> wärmer geht aus
            • In meinem Skript ->wärmer geht aus -> kälter geht an.

            So interpretiere ich beide Skripte. Bei meinem weiß ich schon, dass er irgendwo mehrere Instanzen anwirft. Deins konnte ich "live" noch nicht testen. Irgendwo muss ich einen grundlegenden Denkfehler machen.

            paul53P 1 Antwort Letzte Antwort
            0
            • I IckZ

              @paul53 Guten Abend!

              Verstehe. So wie ich das sehe, aktualisiert "aktualisiere Wert" auch nicht den Wert im Gerät sondern nur im Code. Zumindest tauchen keine Ausreißer in meinen Testlogs auf die ich für Grafana erstellen lasse. Kann das sein?

              Zu deiner Anmerkung: Ja stimmt :). Ich habe die 60Sek aktuell auch nur testweise reingesetzt, damit ich schneller sehen kann, was passiert. Schneller geht leider nicht, da das Modul (welches schaltet) sonst ggf. Probleme bekommt.

              Trotzdem brüte ich noch über deinem und meinem Skript und würde mich über eine Erklärung freuen:

              Ausgangslage:
              Heizung geht an: 18 Grad (Wert). 23 Grad (vorheriger Wert bei Start gesetzt).

              • In deinem Skript läuft er bis in das letzte "sonst falls" und schaltet intervall wärmer an
              • Bei meinem in das letzte "falls" und schaltet intervall wärmer

              Werte ändern sich:
              Jetzt 24 Grad und 18 (vorheriger)

              • In deinem Skript würde ich vermute, dass er in das erste "sonst falls" geht und den eigentlich unteren "falls" ignoriert und damit fälschlicherweise kälter schaltet bevor er dann auch noch in das 2. falls geht und den Intervall für wärmer aktiviert? Fehlt da nicht ein und Wert > Temperaturschwelle im ersten "sonst falls"?

              • In meinem Skript würde ich denken, dass er in das letzte sonst falls geht und den Intervall für wärmer stoppt.

              Werte ändern sich wieder:
              Jetzt 21 Grad und 24 (vorheriger)

              • In deinem Skript (angenommen alles ist planmäßig aus) -> kälter geht aus (läuft aber nicht) -> wärmer geht an = top!
              • In meinem Skript -> wärmer geht an.

              Werte ändern sich wider
              Jetzt 25 vorheriger 21

              • In deinem Skript -> kälter geht an -> wärmer geht aus
              • In meinem Skript ->wärmer geht aus -> kälter geht an.

              So interpretiere ich beide Skripte. Bei meinem weiß ich schon, dass er irgendwo mehrere Instanzen anwirft. Deins konnte ich "live" noch nicht testen. Irgendwo muss ich einen grundlegenden Denkfehler machen.

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @IckZ
              Zum Verständnis meines Vorschlags (erster Teil "Kühlen"):

              • falls Wert < Schwelle + 2
                wird bei allen Temperaturen < 24 ausgeführt
              • sonst falls vorheriger Wert < Schwelle + 2
                wird ausgeführt, wenn Wert >= 24 UND der Wert davor < 24 war, also nur bei Änderung von < 24 auf >= 24, womit zusammen mit dem Stop Intervall im falls-Zweig verhindert wird, dass mehrere Intervalle gestartet werden

              Ein mehrfaches (auch unnötiges) Stoppen von Intervallen hat keine (negativen) Auswirkungen. Insofern ist eine Debug-Ausgabe "schalte kälter deaktiviert" eher irreführend. Will man die Debug-Ausgabe nur machen, wenn tatsächlich deaktiviert wird, muss man eine zusätzliche Abfrage machen:

              Blockly_temp.JPG

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              I 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @IckZ
                Zum Verständnis meines Vorschlags (erster Teil "Kühlen"):

                • falls Wert < Schwelle + 2
                  wird bei allen Temperaturen < 24 ausgeführt
                • sonst falls vorheriger Wert < Schwelle + 2
                  wird ausgeführt, wenn Wert >= 24 UND der Wert davor < 24 war, also nur bei Änderung von < 24 auf >= 24, womit zusammen mit dem Stop Intervall im falls-Zweig verhindert wird, dass mehrere Intervalle gestartet werden

                Ein mehrfaches (auch unnötiges) Stoppen von Intervallen hat keine (negativen) Auswirkungen. Insofern ist eine Debug-Ausgabe "schalte kälter deaktiviert" eher irreführend. Will man die Debug-Ausgabe nur machen, wenn tatsächlich deaktiviert wird, muss man eine zusätzliche Abfrage machen:

                Blockly_temp.JPG

                I Offline
                I Offline
                IckZ
                schrieb am zuletzt editiert von
                #7

                @paul53 Oh Mann. Ich hatte echt Tomaten auf den Augen. Meine Fantasie-Werte hatte ich zufällig gewählt und bei den 24 Grad liegt ja auch genau die Grenze zum Kühlen im Skript. Ich hatte die ganze Zeit noch alles größer als 24 im Sinn..

                Mein anderes Beispiel mit 20 ist und 18 vorherigem Wert ging auch nicht auf wenn man nicht berücksichtigt das der Intervall wärmer initial ja schon läuft und genau deshalb kein neuer Intervall starten soll. --> und hier dürfte auch mein Fehler im Ursprungsskript liegen. Muss ich die Tage noch einmal drauf rumdenken.

                Nochmals vielen Dank! Mir ist Programmierung zwar kein Fremdwort aber wenn man nicht richtig liest kann es auch nichts werden ;). Eine gute Nacht und vielleicht bis zum nächsten Mal.

                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

                608

                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