Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Attribut-Abfrage mit Punkten dazwischen (gelöst)

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    443

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    367

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    964

Attribut-Abfrage mit Punkten dazwischen (gelöst)

Geplant Angeheftet Gesperrt Verschoben Blockly
6 Beiträge 2 Kommentatoren 547 Aufrufe 2 Beobachtet
  • Ä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.
  • B Offline
    B Offline
    brokenchrisi
    schrieb am zuletzt editiert von brokenchrisi
    #1

    Hallo miteinander,
    ich wage mich gerade an erste Blockly-"Scripte" heran und versuche einen Testdatensatz eines Microcontroller-APIs zu lesen, der wiederum ein Smartmeter auslesen soll. Ausgelesen habe ich mit "Attribut vom Objekt"

    Unbenannt.png

    Nun habe ich gelesen, dass Punkte (".") im Attribut für verschachtelte JSONs verwendet werden, also zB für

    "Body" : {
      "Data" : {
        "XYZ" : { "Value" : 1234}}}
    

    gebe ich als Attribut "Body.Data.XYZ.Value" ein und bekomme 1234.

    Jetzt habe ich in diesem Fall aber einen Datenpunkt der "1.8.0" heißt, ohne Verschachtelung. Gebe ich das in die Attribut-Abfrage ein, kommt "NULL".
    z.B. "uptime" und der "timestamp" wird korrekt ausgegeben

    Hier der Testdatensatz, der auszulesen wäre:

    {
    "timestamp":"2022-02-02T09:47:15",
    "1.8.0":"686655",
    "2.8.0":"67",
    "1.7.0":"143",
    "2.7.0":"0",
    "32.7.0":"2370",
    "52.7.0":"2375",
    "72.7.0":"2366",
    "31.7.0":"9",
    "51.7.0":"53",
    "71.7.0":"63",
    "13.7.0":"536",
    "uptime":"0007:00:03:04"
    }
    
    liv-in-skyL 1 Antwort Letzte Antwort
    0
    • B brokenchrisi

      Hallo miteinander,
      ich wage mich gerade an erste Blockly-"Scripte" heran und versuche einen Testdatensatz eines Microcontroller-APIs zu lesen, der wiederum ein Smartmeter auslesen soll. Ausgelesen habe ich mit "Attribut vom Objekt"

      Unbenannt.png

      Nun habe ich gelesen, dass Punkte (".") im Attribut für verschachtelte JSONs verwendet werden, also zB für

      "Body" : {
        "Data" : {
          "XYZ" : { "Value" : 1234}}}
      

      gebe ich als Attribut "Body.Data.XYZ.Value" ein und bekomme 1234.

      Jetzt habe ich in diesem Fall aber einen Datenpunkt der "1.8.0" heißt, ohne Verschachtelung. Gebe ich das in die Attribut-Abfrage ein, kommt "NULL".
      z.B. "uptime" und der "timestamp" wird korrekt ausgegeben

      Hier der Testdatensatz, der auszulesen wäre:

      {
      "timestamp":"2022-02-02T09:47:15",
      "1.8.0":"686655",
      "2.8.0":"67",
      "1.7.0":"143",
      "2.7.0":"0",
      "32.7.0":"2370",
      "52.7.0":"2375",
      "72.7.0":"2366",
      "31.7.0":"9",
      "51.7.0":"53",
      "71.7.0":"63",
      "13.7.0":"536",
      "uptime":"0007:00:03:04"
      }
      
      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von
      #2

      @brokenchrisi sagte in Attribut-Abfrage mit Punkten dazwischen:

      {

      da musst du dir eine function schreiben

      der inhalt wäre:

      log(myJson["1.8.0"])
      

      Image 8.png
      zum testen ein script

      <xml xmlns="https://developers.google.com/blockly/xml">
       <variables>
         <variable id="_dFwL!*|l!rvA~f9=!p.">myJson</variable>
         <variable id="6TxI8{XWfi(5|N@s:Hhq">theJson</variable>
       </variables>
       <block type="procedures_defcustomreturn" id="Q{~C_0Sd~b#S-eGF2tcL" x="213" y="288">
         <mutation statements="false">
           <arg name="myJson" varid="_dFwL!*|l!rvA~f9=!p."></arg>
         </mutation>
         <field name="NAME">readJsonPart</field>
         <field name="SCRIPT">cmV0dXJuIG15SnNvblsiMS44LjAiXTs=</field>
         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
       </block>
       <block type="variables_set" id="{9GyhUN$4[,p*!HKTYM5" x="163" y="387">
         <field name="VAR" id="6TxI8{XWfi(5|N@s:Hhq">theJson</field>
         <value name="VALUE">
           <block type="convert_json2object" id="snxCT~_5j!Rx*Us9g:hR">
             <value name="VALUE">
               <block type="text" id="QStj,vv092Z@9@2S|B9|">
                 <field name="TEXT">{  "timestamp":"2022-02-02T09:47:15",  "1.8.0":"686655",  "2.8.0":"67",  "1.7.0":"143",  "2.7.0":"0",  "32.7.0":"2370",  "52.7.0":"2375",  "72.7.0":"2366",  "31.7.0":"9",  "51.7.0":"53",  "71.7.0":"63",  "13.7.0":"536",  "uptime":"0007:00:03:04"  }</field>
               </block>
             </value>
           </block>
         </value>
         <next>
           <block type="debug" id="cKm.s%,qG[FK-ZqjcV{$">
             <field name="Severity">log</field>
             <value name="TEXT">
               <shadow type="text" id="s[Hd0KseBjz]opVe6V]-">
                 <field name="TEXT">test</field>
               </shadow>
               <block type="procedures_callcustomreturn" id="1S.4^dFCjEw[,0-%0wL6">
                 <mutation name="readJsonPart">
                   <arg name="myJson"></arg>
                 </mutation>
                 <value name="ARG0">
                   <block type="variables_get" id="x)@fBP.4IL:iuD5~~KsX">
                     <field name="VAR" id="6TxI8{XWfi(5|N@s:Hhq">theJson</field>
                   </block>
                 </value>
               </block>
             </value>
           </block>
         </next>
       </block>
      </xml>
      

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      B 1 Antwort Letzte Antwort
      0
      • liv-in-skyL liv-in-sky

        @brokenchrisi sagte in Attribut-Abfrage mit Punkten dazwischen:

        {

        da musst du dir eine function schreiben

        der inhalt wäre:

        log(myJson["1.8.0"])
        

        Image 8.png
        zum testen ein script

        <xml xmlns="https://developers.google.com/blockly/xml">
         <variables>
           <variable id="_dFwL!*|l!rvA~f9=!p.">myJson</variable>
           <variable id="6TxI8{XWfi(5|N@s:Hhq">theJson</variable>
         </variables>
         <block type="procedures_defcustomreturn" id="Q{~C_0Sd~b#S-eGF2tcL" x="213" y="288">
           <mutation statements="false">
             <arg name="myJson" varid="_dFwL!*|l!rvA~f9=!p."></arg>
           </mutation>
           <field name="NAME">readJsonPart</field>
           <field name="SCRIPT">cmV0dXJuIG15SnNvblsiMS44LjAiXTs=</field>
           <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
         </block>
         <block type="variables_set" id="{9GyhUN$4[,p*!HKTYM5" x="163" y="387">
           <field name="VAR" id="6TxI8{XWfi(5|N@s:Hhq">theJson</field>
           <value name="VALUE">
             <block type="convert_json2object" id="snxCT~_5j!Rx*Us9g:hR">
               <value name="VALUE">
                 <block type="text" id="QStj,vv092Z@9@2S|B9|">
                   <field name="TEXT">{  "timestamp":"2022-02-02T09:47:15",  "1.8.0":"686655",  "2.8.0":"67",  "1.7.0":"143",  "2.7.0":"0",  "32.7.0":"2370",  "52.7.0":"2375",  "72.7.0":"2366",  "31.7.0":"9",  "51.7.0":"53",  "71.7.0":"63",  "13.7.0":"536",  "uptime":"0007:00:03:04"  }</field>
                 </block>
               </value>
             </block>
           </value>
           <next>
             <block type="debug" id="cKm.s%,qG[FK-ZqjcV{$">
               <field name="Severity">log</field>
               <value name="TEXT">
                 <shadow type="text" id="s[Hd0KseBjz]opVe6V]-">
                   <field name="TEXT">test</field>
                 </shadow>
                 <block type="procedures_callcustomreturn" id="1S.4^dFCjEw[,0-%0wL6">
                   <mutation name="readJsonPart">
                     <arg name="myJson"></arg>
                   </mutation>
                   <value name="ARG0">
                     <block type="variables_get" id="x)@fBP.4IL:iuD5~~KsX">
                       <field name="VAR" id="6TxI8{XWfi(5|N@s:Hhq">theJson</field>
                     </block>
                   </value>
                 </block>
               </value>
             </block>
           </next>
         </block>
        </xml>
        

        B Offline
        B Offline
        brokenchrisi
        schrieb am zuletzt editiert von
        #3

        @liv-in-sky

        Vielen Dank! Damit klappt es wunderbar!!!

        Für das Verständnis: Kannst du für mich als JS-Laien (deshalb verwende ich blockly) kurz erklären was diese Funktion macht?

        liv-in-skyL 2 Antworten Letzte Antwort
        0
        • B brokenchrisi

          @liv-in-sky

          Vielen Dank! Damit klappt es wunderbar!!!

          Für das Verständnis: Kannst du für mich als JS-Laien (deshalb verwende ich blockly) kurz erklären was diese Funktion macht?

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #4

          @brokenchrisi

          normalerweise ist das mit dem punkt zum unterscheiden schon richtig - wenn aber z.b. punkte oder bindestiche im attribut sind, kann das javasccript nicht - der punkt ist reserviert und der bindestrich bedeutet minus

          die funktion übesetzt das durch die geschweifte klammer - damit man das trotzdem lesen kann.

          mal ein beispiel

          
          
          "Body" : {
          
            "1.8.0" : {
          
              "XYZ" : { "value" : 1234}}}
          
          

          dies muss so abgefragt werden

          Body["1.8.0"].Data.XYZ.value
          

          immer an der stelle, wo sonderzeichen sind muss dann anstatt eines punktes - ein eckige klammer bei der abfrage

          die function macht folgendes

          du übergibst ihr das thejson als parameter, in der function wird dann definiert, was sie mit dem parameter machen soll und mit return zurückgegeben

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          B 1 Antwort Letzte Antwort
          0
          • liv-in-skyL liv-in-sky

            @brokenchrisi

            normalerweise ist das mit dem punkt zum unterscheiden schon richtig - wenn aber z.b. punkte oder bindestiche im attribut sind, kann das javasccript nicht - der punkt ist reserviert und der bindestrich bedeutet minus

            die funktion übesetzt das durch die geschweifte klammer - damit man das trotzdem lesen kann.

            mal ein beispiel

            
            
            "Body" : {
            
              "1.8.0" : {
            
                "XYZ" : { "value" : 1234}}}
            
            

            dies muss so abgefragt werden

            Body["1.8.0"].Data.XYZ.value
            

            immer an der stelle, wo sonderzeichen sind muss dann anstatt eines punktes - ein eckige klammer bei der abfrage

            die function macht folgendes

            du übergibst ihr das thejson als parameter, in der function wird dann definiert, was sie mit dem parameter machen soll und mit return zurückgegeben

            B Offline
            B Offline
            brokenchrisi
            schrieb am zuletzt editiert von
            #5

            @liv-in-sky

            👌
            Danke dir!

            1 Antwort Letzte Antwort
            0
            • B brokenchrisi

              @liv-in-sky

              Vielen Dank! Damit klappt es wunderbar!!!

              Für das Verständnis: Kannst du für mich als JS-Laien (deshalb verwende ich blockly) kurz erklären was diese Funktion macht?

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #6

              @brokenchrisi

              das funtioniert mit blockly nicht - daher die js-function

              Image 1.png

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              1 Antwort Letzte Antwort
              0

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              384

              Online

              32.8k

              Benutzer

              82.8k

              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