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.
    • paul53
      paul53 @skokarl last edited by

      @skokarl sagte: Kann man das in Blockly darstellen ?

      Habe ich gerade ergänzt,

      S 1 Reply Last reply Reply Quote 1
      • 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

                          902
                          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