Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Werte aus JSON in Alias-DP zerlegen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Werte aus JSON in Alias-DP zerlegen

Scheduled Pinned Locked Moved Skripten / Logik
14 Posts 4 Posters 1.3k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Online
    W Online
    wolfi913
    wrote on last edited by wolfi913
    #1

    Leider funktioniert bei mir das Zerlegen eines JSON in Alias-Datenpunkte nicht wie gewünscht.
    Der DP mit dem JSON sieht wie folgt aus:

    [
      {
        "link": "http://192.168.4.201/rest/items/modbus_sunspec_fronius_inverter_12345678_harmonized_power_out",
        "state": "1712231835000|773.6666666666666 W",
        "stateDescription": {
          "pattern": "%s",
          "readOnly": true,
          "options": []
        },
        "editable": false,
        "type": "String",
        "name": "modbus_sunspec_fronius_inverter_12345678_harmonized_power_out",
        "label": "PowerACOut",
        "tags": [],
        "groupNames": []
      },
      { ....
    

    Hätte jetzt versucht in der Lesekonvertierung folgendes einzugeben:

    JSON.parse(val).link == ['http://192.168.4.201/rest/items/modbus_sunspec_fronius_inverter_12345678_harmonized_power_out'] ? JSON.parse(val).state : 0
    

    Leider funktioniert das (in verschiedensten getesteten Varianten) nicht. Geht das mit dem Alias-DP nicht wie gewünscht und müsste ich das dann mit JS/Blockly lösen oder gibt's doch eine Möglichkeit?

    paul53P 1 Reply Last reply
    0
    • W wolfi913

      Leider funktioniert bei mir das Zerlegen eines JSON in Alias-Datenpunkte nicht wie gewünscht.
      Der DP mit dem JSON sieht wie folgt aus:

      [
        {
          "link": "http://192.168.4.201/rest/items/modbus_sunspec_fronius_inverter_12345678_harmonized_power_out",
          "state": "1712231835000|773.6666666666666 W",
          "stateDescription": {
            "pattern": "%s",
            "readOnly": true,
            "options": []
          },
          "editable": false,
          "type": "String",
          "name": "modbus_sunspec_fronius_inverter_12345678_harmonized_power_out",
          "label": "PowerACOut",
          "tags": [],
          "groupNames": []
        },
        { ....
      

      Hätte jetzt versucht in der Lesekonvertierung folgendes einzugeben:

      JSON.parse(val).link == ['http://192.168.4.201/rest/items/modbus_sunspec_fronius_inverter_12345678_harmonized_power_out'] ? JSON.parse(val).state : 0
      

      Leider funktioniert das (in verschiedensten getesteten Varianten) nicht. Geht das mit dem Alias-DP nicht wie gewünscht und müsste ich das dann mit JS/Blockly lösen oder gibt's doch eine Möglichkeit?

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @wolfi913 sagte: Geht das mit dem Alias-DP nicht wie gewünscht

      Wenn der gewünschte Wert immer im Objekt mit der gleichen Position im Array steht, kann man es im Alias wandeln.

      parseInt(JSON.parse(val)[0].state.split('|')[1])
      

      In anderen Fällen benötigt man wohl ein Skript.

      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

      W 1 Reply Last reply
      0
      • paul53P paul53

        @wolfi913 sagte: Geht das mit dem Alias-DP nicht wie gewünscht

        Wenn der gewünschte Wert immer im Objekt mit der gleichen Position im Array steht, kann man es im Alias wandeln.

        parseInt(JSON.parse(val)[0].state.split('|')[1])
        

        In anderen Fällen benötigt man wohl ein Skript.

        W Online
        W Online
        wolfi913
        wrote on last edited by
        #3

        @paul53
        Vielen Dank Paul,
        muss werde mal abchecken, ob das JSON immer in der gleichen Reihenfolge kommt. Brauch daraus nämlich ca. 40 DP.
        Wenn nicht muss ich halt auf Scripts ausweichen.

        paul53P haus-automatisierungH 2 Replies Last reply
        0
        • W wolfi913

          @paul53
          Vielen Dank Paul,
          muss werde mal abchecken, ob das JSON immer in der gleichen Reihenfolge kommt. Brauch daraus nämlich ca. 40 DP.
          Wenn nicht muss ich halt auf Scripts ausweichen.

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #4

          @wolfi913 sagte: Wenn nicht muss ich halt auf Scripts ausweichen.

          In dem Fall könnte man wahrscheinlich "label" als letzten Teil der Datenpunkt-ID verwenden?

          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 Reply Last reply
          0
          • W wolfi913

            @paul53
            Vielen Dank Paul,
            muss werde mal abchecken, ob das JSON immer in der gleichen Reihenfolge kommt. Brauch daraus nämlich ca. 40 DP.
            Wenn nicht muss ich halt auf Scripts ausweichen.

            haus-automatisierungH Online
            haus-automatisierungH Online
            haus-automatisierung
            Developer Most Active
            wrote on last edited by haus-automatisierung
            #5

            @wolfi913 sagte in Werte aus JSON in Alias-DP zerlegen:

            muss werde mal abchecken, ob das JSON immer in der gleichen Reihenfolge kommt

            Ansonsten könnte man auch mit .find(...) den entsprechenden Eintrag aus dem Array suchen. z.B.

            parseFloat(JSON.parse(val).find(e => e.name === 'modbus_sunspec_fronius_inverter_12345678_harmonized_power_out').state.split('|').pop())
            

            oder dein ursprünglicher Ansatz auf den link:

            parseFloat(JSON.parse(val).find(e => e.link === 'http://192.168.4.201/rest/items/modbus_sunspec_fronius_inverter_12345678_harmonized_power_out').state.split('|').pop())
            

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            W 1 Reply Last reply
            0
            • haus-automatisierungH haus-automatisierung

              @wolfi913 sagte in Werte aus JSON in Alias-DP zerlegen:

              muss werde mal abchecken, ob das JSON immer in der gleichen Reihenfolge kommt

              Ansonsten könnte man auch mit .find(...) den entsprechenden Eintrag aus dem Array suchen. z.B.

              parseFloat(JSON.parse(val).find(e => e.name === 'modbus_sunspec_fronius_inverter_12345678_harmonized_power_out').state.split('|').pop())
              

              oder dein ursprünglicher Ansatz auf den link:

              parseFloat(JSON.parse(val).find(e => e.link === 'http://192.168.4.201/rest/items/modbus_sunspec_fronius_inverter_12345678_harmonized_power_out').state.split('|').pop())
              
              W Online
              W Online
              wolfi913
              wrote on last edited by
              #6

              @haus-automatisierung
              Funktioniert :+1:
              Die erste Variante find ich besser falls sich aus unerfindlichen Gründen mal die IP ändern sollte. Dann müssten da ja die Alias-DP nicht mehr geändert werden.
              @paul53
              Der Ansatz wäre grundsätzlich nicht schlecht. Leider sind aber teilweise die Werte bei label doppelt vorhanden.

              Vielen Dank für Eure Hilfe

              L 1 Reply Last reply
              1
              • W wolfi913

                @haus-automatisierung
                Funktioniert :+1:
                Die erste Variante find ich besser falls sich aus unerfindlichen Gründen mal die IP ändern sollte. Dann müssten da ja die Alias-DP nicht mehr geändert werden.
                @paul53
                Der Ansatz wäre grundsätzlich nicht schlecht. Leider sind aber teilweise die Werte bei label doppelt vorhanden.

                Vielen Dank für Eure Hilfe

                L Offline
                L Offline
                Laser
                wrote on last edited by Laser
                #7

                @haus-automatisierung
                Habe einen einfachen Fall: ich möchte erkennen, ob dieser Eintrag (connection lost) vorhanden ist und das auf irgendeine Art im Alias Datenpunkt darstellen.
                So geht es schon mal nicht: JSON.parse(val)."message" oder JSON.parse(val)."connection lost" oder JSON.parse(message).connection lost
                Json:

                    "date": "Heute 11:42",
                    "severity": "<span class='logError logSeverity'>error</span>",
                    "from": "vedirect.0",
                    "message": "[2 Einträge] No data received for 10 seconds, connection lost ?",
                    "ts": 1714124548068
                
                paul53P 1 Reply Last reply
                0
                • L Laser

                  @haus-automatisierung
                  Habe einen einfachen Fall: ich möchte erkennen, ob dieser Eintrag (connection lost) vorhanden ist und das auf irgendeine Art im Alias Datenpunkt darstellen.
                  So geht es schon mal nicht: JSON.parse(val)."message" oder JSON.parse(val)."connection lost" oder JSON.parse(message).connection lost
                  Json:

                      "date": "Heute 11:42",
                      "severity": "<span class='logError logSeverity'>error</span>",
                      "from": "vedirect.0",
                      "message": "[2 Einträge] No data received for 10 seconds, connection lost ?",
                      "ts": 1714124548068
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by paul53
                  #8

                  @laser
                  Typ: "boolean"

                  JSON.parse(val).message.includes('connection lost')
                  

                  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

                  L 1 Reply Last reply
                  2
                  • paul53P paul53

                    @laser
                    Typ: "boolean"

                    JSON.parse(val).message.includes('connection lost')
                    
                    L Offline
                    L Offline
                    Laser
                    wrote on last edited by Laser
                    #9

                    @paul53 sagte in Werte aus JSON in Alias-DP zerlegen:

                    JSON.parse(val).message.includes('connection lost')

                    Als Wert steht immer nur "null" da

                    Habe den Alias noch mal komplett gelöscht und neu angelegt. Jetzt sieht der Inhalt so aus (?)
                    Da muß ich noch etwas probieren, bis das klappt...

                    {
                      "type": "state",
                      "common": {
                        "name": "JSON",
                        "role": "json",
                        "type": "boolean",
                        "read": true,
                        "write": false,
                        "alias": {
                          "id": "logparser.0.filters.vedirect.json",
                          "read": "JSON.parse(val).message.includes('connection lost')"
                        }
                      },
                      "_id": "alias.0.Logparser.json",
                      "native": {},
                      "acl": {
                        "object": 1638,
                        "state": 1638,
                        "owner": "system.user.admin",
                        "ownerGroup": "system.group.administrator"
                      },
                      "from": "system.adapter.admin.1",
                      "user": "system.user.admin",
                      "ts": 1714127601731
                    
                    paul53P 2 Replies Last reply
                    0
                    • L Laser

                      @paul53 sagte in Werte aus JSON in Alias-DP zerlegen:

                      JSON.parse(val).message.includes('connection lost')

                      Als Wert steht immer nur "null" da

                      Habe den Alias noch mal komplett gelöscht und neu angelegt. Jetzt sieht der Inhalt so aus (?)
                      Da muß ich noch etwas probieren, bis das klappt...

                      {
                        "type": "state",
                        "common": {
                          "name": "JSON",
                          "role": "json",
                          "type": "boolean",
                          "read": true,
                          "write": false,
                          "alias": {
                            "id": "logparser.0.filters.vedirect.json",
                            "read": "JSON.parse(val).message.includes('connection lost')"
                          }
                        },
                        "_id": "alias.0.Logparser.json",
                        "native": {},
                        "acl": {
                          "object": 1638,
                          "state": 1638,
                          "owner": "system.user.admin",
                          "ownerGroup": "system.group.administrator"
                        },
                        "from": "system.adapter.admin.1",
                        "user": "system.user.admin",
                        "ts": 1714127601731
                      
                      paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by
                      #10

                      @laser
                      Ändere besser Zeilen 4 und 5:

                          "name": "Connection lost",
                          "role": "indicator",
                      

                      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 Reply Last reply
                      1
                      • L Laser

                        @paul53 sagte in Werte aus JSON in Alias-DP zerlegen:

                        JSON.parse(val).message.includes('connection lost')

                        Als Wert steht immer nur "null" da

                        Habe den Alias noch mal komplett gelöscht und neu angelegt. Jetzt sieht der Inhalt so aus (?)
                        Da muß ich noch etwas probieren, bis das klappt...

                        {
                          "type": "state",
                          "common": {
                            "name": "JSON",
                            "role": "json",
                            "type": "boolean",
                            "read": true,
                            "write": false,
                            "alias": {
                              "id": "logparser.0.filters.vedirect.json",
                              "read": "JSON.parse(val).message.includes('connection lost')"
                            }
                          },
                          "_id": "alias.0.Logparser.json",
                          "native": {},
                          "acl": {
                            "object": 1638,
                            "state": 1638,
                            "owner": "system.user.admin",
                            "ownerGroup": "system.group.administrator"
                          },
                          "from": "system.adapter.admin.1",
                          "user": "system.user.admin",
                          "ts": 1714127601731
                        
                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by paul53
                        #11

                        @laser sagte: Als Wert steht immer nur "null" da
                        Das JSON sieht so aus?

                        {
                            "date": "Heute 11:42",
                            "severity": "<span class='logError logSeverity'>error</span>",
                            "from": "vedirect.0",
                            "message": "[2 Einträge] No data received for 10 seconds, connection lost ?",
                            "ts": 1714124548068
                        }
                        

                        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

                        L 1 Reply Last reply
                        0
                        • paul53P paul53

                          @laser sagte: Als Wert steht immer nur "null" da
                          Das JSON sieht so aus?

                          {
                              "date": "Heute 11:42",
                              "severity": "<span class='logError logSeverity'>error</span>",
                              "from": "vedirect.0",
                              "message": "[2 Einträge] No data received for 10 seconds, connection lost ?",
                              "ts": 1714124548068
                          }
                          
                          L Offline
                          L Offline
                          Laser
                          wrote on last edited by Laser
                          #12

                          @paul53 Das JSON:

                          [
                            {
                              "date": "Heute 12:42",
                              "severity": "<span class='logError logSeverity'>error</span>",
                              "from": "vedirect.0",
                              "message": "[10 Einträge] No data received for 10 seconds, connection lost ?",
                              "ts": 1714128144018
                            },
                            {
                              "date": "Heute 11:51",
                              "severity": "<span class='logError logSeverity'>error</span>",
                              "from": "sourceanalytix.0",
                              "message": "[calculationHandler] reading incorrect after conversion contact DEV and provide these info | Reading",
                              "ts": 1714125078042
                            }
                          ]
                          
                          paul53P 1 Reply Last reply
                          0
                          • L Laser

                            @paul53 Das JSON:

                            [
                              {
                                "date": "Heute 12:42",
                                "severity": "<span class='logError logSeverity'>error</span>",
                                "from": "vedirect.0",
                                "message": "[10 Einträge] No data received for 10 seconds, connection lost ?",
                                "ts": 1714128144018
                              },
                              {
                                "date": "Heute 11:51",
                                "severity": "<span class='logError logSeverity'>error</span>",
                                "from": "sourceanalytix.0",
                                "message": "[calculationHandler] reading incorrect after conversion contact DEV and provide these info | Reading",
                                "ts": 1714125078042
                              }
                            ]
                            
                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #13

                            @laser sagte: Das JSON:

                            Das ist ein Array. Lesekonvertierung:

                            JSON.parse(val)[0].message.includes('connection lost')
                            

                            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

                            L 1 Reply Last reply
                            1
                            • paul53P paul53

                              @laser sagte: Das JSON:

                              Das ist ein Array. Lesekonvertierung:

                              JSON.parse(val)[0].message.includes('connection lost')
                              
                              L Offline
                              L Offline
                              Laser
                              wrote on last edited by Laser
                              #14

                              @paul53 Ich hatte gehofft, mit dem Logparser komfortabel bestimme Fehlermeldungen des VE-Adapters im Log detektieren zu können.
                              Das generierte JSON dann auf die Fehlermeldung durchsuchen. Mit Hilfe eines Alias. Das wird aber einfach nichts!

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              715

                              Online

                              32.6k

                              Users

                              82.2k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Home
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe