Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly für zigbeeschalter welcher nur read hat

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly für zigbeeschalter welcher nur read hat

    This topic has been deleted. Only users with topic management privileges can see it.
    • R
      Robbi12 @paul53 last edited by Robbi12

      @paul53 Hallo Paul. Ich hole den Eintrag nochmal hervor.

      Wie gesagt es funktioniert, so dass man letztlich damit leben kann.

      Perfekt wäre es wenn man die "Kleinigkeit" noch ausbügeln könnte.

      Also die Schaltpunkte wechseln folgendermaßen:

      rechte Taste: off_right/on_right

      linke Taste: off_left/on_left

      rechte Taste lang: brightness_move_down_right/brightness_move_up_right

      linke Taste lang: brightness_move_down_left/brightness_move_up_left

      Beim Landdruck nach dem loslassen immer: brightness_stop_right/brightness_stop_left

      Ach ja, dies ist mir auch aufgefallen:

      Wenn ich z.B. links drücke und er die Markise ausfährt, beim Drücken auf rechts, stopt sie nicht, sondern fährt dann gleich in die entgegengesetzte Richtung.

      Wenn ich nochmal auf links drücke, dann klappt es mit dem Stop

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

        @robbi12 sagte: die Markise ausfährt, beim Drücken auf rechts, stopt sie nicht, sondern fährt dann gleich in die entgegengesetzte Richtung.
        Wenn ich nochmal auf links drücke, dann klappt es mit dem Stop

        Ja, so ist es programmiert.

        Soll jeder Tastendruck während des Aus-/Einfahrens stoppen, braucht man die Information, dass die Markise fährt. Gibt es dafür einen Aktor-Datenpunkt? Falls nicht, gibt es einen Datenpunkt, der die Position anzeigt?

        EDIT: Blockly-Version mit Auswertung der Position.

        Blockly_temp.JPG

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

          @paul53 Screenshot 2024-08-05 141538.png

          Die Markise wird über einen Shelly gesteuert.

          Der Datenpunkt Power ändert sich bei der Bewegung, da hier ja die Leistung abgerufen wird.

          Ebenfalls der Punkt State und Position.

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

            @robbi12 sagte: State und Position.

            Mein Vorschlag oben wertet die "Position" aus.

            R 3 Replies Last reply Reply Quote 0
            • R
              Robbi12 @paul53 last edited by

              @paul53 Hallo, habe es nachgebaut. Fährt aber nicht ein. Evtl. habe ich noch einen Fehler drin.

              <xml xmlns="https://developers.google.com/blockly/xml">
                <variables>
                  <variable id="?.([A*WCW5[)/gYOuEN[">position</variable>
                  <variable id="_n6m^Nl-K?eJ}-WKj,~e">move</variable>
                </variables>
                <block type="procedures_defnoreturn" id="^+yr!wz-zf{64_}rT22Z" x="-287" y="-137">
                  <field name="NAME">stoppen</field>
                  <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                  <statement name="STACK">
                    <block type="control" id="?`IT!yD3MjN/;@Zif5?s">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">shelly.0.shellyplus2pm#a0dd6c28a394#1.Cover0.Stop</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="B$L{x|aFIT^(jSM4~UVe">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                      <next>
                        <block type="variables_set" id="~*?ZI6sM/I3r=N/*K/UA">
                          <field name="VAR" id="_n6m^Nl-K?eJ}-WKj,~e">move</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="}~+B]#UV~x)Htu@^{HaH">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
                <block type="variables_set" id="h6AXh}TW/n`S)+]KWK~Q" x="-287" y="-12">
                  <field name="VAR" id="?.([A*WCW5[)/gYOuEN[">position</field>
                  <value name="VALUE">
                    <block type="get_value" id="AFXj42IWQCIdXK[{*lt~">
                      <field name="ATTR">val</field>
                      <field name="OID">shelly.0.shellyplus2pm#a0dd6c28a394#1.Cover0.Position</field>
                    </block>
                  </value>
                  <next>
                    <block type="on" id="`e}GZ0B~!f`Oayf$gaGo">
                      <field name="OID">shelly.0.shellyplus2pm#a0dd6c28a394#1.Cover0.Position</field>
                      <field name="CONDITION">ne</field>
                      <field name="ACK_CONDITION"></field>
                      <statement name="STATEMENT">
                        <block type="variables_set" id="X|h!}P}=sHN?J9JkK_!2">
                          <field name="VAR" id="?.([A*WCW5[)/gYOuEN[">position</field>
                          <value name="VALUE">
                            <block type="on_source" id="Z~5awLRP)#Y`t]?_7jXT">
                              <field name="ATTR">state.val</field>
                            </block>
                          </value>
                          <next>
                            <block type="controls_if" id="AOr!6tDE,=nMM^7.};IL">
                              <value name="IF0">
                                <block type="logic_operation" id="^1;M7QpeOwYkVCzLZo)s" inline="false">
                                  <field name="OP">OR</field>
                                  <value name="A">
                                    <block type="logic_compare" id=")h4pHPs#`9$er}C:@,ne">
                                      <field name="OP">EQ</field>
                                      <value name="A">
                                        <block type="variables_get" id=",N%rf=W}+)WGl.7bnM|d">
                                          <field name="VAR" id="?.([A*WCW5[)/gYOuEN[">position</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="h[ek]O~5:)v5amG1s(+j">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="logic_compare" id="byf1BpPawsF%l=Fh}LYn">
                                      <field name="OP">EQ</field>
                                      <value name="A">
                                        <block type="variables_get" id="`adu5i~qKoRzVNgln!`9">
                                          <field name="VAR" id="?.([A*WCW5[)/gYOuEN[">position</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="E7pa=Tpv{]wV@qICi!R3">
                                          <field name="NUM">100</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="variables_set" id="4d06k4_3v;4_TA*?Dvm:">
                                  <field name="VAR" id="_n6m^Nl-K?eJ}-WKj,~e">move</field>
                                  <value name="VALUE">
                                    <block type="logic_boolean" id="39;z00RZI(G#HUXG5^=v">
                                      <field name="BOOL">FALSE</field>
                                    </block>
                                  </value>
                                </block>
                              </statement>
                            </block>
                          </next>
                        </block>
                      </statement>
                      <next>
                        <block type="on_ext" id="S$^cKUM9f4-40*0Ux!GX">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation>
                          <field name="CONDITION">gt</field>
                          <field name="ACK_CONDITION"></field>
                          <value name="OID0">
                            <shadow type="field_oid" id="2LVzfr`.YXuX{wBjMxqR">
                              <field name="oid">zigbee.0.003c84fffe8bec61.brightness_stop_right</field>
                            </shadow>
                          </value>
                          <value name="OID1">
                            <shadow type="field_oid" id="7:-Z?Lz@DzU;iMZ?-j/r">
                              <field name="oid">zigbee.0.003c84fffe8bec61.brightness_stop_left</field>
                            </shadow>
                          </value>
                          <statement name="STATEMENT">
                            <block type="procedures_callnoreturn" id="|~HfV7cldj:lVFlMn6ml">
                              <mutation name="stoppen"></mutation>
                            </block>
                          </statement>
                          <next>
                            <block type="on_ext" id="El2yiUX6:^87,b0oBm`#">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" items="4"></mutation>
                              <field name="CONDITION">gt</field>
                              <field name="ACK_CONDITION"></field>
                              <value name="OID0">
                                <shadow type="field_oid" id="1v[;{L*u(qX7tm9fiMfJ">
                                  <field name="oid">zigbee.0.003c84fffe8bec61.on_right</field>
                                </shadow>
                              </value>
                              <value name="OID1">
                                <shadow type="field_oid" id=".*y9_k$5nSU{#4QnB2^#">
                                  <field name="oid">zigbee.0.003c84fffe8bec61.off_right</field>
                                </shadow>
                              </value>
                              <value name="OID2">
                                <shadow type="field_oid" id="Nk5O,wQm4(YEgn1-dw~W">
                                  <field name="oid">zigbee.0.003c84fffe8bec61.brightness_move_down_right</field>
                                </shadow>
                              </value>
                              <value name="OID3">
                                <shadow type="field_oid" id="]m{w#7yLUbD@#_N7zd01">
                                  <field name="oid">zigbee.0.003c84fffe8bec61.brightness_move_up_right</field>
                                </shadow>
                              </value>
                              <statement name="STATEMENT">
                                <block type="controls_if" id="rZ,O^!YQEKb$Ku~3idOD">
                                  <mutation elseif="1"></mutation>
                                  <value name="IF0">
                                    <block type="variables_get" id="Z?MF(9mmt|~=gWa~nh$h">
                                      <field name="VAR" id="_n6m^Nl-K?eJ}-WKj,~e">move</field>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="procedures_callnoreturn" id="NqER3cP5Q9={U-{~lGqj">
                                      <mutation name="stoppen"></mutation>
                                    </block>
                                  </statement>
                                  <value name="IF1">
                                    <block type="logic_compare" id="lhK:0;^NBldqbE0ypr2|">
                                      <field name="OP">LT</field>
                                      <value name="A">
                                        <block type="variables_get" id="O9G#WdI:L^Y3t%~I@25[">
                                          <field name="VAR" id="?.([A*WCW5[)/gYOuEN[">position</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="0-a7ZscWarix@2i}oPs_">
                                          <field name="NUM">100</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <statement name="DO1">
                                    <block type="control" id=".,pg/bl#(:K$C`]]|qN3">
                                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                      <field name="OID">shelly.0.shellyplus2pm#a0dd6c28a394#1.Cover0.Close</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE">
                                        <block type="logic_boolean" id="U^$zr-S-D~sH:rYK{=YR">
                                          <field name="BOOL">TRUE</field>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="variables_set" id="0Seh6rq=Yf%OF:4jp0={">
                                          <field name="VAR" id="_n6m^Nl-K?eJ}-WKj,~e">move</field>
                                          <value name="VALUE">
                                            <block type="logic_boolean" id="tf*^X2Q3pv[xV*ADK7Ej">
                                              <field name="BOOL">TRUE</field>
                                            </block>
                                          </value>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                </block>
                              </statement>
                              <next>
                                <block type="on_ext" id="Jz2}){fRERquPQ5yrkG`">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" items="4"></mutation>
                                  <field name="CONDITION">gt</field>
                                  <field name="ACK_CONDITION"></field>
                                  <value name="OID0">
                                    <shadow type="field_oid" id="e3A5.bx](fQ0/sag=s(}">
                                      <field name="oid">zigbee.0.003c84fffe8bec61.on_left</field>
                                    </shadow>
                                  </value>
                                  <value name="OID1">
                                    <shadow type="field_oid" id="oH^6vm2r@`Tz4ca|xQg7">
                                      <field name="oid">zigbee.0.003c84fffe8bec61.off_left</field>
                                    </shadow>
                                  </value>
                                  <value name="OID2">
                                    <shadow type="field_oid" id="r}z)%UU@Ryd`gD6U{D=l">
                                      <field name="oid">zigbee.0.003c84fffe8bec61.brightness_move_up_left</field>
                                    </shadow>
                                  </value>
                                  <value name="OID3">
                                    <shadow type="field_oid" id="k7{zQikaV4t7CMafyY@(">
                                      <field name="oid">zigbee.0.003c84fffe8bec61.brightness_move_down_left</field>
                                    </shadow>
                                  </value>
                                  <statement name="STATEMENT">
                                    <block type="controls_if" id="jFs!{Sp7q42eV(Xig0FJ">
                                      <mutation elseif="1"></mutation>
                                      <value name="IF0">
                                        <block type="variables_get" id=":dfkL6uL?`]LumIgSWq2">
                                          <field name="VAR" id="_n6m^Nl-K?eJ}-WKj,~e">move</field>
                                        </block>
                                      </value>
                                      <statement name="DO0">
                                        <block type="procedures_callnoreturn" id="%KP5wZkq8i2@HdCgtcvB">
                                          <mutation name="stoppen"></mutation>
                                        </block>
                                      </statement>
                                      <value name="IF1">
                                        <block type="logic_compare" id="FVmxA197upN=1oRlxhoS">
                                          <field name="OP">GT</field>
                                          <value name="A">
                                            <block type="variables_get" id=":YpltyZ7MXRPi6q4tG;^">
                                              <field name="VAR" id="?.([A*WCW5[)/gYOuEN[">position</field>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <block type="math_number" id="Z7*gG`mdQ8Y!qN:}=$e/">
                                              <field name="NUM">0</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <statement name="DO1">
                                        <block type="control" id="6Pk.f4=t$GsBpqw+5aj2">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                          <field name="OID">shelly.0.shellyplus2pm#a0dd6c28a394#1.Cover0.Open</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                            <block type="logic_boolean" id="*MDo^}r+n1TT$`=F:J0z">
                                              <field name="BOOL">TRUE</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="variables_set" id="Vc/#r?SplyVdE*Q@HqiS">
                                              <field name="VAR" id="_n6m^Nl-K?eJ}-WKj,~e">move</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="A(Jc.rwO7?VxC_?xxo[1">
                                                  <field name="BOOL">TRUE</field>
                                                </block>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </statement>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </xml>
              
              paul53 1 Reply Last reply Reply Quote 0
              • R
                Robbi12 @paul53 last edited by

                @paul53 Gerade noch getestet.

                Es funktioniert, wenn die Markise nicht ganz auf 0 oder 100 steht. Steht sie ganz drin 0 oder ganz draußen dann funktioniert es nicht.

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

                  @paul53 Habs gerade selber gefunden. Ich habe die Werte auf kleiner gleich 100 und auf größer gleich 0 gesetzt.

                  Bei mir ist es leider im ein rumprobieren. Ich kann nicht mal nachverfolgen was dies mit den Werten ist.

                  Du bist ein Profi. Danke dafür

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

                    @robbi12 sagte: Evtl. habe ich noch einen Fehler drin.

                    Die Richtungen stimmen?

                    • Close (rechte Tasten) fährt Richtung 100 %
                    • Open (linke Tasten) fährt Richtung 0 %
                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Robbi12 last edited by paul53

                      @robbi12 sagte: Ich habe die Werte auf kleiner gleich 100 und auf größer gleich 0 gesetzt.

                      Das ist nicht zielführend. Vermutlich sind die Vergleiche falsch herum?

                      EDIT: Funktioniert es so?

                      Blockly_temp.JPG

                      Ziel der Vergleiche ist, dass nicht noch mal gesteuert wird, wenn die betreffende Endlage erreicht sind. Außerdem soll move dann auf false bleiben, damit der nächste Tastendruck keinen Stopp auslöst.

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

                        @paul53 Du hattest recht. So funktioniert es.

                        Vielen, Vielen Dank

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        503
                        Online

                        32.0k
                        Users

                        80.3k
                        Topics

                        1.3m
                        Posts

                        4
                        32
                        1165
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo