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.
    • 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
      • mickym
        mickym Most Active @Negalein last edited by mickym

        @negalein Irgendwie stimmt bei Dir was oben nicht - mit dem Anhaken der unterschiedlichen Lesen Schreiben Funktion.

        Na ich weiss den Fehler. Du hast den nicht auf ReadOnly gesetzt. Wenn Du schreiben willst musst halt da das stringify setzen. Der Fehler tritt natürlich nur auf wenn Du in den Alias schreiben willst und da hast Du weder unterschiedliche Punkte angegeben.

        Wie gesagt wenn Du das nur extrahieren willst und nicht schreiben setz den Alias mal auf ReadOnly

        Oh ich sehe gerade da gibts einen Bug mit dem Alias. Der zerstört den Quelldatenpunkt auch wenn ReadOnly gesetzt ist und schreibt. Dann musst halt bei Schreiben auch setzen.

        Negalein 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:

          Wie gesagt wenn Du das nur extrahieren willst und nicht schreiben setz den Alias mal auf ReadOnly

          Ja, nur vom orig. DP in den Alias schreiben (konvertiert).

          Du meinst da auch das JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price bei Write eintragen?
          8b10ee3a-b331-44c6-a557-d40082c03107-image.png

          Bzw. da
          769285f4-e495-4ee5-a855-3be56d093445-image.png

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

            @negalein Also im Prinzip taucht der Fehler nicht auf, wenn Du nicht in den Alias schreibst. Sonst musst Du das gesamte Objekt mir stringfy schreiben. ist aber doof in meinen Augen. Nein nicht parsen. Also das Problem ist, dass das ReadOnly im Alias nicht funktioniert. Du kannst als Umgehung einfach in einen Dummy Datenpunkt schreiben.

            Ja so kann man das Teil überlisten ohne Log Einträge:

            a3e1d520-d59f-4a4e-8265-0c429fc530df-image.png

            und den Alias selbst auf ReadOnly:

            91ab7402-8834-4b21-9a28-47a206df4285-image.png

            Der dummy Datenpunkt muss nicht existieren:

              "common": {
                "name": "jsonState",
                "desc": "Manuell erzeugt",
                "role": "state",
                "type": "string",
                "read": true,
                "write": false,
                "def": "",
                "alias": {
                  "id": {
                    "read": "0_userdata.0.Test.jsonState",
                    "write": "0_userdata.0.Test.jsonState.dummy"
                  },
                  "read": "JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price"
                }
              }
            
            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 kannst als Umgehung einfach in einen Dummy Datenpunkt schreiben.

              kannst du das für mich verständlicher Beschreiben? Ich versteh gerade nur Bahnhof. 😥

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

                @negalein sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                Du kannst als Umgehung einfach in einen Dummy Datenpunkt schreiben.

                kannst du das für mich verständlicher Beschreiben? Ich versteh gerade nur Bahnhof. 😥

                Also das Problem mit den Log-Einträgen entsteht nur, wenn Du in den Alias was schreibst. Du willst aber doch nur den Preis auslesen? - Richtig?

                Deshalb sollte man den Alias auf ReadOnly stellen. Das scheint aber nicht auszureichen. Deswegen einen Dummy Datenpunkt zum Schreiben angeben. Der muss nicht existieren. Dann sollte es gehen. Ich hab Dir die Screenshots im letzten Post gepostet.

                Oder willst Du selbst Preise schreiben? - Glaub ich eigentlich nicht, sonst musst Du das ganze Objekt in die Schreibfunktion kopieren.

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

                  @negalein
                  Der Dummy-Datenpunkt verhindert, dass der Alias einen ungültigen Wert in den Original-Datenpunkt schreibt.

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

                    @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                    Ich hab Dir die Screenshots im letzten Post gepostet.

                    Ich habs jetzt genau so gemacht

                    10d1623a-7d35-493a-a43e-db2285ba9b9a-image.png
                    6b7d1d05-3133-4ffd-a801-f8d50b9f44b7-image.png

                    Aber trotzdem kommt

                    web.0 2022-12-10 19:13:28.743	error	Invalid read function for undefined: JSON.parse(val).Diesel.price => Cannot read properties of undefined (reading 'price')
                    
                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Negalein last edited by mickym

                      @negalein Bei Lesen sehe ich 2mal IQ_Sprit???

                      b4af6fd6-9dd9-4a1c-8e4a-0b5ce3d056b5-image.png

                      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:

                        Bei Lesen sehe ich 2mal IQ_Sprit???

                        Ja, das passt
                        2aaaa11c-096d-464e-b9d6-33f095d84ef2-image.png

                        Was mich wundert, dass im Log immer JSON.parse(val).Diesel.price anstatt JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price steht.

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

                          @negalein sagte: im Log immer JSON.parse(val).Diesel.price

                          Ein vergessener Alias? Wenn nicht, starte mal ioBroker neu.

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

                            @negalein Schau mal dass das common Objekt so aussieht, wie ich gepostet habe. Es muss diese unterschiedliche IDs für Lesen und Schreiben angehakt sein.

                            88c61586-6a2a-4d7f-bfba-5a3b45504c16-image.png

                            Und beim Lesen darf der Fehler nicht auftreten. Also wie @paul53 gesagt hat durchsuchen, ob noch eine Definition drin ist oder mal neu starten.

                            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:

                              Schau mal dass das common Objekt so aussieht, wie ich gepostet habe. Es muss diese unterschiedliche IDs für Lesen und Schreiben angehakt sein.

                              Ja, das passt

                              oder mal neu starten.

                              schon dabei

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

                                @paul53 sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                                Wenn nicht, starte mal ioBroker neu.

                                @mickym sagte in OpenMQTT Gateway Wetterstation Iobroker Datenpunkt JSON:

                                oder mal neu starten.

                                Läuft

                                Ein Reboot tut gut 😉

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

                                  @negalein Wie gesagt Du musst suchen, ob Du noch woanders ein fehlerhaften Alias definiert hast.

                                  Diese Meldung ist noch was altes:

                                   JSON.parse(val).Diesel.price
                                  

                                  Da hattest Du noch kein Array angegeben.

                                  Wie gesagt der Bug in der Alias Funktion ist, dass sie den originären Datenpunkt überschreibt auch wenn read-only angegeben ist.

                                  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:

                                    Diese Meldung ist noch was altes:

                                    Ja, das war vom alten Script. Da sah das JSON anders aus.
                                    Den dürfte er trotz Änderung (sind ja nur 1 oorig. JSON und 2 Alias-DP verschluckt haben.

                                    Jetzt nach reboot kommt auch keine Fehlermeldung. 🙂

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

                                      Na ist trotzdem ein Bug drin in der Alias funktion. Wenn ich den Alias auf Read-Only setze dann darf der nix in den originalen Datenpunkt schreiben.

                                      Ansonsten muss man das ganze Objekt in die Schreibfunktion eingeben. Das funktioniert zwar - ist aber unübersichtlich:

                                      bf4688f9-138e-40df-8d99-bc7c560c6a44-image.png

                                      {
                                        "common": {
                                          "name": "jsonState",
                                          "desc": "Manuell erzeugt",
                                          "role": "state",
                                          "type": "string",
                                          "read": true,
                                          "write": true,
                                          "def": "",
                                          "alias": {
                                            "id": "0_userdata.0.Test.jsonState",
                                            "read": "JSON.parse(val)['ÖSTERREICH'].services.Diesel[0].price",
                                            "write": "JSON.stringify({   \"Ö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\": val         }       ],       \"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\"   } })"
                                          }
                                        },
                                        "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": 1670697253009
                                      }
                                      

                                      Du siehst man muss das gesamte Objekt mitgeben. Ist ziemlich unübersichtlich.

                                      Ich würde mal ein Issue erstellen - es DARF nicht SEIN, dass ein Alias den ich auf ReadOnly setze, dann was in den Datenpunkt geschrieben wird und damit den JSON zerstört - was natürlich passiert, wenn ich nicht den ganzen JSON neu schreibe.

                                      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

                                      509
                                      Online

                                      31.9k
                                      Users

                                      80.1k
                                      Topics

                                      1.3m
                                      Posts

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