Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] JSON korrekt auslesen (AHOY Api)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] JSON korrekt auslesen (AHOY Api)

    This topic has been deleted. Only users with topic management privileges can see it.
    • haselchen
      haselchen Most Active last edited by haselchen

      Moinsen,

      wieder mal der Verzweifelung nahe.
      Ich habe die Ahoy Software auf die Latest gehoben (0.6.9)
      Dadurch sind einige Datenpunkte und Definitionen in der API durcheinandergewürfelt worden.
      Ich habe einen HM-600 und einen HM-800.
      Wie immer, das Phänomen, die Skripte vom HM-800 funktionieren nicht korrekt beim HM-600.
      Expliziz geht es um den Last Success DP.

      In der API ist er unter api/index.

      00774e6f-4e6e-4b8f-9445-3d80faaeaea1-grafik.png

      Das Blocky was funktionert:

      20fd46b0-ffe6-4ed9-86b4-1f4c02a39365-grafik.png

      Ich schreibe die Zahl aus dem JSON in den Rohdaten DP und wandel es dann in die Uhrzeit um.

      Genau das gleiche Blocky (IP angepasst und DP auch) geht beim anderen Wechselrichter nicht.

      script.js.Photovoltaikanlage.HM-600_Statistik: Cannot get inverter of null
      

      Mal klappt der Abruf im 2.Versuch, aber im nächsten steht schon wieder der Error im Log.
      Ich rufe normal jede Minute ab. Hab auch schon auf 2 oder 3min gestellt.
      Keine Änderung.

      @paul53
      @crunchip
      @mickym

      OliverIO mickym 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators last edited by Homoran

        @haselchen sagte in JSON korrekt auslesen (AHOY Api):

        In der API ist er unter api/index.

        bitte als code

        EDIT: lass mal die Konvertierung nach objekt weg

        nur attribut...von result

        1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @haselchen last edited by

          @haselchen

          die Fehlermeldung bedeutet, das das Objekt null ist.
          Daher es enthält kein Attribut namens inverter.
          d.h. der Abruf hat nicht funktioniert. Evtl müsste man da nochmal vorher überprüfen ob das abgerufene Ergebnis überhaupt einen Inhalt hat (not null)

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

            @haselchen Vielleicht wird ist ja nicht jedes Mal das ganze Objekt vorhanden. Lass Dir doch per Debug das ganze Objekt ausgeben, vielleicht ist das nicht immer verfügbar?

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

              Danke für euer Feedback.
              Die API wird in der GUI alle 30sek aktualisiert.

              65a443f6-eeb7-42f8-a82a-0d865ce361e2-grafik.png

              Dementsprechend ist der Wert aus der API IMMER vorhanden und aktualisiert.

              mickym Homoran OliverIO 3 Replies Last reply Reply Quote 0
              • mickym
                mickym Most Active @haselchen last edited by

                @haselchen Wie gesagt lass Dir das mal im Debug Fenster ausgeben, nur so wirst Du letztlich Klarheit bekommen, was zu tun ist.

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

                  @haselchen sagte in JSON korrekt auslesen (AHOY Api):

                  Dementsprechend ist der Wert aus der API IMMER vorhanden und aktualisiert.

                  ...wenn der Abruf fehlerfrei funktioniert hat!

                  @haselchen sagte in JSON korrekt auslesen (AHOY Api):

                  Mal klappt der Abruf im 2.Versuch,

                  und der andere ist defrkt.

                  also vor dem Auslesen erst prüfen, ob das Objekt auch drin steht

                  haselchen 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @haselchen last edited by

                    @haselchen sagte in JSON korrekt auslesen (AHOY Api):

                    Dementsprechend ist der Wert aus der API IMMER vorhanden und aktualisiert

                    Nicht ganz.
                    auch deine Gui schaut vorher ob das Objekt null ist, bevor es etwas macht.
                    https://github.com/lumapu/ahoy/blob/868c49fdf4ff9e0c657120f2f92c49ffff57db38/src/web/html/index.html#L197

                    1 Reply Last reply Reply Quote 0
                    • haselchen
                      haselchen Most Active @Homoran last edited by

                      @homoran

                      Wie bekomme ich das ganze JSON in einen Datenpunkt?

                      Dann könnte ich es ja aus diesem selektieren.

                      @mickym

                      Entweder habe ich nen ganzen Holzzaun vorm Kopp oder da kommt wirklich nichts als Info.

                      Immer der cannot get Fehler.....

                      OliverIO mickym Homoran 3 Replies Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @haselchen last edited by

                        @haselchen

                        du kannst auch über die gui im browser mal mit den developer tools schauen,
                        was da so ankommt. ob es wirklich immer gefüllt ist.

                        Seite aufrufen.
                        Dann F12
                        Dann Tab Network
                        Dann F5
                        Dann nach den Einträgen zu api/index schauen

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

                          @haselchen

                          2325728b-c5f5-4f4b-9a69-55d2bd5a1e88-image.png

                          Also wenn da kein Objekt zurückkommt, dann kannst auch kein Attribut auslesen. Dann musst halt erst mal mit Browser etc. versuchen zu schauen, was da zurückkommt.

                          Kann es ggf. sein, dass noch eine Anmeldung erforderlich ist?

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

                            @haselchen sagte in JSON korrekt auslesen (AHOY Api):

                            Wie bekomme ich das ganze JSON in einen Datenpunkt?

                            debug result
                            bringt es zum Anzeigen

                            aktualisiere DP1 mit result
                            bringt es in einen Datenpunkt.
                            den kannst du sogar loggen

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

                              @mickym

                              script.js.Photovoltaikanlage.HM-600_Statistik: null
                              

                              Das ist das Ergebnis.
                              Was ist nicht kapiere.
                              Exakt die gleichen Blocklys und Einstellungen funktionieren beim anderen Wechselrichter.

                              Edit: nach dem 3.Abruf kommt das

                              	script.js.Photovoltaikanlage.HM-600_Statistik: {"generic":{"wifi_rssi":-69,"ts_uptime":5777,"menu_prot":false,"menu_mask":61,"menu_protEn":false,"esp_type":"ESP8266"},"ts_now":1689944699,"ts_sunrise":1689909623,"ts_sunset":1689967802,"ts_offset":0,"disNightComm":true,"inverter":[{"enabled":true,"id":0,"name":"HM-600","version":"10010","is_avail":true,"is_producing":true,"ts_last_success":1689944693}],"warnings":[],"infos":["MQTT is connected, 5728 packets sent, 0 packets received"]}
                              
                              mickym paul53 2 Replies Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @haselchen last edited by mickym

                                @haselchen sagte in JSON korrekt auslesen (AHOY Api):

                                @mickym

                                script.js.Photovoltaikanlage.HM-600_Statistik: null
                                

                                Das ist das Ergebnis.
                                Was ist nicht kapiere.
                                Exakt die gleichen Blocklys und Einstellungen funktionieren beim anderen Wechselrichter.

                                Edit: nach dem 3.Abruf kommt das

                                	script.js.Photovoltaikanlage.HM-600_Statistik: {"generic":{"wifi_rssi":-69,"ts_uptime":5777,"menu_prot":false,"menu_mask":61,"menu_protEn":false,"esp_type":"ESP8266"},"ts_now":1689944699,"ts_sunrise":1689909623,"ts_sunset":1689967802,"ts_offset":0,"disNightComm":true,"inverter":[{"enabled":true,"id":0,"name":"HM-600","version":"10010","is_avail":true,"is_producing":true,"ts_last_success":1689944693}],"warnings":[],"infos":["MQTT is connected, 5728 packets sent, 0 packets received"]}
                                

                                Na das ist doch das was ich gemeint habe. Vielleicht ist das Ding einfach nicht so schnell und gibt nicht immer was zurück mach einfach noch eine Abfrage rein, dass es nicht null sein darf.

                                0a6ddf21-a1c3-44c1-9401-9e618d4150d2-image.png

                                Wenn das dann hinhaut, dann bist auf der sicheren Seite, dass dann nur dann was in den DP geschrieben wird, wenn der URL Aufruf ein Ergebnis liefert. Wäre im Prinzip halt generell eine grundsätzliche Möglichkeit um abzufangen, wenn mal nichts zurück kommt.

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

                                  @mickym

                                  Mega.
                                  Da versuche ich was draus zu basteln.
                                  Halber Tag schon wieder weg grmpf

                                  Danke @Homoran + @OliverIO
                                  für den Denkanstoss.

                                  Gebe Feedback....

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

                                    @haselchen Wenn was zurückkommt, dann passt Dein Aufruf jedenfalls:
                                    57643dde-d2a8-4d13-97be-996ae1e4c714-image.png

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

                                      ich glaube immer noch, dass man auf die Konvertierung verzichten können sollte.

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

                                        @homoran Ja - kann schon sein. Wichtig ist aber doch in erster Linie abzufangen, wenn nichts zurück kommt.

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

                                          @haselchen sagte: Das ist das Ergebnis.

                                          Was wird in diesen Fällen in der Variablen error geliefert?

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

                                            @homoran sagte: ich glaube immer noch, dass man auf die Konvertierung verzichten können sollte.

                                            Ja, getAttr() nimmt die Konvertierung selbst vor, wenn erforderlich.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            778
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            25
                                            528
                                            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