Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Optimierung von Blockly Scripts

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Optimierung von Blockly Scripts

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Medoc last edited by

      moin gemeinde,
      ich habe in einem script mehrere schreibbefehle.
      ich bin überzeugt, das läßt sich eleganter lösen.

      72d0cc93-162b-4215-bd6d-bcf11a94c5a5-image.png
      a15fa55f-74fd-4f84-9953-2660fe42c939-image.png

      danke im voraus

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

        @medoc sagte: ich bin überzeugt, das läßt sich eleganter lösen.

        Ja, verwende Variablen - auch für Werte, die mehr als einmal verwendet werden. Zum Schluss:

        Bild_2022-12-19_125223013.png

        M 2 Replies Last reply Reply Quote 0
        • M
          Medoc @paul53 last edited by Medoc

          @paul53
          danke schon mal, aber ich verstehe gerade nur bahnhof.
          könnten sie mir bitte das mal komplett zeigen?
          wie variablen angelegt werden weis ich.

          dreimal nachgedacht und ich glaube ich habs begriffen

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

            @paul53
            da es sich um reine schreibbefehle handelt, klappt das mit den variabelen nicht. ich konvertiere ja nur die ausgabe eines datenpunktes ins deutsche ohne irgendwelche befehle auszuführen.

            dennoch hast du mir geholfen.

            7866279a-3ae8-4711-8d43-8d4a55da23e7-image.png

            S Codierknecht paul53 3 Replies Last reply Reply Quote 0
            • S
              simplyclever @Medoc last edited by

              @medoc Ist der Datentyp von "An/Aus" (erste Abfrage) ein Boolean? Dann brauchst Du nicht "= wahr",
              sondern kannst "Falls Nicht Wert von An/Aus"
              Und wie und wann wird in den DP "action" geschrieben? Warum dort nicht gleich die Werte
              "Stop", "Läuft", usw.?
              Dann könntest Du eine einfache Zuweisung machen statt der vielen "Falls":
              aktualisiere Status 1 mit Wert von action

              M 1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @Medoc last edited by

                @medoc
                2767fd1a-b08e-40e5-9718-b706269aae3b-grafik.png

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

                  @medoc sagte: klappt das mit den variabelen nicht.

                  Natürlich klappt das:

                  Bild_2022-12-19_171701343.png

                  1 Reply Last reply Reply Quote 1
                  • M
                    Medoc @simplyclever last edited by

                    @simplyclever
                    zu 1. nein, kein Boolean.
                    zu 2. die werte kommen so von einem timer, daran kann ich nichst ändern

                    1 Reply Last reply Reply Quote 0
                    • M
                      Medoc @Codierknecht last edited by

                      @codierknecht
                      genau soetwas habe ich gesucht, ich werde es testen

                      Codierknecht mickym 2 Replies Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @Medoc last edited by

                        @medoc
                        Die Funktionsweise ist eigentlich die Gleiche wie bei @paul53 .
                        Es ist lediglich etwas kompakter formuliert.

                        Ich benutze Blockly mittlerweile nur noch für Prototypen.
                        Wenn's läuft wie gewünscht, nehme ich mir den JS-Code und packe den in das endgültige Script.
                        Das ist dann nochmal etwas kompakter:

                        var wert;
                        var action = getState("ID auswählen").val;
                        
                        switch (action) {
                            case 'stop': wert = 'Stop';
                            break;
                            case 'pause': wert = 'Pause';
                            break;
                            case 'end':  wert = 'Fertig';
                            break;
                        }
                        setState("Object ID", wert, true);
                        
                        1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Medoc last edited by mickym

                          @medoc Ich komme zwar aus der NodeRed Ecke - aber nachdem Blockly nun schon mal JSONATA anbietet, ist es traurig wie wenig es genutzt wird.

                          Hier das Arbeiten mit einer Übersetzungstabelle als Objekt.

                          [
                           { "alt": "stop", "neu": "Stop"},
                           { "alt": "pause", "neu": "Pause"},
                           { "alt": "end", "neu": "Fertig"}
                          ]
                          
                          

                          0ef75f6a-29f4-41e6-ad25-9724c9513b08-image.png

                          <xml xmlns="https://developers.google.com/blockly/xml">
                           <variables>
                             <variable id="+?:n@OlW1K}|5nUK2`r@">original</variable>
                             <variable id="M!0)i#YP9-(Mpk6z0V{W">translate</variable>
                             <variable id="NUR~c*8=8f[k`{!hzl^B">action</variable>
                           </variables>
                           <block type="variables_set" id="Uwc.G~brX!/ZzYZY1FRv" x="-387" y="-87">
                             <field name="VAR" id="+?:n@OlW1K}|5nUK2`r@">original</field>
                             <value name="VALUE">
                               <block type="text" id=",#`P)sA#7E}~%Uxb+HIt">
                                 <field name="TEXT">end</field>
                               </block>
                             </value>
                             <next>
                               <block type="variables_set" id="GmK1)x%[Lb^H|ML0hBg@">
                                 <field name="VAR" id="M!0)i#YP9-(Mpk6z0V{W">translate</field>
                                 <value name="VALUE">
                                   <block type="convert_json2object" id="FB`+`.;l]9TTbL|I6TA(">
                                     <value name="VALUE">
                                       <block type="text" id="e7ewh~gRwc+ULD4Og.}C">
                                         <field name="TEXT">[  { "alt": "stop", "neu": "Stop"},  { "alt": "pause", "neu": "Pause"},  { "alt": "end", "neu": "Fertig"} ]</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="variables_set" id=":~7|iAq,zf%#L.{Z*s}k">
                                     <field name="VAR" id="NUR~c*8=8f[k`{!hzl^B">action</field>
                                     <value name="VALUE">
                                       <block type="convert_jsonata" id="|?EBr2y!p/lJ%K}7Q1S[">
                                         <value name="EXPRESSION">
                                           <shadow type="text" id="[UKFQ)d`xhd/w1)n$]ld">
                                             <field name="TEXT">$[alt="end"].neu</field>
                                           </shadow>
                                           <block type="text_join" id="|QO1EO/3tt#rV!]Ly^yS">
                                             <mutation items="3"></mutation>
                                             <value name="ADD0">
                                               <block type="text" id="|Xo}C^tRuj1OHagXEQN-">
                                                 <field name="TEXT">$[alt="</field>
                                               </block>
                                             </value>
                                             <value name="ADD1">
                                               <block type="variables_get" id="=IYjy5a/lJ,gfv1CC#|x">
                                                 <field name="VAR" id="+?:n@OlW1K}|5nUK2`r@">original</field>
                                               </block>
                                             </value>
                                             <value name="ADD2">
                                               <block type="text" id="3GiRNJ!Oxis~qhBsJWMr">
                                                 <field name="TEXT">"].neu</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <value name="TARGET">
                                           <block type="variables_get" id="G-;tm7,qnII1[[l3`N^z">
                                             <field name="VAR" id="M!0)i#YP9-(Mpk6z0V{W">translate</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="controls_if" id="ylL]*MJbHdm!(WApSJ[W">
                                         <value name="IF0">
                                           <block type="logic_negate" id="3|^zOoFw7jR5iweSPjV`">
                                             <value name="BOOL">
                                               <block type="variables_get" id="{M?#oodUuyekUjTc!+3c">
                                                 <field name="VAR" id="NUR~c*8=8f[k`{!hzl^B">action</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <statement name="DO0">
                                           <block type="variables_set" id="EX+2d3VcD)$8sMWo3;p,">
                                             <field name="VAR" id="NUR~c*8=8f[k`{!hzl^B">action</field>
                                             <value name="VALUE">
                                               <block type="text" id="OWytpPmg|ENS%n4yRHTX">
                                                 <field name="TEXT">Läuft</field>
                                               </block>
                                             </value>
                                           </block>
                                         </statement>
                                         <next>
                                           <block type="debug" id="_fiLV!PvvE;VSi;h$nbw">
                                             <field name="Severity">log</field>
                                             <value name="TEXT">
                                               <shadow type="text" id="hvf,@C^PdEKPt|U`v6,*">
                                                 <field name="TEXT">test</field>
                                               </shadow>
                                               <block type="variables_get" id="e{Fb*jKVILBIhx2uTxIT">
                                                 <field name="VAR" id="NUR~c*8=8f[k`{!hzl^B">action</field>
                                               </block>
                                             </value>
                                           </block>
                                         </next>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                          </xml>
                          

                          Schaut zwar im Blockly hässlich aus, einen JSONATA Ausdruck mit Variablen zu konstruieren - aber ist halt das Tool. 😉

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

                            @mickym sagte: traurig wie wenig es genutzt wird.

                            Das Problem ist auch die mangelhafte Unterstützung von Objekten, die man sich erst als JSON basteln und dann wandeln muss.

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

                              @Codierknecht
                              funktioniert tadellos.
                              bei weiteren fragen - und die werden kommen - melde ich mich.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              843
                              Online

                              32.0k
                              Users

                              80.5k
                              Topics

                              1.3m
                              Posts

                              5
                              13
                              637
                              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