Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Optimierung von Blockly Scripts

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    615

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    626

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Optimierung von Blockly Scripts

Geplant Angeheftet Gesperrt Verschoben Blockly
13 Beiträge 5 Kommentatoren 804 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    Medoc
    schrieb am zuletzt editiert von
    #1

    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

    old & grumpy, tasmota, solar, pixelschubser (html & css), basic, c++ & php, ansonsten try and error - wisk(e)y liebhaber

    paul53P 1 Antwort Letzte Antwort
    0
    • M Medoc

      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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @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

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      M 2 Antworten Letzte Antwort
      0
      • paul53P 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 Offline
        M Offline
        Medoc
        schrieb am zuletzt editiert von Medoc
        #3

        @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

        old & grumpy, tasmota, solar, pixelschubser (html & css), basic, c++ & php, ansonsten try and error - wisk(e)y liebhaber

        1 Antwort Letzte Antwort
        0
        • paul53P 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 Offline
          M Offline
          Medoc
          schrieb am zuletzt editiert von Medoc
          #4

          @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

          old & grumpy, tasmota, solar, pixelschubser (html & css), basic, c++ & php, ansonsten try and error - wisk(e)y liebhaber

          S CodierknechtC paul53P 3 Antworten Letzte Antwort
          0
          • M 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 Offline
            S Offline
            simplyclever
            schrieb am zuletzt editiert von
            #5

            @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 Antwort Letzte Antwort
            0
            • M 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

              CodierknechtC Online
              CodierknechtC Online
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

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

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              M 1 Antwort Letzte Antwort
              0
              • M 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

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #7

                @medoc sagte: klappt das mit den variabelen nicht.

                Natürlich klappt das:

                Bild_2022-12-19_171701343.png

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                1
                • S simplyclever

                  @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 Offline
                  M Offline
                  Medoc
                  schrieb am zuletzt editiert von
                  #8

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

                  old & grumpy, tasmota, solar, pixelschubser (html & css), basic, c++ & php, ansonsten try and error - wisk(e)y liebhaber

                  1 Antwort Letzte Antwort
                  0
                  • CodierknechtC Codierknecht

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

                    M Offline
                    M Offline
                    Medoc
                    schrieb am zuletzt editiert von
                    #9

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

                    old & grumpy, tasmota, solar, pixelschubser (html & css), basic, c++ & php, ansonsten try and error - wisk(e)y liebhaber

                    CodierknechtC mickymM 2 Antworten Letzte Antwort
                    0
                    • M Medoc

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

                      CodierknechtC Online
                      CodierknechtC Online
                      Codierknecht
                      Developer Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @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);
                      

                      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                      HmIP|ZigBee|Tasmota|Unifi
                      Zabbix Certified Specialist
                      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                      1 Antwort Letzte Antwort
                      0
                      • M Medoc

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

                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von mickym
                        #11

                        @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. ;)

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • mickymM 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. ;)

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #12

                          @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.

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          M 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @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 Offline
                            M Offline
                            Medoc
                            schrieb am zuletzt editiert von
                            #13

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

                            old & grumpy, tasmota, solar, pixelschubser (html & css), basic, c++ & php, ansonsten try and error - wisk(e)y liebhaber

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            909

                            Online

                            32.6k

                            Benutzer

                            81.9k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe