Ankündigung

Einklappen
Keine Ankündigung bisher.

JSON String zerlegen und verteilen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    JSON String zerlegen und verteilen

    Liebe JSON Freunde,

    leider sind meine Programmierkenntnis sehr rudimentär.
    Ich habe bereits vor längerer Zeit hier die Frage nach der Integration von NEDAP Wechselrichtern gefragt, und habe mich nun mit den verschiedensten Logikbausteinen beschäftigt :-)
    Ich benutze zur Abfrage den Baustein 19000933 und bekomme folgende Fehlermeldung:
    19000933.PNG























    Die Logik sieht wie folgt aus Minütlicher Trigger an Nedap und Ausgabe in Ausgabebaustein...
    json_LOGIK.PNG
    Wenn ich den link in mein Browserfenster kopiere, bekomme ich folgende Rückmeldung:
    {"last_log":{"time":"2019-02-24T08:19:01Z","time_received":"2019-02-24T07:18:33Z","platform_grid_power":366.0,"solar_p ower":56.0,"solar_power_input1":30.0,"solar_temper ature_input1":43.0,"solar_voltage_input1":281.3999 93896484,"solar_current_input1":0.100000001490116, "solar_power_input2":28.0,"solar_temperature_input 2":42.0,"solar_voltage_input2":271.529998779297,"s olar_current_input2":0.100000001490116,"battery_st ate_of_charge":86.0,"battery_bus_power":1.0,"batte ry_voltage":25.4699993133545,"battery_current":-0.119999997317791,"battery_pack_temperature":20.0, "dcac_grid_voltage":237.0,"dcac_frequency":49.9900 016784668,"dcac_grid_power":2.0,"dcac_local_voltag e":235.100006103516,"dcac_local_power":0.0},"logs" :[{"time":"2019-02-24T08:18:00Z","time_received":null,"platform_grid_ power":null,"solar_power":null,"solar_power_input1 ":null,"solar_temperature_input1":null,"solar_volt age_input1":null,"solar_current_input1":null,"sola r_power_input2":null,"solar_temperature_input2":nu ll,"solar_voltage_input2":null,"solar_current_inpu t2":null,"battery_state_of_charge":null,"battery_b us_power":null,"battery_voltage":null,"battery_cur rent":null,"battery_pack_temperature":null,"dcac_g rid_voltage":null,"dcac_frequency":null,"dcac_grid _power":null,"dcac_local_voltage":null,"dcac_local _power":null}]} Wenn ich das ganze in JSONLint teste ist das valide......
    Problem nummero zwo ist das ichnu einen Teil davon benötige um im nachfolgenden Baustein zu verwerten....
    {"time":"2019-02-24T08:19:01Z","time_received":"2019-02-24T07:18:33Z","platform_grid_power":366.0,"solar_p ower":56.0,"solar_power_input1":30.0,"solar_temper ature_input1":43.0,"solar_voltage_input1":281.3999 93896484,"solar_current_input1":0.100000001490116, "solar_power_input2":28.0,"solar_temperature_input 2":42.0,"solar_voltage_input2":271.529998779297,"s olar_current_input2":0.100000001490116,"battery_st ate_of_charge":86.0,"battery_bus_power":1.0,"batte ry_voltage":25.4699993133545,"battery_current":-0.119999997317791,"battery_pack_temperature":20.0, "dcac_grid_voltage":237.0,"dcac_frequency":49.9900 016784668,"dcac_grid_power":2.0,"dcac_local_voltag e":235.100006103516,"dcac_local_power":0.0} Wer kann mir hier mt Rat ud Tat beistehen????

    Liebe Grüße

    Axel

    #2
    Hallo nochmal,

    wahrscheinlich war mein erster Versuch nicht der beste.....aber ich bin irgendwie wie ein Hamster im Hamsterrad...
    Ich habe vor 10 Jahren eine Häusle gekauft und das komplett entbeint. Beim aufbau habe ich mich dann für den KNX entschieden.
    Dieser funktioniert auch gut.....
    Nach einigen Versuchen mit verschiedensten KNX Visus bin ich vor 6 Wochen nun bei EDOMI gelandet und erfreue mich erster Erfolge :-)
    Rollladen, ReedKontakte...Basics sind soweit integriert und mit wilden Logiken verknüpft.
    Nun will ich auch meine NEDAP Wechselrichter (3 Stück) in die Visu einbeziehen. Und das geht leider nur über das Webportal :-(
    Habe bereits vergeblich mit der internen RS485 herumgebastelt, aber ohne Erfolg.
    Sorry für mein harsches Auftreten ist normalerweise nicht mein Art........


    ich versuche meine Fragen einmal zu clustern:

    1. Problem beim Abfragen mittels LBS19000993:
    Adressaufruf:
    https://USERID:MEINPASSWORT@mypowerrouter.com/power_routers/16568/logs/1minutes.json?normalize_logs=true&include_last _log=true&solar_power=true&solar_power_inp ut1=true&solar_voltage_input1=true&solar_c urrent_input1=true&solar_temperature_input1=tr ue&solar_power_input2=true&solar_voltage_ i nput2=true&solar_current_input2=true&solar _temperature_input2=true&dcac_grid_power=true& amp;dcac_grid_voltage=true&dcac_frequency=true &dcac_local_power=true&dcac_local_volta ge= true&battery_state_of_charge=true&battery_ bus_power=true&battery_voltage=true&batter y_current=true&battery_pack_temperature=true&a mp;platform_grid_power=true&responseContentDat aType=json

    USERID und MEINPASSWORT will ich hier im Forum nicht offiziell posten. Dann kommt es zur oben angezeigter Fehlermeldung im LOG


    Wenn ich diesen string inkl PA und UserID in CHROME kopiere bekomme ich folgenden string zurück:

    "last_log":{"time":"2019-02-24T08:19:01Z","time_received":"2019-02-24T07:18:33Z","platform_grid_power":366.0,"solar_p ower":56.0,"solar_power_input1":30.0,"solar_temper ature_input1":43.0,"solar_voltage_input1":281.3999 93896484,"solar_current_input1":0.100000001490116, "solar_power_input2":28.0,"solar_temperature_i nput 2":42.0,"solar_voltage_input2":271.529998779297 ,"s olar_current_input2":0.100000001490116,"battery_st ate_of_charge":86.0,"battery_bus_power":1.0,"batte ry_voltage":25.4699993133545,"battery_current":-0.119999997317791,"battery_pack_temperature":20.0, "dcac_grid_voltage":237.0,"dcac_frequency":49. 9900 016784668,"dcac_grid_power":2.0,"dcac_local_voltag e":235.100006103516,"dcac_local_power":0.0},"lo gs" :[{"time":"2019-02-24T08:18:00Z","time_received":null,"platform_grid_ power":null,"solar_power":null,"solar_power_input1 ":null,"solar_temperature_input1":null,"solar_ volt age_input1":null,"solar_current_input1":null,"sola r_power_input2":null,"solar_temperature_input2":nu ll,"solar_voltage_input2":null,"solar_current_inp u t2":null,"battery_state_of_charge":null,"battery _b us_power":null,"battery_voltage":null,"battery_cur rent":null,"battery_pack_temperature":null,"dcac_g rid_voltage":null,"dcac_frequency":null,"dcac_grid _power":null,"dcac_local_voltage":null,"dcac_local _power":null}]}

    2. Auftrennen des Strings:
    Aus welchen Gründen auch immer sendet mir die Webseite bei den aktuellen Werten immer null, die Werte aus last log beinhalten aber genau die Werte die ich gerne visualisieren will. Z.B. PV Leistung, Batterie SOC, laden/entladen........
    Und das steht in einem Teilstring.......den ich dann im LBS 19001027 verarbeite......

    {"time":"2019-02-24T08:19:01Z","time_received":"2019-02-24T07:18:33Z","platform_grid_power":366.0,"solar_p ower":56.0,"solar_power_input1":30.0,"solar_temper ature_input1":43.0,"solar_voltage_input1":281.3999 93896484,"solar_current_input1":0.100000001490116, "solar_power_input2":28.0,"solar_temperature_i nput 2":42.0,"solar_voltage_input2":271.529998779297 ,"s olar_current_input2":0.100000001490116,"battery_st ate_of_charge":86.0,"battery_bus_power":1.0,"batte ry_voltage":25.4699993133545,"battery_current":-0.119999997317791,"battery_pack_temperature":20.0, "dcac_grid_voltage":237.0,"dcac_frequency":49. 9900 016784668,"dcac_grid_power":2.0,"dcac_local_voltag e":235.100006103516,"dcac_local_power":0.0}

    ]PV_Werte.PNG

    Wer kann mir hier auf die Sprünge helfen?????

    Liebe Grüße

    Axel

    Kommentar


      #3
      file_get_contents() failed deutet darauf hin, dass der URL-Abruf nicht klappt

      Kommentar


        #4
        Hi EugenDo,

        wie kann ich denn den URL Abruf prüfen? Ich hatte diesen gerade nochmal mit CTRL+C aus dem LBS kopiert und in die Browserzeile in Chrome eingefügt....
        Und bekomme diese Antwort:
        {"last_log":{"time":"2019-02-26T16:58:01Z","time_received":"2019-02-26T15:57:41Z","platform_grid_power":-2.0,"solar_power":267.0,"solar_power_input1":147.0 ,"solar_temperature_input1":47.0,"solar_voltage_in put1":248.869995117188,"solar_current_input1":0.58 9999973773956,"solar_power_input2":121.0,"solar_te mperature_input2":54.0,"solar_voltage_input2":253. 289993286133,"solar_current_input2":0.469999998807 907,"battery_state_of_charge":50.0,"battery_bus_po wer":-70.0,"battery_voltage":24.6000003814697,"battery_c urrent":-1.67999994754791,"battery_pack_temperature":24.600 0003814697,"dcac_grid_voltage":234.5,"dcac_frequen cy":50.0299987792969,"dcac_grid_power":-155.0,"dcac_local_voltage":232.600006103516,"dcac_ local_power":0.0},"logs":[{"time":"2019-02-26T16:58:00Z","time_received":"2019-02-26T15:57:41Z","platform_grid_power":-2.0,"solar_power":267.0,"solar_power_input1":147.0 ,"solar_temperature_input1":47.0,"solar_voltage_in put1":248.869995117188,"solar_current_input1":0.58 9999973773956,"solar_power_input2":121.0,"solar_te mperature_input2":54.0,"solar_voltage_input2":253. 289993286133,"solar_current_input2":0.469999998807 907,"battery_state_of_charge":50.0,"battery_bus_po wer":-70.0,"battery_voltage":24.6000003814697,"battery_c urrent":-1.67999994754791,"battery_pack_temperature":24.600 0003814697,"dcac_grid_voltage":234.5,"dcac_frequen cy":50.0299987792969,"dcac_grid_power":-155.0,"dcac_local_voltage":232.600006103516,"dcac_ local_power":0.0}]} Daraus hatte ich vermutet das es so funktionieren muß. Kann es ein Problem mit HTTPS sein?

        Gruß

        Axel

        Kommentar


          #5
          Macht der Chrome einen Redirect oder so? Wie sehen die Header im Chrome aus? (Developer Mode F12 -> Network)

          Kommentar


            #6
            Zitat von AxelH Beitrag anzeigen
            wie kann ich denn den URL Abruf prüfen?
            Du solltest den Aufruf von EDOMI ausgehend prüfen, da der LBS ja auch dort läuft.

            Rufe die URL mit wget via SSH von EDOMI aus auf:

            Code:
            wget https://[B]USERID:MEINPASSWORT[/B]@mypowerrouter.com/power_routers/16568/logs/1minutes.json?normalize_logs=true&include_last_log=true&solar_power=true&solar_power_input1=true&solar_voltage_input1=true&solar_current_input1=true&solar_temperature_input1=true&solar_power_input2=true&solar_voltage_input2=true&solar_current_input2=true&solar_temperature_input2=true&dcac_grid_power=true&dcac_grid_voltage=true&dcac_frequency=true&dcac_local_power=true&dcac_local_voltage=true&battery_state_of_charge=true&battery_bus_power=true&battery_voltage=true&battery_current=true&battery_pack_temperature=true&platform_grid_power=true&responseContentDataType=json

            Kommentar


              #7
              Zitat von Glotzkowski Beitrag anzeigen
              Code:
              Die URL muss in Quotes, sonst zickt die Shell rum:
              Code:
              wget "https://[B]USERID:MEINPASSWORT[/B]@mypowerrouter.com/power_routers/16568/logs/1minutes.json?normalize_logs=true&include_last_log=true&solar_power=true&solar_power_input1=true&solar_voltage_input1=true&solar_current_input1=true&solar_temperature_input1=true&solar_power_input2=true&solar_voltage_input2=true&solar_current_input2=true&solar_temperature_input2=true&dcac_grid_power=true&dcac_grid_voltage=true&dcac_frequency=true&dcac_local_power=true&dcac_local_voltage=true&battery_state_of_charge=true&battery_bus_power=true&battery_voltage=true&battery_current=true&battery_pack_temperature=true&platform_grid_power=true&responseContentDataType=json"

              Kommentar


                #8
                Hi Glotzkowski,

                hier das Resultat......habe die JSON Anfrag eingekürzt...
                was mache ich falsch? Er kennt das Komando nicht?
                wget.PNG

                Kommentar


                  #9
                  Habe es auch Quotes gestzt, same result
                  wget.PNG

                  Kommentar


                    #10
                    wget ist nicht installiert:

                    Code:
                    yum install wget
                    Update:
                    EDOMI bzw. das CentOS benötigt dazu Internetzugang, ich hoffe dies ist gegeben?
                    Zuletzt geändert von Glotzkowski; 26.02.2019, 19:53.

                    Kommentar


                      #11
                      Wie Du merkst bin ich nicht er UNIX Experte....
                      Danke für die Geduld....
                      Kann es ein Problem mit https sein? --> HTTP Anforderung gesendet<--
                      wget.PNG

                      Kommentar


                        #12
                        Was mich nun etwas irritiert ist der erste 401 Response ... und Content-Length scheint ja auch etwas mistig zu sein ... naja, ohne Header kann ich aber nichts genaueres sagen ...

                        Kommentar


                          #13
                          Nein, https kann hier meiner Meinung nach kein Problem sein.
                          Die erste 401er Meldung irritiert mich auch etwas.
                          Es sieht aber so aus, als ob das Aufrufen der URL von EDOMI aus funktioniert, guck doch mal in die "Datei" die heruntergeladen wurde (1minutes... usw.), da sollte dann der JSON-Inhalt zu sehen sein.
                          Kannst Du mit

                          Code:
                          cat "hier den langen Dateinamen der mit 1minutes.json beginnt"
                          oder alternativ das wget mit der Option -O aufrufen:

                          Code:
                          wget -O ausgabe.txt "hier die komplette URL"
                          und dann

                          Code:
                          cat ausgabe.txt

                          Kommentar


                            #14
                            Die 401 wird das Problem sein und der LBS wird vermutl. keine Wiederholung durchführen, wie es das wget macht.
                            Der LBS müsste dazu etwas erweitert werden...

                            https://www.hashbangcode.com/article...ilegetcontents

                            Kommentar


                              #15
                              Eigentlich ist der 401er aber korrekt... ein Webserver der mit basic auth geschuetzten Content ausliefert antwortet grundsaetzlich immer zuerst mit einem 401er (also tatsaechlich bei jedem Request) - erst darauf hin schickt der Client dann die Credentials.

                              Kommentar

                              Lädt...
                              X