Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JSON Wert mit Blockly schreiben

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    JSON Wert mit Blockly schreiben

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

      @jr28 sagte: spielt die Art der Formatierung (also {, dann neue Zeile und neue Zeile nach jedem Wert) keine Rolle?

      JSON darf keine Zeilenschaltung enthalten!

      1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @jr28 last edited by

        @jr28 sagte in JSON Wert mit Blockly schreiben:

        das heißt, dass ich das json immer erst komplett zusammenbauen muss, um es dann als Text in das Objekt zu schreiben?

        solange der sonstige Inhalt konstant bleibt ist das doch egal.
        Was stört dich daran?

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

          @jr28 sagte: zusätzlich der Wert "preconditioning_enabled" auf true gesetzt werden.

          Wenn der immer auf true gesetzt werden soll, benötigt man dafür keine Variable, sondern man kann es fest im Text verankern.

          Blockly_temp.JPG

          Ich habe keine Ahnung, ob es dem Adapter genügt, wenn man ein verkürztes JSON sendet, das nur die Attribute "departure_time" und "preconditioning_enabled" enthält.

          Bild_2022-11-17_160451967.png

          1 Reply Last reply Reply Quote 0
          • L
            Lucky_ESA Developer Most Active last edited by

            Vielleicht hilft das.

            <xml xmlns="https://developers.google.com/blockly/xml">
             <variables>
               <variable id="nl2mcBg+v./1.n=r[lbN">arr</variable>
               <variable id="Tn3lhvSQ*_}iAfZ_9Otb">att</variable>
               <variable id="x%B53[~zQVyc=3qtd7n|">value</variable>
               <variable id="w15a1MGC2*azw~AFrt}A">array_1</variable>
             </variables>
             <block type="procedures_defcustomreturn" id="Rp_Yt5xHvYYYfyg%d-=[" x="-262" y="-37">
               <mutation statements="false">
                 <arg name="arr" varid="nl2mcBg+v./1.n=r[lbN"></arg>
                 <arg name="att" varid="Tn3lhvSQ*_}iAfZ_9Otb"></arg>
                 <arg name="value" varid="x%B53[~zQVyc=3qtd7n|"></arg>
               </mutation>
               <field name="NAME">etwas tun</field>
               <field name="SCRIPT">YXJyW2F0dF0gPSB2YWx1ZTsNCnJldHVybiBhcnI7</field>
               <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
             </block>
             <block type="variables_set" id="*p1g(R6$#k@!Bk8K52IB" x="-262" y="13">
               <field name="VAR" id="w15a1MGC2*azw~AFrt}A">array_1</field>
               <value name="VALUE">
                 <block type="convert_json2object" id="k8q%UwJPqTq|49)xlj=0">
                   <value name="VALUE">
                     <block type="get_value" id="!zK?6WTB%BG@?]-/k:V@">
                       <field name="ATTR">val</field>
                       <field name="OID">0_userdata.0.hallo</field>
                     </block>
                   </value>
                 </block>
               </value>
               <next>
                 <block type="debug" id="[3-#pbr!!l*w*wXx3d4@">
                   <field name="Severity">log</field>
                   <value name="TEXT">
                     <shadow type="text" id="5D^j`kV?g@O=^hg5DQL$">
                       <field name="TEXT">test</field>
                     </shadow>
                     <block type="procedures_callcustomreturn" id=",f+Y(N6*X^iy+JoCRK;]">
                       <mutation name="etwas tun">
                         <arg name="arr"></arg>
                         <arg name="att"></arg>
                         <arg name="value"></arg>
                       </mutation>
                       <value name="ARG0">
                         <block type="variables_get" id="=D1@Frh?cQA~|],t:d2P">
                           <field name="VAR" id="w15a1MGC2*azw~AFrt}A">array_1</field>
                         </block>
                       </value>
                       <value name="ARG1">
                         <block type="text" id="Zjr0C+m-(*f[5U`LYIr6">
                           <field name="TEXT">preconditioning_weekdays_only</field>
                         </block>
                       </value>
                       <value name="ARG2">
                         <block type="logic_boolean" id="?6|ikyT*e}L0kM5l[8;Z">
                           <field name="BOOL">TRUE</field>
                         </block>
                       </value>
                     </block>
                   </value>
                   <next>
                     <block type="update" id="}EPy[_WE9z{wIq){455^">
                       <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                       <field name="OID">0_userdata.0.hallo</field>
                       <field name="WITH_DELAY">FALSE</field>
                       <value name="VALUE">
                         <block type="convert_object2json" id="_F^7#k~c%D(yODCA_nhe">
                           <field name="PRETTIFY">FALSE</field>
                           <value name="VALUE">
                             <block type="variables_get" id="H24!l/J[aXOJCKYX1!a{">
                               <field name="VAR" id="w15a1MGC2*azw~AFrt}A">array_1</field>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </next>
                 </block>
               </next>
             </block>
            </xml>
            

            Gruß//Lucky

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

              @lucky_esa sagte: Vielleicht hilft das.

              Das ist aufgrund der verwendeten Bezeichner eher verwirrend. Außerdem benötigt man kein return, da Objekte per Referenz übergeben werden.

              Blockly_temp.JPG

              Inhalt der Funktion setAttribut(obj, attr, val):

              obj[attr] = val;
              

              Bild_2022-11-17_182426267.png

              1 Reply Last reply Reply Quote 0
              • L
                Lucky_ESA Developer Most Active @jr28 last edited by

                @jr28 sagte in JSON Wert mit Blockly schreiben:

                @paul53

                das heißt, dass ich das json immer erst komplett zusammenbauen muss, um es dann als Text in das Objekt zu schreiben?

                Das Blockly ist für dich gedacht.

                @paul53
                Wie man die Function und die Variablen benennt ist jedem selber überlassen. Jeder hat sein eigenes System wie man was wie schreibt. Ein return dient bei großen Blocklys zur besseren Übersicht. Aber auch das ist jedem selber überlassen.

                Gruß//Lucky

                paul53 Codierknecht 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @Lucky_ESA last edited by

                  @lucky_esa sagte: Wie man die Function und die Variablen benennt ist jedem selber überlassen.

                  Ja, aber mit der Bezeichnung Array werden gerade Anfänger auf eine falsche Fährte geführt.

                  L 1 Reply Last reply Reply Quote 0
                  • L
                    Lucky_ESA Developer Most Active @paul53 last edited by

                    @paul53 sagte in JSON Wert mit Blockly schreiben:

                    Ja, aber mit der Bezeichnung Array werden gerade Anfänger auf eine falsche Fährte geführt.

                    Auch das ist Ansichtssache. Einem Anfäger mit einem Bild zu zeigen wie man ein Attribut hinzufügt statt zu ändern kann auch verwirren 😁

                    Gruß//Lucky

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

                      @lucky_esa sagte: Bild zu zeigen wie man ein Attribut hinzufügt statt zu ändern

                      Habe das Bild geändert.

                      1 Reply Last reply Reply Quote 1
                      • J
                        jr28 @paul53 last edited by

                        @paul53

                        da ich mir sicher sein wollte alles richtig zu machen habe ich folgendes gemacht:

                        fab2bff5-0fc8-4d21-95e5-026acefb6b4b-image.png

                        Wieso schlägt der Vergleich fehl?
                        Ich will absolut sicher sein bevor ich in den Tiefen meines Tesla was schreibe.

                        paul53 1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @Lucky_ESA last edited by

                          @lucky_esa sagte in JSON Wert mit Blockly schreiben:

                          Wie man die Function und die Variablen benennt ist jedem selber überlassen

                          Klar, aber Code wird zum allergrößten Teil gelesen. Alte Weisheit: "Jeder Code muss irgendwann gewartet werden".
                          Dann sitzt man davor und denkt sich "welcher Horst hat das denn verbrochen?" ... um dann nach mehr oder langem Sinnieren festzustellen ... "Upps, ist ja mein Code" 😁

                          Choose descriptive and unambiguous names
                          "Clean Code" (Robert C. Martin)

                          1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active last edited by mickym

                            Blockly, Objekte und JSON einfach nur grauslig. 😬

                            Verstehe nicht warum man Eigenschaften von Objekten lesen kann

                            fc9e3c08-4664-4d1e-9cd4-54f2d64ce150-image.png

                            JSONs in Objekte und umgekehrt wandeln kann.

                            b92c7205-5966-49d5-985d-627bf6587d03-image.png

                            aber man nicht in der Lage ist Attribute in einem Objekt zu beschreiben. Einfach schlimm. 😉

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

                              @jr28 sagte: Wieso schlägt der Vergleich fehl?

                              So ein String-Vergleich ist problematisch, da schon ein Leerzeichen mehr oder weniger oder ein unsichtbares Sonderzeichen zu einem negativen Ergebnis führen. Dabei spielen Leerzeichen im JSON keine Rolle.
                              Deshalb mache mal - nur für den Vergleich - eine doppelte Konvertierung JSON --> Objekt --> JSON.

                              Bild_2022-11-17_225450634.png

                              1 Reply Last reply Reply Quote 0
                              • K
                                kalle-r last edited by

                                hmmm.... bei mir klappt das irgendwie nicht:

                                hab einen Datenpunkt "test" vom Typ JSON

                                [
                                  {
                                    "Art": "A1",
                                    "Tag": "A2"
                                  },
                                  {
                                    "Art": "B1",
                                    "Tag": "B2"
                                  },
                                  {
                                    "Art": "C1",
                                    "Tag": "C2"
                                  }
                                ]
                                

                                Blockly von oben:

                                1.jpg

                                Result:

                                2.jpg

                                hat jemand eine Idee wo das hängt?

                                DJMarc75 paul53 2 Replies Last reply Reply Quote 0
                                • DJMarc75
                                  DJMarc75 @kalle-r last edited by

                                  @kalle-r Warum sollte das auch funktionieren ?! Wo bitte gibt es in Deinem Json das Attribute "1.Tag" ?

                                  K 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @kalle-r last edited by

                                    @kalle-r sagte: klappt das irgendwie nicht

                                    Wie soll man das beurteilen, wenn der Inhalt der JS-Funktion verschwiegen wird?

                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      kalle-r @DJMarc75 last edited by

                                      @djmarc75
                                      sorry, bin nur so ein halbwissender 😎
                                      also nach meinem bisherigen Ermittlungen kann ich mit
                                      0.xxx
                                      1.xxx
                                      2.xxx
                                      auf die jeweiligen Einträge zugreifen.
                                      0.Tag liefert A2
                                      1.Tag liefert B2
                                      2.Tag liefert C2
                                      1.Art liefert entsprechend B1
                                      das funktioniert so weit.
                                      Ich möchte jetzt z.B. aus B2 einen anderen Text machen und habe gehofft daß das mit dem Skript
                                      von weiter oben klappt....

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        kalle-r @paul53 last edited by

                                        @paul53
                                        ja Du hast Recht, hier der Inhalt:

                                        3.jpg

                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @kalle-r last edited by paul53

                                          @kalle-r sagte: hier der Inhalt

                                          Versuche es mal mit dieser JS-Funktion (ohne Ergebnis, denn ein Array wird ohnehin per Referenz übergeben):

                                          att = att.split('.');
                                          arr[att[0]][att[1]] = value;
                                          

                                          Bild_2022-12-08_180119672.png

                                          K 1 Reply Last reply Reply Quote 0
                                          • K
                                            kalle-r @paul53 last edited by

                                            @paul53
                                            das schaut gut aus 👍
                                            kannst Du mir erklären warum das in Deinem Beispiel weiter oben mit dem original-Skript funktioniert hat
                                            und in meinem Beispiel nicht?
                                            ich will ja schliesslich was dazu lernen 😉

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            913
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            41
                                            2374
                                            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