Ankündigung

Einklappen
Keine Ankündigung bisher.

Json auslesen

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

  • Json auslesen

    Guten abend

    Ich habe eine frage zu virtuelle eingänge. Ich habe eine Enphase Envoy photovoltaik system. Mit json kann ich die daten auslesen:
    Code:
     
     {"production":[{"type":"inverters","activeCount":18,"readingTime":1573326966,"wNow":0,"whLifetime":344182},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1573327022,"wNow":-2.871,"whLifetime":14561.397,"varhLeadLifetime":0.044,"varhLagLifetime":15788.111,"vahLifetime":26601.687, "rmsCurrent":0.351,"rmsVoltage":232.685,"reactPwr":81.758,"apprntPwr":81.758,"pwrFactor":0.0,"whToday":2970.397,"whLastSevenDays":13265.397,"vahToday":4237.687,"varhLeadToday":0.044,"varhLagToday":1821.111}], "consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1573327022,"wNow":232.995,"whLifetime":81891.633,"varhLeadLifetime":60313.993,"varhLagLifetime":15792.297, "vahLifetime":117078.799,"rmsCurrent":2.233,"rmsVoltage":232.683,"reactPwr":-409.985,"apprntPwr":519.507,"pwrFactor":0.45,"whToday":11655.633,"whLastSevenDays":78194.633,"vahToday":15597.799,"varhLeadToday":6922.993,"varhLagToday":1822.297}, {"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1573327022,"wNow":235.866,"whLifetime":74113.142,"varhLeadLifetime":60313.949,"varhLagLifetime":4.186,"vahLifetime":117078.799, "rmsCurrent":1.881,"rmsVoltage":232.681,"reactPwr":-328.227,"apprntPwr":437.672,"pwrFactor":0.53,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}],"storage": [{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]}
    Wenn ich probiere das "wNow" zu lesen bekomme ich 0.
    Ich habe das alst folgt versucht:
    Code:
    "wNow":\v
    oder
    Code:
    \i[{"type":\i "wNow":\v

    Mit
    Code:
    "wattHoursToday": \v
    bekomme ich 2970 von ein html seite
    Code:
      
     {   "wattHoursToday": 2970,   "wattHoursSevenDays": 13265,   "wattHoursLifetime": 14561,   "wattsNow": -2 }
    gibt das dan ein problem mit json?


    Vielen dank für ihre hilfe!

  • #2
    Dein Problem ist, dass wNow häufiger im JSON vorkommt. Du müsstest schon genau wissen welches Du haben willst und den Suchstring dementsprechend aufbauen.
    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

    Kommentar


    • #3
      Ich bin mir nicht sicher, welches "wNow" du willst?

      Für den Ersten -

      "wNow":\v

      Für den Zweiten -

      \i"wNow"\i\i"wNow":\i\v

      Für den Dritten -

      \i"wNow"\i\i"wNow":\i\i"wNow":\i\v

      etc.
      Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

      Kommentar


      • #4
        Zitat von svethi Beitrag anzeigen
        Dein Problem ist, dass wNow häufiger im JSON vorkommt. Du müsstest schon genau wissen welches Du haben willst und den Suchstring dementsprechend aufbauen.
        Vielen dank, ich habe das geprobiert mit
        Code:
        \i[{"type":\i "wNow":\v
        aber das funktioniert nicht.

        Zitat von Tico Beitrag anzeigen
        Ich bin mir nicht sicher, welches "wNow" du willst?

        Für den Ersten -

        "wNow":\v

        Für den Zweiten -

        \i"wNow"\i\i"wNow":\i\v

        Für den Dritten -

        \i"wNow"\i\i"wNow":\i\i"wNow":\i\v

        etc.
        Auch vielen dank, aber das funktioniert auch nicht.

        Ich werde es mit Wireshark suchen.

        Kommentar


        • #5
          Klicken Sie mit der rechten Maustaste auf die zurückgegebene JSON-Seite und sehen Sie die Seitenquelle.

          Veröffentliche einen Screenshot von diesem rohen JSON.
          Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

          Kommentar


          • #6
            TomV da brauchst Du auch nicht Wireshark bemühen. Die Antwort ist ein JSON und genau wie „wNow“ mehrfach vorkommt, kommt auch type .... wNow mehrfach vor. Du musst Dir wie schon gesagt etwas einzigartiges vor dem gewünschten wNow suchen. Im Übrigen wäre Deine Suche

            \i[{"type":\i "wNow":\v

            sowieso falsch, da Du nach [{"type": "wNow": suchst und das kommt so nie vor. Die Suche mit exakt sein, mit allen Leerzeichen und Zeilenumbrüchen etc. Die Suche würde überhaupt erst funktionieren wenn Du

            [{"type":\i"wNow"\i:\v suchen würdest. Aber dazu müsste wie gesagt der Teil vor dem gewünschten wNow einzigartig sein
            Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

            Kommentar


            • #7
              Tico
              Click image for larger version  Name:	Knipsel.JPG Views:	0 Size:	117.4 KB ID:	219629


              Dan habe ich eine problem weil das "wNow" immer mit dem gleichen vor geht. Muss ich was mot einem raspberry pi machen?

              [EDIT]
              Nur noch ein mal geschaut, aber die wattHoursToday hat dies als seitenquelle:
              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Knipsel.JPG
Ansichten: 1354
Größe: 12,7 KB
ID: 219632 Das <html><body><pre> und </pre></body></html> kann ich nicht in der anderen sehen. Ist das das problem?
              Zuletzt geändert von TomV; 10.11.2019, 12:12.

              Kommentar


              • #8
                Die Frage ist ja, was soll der Raspi machen, wenn Du nicht weißt welchen der ganzen Werte Du haben willst?!
                Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                Kommentar


                • #9
                  Ich will de vier ersten "wNow" lesen. Das die production, consumption. Wenn ich es habe, kann ich das gebrauchen für eine Energieessung.

                  Kommentar


                  • #10
                    Was verwirrend ist, ist, dass die Befehlserkennung, die bereitgestellt wird, anhand der verfügbaren Informationen funktionieren sollte.

                    Vielleicht können Sie einen Screenshot der Eigenschaften Ihrer virtuellen Eingabe einschließlich des Polling-Intervalls zur Verfügung stellen. Etwas könnte sich zeigen.
                    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                    Kommentar


                    • #11
                      Ich denke die gewünschten Werte passen am Besten zum 2. wNow
                      Versuche also mal "measurementType":"production"\i"wNow"\:\v
                      Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                      Kommentar


                      • #12
                        Das was Tico geschrieben hat, müsste eigentlich auch schon funktionieren.
                        TomV Du weißt, dass du bei jeder Änderung im Miniserver speichern musst?
                        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                        Kommentar


                        • #13
                          Was auch noch wichtig ist, dass mindestens eine Wiederholungszeit gewartet werden muss!
                          Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                          Kommentar


                          • #14
                            Zu ihrer information

                            Ich habe ein Python-script geschrieben, um alles zu lesen.
                            Dieses script sendet alles über virtuelle eingangen an den miniserver.

                            Danke für ihre hilfe und Loxberry to the rescue

                            Kommentar


                            • #15
                              Falls noch jemand auf Google nach Enphase Envoy-S Gateway in Kombination mit Loxone sucht und hier landet, hier eine Vorlage für den Virtual HTTP Input:

                              Code:
                              <?xml version="1.0" encoding="utf-8"?>
                              <VirtualInHttp Title="Enphase Envoy-S Gateway" Comment="" Address="http://192.168.1.123/production.json" PollingTime="30">
                              <Info templateType="2" minVersion="12021201"/>
                              <VirtualInHttpCmd Title="cons_net_whLifetime" Comment="" Check="&quot;measurementType&quot;:&quot;net-consumption&quot;\i&quot;whLifetime&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="cons_net_whToday" Comment="" Check="&quot;measurementType&quot;:&quot;net-consumption&quot;\i&quot;whToday&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="cons_net_wNow" Comment="" Check="&quot;measurementType&quot;:&quot;net-consumption&quot;\i&quot;wNow&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="cons_total_whLifetime" Comment="" Check="&quot;measurementType&quot;:&quot;total-consumption&quot;\i&quot;whLifetime&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="cons_total_whToday" Comment="" Check="&quot;measurementType&quot;:&quot;total-consumption&quot;\i&quot;whToday&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="cons_total_wNow" Comment="" Check="&quot;measurementType&quot;:&quot;total-consumption&quot;\i&quot;wNow&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="prod_rmsCurrent" Comment="" Check="&quot;measurementType&quot;:&quot;production&quot;\i&quot;rmsCurrent&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="prod_rmsVoltage" Comment="" Check="&quot;measurementType&quot;:&quot;production&quot;\i&quot;rmsVoltage&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="prod_whLifetime" Comment="" Check="&quot;measurementType&quot;:&quot;production&quot;\i&quot;whLifetime&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="prod_whToday" Comment="" Check="&quot;measurementType&quot;:&quot;production&quot;\i&quot;whToday&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              <VirtualInHttpCmd Title="prod_wNow" Comment="" Check="&quot;measurementType&quot;:&quot;production&quot;\i&quot;wNow&quot;\i:\v" Signed="true" Analog="true" SourceValLow="0" DestValLow="0" SourceValHigh="100" DestValHigh="100" DefVal="0" MinVal="-10000" MaxVal="10000"/>
                              </VirtualInHttp>
                              Den Code als *.XML unter "Dokumente\Loxone\Loxone Config\Templates\VirtualIn" speichern und die Loxone Config neu öffnen.

                              Die IP Adresse muss natürlich noch angepasst werden.

                              Falls jemand selbst die HTTP Eingänge anlegen will hier ein Beispiel der verwendeten Befehlserkennung:

                              Code:
                              "measurementType":"production"\i"wNow"\i:\v
                              ACHTUNG: Die lokale API wurde mit der neusten Firmware vom Envoy-S geschlossen, man kann jedoch beim Support ein Downgrade auf Version D5 anfragen. Mehr Infos gibt es hier: https://support.enphase.com/s/questi...vity-to-envoys

                              Kommentar

                              Lädt...
                              X