Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Verständnisfrage zur "Änderung" bei Schaltern

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Verständnisfrage zur "Änderung" bei Schaltern

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

      @paul53 sagte in Verständnisfrage zur "Änderung" bei Schaltern:

      @skokarl sagte: Kann man das in Blockly darstellen ?

      Habe ich gerade ergänzt,

      kannst du das bitte mal hier ergänzen, hab nicht ganz verstanden an welche Stelle das muss

      5.png

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

        @skokarl

        Bild_2021-11-22_173318.png

        S 2 Replies Last reply Reply Quote 1
        • S
          skokarl @paul53 last edited by

          @paul53

          Paul, Du bist der geilste !!!! Super lieben Dank

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

            @paul53

            Magst Du nochmal drüber gucken ?
            Manchmal denke ich er startet die Single oder Playlist mehrmals.

            Ganz ehrlich verstehe ich auch die Prüfung im Trigger nicht richtig, dachte erst ich hätte es verstanden,
            scheint aber nicht so. Was genau macht das ?

            falls Ursprung != "system.adapter.javascript.0"
            

            Falls Du Lust hast, nochmal ein Bild und das Blockly komplett als Export.

            1.png

            kpl.txt

            Dankeschön

            Asgothian 1 Reply Last reply Reply Quote 0
            • Asgothian
              Asgothian Developer @skokarl last edited by Asgothian

              @skokarl

              Ich bin zwar nicht @paul53 aber ich schau auch gerne mal rüber.

              Das Du so Probleme hast ist nicht verwunderlich. Du definierst Trigger in Triggern - das kann und muss in dieser Konstellation schief gehen. Wenn Du dir den Trigger Baustein wie folgt vorstellst sollte auch klar sein warum:

              Screenshot 2021-11-24 at 07.41.34.png

              Dieser Baustein kann übersetzt werden in "Trage in die Überwachungsliste ein, das jedes mal wenn sich die Spotify-Playlist ändert der die folgenden Bausteine ausgeführt werden"

              Du erzeugst also eine grosse Anzahl von Triggern die alle das gleiche machen. Wenig sinnvoll.

              Zusätzlich holst du die gleichen Datenpunkte mehrfach.

              Ich würde das so umstellen:

              Screenshot 2021-11-24 at 07.54.00.png

              Erklärung:

              Der Baustein Objekt ID und der Baustein wert sind der gleiche Baustein aus dem Trigger Bereich. In diesem Baustein versteckt sich einmal die Objekt ID des Objektes welchen den Trigger ausgelöst hat (Objekt ID) und zum anderen der Wert. Nebenbei - der Baustein den du auf Ursprung eingestellt hast ist auch der gleiche Baustein, und beinhaltet den Adapter / Code der den Datenpunkt beschrieben hat.

              Wenn der Ursprung also nicht der Javascript Adapter ist, dann kannst du davon ausgehen das die Anpassung "von aussen" und nicht durch dieses Skript passiert ist.

              Nun zum Rest:
              Die Erste Abfrage ist ob der eingetragene Wert != 0 ist. Nur dann finden Aktionen statt. (Fun Fact: in JS gilt für Variablen A die Zahlen beinhalten: Falls A gibt das gleiche Ergebnis wie Falls A != 0) Das ist effektiver als erst zu schauen was sich geändert hat, da bei einer Änderung auf 0 (anscheinend) nichts passieren soll.
              Wenn eine Änderung ungleich 0 erkannt wurde werden zunächst alle States auf 0 aktualisiert - das hattest du in jedem einzelnen der folgenden 4 Fälle getan - deswegen also vor der Einzelabfrage.
              Danach kommt die Abfrage darauf wer ausgelöst hat. In Objekt ID steht als Text der Name des States drin, deswegen kann man mit dem Im Falle von die verschiedenen Möglichkeiten durchgehen - die 4 die Du oben als Trigger eingetragen hast. Wichtig dabei ist das dieser Baustein zwingend eine Variable am ersten Anschluss erwartet, deswegen die Zuweisung der Objekt ID in die Variable Auslöser

              Code zum Importieren findest Du hinter dem Spoiler.

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="$*w%kWR[#NxM0CqG`$`S">Ausloeser</variable>
               </variables>
               <block type="on_ext" id="t@d5jH#v!Ri,]/od1/X=" x="-3963" y="-4262">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" items="4"></mutation>
                 <field name="CONDITION">ne</field>
                 <field name="ACK_CONDITION"></field>
                 <value name="OID0">
                   <shadow type="field_oid" id="u8y`_I7/_j.TpSO$-*pa">
                     <field name="oid">0_userdata.0.Musik.Spotify-Playlist</field>
                   </shadow>
                 </value>
                 <value name="OID1">
                   <shadow type="field_oid" id="H*_hql}63]qy-,pHM=;7">
                     <field name="oid">0_userdata.0.Musik.Spotify-Track</field>
                   </shadow>
                 </value>
                 <value name="OID2">
                   <shadow type="field_oid" id="o[ds{o2q}7)?@;(=,~1*">
                     <field name="oid">0_userdata.0.Musik.Spotify-Album</field>
                   </shadow>
                 </value>
                 <value name="OID3">
                   <shadow type="field_oid" id="^N?55*CWzp(4g*NYa{Hn">
                     <field name="oid">0_userdata.0.Musik.Sender</field>
                   </shadow>
                 </value>
                 <statement name="STATEMENT">
                   <block type="controls_if" id="6=d~xwW@G)QlDHkg+#gn">
                     <value name="IF0">
                       <block type="logic_compare" id="9544#,b*J^iE089pO_Qi">
                         <field name="OP">NEQ</field>
                         <value name="A">
                           <block type="on_source" id="_5-ew0(xW(*T+W9!5Lxe">
                             <field name="ATTR">state.from</field>
                           </block>
                         </value>
                         <value name="B">
                           <block type="text" id=".]nj*|Rc_(V,:pcB0~%q">
                             <field name="TEXT">system.adapter.javascript.0</field>
                           </block>
                         </value>
                       </block>
                     </value>
                     <statement name="DO0">
                       <block type="request" id="K?}(*EZ.:c066%hO%;_?">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                         <field name="WITH_STATEMENT">FALSE</field>
                         <field name="LOG"></field>
                         <value name="URL">
                           <shadow type="text" id="__]0f:zl+GZ:aGvj0+.O">
                             <field name="TEXT">http://192.168.178.56:5005/tablet/pause</field>
                           </shadow>
                         </value>
                         <next>
                           <block type="request" id="9KiW=SIH#+JXWY,DQTIY">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                             <field name="WITH_STATEMENT">FALSE</field>
                             <field name="LOG"></field>
                             <value name="URL">
                               <shadow type="text" id="3WQVevbO=xB2[(hd|h9Y">
                                 <field name="TEXT">http://192.168.178.56:5005/kueche/join/tablet</field>
                               </shadow>
                             </value>
                             <next>
                               <block type="update" id="U-}+0:iBX@zca4jhW?`b">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">0_userdata.0.Musik.Lautstaerke</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="math_number" id="q3hu71|[b(s(j@bXaxT?">
                                     <field name="NUM">3</field>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="controls_if" id="WSlPuldHH9j2G1NZrqQ7">
                                     <value name="IF0">
                                       <block type="on_source" id="=$Xp*OaPR?J-)s!Rz{Q9">
                                         <field name="ATTR">state.val</field>
                                       </block>
                                     </value>
                                     <statement name="DO0">
                                       <block type="update" id="(_0||nbumUiHAU,LJ.=|">
                                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                         <field name="OID">0_userdata.0.Musik.Spotify-Track</field>
                                         <field name="WITH_DELAY">FALSE</field>
                                         <value name="VALUE">
                                           <block type="text" id="y3Z5Yde{n9d@c5?p=%9p">
                                             <field name="TEXT">0</field>
                                           </block>
                                         </value>
                                         <next>
                                           <block type="update" id=";h{TnIloSxwC%c!r52?}">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                             <field name="OID">0_userdata.0.Musik.Spotify-Album</field>
                                             <field name="WITH_DELAY">FALSE</field>
                                             <value name="VALUE">
                                               <block type="text" id="p)gC=w%jUo=`/dNa`_J`">
                                                 <field name="TEXT">0</field>
                                               </block>
                                             </value>
                                             <next>
                                               <block type="update" id="cn3mbRt]`cIZy5X}#;(q">
                                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                 <field name="OID">0_userdata.0.Musik.Sender</field>
                                                 <field name="WITH_DELAY">FALSE</field>
                                                 <value name="VALUE">
                                                   <block type="math_number" id="uW.u0(}Vm^S[|mQRh!-s">
                                                     <field name="NUM">0</field>
                                                   </block>
                                                 </value>
                                                 <next>
                                                   <block type="variables_set" id=".vJJCZeT/-C4lu=G_pWo">
                                                     <field name="VAR" id="$*w%kWR[#NxM0CqG`$`S">Ausloeser</field>
                                                     <value name="VALUE">
                                                       <block type="on_source" id="AeD=+5O4w*U9CbX4d~rz">
                                                         <field name="ATTR">id</field>
                                                       </block>
                                                     </value>
                                                     <next>
                                                       <block type="logic_switch_case" id="D4/zN%*.g0+]wcHM([oo">
                                                         <mutation xmlns="http://www.w3.org/1999/xhtml" case="3"></mutation>
                                                         <value name="CONDITION">
                                                           <block type="variables_get" id="$MHq}ZwOZ@!EUe;6JVC)">
                                                             <field name="VAR" id="$*w%kWR[#NxM0CqG`$`S">Ausloeser</field>
                                                           </block>
                                                         </value>
                                                         <value name="CASECONDITION0">
                                                           <block type="text" id="%N@k:hIgjLS`4+.,4LIN">
                                                             <field name="TEXT">0_userdata.0.Musik.Spotify-Playlist</field>
                                                           </block>
                                                         </value>
                                                         <statement name="CASE0">
                                                           <block type="request" id="@b2jRyX9P/!Y!Gjnm}Mh">
                                                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                             <field name="WITH_STATEMENT">FALSE</field>
                                                             <field name="LOG"></field>
                                                             <value name="URL">
                                                               <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                                                 <field name="TEXT">http://192.168.178.56:5005/tablet/play</field>
                                                               </shadow>
                                                               <block type="text_join" id="jq75h7DdI8PYT4BMu5`S">
                                                                 <mutation items="2"></mutation>
                                                                 <value name="ADD0">
                                                                   <block type="text" id="|^s-BwU]sM/{H}2%FcCq">
                                                                     <field name="TEXT">http://192.168.178.56:5005/tablet/spotify/now/spotify:playlist:</field>
                                                                   </block>
                                                                 </value>
                                                                 <value name="ADD1">
                                                                   <block type="on_source" id="+wUM{^s=l,%r)aRIHuks">
                                                                     <field name="ATTR">state.val</field>
                                                                   </block>
                                                                 </value>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </statement>
                                                         <value name="CASECONDITION1">
                                                           <block type="text" id="bRnO:X5$Kyf=K9$Rj4p)">
                                                             <field name="TEXT">0_userdata.0.Musik.Spotify-Track</field>
                                                           </block>
                                                         </value>
                                                         <statement name="CASE1">
                                                           <block type="request" id="^eKublUgta_SFF%N6$;A">
                                                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                             <field name="WITH_STATEMENT">FALSE</field>
                                                             <field name="LOG"></field>
                                                             <value name="URL">
                                                               <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                                                 <field name="TEXT">http://192.168.178.56:5005/tablet/play</field>
                                                               </shadow>
                                                               <block type="text_join" id="q}Pz~hZRZ`|tm{#X8,]j">
                                                                 <mutation items="2"></mutation>
                                                                 <value name="ADD0">
                                                                   <block type="text" id="1-?PxCO0{D#|]I;V;`7R">
                                                                     <field name="TEXT">http://192.168.178.56:5005/tablet/spotify/now/spotify:track:</field>
                                                                   </block>
                                                                 </value>
                                                                 <value name="ADD1">
                                                                   <block type="on_source" id="TgboaG0b9,x(lxx-n:wJ">
                                                                     <field name="ATTR">state.val</field>
                                                                   </block>
                                                                 </value>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </statement>
                                                         <value name="CASECONDITION2">
                                                           <block type="text" id="B/rj5Bkt3?Kxsnxc*AvN">
                                                             <field name="TEXT">0_userdata.0.Musik.Spotify-Album</field>
                                                           </block>
                                                         </value>
                                                         <statement name="CASE2">
                                                           <block type="request" id="1r-G4`oofG(VZP*bHObh">
                                                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                             <field name="WITH_STATEMENT">FALSE</field>
                                                             <field name="LOG"></field>
                                                             <value name="URL">
                                                               <shadow xmlns="http://www.w3.org/1999/xhtml" type="text">
                                                                 <field name="TEXT">http://192.168.178.56:5005/tablet/play</field>
                                                               </shadow>
                                                               <block type="text_join" id="_R6EBmY-E`yO;?jeugH=">
                                                                 <mutation items="2"></mutation>
                                                                 <value name="ADD0">
                                                                   <block type="text" id=")-K;0*L(B{!Ws#6+#3k~">
                                                                     <field name="TEXT">http://192.168.178.56:5005/tablet/spotify/now/spotify:album:</field>
                                                                   </block>
                                                                 </value>
                                                                 <value name="ADD1">
                                                                   <block type="on_source" id="YO__,hI|OIC/4,ODUCU8">
                                                                     <field name="ATTR">state.val</field>
                                                                   </block>
                                                                 </value>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </statement>
                                                         <value name="CASECONDITION3">
                                                           <block type="text" id="GC|p?u51~atCd][01UyM">
                                                             <field name="TEXT">0_userdata.0.Musik.Sender</field>
                                                           </block>
                                                         </value>
                                                         <statement name="CASE3">
                                                           <block type="request" id="~OlQ?z701?x]Fwq{SkC2">
                                                             <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                                             <field name="WITH_STATEMENT">FALSE</field>
                                                             <field name="LOG"></field>
                                                             <value name="URL">
                                                               <shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="*l]i?oTJu=CLlEPW5%{{">
                                                                 <field name="TEXT">http://192.168.178.56:5005/tablet/play</field>
                                                               </shadow>
                                                               <block type="text_join" id="uTD-RRi$4}LlW9#@=}v?">
                                                                 <mutation items="2"></mutation>
                                                                 <value name="ADD0">
                                                                   <block type="text" id="+742FMnEY?!KyL2PQ#GX">
                                                                     <field name="TEXT">http://192.168.178.56:5005/tablet/tunein/play/</field>
                                                                   </block>
                                                                 </value>
                                                                 <value name="ADD1">
                                                                   <block type="on_source" id="*?7ysq(=L3Nl.)?s3s2%">
                                                                     <field name="ATTR">state.val</field>
                                                                   </block>
                                                                 </value>
                                                               </block>
                                                             </value>
                                                           </block>
                                                         </statement>
                                                       </block>
                                                     </next>
                                                   </block>
                                                 </next>
                                               </block>
                                             </next>
                                           </block>
                                         </next>
                                       </block>
                                     </statement>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </statement>
               </block>
              </xml>
              

              S 1 Reply Last reply Reply Quote 1
              • S
                skokarl @Asgothian last edited by

                @asgothian

                Erstmal vielen lieben Dank, ich freu mich immer Unterstützung zu bekommen.

                Leider hast Du, @Asgothian, beim praktischen Hintergrund eines übersehen, es werden NICHT alle vier States auf
                0 gesetzt, sondern nur die drei, die vom Schalter keinen Wert bekommen haben.
                Deswegen hatte ich das auf 4 Blöcke unterteilt.
                Zur Erklärung :

                4 Schalter, keine Taster, da in der Stellung true z.B. zusätzlich der Hintergrund blinkt.
                Schalter 1 spielt eine Playlist, Schalter 2 spielt eine Single, Schalter 3 spielt ein Album und Schalter 4 Radio.

                Beim Start sind alle 4 auf 0, es wird ein beliebiger Schalter betätigt und eine Aktion gestartet.
                Weil der Schalter einen Wert bekommt, beginnt er zusätzlich zu blinken.

                Jetzt gibt es zwei Möglichkeiten, entweder ich drücke den Schalter nochmals, dann ist alles wieder auf 0 und alles
                zurück auf Anfang,
                oder aber ich drücke einen anderen Schalter...... nun wird wieder eine Aktion ausgelöst, und da ich nicht weiß, welcher Schalter zuletzt gedrückt war, setzte die verbliebenen 3 Schalter zurück auf 0. ( sonst würde der ja ewig weiterblinken )
                Und die drei sind eben nicht immer die selben, scheint als hättest Du diesen Teil übersehen.

                Um Gotteswillen nicht falsch verstehen, ich finde es super, dass Du Dir die Zeit genommen hast, aber ich
                glaube noch nicht, dass das die Lösung ist.

                Liegt allerdings an mir, ich kann nicht so gut erklären ..... 🤕

                Gruß Bernd

                Asgothian 1 Reply Last reply Reply Quote 0
                • Asgothian
                  Asgothian Developer @skokarl last edited by Asgothian

                  @skokarl sagte in Verständnisfrage zur "Änderung" bei Schaltern:

                  Leider hast Du, @Asgothian, beim praktischen Hintergrund eines übersehen, es werden NICHT alle vier States auf
                  0 gesetzt, sondern nur die drei, die vom Schalter keinen Wert bekommen haben.
                  Deswegen hatte ich das auf 4 Blöcke unterteilt.

                  Stimmt - da war mir was durchgerutscht. Die states sahen alle gleich aus - aber es gibt offensichtlich immer einen der nicht aktualisiert wird - das ist der der getriggert wurde.

                  Letztendlich kannst du also das aktualisieren der States in die "im Falle Von" Abfrage mit einbauen und die jeweils richtigen States aktualisieren.

                  Die anderen Anpassungen sollten trotzdem greifen - und verhindern das da etwas mehrfach ausgelöst wird.

                  A.
                  Nachtrag: Das kann ich als Blockly nicht mal eben generieren da ich die States nicht habe - sollte aber hoffentlich trotzdem verständlich sein.

                  S 1 Reply Last reply Reply Quote 1
                  • S
                    skokarl @Asgothian last edited by

                    @asgothian
                    Danke

                    1 Reply Last reply Reply Quote 0
                    • S
                      skokarl last edited by

                      @paul53 @Asgothian

                      So, nochmals vielen Dank Euch beiden, läuft !
                      Jetzt muss der 59 Jahre alte Mann nur noch verstehen wo sein größter Fehler lag .... aber das ist mein Problem.

                      Falls das Script mal jemand braucht,.....unten anbei.

                      Funktioniert übrigens wirklich super wenn jemand Sonos Boxen, Spotify und ne Frau hat, die ganz einfach umschalten will 😀

                      kpl.txt

                      Asgothian 1 Reply Last reply Reply Quote 0
                      • Asgothian
                        Asgothian Developer @skokarl last edited by

                        @skokarl sagte in Verständnisfrage zur "Änderung" bei Schaltern:

                        Jetzt muss der 59 Jahre alte Mann nur noch verstehen wo sein größter Fehler lag .... aber das ist mein Problem.

                        Wenn du willst können wir uns auf Discord treffen, dann versuch ich das anschaulich zu erklären.

                        A.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        809
                        Online

                        32.0k
                        Users

                        80.5k
                        Topics

                        1.3m
                        Posts

                        3
                        16
                        578
                        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