Ankündigung

Einklappen
Keine Ankündigung bisher.

Webservices mit dem Gira X1 oder L1 abfragen

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

    Nach einigem Nachsinnen ist mir die elegante Lösung für wind_gust eingefallen:
    • Pfad: /root/current/*[self::wind_speed or self::wind_gust]
    • Art der Pfadauswahl: Maximum aller Treffer als Zahl
    Wenn der Eintrag für wind_gust fehlt, wird damit einfach der Wert von wind_speed ausgegeben. (Das selbe würde passieren, wenn beide vorhanden und wind_speed größer als wind_gust wäre, was aber nicht vorkommen sollte.)

    Kommentar


      Cool, das ist ne lösungsorientierte Denkweise die glaube ich nur Entwickler drauf haben :-) Danke.
      Ich hab schon Schwierigkeiten einfachere „Strings“ zusammenzubauen bei der Vielfalt die alleine Deine Bausteine bieten. 👍
      Beste Grüße,

      Uwe

      Kommentar


        /Edit: Geklärt, war ein Fehler meinerseits...
        Zuletzt geändert von matthiaz; 12.08.2021, 12:33.

        Kommentar


          Irgendwie stell ich mich zu blöd an. Ich versuche gerade, aus meinem shelly den Status und die Temperatur zu erhalten.
          Als Status erhalte ich folgenden Request:

          Code:
          {"wifi_sta":{"connected":true,"ssid":"xxxxx","ip":"xxxxx","rssi":-62},
          "cloud":{"enabled":false,"connected":false},
          "mqtt":{"connected":false},"time":"11:46","unixtim e":1627811214,"serial":1,"has_update":false,"mac": "xxxxx","cfg_changed_cnt":0,
          "actions_stats":{"skipped":0},
          "relays":[{"ison":false,"has_timer":false,"timer_started":0, "timer_duration":0,"timer_remaining":0,"source":"i nput"}],
          "meters":[{"power":0.00,"is_valid":true}],
          "inputs":[{"input":0,"event":"","event_cnt":0}],
          "ext_sensors":{"temperature_unit":"C"},
          "ext_temperature":{"1":{"hwID":"28ff641a0016029f", "tC":24.06,"tF":75.31},"0":{"hwID":"28ff3b11001601 13","tC":24.14,"tF":75.45}},
          "ext_humidity":{},
          "update":{"status":"idle","has_update":false,"new_ version":"20210720-184522/v1.11.0-g6abd92e","old_version":"20210720-184522/v1.11.0-g6abd92e"},"ram_total":50896,"ram_free":39240,"fs_ size":233681,"fs_free":150851,"uptime":269}
          Mit dem XML/JSON-Parser kriege ich problemlos über /root cloud/enabled oder /root/update/status usw. die Informationen dieser Zeilen ausgegeben.

          Was nicht klappt, ist es relays/ison oder ext_temperature/0/tC auszulesen. Ich steh einfach auf dem Schlauch, wie ich die Abfrage machen soll.
          Wer kann mir helfen?

          Kommentar


            Bei ersten musst Du berücksichtigen, dass es sich um ein Array (wenn auch nur mit einem Eintrag) handelt:
            Code:
            /root/relays/item[1]/ison
            Das zweite funktioniert nicht direkt (auch weil "0" und "1" keine gültigen XML-Keys sind). Daher erst eine Textersetzung mittels Formelberechnung:
            Code:
            {text:S}.Replace("\"0\"","\"zero\"").Replace("\"1\"","\"one\"")
            und dann folgender Pfad:
            Code:
            /root/ext_temperature/zero/tC
            Zuletzt geändert von hyman; 20.08.2021, 23:20.

            Kommentar


              Danke für die Rückmeldung
              Status funktioniert prima
              Die Temperaturen funktionieren nicht. Ich erhalte im JSON-Parser dann den Laufzeitfehler: "Unerwartetes Zeichen '.'."
              Edit: Auf der Gerätewebseite sehe ich im Logikblatt einen Runtime-Error: '0' ist not a valid XML Name und am Ausgang des Textformatierers, daß 0 nicht in zero gewandelt wurde
              Zuletzt geändert von intelligente Haustechnik; 21.08.2021, 13:33.

              Kommentar


                Zitat von intelligente Haustechnik Beitrag anzeigen
                am Ausgang des Textformatierers, daß 0 nicht in zero gewandelt wurde
                Hast Du die Formel wirklich genau so eingegeben, wie sie oben steht, mit den \" ? Bei mir hat die in der Simulation im GPA funktioniert:

                JSON_IH.png
                Zuletzt geändert von hyman; 22.08.2021, 08:25.

                Kommentar


                  Wie so oft, sitzt das Problem vorm Computer.
                  Natürlich habe ich die Formel genau so übernommen mit copy und paste.

                  Aber wenn man einen Textformatierer anstelle der Formelberechnung nimmt, braucht man sich auch nicht zu wundern

                  Also: Vielen Dank für die schnelle Hilfe

                  Kommentar


                    Mahlzeit, ich habe dennoch eine kurze Frage ich komme leider nicht an der "Formelberechnung" weiter :/ Ich wollte

                    Das Problem ist ich bekomme im Live Betrieb auf der X1 Diagnose die Fehlermeldung: '1' is not a valid XML Name - Simulation OHNE Formelberechnung klappt der JSON Parser

                    Fronius Gen24 Abfrage /solar_api/v1/GetPowerFlowRealtimeData.fcgi
                    { "Body" : { "Data" : { "Inverters" : { "1" : { "DT" : 1, "P" : 1742 } }, "Site" : { "BatteryStandby" : false, "E_Day" : null, "E_Total" : null, "E_Year" : null, "Meter_Location" : "grid", "Mode" : "meter", "P_Akku" : null, "P_Grid" : -3291.4000000000001, "P_Load" : 1549.0928710937501, "P_PV" : 1795.1092529296875, "rel_Autonomy" : 100.0, "rel_SelfConsumption" : 0.0 }, "Version" : "12" } }, "Head" : { "RequestArguments" : {}, "Status" : { "Code" : 0, "Reason" : "", "UserMessage" : "" }, "Timestamp" : "2021-10-06T12:36:04+00:00" } }
                    Formelberechnung mit ->
                    parser.JPG

                    und bekomme bei der Formelberechnung folgende Fehlermeldung, div. Google C# Hilfe ist leider ausserhalb meines Verständnis
                    Expression 1: (1,17): error CS1010: Newline in constant
                    (2,5): error CS1525: Unexpected symbol `Body'
                    (7,17): error CS1525: Unexpected symbol `P'
                    (10,11): error CS1525: Unexpected symbol `Site'
                    (12,14): error CS1525: Unexpected symbol `E_Day'
                    (13,14): error CS1525: Unexpected symbol `E_Total'
                    (14,14): error CS1525: Unexpected symbol `E_Year'
                    (15,14): error CS1525: Unexpected symbol `Meter_Location'
                    (16,14): error CS1525: Unexpected symbol `Mode'
                    (17,14): error CS1525: Unexpected symbol `P_Akku'
                    (18,14): error CS1525: Unexpected symbol `P_Grid'
                    (19,14): error CS1525: Unexpected symbol `P_Load'
                    (20,14): error CS1525: Unexpected symbol `P_PV'
                    (21,14): error CS1525: Unexpected symbol `rel_Autonomy'
                    (22,14): error CS1525: Unexpected symbol `rel_SelfConsumption'
                    (24,11): error CS1525: Unexpected symbol `Version'
                    (27,5): error CS1525: Unexpected symbol `Head'
                    (29,8): error CS1525: Unexpected symbol `Status'
                    (31,11): error CS1525: Unexpected symbol `Reason'
                    (32,11): error CS1525: Unexpected symbol `UserMessage'
                    (34,8): error CS1525: Unexpected symbol `Timestamp'
                    (37,18): error CS1039: Unterminated string literal
                    (1,2): error CS0103: The name `text' does not exist in the current context
                    (1,2): error CS0103: The name `text' does not exist in the current context
                    Vielleicht hilft das auch jemanden in Zukunft? Grüße



                    ------------------------

                    Update auf die 1.3.6 und alle Probleme haben sich erledigt Danke !!!!

                    Damit andere das Problem vielleicht schneller finden, lasse ich das hier stehen!






                    ------------------------
                    Angehängte Dateien
                    Zuletzt geändert von FISEChris1337; 06.10.2021, 14:18.

                    Kommentar


                      Zitat von FISEChris1337 Beitrag anzeigen
                      und bekomme bei der Formelberechnung folgende Fehlermeldung, div. Google C# Hilfe ist leider ausserhalb meines Verständnis

                      Ich glaube, dein String in der Formelberechnung ist nicht korrekt? Wo hast'n den her?

                      Wenn ich das noch richtig in Erinnerung habe (ich habe nen Fronius Symo und frage das auch über die API ab), habe ich da keine Backslash verwendet.

                      {text:S}.Replace(""1"",""one"").Replace("null","0. 0")

                      Siehe ansonsten auch hier:
                      https://knx-user-forum.de/forum/%C3%...89#post1658789

                      Kommentar


                        Das schon richtig mit Backslash, ich will ja das JSON nicht kaputt machen. Es lag am "Update" vom Baustein. siehe oben

                        Kommentar


                          Zitat von jaydee73 Beitrag anzeigen
                          Jawohl!

                          Das Problem hatte ich bei mir auch. Hat mir hyman dann auch gleich geholfen. Der Parser kommt mit den Ausdrücken "1" und "null" nicht klar (warum, habe ich auch nicht verstanden...). Deswegen muss man den JSON-Content erst durch einen Baustein schicken, der die doofen Ausdrücke gegen unproblematische Ausdrücke austauscht. Das geht über den Formelberechner (ebenfalls ein Baustein von hyman).

                          Sieht bei mir so aus:

                          Unbenannt.JPG

                          Die komplette Formel lautet:

                          Code:
                          {text:S}.Replace("\"1\"","\"one\"").Replace("null","0.0")
                          Dann solltest du auch keinen Laufzeitfehler mehr bekommen.
                          Bei mir möchte es auch noch nicht funktionieren.
                          Ist der Pfad so richtig?: /root/Body/Data/0/Current_AC_Phase_1

                          bild1.png

                          bild2.png

                          Kommentar


                            Nach dem parser wurde die 0 oder 1 ersetzt im pfad

                            Kommentar


                              Zitat von FISEChris1337 Beitrag anzeigen
                              Nach dem parser wurde die 0 oder 1 ersetzt im pfad
                              ich habe gelesen dass es sonst beim parsen mit zahlen probleme geben kann.
                              ich bekomme die meldung "Der Ausdruck muss in einem Knotensatz resultieren."
                              was bedeutet das?

                              Kommentar


                                Was genau ersetzt der Replace bei Dir? Wenn z. B. Die "0" durch einen Text ersetzt wird (was notwendig ist, damit das Ganze nicht nur in der Simulation, sondern auch auf dem L1/X1 funktioniert), dann musst Du das natürlich im Pfad entsprechend ändern...
                                Zuletzt geändert von hyman; 14.10.2021, 05:41. Grund: Klarer formuliert

                                Kommentar

                                Lädt...
                                X