Skip to content

Rollladensteuerung _ Devolo MT2761

Nico Hartung edited this page Jun 9, 2020 · 1 revision

Ich habe hier meine Rollladensteuerung etwas komplexer als normal abgebildet, da es öfters zu Fehlverhalten gekommen ist. Das Problem haben nicht nur die Shutter von Devolo, auch Qubino und Fibaro sind davon betroffen - das es keinen Datenpunkt für die Richtung gibt und man eine manuelle Steuerung nur Anhand des Stromverbrauchs erkennt.

In meiner Konfiguration muss für jeden Shutter ein Datenpunkt (number) erzeugt werden und ein Blockly Skript.

ioBroker

Datenpunkt erzeugen, in meinem Fall 0_userdata.0.rolllaeden.varTargetPositionWohnzimmerFenster

Yahka

Service-Typ: WindowCovering

Characteristic: CurrentPosition
InOut: ioBroker.State.OnlyACK
 State: zwave.0.NODE17.SWITCH_MULTILEVEL.Level_1
Conversion: scaleInt
 HomeKit Min: 0
 HomeKit Max: 100
 ioBroker Min: 0
 ioBroker Max: 99
Characteristic: TargetPosition
InOut: ioBroker.State
 State: 0_userdata.0.rolllaeden.varTargetPositionWohnzimmerFenster
Conversion: scaleInt
 HomeKit Min: 0
 HomeKit Max: 100
 ioBroker Min: 0
 ioBroker Max: 99

Skript

Nutzen:

  • grundlegende Funktionalität abbilden
  • ständige HomeKit-Slider Änderungen abfangen (teilweise 4-5 Änderungen pro Sekunde)
  • manuelle Schaltvorgänge anhand des Stromverbrauchs erkennen

🚨 Natürlich müssen die Datenpunkte ausgetauscht werden!

<xml xmlns="https://developers.google.com/blockly/xml">
  <variables>
    <variable id="?Mztia}$iK,QEhVSirfQ">Name</variable>
    <variable type="timeout" id="timeout_homekit">timeout_homekit</variable>
    <variable type="timeout" id="timeout_manuell">timeout_manuell</variable>
  </variables>
  <block type="comment" id="opdmjN(U/8Q+k,Kyy]X+" x="37" y="13">
    <field name="COMMENT">Steuerung über HomeKit</field>
    <next>
      <block type="on_ext" id="_9Cs]-)|bynSj=HbW^(5">
        <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="@42b,1,,ydQ$r%:ABI5X">
            <field name="oid">0_userdata.0.rolllaeden.varTargetPositionWohnzimmerFenster</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="variables_set" id=":I6xw![8T3iO5TgY-~$n">
            <field name="VAR" id="?Mztia}$iK,QEhVSirfQ">Name</field>
            <value name="VALUE">
              <block type="text" id="+pypvAW.o90Od{%MaaZJ">
                <field name="TEXT">Fenster Wohnzimmer</field>
              </block>
            </value>
            <next>
              <block type="controls_if" id="8t!bE,FARiGadGX+=p8i">
                <value name="IF0">
                  <block type="logic_compare" id="Nr=9:gtc_`QiN4e60q`*">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="on_source" id="EkPcGrLu2r*(6%g/gX9U">
                        <field name="ATTR">state.from</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="text" id="$xZ5B(8zgupC/BdY5Gvn">
                        <field name="TEXT">system.adapter.yahka.0</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="update" id="kXa(tK-CT+l-s![qExJS">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">0_userdata.0.rolllaeden.varTargetPositionWohnzimmerFenster</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="math_round" id=".GqH#|ScT=!XPo5^ug1P">
                        <field name="OP">ROUND</field>
                        <value name="NUM">
                          <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id=".oaXbAW5[Uu*v2T0ebw|">
                            <field name="NUM">3.1</field>
                          </shadow>
                          <block type="on_source" id="}RJI1eC-+2#n)B2r*hvo">
                            <field name="ATTR">state.val</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <next>
                      <block type="timeouts_settimeout" id="w7F/y~}F%M+-zK)B~}u7">
                        <field name="NAME">timeout_homekit</field>
                        <field name="DELAY">1500</field>
                        <field name="UNIT">ms</field>
                        <statement name="STATEMENT">
                          <block type="controls_if" id="yCIv$GuGwkd!:0du:M1x">
                            <value name="IF0">
                              <block type="logic_compare" id="@)qi^kcyVJJrbgj2Rw2r">
                                <field name="OP">EQ</field>
                                <value name="A">
                                  <block type="math_round" id="`YhlVvOJ]!m#]w@=zo1c">
                                    <field name="OP">ROUND</field>
                                    <value name="NUM">
                                      <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="S-95rd@s(C2(Pe7asv/u">
                                        <field name="NUM">3.1</field>
                                      </shadow>
                                      <block type="on_source" id="m`MfW@l^KXO8oJ:;@8_I">
                                        <field name="ATTR">state.val</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="get_value" id="d7-}`bv5pmd%x$M#C[4A">
                                    <field name="ATTR">val</field>
                                    <field name="OID">0_userdata.0.rolllaeden.varTargetPositionWohnzimmerFenster</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="control" id="?vKcpLf9h2Eg$.=+BNO1">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                <field name="OID">zwave.0.NODE17.SWITCH_MULTILEVEL.Level_1</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="^uemxS.,(:*M]Iofse23">
                                    <field name="NUM">0</field>
                                  </shadow>
                                  <block type="get_value" id="/yCJARsGJ[OX[gU[b#su">
                                    <field name="ATTR">val</field>
                                    <field name="OID">0_userdata.0.rolllaeden.varTargetPositionWohnzimmerFenster</field>
                                  </block>
                                </value>
                                <next>
                                  <block type="timeouts_cleartimeout" id="AoOP0X^K?fGn?3ioso+/">
                                    <field name="NAME">timeout_homekit</field>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </statement>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </statement>
        <next>
          <block type="comment" id="N@|Kl;@%,;kfZzx$vH6u">
            <field name="COMMENT">Steuerung über HomeKit oder manuell am Schalter ...</field>
            <next>
              <block type="comment" id="dzMRn1vH$W6!{18[;0-]">
                <field name="COMMENT">... anhand des Stromverbrauchs</field>
                <next>
                  <block type="on_ext" id="vBq,r{Qpn`TqKSX^YcDP">
                    <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="8D0UpVvGeyA/#;o`H.xr">
                        <field name="oid">zwave.0.NODE17.SWITCH_MULTILEVEL.Level_1</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="variables_set" id="AV6V=hP-X2W4ofe`5`Wz">
                        <field name="VAR" id="?Mztia}$iK,QEhVSirfQ">Name</field>
                        <value name="VALUE">
                          <block type="text" id="L[oK5q](UUY7j3(-C4__">
                            <field name="TEXT">Fenster Wohnzimmer</field>
                          </block>
                        </value>
                        <next>
                          <block type="controls_if" id="a~DVlEt8^3ATAfF@uHcF">
                            <value name="IF0">
                              <block type="logic_compare" id="Q]=tt1t)|68M!p#pJ6Uc">
                                <field name="OP">EQ</field>
                                <value name="A">
                                  <block type="on_source" id="=j}egseCCA){~7N*q``3">
                                    <field name="ATTR">state.from</field>
                                  </block>
                                </value>
                                <value name="B">
                                  <block type="text" id="Qkb$1ak7+ysFi48U@,Ff">
                                    <field name="TEXT">system.adapter.zwave.0</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                            <statement name="DO0">
                              <block type="comment" id="_Zm:a!y?C4#D#xOLn#vO">
                                <field name="COMMENT">Warte auf Werteübermittlung (Level schneller als Verbrauch)</field>
                                <next>
                                  <block type="timeouts_settimeout" id="zZ_Ua,xjDsIW;o?D`QKU">
                                    <field name="NAME">timeout_manuell</field>
                                    <field name="DELAY">2000</field>
                                    <field name="UNIT">ms</field>
                                    <statement name="STATEMENT">
                                      <block type="controls_if" id="lT=!;bt5{Ad0~7)$v5Vl">
                                        <value name="IF0">
                                          <block type="logic_compare" id="K[_|wkHXgJk@M7C=rbG5">
                                            <field name="OP">EQ</field>
                                            <value name="A">
                                              <block type="get_value" id="7K.qW46i/+o{pGhhMMm5">
                                                <field name="ATTR">val</field>
                                                <field name="OID">zwave.0.NODE17.METER.Electric_-_W_1</field>
                                              </block>
                                            </value>
                                            <value name="B">
                                              <block type="math_number" id="%#/TQtg*b)*etQt37Qbr">
                                                <field name="NUM">0</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                        <statement name="DO0">
                                          <block type="update" id="du}anPemu)`9U$C:kSHT">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                            <field name="OID">0_userdata.0.rolllaeden.varTargetPositionWohnzimmerFenster</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="on_source" id="mDY_=37#n#a~9bS2lP.;">
                                                <field name="ATTR">state.val</field>
                                              </block>
                                            </value>
                                            <next>
                                              <block type="timeouts_cleartimeout" id="sSc_sg(Q||FRn]YI6N53">
                                                <field name="NAME">timeout_manuell</field>
                                              </block>
                                            </next>
                                          </block>
                                        </statement>
                                      </block>
                                    </statement>
                                  </block>
                                </next>
                              </block>
                            </statement>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>