Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON

    This topic has been deleted. Only users with topic management privileges can see it.
    • Jens G.
      Jens G. @oFbEQnpoLKKl6mbY5e13 last edited by

      Ich verstehe das nicht, hatte noch ein NodeMcu V3 rumliegen, alles aufgebaut. Jetzt sogar eine Antenne sprich Draht dran mit einem RX470 Modul und trotzdem empfängt er nur meine Elro Steckdosen und Fernbedienung. Habe sogar extra in der aktuellen Tasmota das Nexus Protocol in der rcswitch.cpp hinzugefügt und mit RfProtocol36 1 aktiviert = Wenn ich an der Wetterstation den Knopf zum senden drücke passiert nichts :(. Mal schauen ob diese Woche mein RXB8 kommt der sollte genug Leistung haben. Also Software Fehler im Bezug auf OpenMQTT kann ich wohl ausschliessen!

      1 Reply Last reply Reply Quote 0
      • Negalein
        Negalein Global Moderator @mickym last edited by Negalein

        @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

        Ja aber das Admin Interface finde ich inzwischen bestens geeignet.

        Hi Micky

        Ich wollte das gerade bei einem JSON versuchen, um daraus 1 Preis vom Diesel zu filtern.
        Problem ist, dass der Name vom Wert öfter vorkommt. price

        {
          "Super Plus": {
            "title": "Super Plus",
            "date": "05.12.2022-11.12.2022",
            "price": "1,642 EUR"
          },
          "Super": {
            "title": "Super",
            "date": "05.12.2022-11.12.2022",
            "price": "1,498 EUR"
          },
          "Normal": {
            "title": "Normal",
            "date": "05.12.2022-11.12.2022",
            "price": "1,498 EUR"
          },
          "Diesel": {
            "title": "Diesel",
            "date": "05.12.2022-11.12.2022",
            "price": "1,685 EUR"
          },
          "Premium Diesel": {
            "title": "Premium Diesel",
            "date": "05.12.2022-11.12.2022",
            "price": "1,919 EUR"
          }
        }
        

        Ich hab den alias.0.IQ-Preis.Diesel angelegt.
        Dort 0_userdata.0.IQ_Sprit.IQ_Sprit hinterlegt.
        Dann wollte ich alias.0.IQ-Preis.Diesel bearbeiten. Bei Konverter beim Lesen hab ich JSON.parse(val).price verwendet.
        Nach dem speichern hats mir den ioB gekillt.
        Konnte nur mit Schnelligkeit auf einen anderen DP klicken und dann den Alias löschen.

        Was hab ich da falsch gemacht?

        javascript.1 2022-12-08 21:41:40.333	error	Error: Cannot read properties of undefined (reading 'toString')
        javascript.1 2022-12-08 21:41:40.333	error	An error happened which is most likely from one of your scripts, but the originating script could not be detected.
        host.ioBroker 2022-12-08 21:41:17.690	error	instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
        host.ioBroker 2022-12-08 21:41:17.690	error	Caught by controller[0]: at processImmediate (node:internal/timers:468:21)
        host.ioBroker 2022-12-08 21:41:17.690	error	Caught by controller[0]: at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:7439:39)
        host.ioBroker 2022-12-08 21:41:17.690	error	Caught by controller[0]: at Object.formatAliasValue (/opt/iobroker/node_modules/@iobroker/js-controller-common/lib/common/tools.js:2555:35)
        host.ioBroker 2022-12-08 21:41:17.690	error	Caught by controller[0]: TypeError: Cannot read properties of undefined (reading 'toString')
        javascript.0 2022-12-08 21:41:17.485	error	TypeError: Cannot read properties of undefined (reading 'toString') at Object.formatAliasValue (/opt/iobroker/node_modules/@iobroker/js-controller-common/lib/common/tools.js:2555:35) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:7439:39) at processImmediate (node:internal/timers:468:21)
        javascript.0 2022-12-08 21:41:17.485	error	Error: Cannot read properties of undefined (reading 'toString')
        
        mickym paul53 2 Replies Last reply Reply Quote 0
        • mickym
          mickym Most Active @Negalein last edited by

          @negalein Ist ja auch nicht price - sondern Du musst schon den ganzen Pfad eingeben und der Wert muss eindeutig sein.

          Wenn Du den Dieselpreis haben willst, dann musst Du das auch halt angeben

          JSON.parse(val).Diesel.price 
          
          Negalein 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Negalein last edited by

            @negalein sagte: alias.0.IQ-Preis.Diesel bearbeiten. Bei Konverter beim Lesen hab ich JSON.parse(val).price verwendet.

            JSON.parse(val).Diesel.price
            

            Der Alias muss vom Typ "string" sein.

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

              @paul53 😁 schneller 😉

              Negalein 1 Reply Last reply Reply Quote 0
              • Negalein
                Negalein Global Moderator @mickym last edited by

                @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                Wenn Du den Dieselpreis haben willst, dann musst Du das auch halt angeben

                @paul53 sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                Der Alias muss vom Typ "string" sein.

                Danke euch Zwei. Dann probier ich es gleich nochmal. 🙂

                1 Reply Last reply Reply Quote 0
                • Negalein
                  Negalein Global Moderator @mickym last edited by

                  @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                  @paul53 😁 schneller 😉

                  Hi Micky

                  Das JSON hat sich wegen neuem Script geändert und sieht nun auszugsweise (der relevante Teil für mich) so aus.

                  {
                   "ÖSTERREICH": {
                     "services": {
                       "Super Plus": [
                         {
                           "date": "05.12.2022-11.12.2022:",
                           "price": "1,642 EUR"
                         }
                       ],
                       "Super": [
                         {
                           "date": "05.12.2022-11.12.2022:",
                           "price": "1,498 EUR"
                         }
                       ],
                       "Normal": [
                         {
                           "date": "05.12.2022-11.12.2022:",
                           "price": "1,498 EUR"
                         }
                       ],
                       "Diesel": [
                         {
                           "date": "05.12.2022-11.12.2022:",
                           "price": "1,685 EUR"
                         }
                       ],
                  

                  JSON.parse(val).Diesel.price

                  muss es nun so lauten?

                  JSON.parse(val).ÖSTERREICH.services.Diesel.price
                  
                  mickym paul53 2 Replies Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Negalein last edited by

                    @negalein ja

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

                      @mickym ist ein Ö sinnvoll?

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

                        @negalein sagte: muss es nun so lauten?

                        Nein, es ist noch ein Array mit einem Element hinzu gekommen.

                        JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price
                        
                        1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Homoran last edited by mickym

                          @homoran na besser ist ohne, aber da hat man ja oft keinen Einfluss darauf. Wenn das Teil streikt dann die Klammernotation mit Gänsefüßchen nutzen.

                          Und mit dem Array stimmt auch - diesmal ist paul schneller. Richtig müsste es heißen:

                          JSON.parse(val)["ÖSTERREICH"].services.Diesel[0].price
                          

                          aber ich sehe ja, dass genügend geballte Kompetenz vorhanden ist.

                          paul53 Negalein 2 Replies Last reply Reply Quote 0
                          • paul53
                            paul53 @mickym last edited by

                            @mickym sagte: Richtig müsste es heißen:

                            Mit Anführungszeichen funktioniert es nicht.

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

                              @paul53 Doch funktioniert

                              cd4eebbc-4989-4861-95d2-7c0cda7b2faf-image.png

                              6dae004f-e66f-40a3-9379-fcd884966f42-image.png

                              habs ja getestet-

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

                                @mickym sagte: habs ja getestet-

                                Wie sieht es in RAW-Ansicht (JSON) aus?

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

                                  @paul53

                                  Da werden sie auskommentiert - funktioniert aber:

                                  {
                                    "common": {
                                      "name": "jsonState",
                                      "desc": "Manuell erzeugt",
                                      "role": "state",
                                      "type": "string",
                                      "read": true,
                                      "write": true,
                                      "def": "",
                                      "alias": {
                                        "id": {
                                          "read": "0_userdata.0.Test.jsonState",
                                          "write": "0_userdata.0.Test.jsonState.set"
                                        },
                                        "read": "JSON.parse(val)[\"ÖSTERREICH\"].services.Diesel[0].price"
                                      }
                                    },
                                    "type": "state",
                                    "native": {},
                                    "_id": "alias.0.test.jsonState",
                                    "acl": {
                                      "object": 1636,
                                      "state": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator"
                                    },
                                    "from": "system.adapter.admin.0",
                                    "user": "system.user.admin",
                                    "ts": 1670692903249
                                  }
                                  
                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @mickym last edited by

                                    @mickym
                                    Ja, mit Backslash davor funktioniert es.

                                    1 Reply Last reply Reply Quote 0
                                    • Negalein
                                      Negalein Global Moderator @mickym last edited by Negalein

                                      @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                                      Richtig müsste es heißen:

                                      bekomme das im Log (Alias-DP wurden aber aktualisiert)

                                      web.0 2022-12-10 18:28:58.193	error	Invalid read function for undefined: JSON.parse(val).Diesel.date => Cannot read properties of undefined (reading 'date')
                                      web.0 2022-12-10 18:28:58.192	error	Invalid read function for undefined: JSON.parse(val).Diesel.price => Cannot read properties of undefined (reading 'price')
                                      javascript.0 2022-12-10 18:28:50.637	error	Invalid read function for undefined: JSON.parse(val)["ÖSTERREICH"].services.Diesel[0].date => Cannot read properties of undefined (reading 'services')
                                      javascript.1 2022-12-10 18:28:50.634	error	Invalid read function for undefined: JSON.parse(val)["ÖSTERREICH"].services.Diesel[0].date => Cannot read properties of undefined (reading 'services')
                                      javascript.0 2022-12-10 18:28:07.912	error	Invalid read function for undefined: JSON.parse(val)["ÖSTERREICH"].services.Diesel[0].price => Cannot read properties of undefined (reading 'services')
                                      javascript.1 2022-12-10 18:28:07.912	error	Invalid read function for undefined: JSON.parse(val)["ÖSTERREICH"].services.Diesel[0].price => Cannot read properties of undefined (reading 'services')
                                      

                                      So ist das komplette JSON

                                      {
                                        "ÖSTERREICH": {
                                          "services": {
                                            "Super Plus": [
                                              {
                                                "date": "05.12.2022-11.12.2022:",
                                                "price": "1,642 EUR"
                                              }
                                            ],
                                            "Super": [
                                              {
                                                "date": "05.12.2022-11.12.2022:",
                                                "price": "1,498 EUR"
                                              }
                                            ],
                                            "Normal": [
                                              {
                                                "date": "05.12.2022-11.12.2022:",
                                                "price": "1,498 EUR"
                                              }
                                            ],
                                            "Diesel": [
                                              {
                                                "date": "05.12.2022-11.12.2022:",
                                                "price": "1,685 EUR"
                                              }
                                            ],
                                            "Premium Diesel": [
                                              {
                                                "date": "05.12.2022-11.12.2022:",
                                                "price": "1,919 EUR"
                                              }
                                            ],
                                            "IQ Motoröle und Chemie": "10 % Rabatt",
                                            "Autowäsche": "10 % Rabatt"
                                          },
                                          "info": "",
                                          "countryname": "ÖSTERREICH"
                                        },
                                        "BOSNIEN UND HERZEGOWINA": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "BOSNIEN UND HERZEGOWINA"
                                        },
                                        "BELGIEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "BELGIEN"
                                        },
                                        "BULGARIEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "BULGARIEN"
                                        },
                                        "DEUTSCHLAND": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "DEUTSCHLAND"
                                        },
                                        "DÄNEMARK": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "DÄNEMARK"
                                        },
                                        "SPANIEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "SPANIEN"
                                        },
                                        "FRANKREICH": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "FRANKREICH"
                                        },
                                        "GROßBRITANNIEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "GROßBRITANNIEN"
                                        },
                                        "UNGARN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "UNGARN"
                                        },
                                        "ITALIEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "ITALIEN"
                                        },
                                        "LITAUEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "LITAUEN"
                                        },
                                        "LUXEMBURG": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "LUXEMBURG"
                                        },
                                        "NIEDERLANDE": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "NIEDERLANDE"
                                        },
                                        "NORWEGEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "NORWEGEN"
                                        },
                                        "POLEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "POLEN"
                                        },
                                        "RUMÄNIEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "RUMÄNIEN"
                                        },
                                        "SLOWENIEN": {
                                          "services": {},
                                          "info": "Sie tanken zum aktuellen Pumpenabgabepreis",
                                          "countryname": "SLOWENIEN"
                                        }
                                      }
                                      
                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @Negalein last edited by mickym

                                        @negalein Ich bekomme Deinen Fehler wie gesagt nicht. Auch nicht im Log. Hab deinen kompletten JSON bei mir reinkopiert. Insofern schwierig für mich nachzuvollziehen. Du kannst ja auch mit einfachen Hochkomma nutzen, Du musst es halt in der Maske eintragen und nicht in dem Common Objekt, sonst musst halt mit \ die Gänsefüsschen maskieren.

                                        Bei mir tut das in der Maske eingegeben ohne Probleme:

                                        48f3d424-95b5-4dbb-9609-f9ce5403be45-image.png

                                        Dein zuerst gepostetes JSON war ja unvollständig, aber mit dem vollständigen funktioniert es auch.

                                        Negalein 1 Reply Last reply Reply Quote 0
                                        • Negalein
                                          Negalein Global Moderator @mickym last edited by

                                          @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                                          Du musst es halt in der Maske eintragen und nicht in dem Common Objekt

                                          Common schaut so aus

                                          {
                                            "type": "state",
                                            "common": {
                                              "name": "IQ_Sprit",
                                              "role": "state",
                                              "type": "string",
                                              "read": true,
                                              "write": true,
                                              "alias": {
                                                "id": "0_userdata.0.IQ_Sprit.IQ_Sprit",
                                                "read": "JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price"
                                              }
                                            },
                                            "_id": "alias.0.IQ-Sprit.Diesel.Preis.IQ_Sprit",
                                            "native": {},
                                            "acl": {
                                              "object": 1636,
                                              "state": 1636,
                                              "owner": "system.user.admin",
                                              "ownerGroup": "system.group.administrator"
                                            },
                                            "from": "system.adapter.admin.0",
                                            "user": "system.user.admin",
                                            "ts": 1670534620818
                                          }
                                          

                                          Und so in der Maske (bereits mit einfachem Hochkomma)
                                          adf325c8-2f2f-4cbb-8621-4ec4bf77fff5-image.png
                                          JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price

                                          mickym 1 Reply Last reply Reply Quote 0
                                          • Negalein
                                            Negalein Global Moderator last edited by

                                            @mickym

                                            sehe gerade, dass das im Log noch von alten Konvertierungsfunktion ist.

                                            Invalid read function for undefined: JSON.parse(val).Diesel.price => Cannot read properties of undefined (reading 'price')

                                            Eingetragen ist aber schon JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price

                                            Werde mal neu starten.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            903
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            63
                                            3229
                                            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