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

    Hallo Hans,
    Zitat von Familiekokkel Beitrag anzeigen
    ich lese eine API von einem Lüftungsgerät über HTTP.
    In der Simulation bekomme ich alle Werte schön aus dem JSON zu sehen, in LIVE werden aber keine Werte hochgerechnet.
    Hat jemand eine Idee woran das liegen könnte?
    ​Sowohl der HTTP-Request- als auch der Parser-Baustein haben Ausgänge für Fehlermeldungen. Scheinen bei Dir aber beide weg konfiguriert zu sein. Die müsstest Du Dir mal wieder hin konfigurieren. Ausgänge musst Du keine daran anschließen. Dann kannst Du über das Debugging-Web-Interface des X1 unter https://gira-x1:4433/discovery/logic anschauen, ob und welche Fehler da kommen. Wenn Du aus den Fehlermeldungen nicht schlau wirst, kannst Du sie ja wieder hier posten.

    Grüße von Horst

    Kommentar


      Zitat von Familiekokkel Beitrag anzeigen
      TLS 1.2
      Lesen hilft :-)

      Screenshot (968).png

      Kommentar


        In der Tat, Lesen hilft: Hans verwendet gar keine https-URL. Dann ist der TLS-Support doch Banane, oder sehe ich das falsch?

        Kommentar


          Wenn seine Gegenstelle https eigentlich will, dann wird vom Server automatisch weiter geroutet und dann entsteht der TLS-Fehler. Er hat ja selbst geschrieben, dass er hofft mit aktueller Firmware noch die TLS 1.2 Unterstützung zu haben. Nur deshalb habe ich darauf hingewiesen, dass es diese jetzt aktuell nicht mehr gibt.

          Es gibt einige andere Beiträge, in denen der Nutzer das "S" bei https weggelassen hat, in der Hoffnung es zum Laufen zu bringen, aber das funktioniert eben so nicht (leider).

          Kommentar


            Hello,

            vielen Dank für Ihre Nachricht. Eine weitere Untersuchung zeigt in der Tat, dass ein Fehler generiert wird.
            Die folgende Meldung stammt von der Debugging-Weboberfläche des X1 (danke für den Tipp 😊).

            image.png

            Es scheint, dass der XmlJsonParser einen bestimmten Namen nicht kodieren kann.

            Konkret: ' 'calculated-co2-bath2+-toilet2_ppm' is not a valid XML Name.

            Dies ist der Grund, warum kein Wert auf dem X1 sichtbar ist.

            Ich bin kein Experte für XML, aber möglicherweise hat XML Einschränkungen, wenn es um Sonderzeichen geht?
            Vielleicht ist das Pluszeichen ein Sonderzeichen in XML? Sind meine Überlegungen richtig und was könnte ich dagegen tun?

            Mit freundlichen Grüßen,
            Hans​

            Kommentar


              Dieser Fehler kommt in der Simulation nicht? Würde mich wundern ...

              Buchstaben, Ziffern und '-' sind erlaubt im Key, '+' nicht. Das '+' stammt ja vermutlich aus einem Namen, den Du irgendwo selbst vergeben hast. Daher wäre die einfachste Abhilfe, es dort zu entfernen. Ansonsten kannst Du auf dem JSON-Text mit der Formelberechnung eine Textersetzung machen, bevor Du den Text an den Parser weiter gibst.
              Zuletzt geändert von hyman; 04.04.2024, 06:08.

              Kommentar


                Hello hyman,

                Vielen Dank für Ihre Antwort.

                Nach der Antwort habe ich versucht, das "+"-Zeichen in der JSON-Zeichenfolge zu ersetzen. Dies gelang mit der Ersetzen-Funktion. Beim Testen stieß ich auf mehrere Variablen, die nicht im richtigen XML-Format bereitgestellt wurden. Ich habe diese einzeln im Code ersetzt, mit dem Ergebnis, dass es jetzt funktioniert.
                Alle Werte werden nun sauber durch den JSON-Parser Funktionsblock an den Gira X1 übergeben.

                Immer wieder ein schönes Gefühl, wenn etwas wieder funktioniert, auch wenn es nicht immer einfach ist.

                Vielen Dank für Ihre Hilfe!

                Viele Grüße, Hans

                image.png

                Kommentar


                  Zitat von Alzi Beitrag anzeigen
                  Danke Sweeny - es hat funktioniert :-)


                  Danke matthiaz - damit konnte ich den Token mit dem Befehl als Header zusammen bauen :-)

                  Ich bekomme jetzt bei dem Befehl unten folgendes zurück. Ich sehe in diesem langen Text meine drei Sensoren versteckt. Es kommen also die Werte raus *freu*. Jedoch habe ich selbst mit einigem Versuchen nicht rausbekommen wie ich jetzt den Wert in der Mitte der Antwort auslesen kann.

                  Das müsste die letzte Frage sein:
                  Könntet ihr mir bitte sagen was die Pfadstruktur für das XML/JASON-Parser Modul sein muss um soilHumidity den Wert 10 auszulesen?

                  1000 Dank :-)

                  {"data":{"id":"0e8f0215-4b28-479e-aa47-4e11ffee4b06","type":"LOCATION","relationships":{" devices":{"data":[{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"DEVICE"},{"id":"3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"DEVICE"},{"id":"8276d514-2447-4dca-a055-baffa6d37648","type":"DEVICE"},{"id":"e50c9bad-bbcf-4496-a6c1-8968d9f48c68","type":"DEVICE"}]}},"attributes":{"name":"GARDENA smart Garden"}},"included":[{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"DEVICE","relationships":{"lo cation":{"data":{"id":"0e8f0215-4b28-479e-aa47-4e11ffee4b06","type":"LOCATION"}},"services":{"dat a":[{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"SENSOR"},{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"COMMON"}]}}},{"id":"3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"DEVICE","relationships":{"lo cation":{"data":{"id":"0e8f0215-4b28-479e-aa47-4e11ffee4b06","type":"LOCATION"}},"services":{"dat a":[{"id":"3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"SENSOR"},{"id":"3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"COMMON"}]}}},{"id":"8276d514-2447-4dca-a055-baffa6d37648","type":"DEVICE","relationships":{"lo cation":{"data":{"id":"0e8f0215-4b28-479e-aa47-4e11ffee4b06","type":"LOCATION"}},"services":{"dat a":[{"id":"8276d514-2447-4dca-a055-baffa6d37648","type":"SENSOR"},{"id":"8276d514-2447-4dca-a055-baffa6d37648","type":"COMMON"}]}}},{"id":"e50c9bad-bbcf-4496-a6c1-8968d9f48c68","type":"DEVICE","relationships":{"lo cation":{"data":{"id":"0e8f0215-4b28-479e-aa47-4e11ffee4b06","type":"LOCATION"}},"services":{"dat a":[{"id":"e50c9bad-bbcf-4496-a6c1-8968d9f48c68:cbtg","type":"MOWER"},{"id":"e50c9bad-bbcf-4496-a6c1-8968d9f48c68","type":"COMMON"}]}}},{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"SENSOR","relationships":{"de vice":{"data":{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"DEVICE"}}},"attributes":{"so ilHumidity":{"value":55,"timestamp":"2023-06-20T20:11:06.000+00:00"},"soilTemperature":{"value" :24,"timestamp":"2023-06-20T20:11:06.000+00:00"}}},{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"COMMON","relationships":{"de vice":{"data":{"id":"377ee006-14e4-41fb-91f5-103c6ad5e0da","type":"DEVICE"}}},"attributes":{"na me":{"value":"Feigen"},"batteryLevel":{"value":5 7, "timestamp":"2023-06-15T07:58:15.000+00:00"},"batteryState":{"value":"U NKNOWN","timestamp":"2023-06-15T07:58:15.000+00:00"},"rfLinkLevel":{"value":60, "timestamp":"2023-06-20T20:11:06.000+00:00"},"serial":{"value":"0013393 7"},"modelType":{"value":"GARDENA smart Sensor"},"rfLinkState":{"value":"ONLINE"}}},{"id": "3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"SENSOR","relationships":{"de vice":{"data":{"id":"3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"DEVICE"}}},"attributes":{"soilHumidity":{"value":10,"timestamp":"2023-06-20T20:56:04.000+00:00"},"soilTemperature":{"value" :23,"timestamp":"2023-06-20T20:56:04.000+00:00"}}},{"id":"3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"COMMON","relationships":{"de vice":{"data":{"id":"3aa950cb-c8c8-4e24-8921-be8a33cbfa29","type":"DEVICE"}}},"attributes":{"na me":{"value":"Glanzmispel"},"batteryLevel":{"val ue ":21,"timestamp":"2023-06-16T21:56:00.000+00:00"},"batteryState":{"value":"L OW","timestamp":"2023-06-16T21:56:00.000+00:00"},"rfLinkLevel":{"value":70, "timestamp":"2023-06-20T20:56:04.000+00:00"},"serial":{"value":"0003992 4"},"modelType":{"value":"GARDENA smart Sensor"},"rfLinkState":{"value":"ONLINE"}}},{"id": "8276d514-2447-4dca-a055-baffa6d37648","type":"SENSOR","relationships":{"de vice":{"data":{"id":"8276d514-2447-4dca-a055-baffa6d37648","type":"DEVICE"}}},"attributes":{"so ilHumidity":{"value":45,"timestamp":"2023-06-20T20:01:24.000+00:00"},"soilTemperature":{"value" :26,"timestamp":"2023-06-20T20:01:24.000+00:00"}}},{"id":"8276d514-2447-4dca-a055-baffa6d37648","type":"COMMON","relationships":{"de vice":{"data":{"id":"8276d514-2447-4dca-a055-baffa6d37648","type":"DEVICE"}}},"attributes":{"na me":{"value":"Rasen"},"batteryLevel":{"value":92 ," timestamp":"2023-06-15T07:58:15.000+00:00"},"batteryState":{"value":"U NKNOWN","timestamp":"2023-06-15T07:58:15.000+00:00"},"rfLinkLevel":{"value":50, "timestamp":"2023-06-20T20:01:24.000+00:00"},"serial":{"value":"0009251 5"},"modelType":{"value":"GARDENA smart Sensor"},"rfLinkState":{"value":"ONLINE"}}},{"id": "e50c9bad-bbcf-4496-a6c1-8968d9f48c68:cbtg","type":"MOWER","relationships": {"device":{"data":{"id":"e50c9bad-bbcf-4496-a6c1-8968d9f48c68","type":"DEVICE"}}},"attributes":{"st ate":{"value":"WARNING","timestamp":"2023-06-20T15:21:53.000+00:00"},"activity":{"value":"NONE" ,"timestamp":"2023-06-20T15:21:53.000+00:00"},"lastErrorCode":{"value":" PARKED_DAILY_LIMIT_REACHED","timestamp":"2023-06-20T20:57:19.469+00:00"},"operatingHours":{"value": 705}}},{"id":"e50c9bad-bbcf-4496-a6c1-8968d9f48c68","type":"COMMON","relationships":{"de vice":{"data":{"id":"e50c9bad-bbcf-4496-a6c1-8968d9f48c68","type":"DEVICE"}}},"attributes":{"na me":{"value":"Konrad"},"batteryLevel":{"value":1 00 ,"timestamp":"2023-06-20T15:44:46.000+00:00"},"batteryState":{"value":"O K","timestamp":"2023-06-20T20:57:19.469+00:00"},"rfLinkLevel":{"value":90, "timestamp":"2023-06-20T20:32:40.000+00:00"},"serial":{"value":"2048823 92"},"modelType":{"value":"GARDENA smart Mower"},"rfLinkState":{"value":"ONLINE"}}}]}



                  2023-06-20 22_59_53-GARDENA smart system API - Husqvarna Group.png



                  Hallo,
                  möchte auch die Bodenfeuchte über Gardena auslesen.
                  Habe gesehen, dass Du da ein Lösung hinbekommen hast.
                  Kannst Du mir bitte den Textformatierer und dann den Webrequest genauer zeigen?
                  Was hast Du in welches Feld der beiden Bausteine geschrieben?
                  Wäre klasse. Danke.​

                  Kommentar


                    Hier findest Du eine praktische Hilfe, um den Pfad zu den gewünschten Werten zu finden:

                    https://jsonpathfinder.com/

                    Kommentar


                      Merci #araeubig, das Tool kannte ich noch nicht und wird in Zukunft sicher auch eingesetzt werden, danke :-).
                      Ich bin aber noch einen Schritt davor, d. h. wie ich die Werte per Web Request auslesen kann. Den Token konnte ich schon isolieren, mir fehlt aber wie ich den Textformatierer und die Web-Request Anfrage in der Logik aufbauen muss:
                      ​​grafik.png

                      VG
                      Thomas

                      Kommentar


                        Zitat von hornu1 Beitrag anzeigen
                        Schritt davor
                        Ich verstehe die Frage nicht: ".....in der Logik aufbauen muss"......

                        Kommentar


                          Hallo araeubig, habe es hinbekommen 👍, nun kämpfe ich mit Pfadstruktur für das XML/JASON-Parser Modul​, die Wete auszulesen. Da mache ich am Wochenende weiter. VG und Danke für Deine Hilfe. Gruß Thomas

                          Kommentar


                            Hallo, benötige noch mal Eure/Deine Hilfe:
                            Nun kann ich es auslesen, bekomme aber den Wert nicht im Baustein XML/Jason Parser zerlegt.

                            Denn das:
                            {"data":{"id":"5046109a-aec1-XXXXXXX","type":"LOCATION","relationships":{" devices":{"data":[{"id":"40a2694c-e08a-401dXXXXXXXXXX","type":"DEVICE"},{"id":"8674a62a-614f-43fb-abdb-XXXXXXX","type":"DEVICE"}]}},"attributes":{"name":"GARDENA smart Garden"}},"included":[{"id":"40a2694c-e08a-4XXXXXXX","type":"DEVICE","relationships":{"lo cation":{"data":{"id":"5046109a-aecXXXXXXXX","type":"LOCATION"}},"services":{"dat a":[{"id":"40a2694c-e08a-401d-97XXXXXXX","type":"MOWER"},{"id":"40a2694c-e08a-XXXXXXX","type":"COMMON"}]}}},{"id":"8674a62a-614f-4XXXXXXXX","type":"DEVICE","relationships":{"lo cation":{"data":{"id":"5046109a-aec1-4cfb-XXXXXXXXX","type":"LOCATION"}},"services":{"dat a":[{"id":"8674a62a-614f-43fbXXXXXXXX","type":"SENSOR"},{"id":"8674a62a-614fXXXXXXXX","type":"COMMON"}]}}},{"id":"40a2694c-e08a-401d-XXXXXXXXX","type":"MOWER","relationships":{"dev ice":{"data":{"id":"40a2694c-e08a-XXXXXXXXXX","type":"DEVICE"}}},"attributes":{"st ate":{"value":"ERROR","timestamp":"2024-04-19T16:17:42.000+00:00"},"activity":{"value":"NONE" ,"timestamp":"2024-04-19T16:17:42.000+00:00"},"lastErrorCode":{"value":" LIFTED","timestamp":"2024-04-19T16:17:42.000+00:00"},"operatingHours":{"value": 344}}},{"id":"40a2694c-e08a-401d-9XXXXXXXXX","type":"COMMON","relationships":{"de vice":{"data":{"id":"40a2694c-eXXXXXXXXXXX","type":"DEVICE"}}},"attributes":{"na me":{"value":"Schäfchen"},"batteryLevel":{"value ": 100,"timestamp":"2024-04-19T16:24:27.000+00:00"},"batteryState":{"value":"O K","timestamp":"2024-04-24T17:18:33.881+00:00"},"rfLinkLevel":{"value":100 ,"timestamp":"2024-04-19T16:17:34.000+00:00"},"serial":{"value":"2233819 08"},"modelType":{"value":"GARDENA smart Mower"},"rfLinkState":{"value":"OFFLINE"}}},{"id": "8674a62a-614f-XXXXXXXXX","type":"SENSOR","relationships":{"de vice":{"data":{"id":"8674a62a-614f-43fb-XXXXXXXXX","type":"DEVICE"}}},"attributes":{"soilHumidity":{"value":80,"timestamp":"2024-04-24T17:02:48.000+00:00"},"soilTemperature":{"value" :8,"timestamp":"2024-04-24T17:02:48.000+00:00"}}},{"id":"8674a62a-61XXXXXXX","type":"COMMON","relationships":{"de vice":{"data":{"id":"8674a62a-614fXXXXXXX","type":"DEVICE"}}},"attributes":{"na me":{"value":"Kirschlorbeer 1"},"batteryLevel":{"value":100,"timestamp":"20 24-04-13T16:08:58.000+00:00"},"batteryState":{"value":"U NKNOWN","timestamp":"2024-04-13T16:08:58.000+00:00"},"rfLinkLevel":{"value":60, "timestamp":"2024-04-24T17:02:48.000+00:00"},"serial":{"value":"0036077 3"},"modelType":{"value":"GARDENA smart Sensor"},"rfLinkState":{"value":"ONLINE"}}}]}

                            sieht in https://jsonformatter.org/json-parser so aus, wenn ich den Wert 80 (included/?/attributes/soilHumidity/value/80) haben möchte:

                            object►included►4►attributes►soilHumidity►value
                            ​​
                            Mir ist klar, dass ich die Nummer 4 durch z. B. "vier" ersetzen muss. Aber ich habe nur eckige Klammern [ ] im String. Daher komme ich nicht auf die Lösung mit dem Baustein Formelberechnung:
                            grafik.png

                            oder gleich der Pfad am XML/JSON-Parser Baustein.

                            In
                            https://jsonpathfinder.com/
                            sieht das so aus:
                            ​​

                            Kann mir da bitte jemand helfen? DANKE!
                            VG
                            Thomas​
                            Zuletzt geändert von hornu1; 25.04.2024, 15:05.

                            Kommentar


                              Du musst beim Zählen aufpassen, die 0 ist auch dabei...
                              Hier mal eine Beispiel, wie ich mir die Werte vom Sensor hole, der Rest funktioniert dann analog.

                              Code:
                              Sensor Westen Rasen
                              root/included/item[32]/attributes/name/value
                              root/included/item[32]/attributes/batteryLevel/value
                              root/included/item[31]/attributes/soilTemperature/value
                              root/included/item[31]/attributes/soilHumidity/value
                              ​
                              Hast Du den Refresh-Token bereits in Deine Abfragen gepackt?
                              Grüße
                              Marc

                              Kommentar


                                Zitat von SMA Beitrag anzeigen
                                Du musst beim Zählen aufpassen, die 0 ist auch dabei...
                                Hier mal eine Beispiel, wie ich mir die Werte vom Sensor hole, der Rest funktioniert dann analog.

                                Code:
                                Sensor Westen Rasen
                                root/included/item[32]/attributes/name/value
                                root/included/item[32]/attributes/batteryLevel/value
                                root/included/item[31]/attributes/soilTemperature/value
                                root/included/item[31]/attributes/soilHumidity/value
                                ​
                                Hast Du den Refresh-Token bereits in Deine Abfragen gepackt?
                                Guten Morgen SMA,
                                das ist ja ein toller Start in den Tag, klappt perfekt mit item[X], darauf wärer ich nie gekommen. VIELEN DANK!
                                grafik.png

                                Meinst Du mit Refresh-Token, dass ich den access_token bei jeder einzelnen Abfrage neu über Web-Request abfrage und mit einer Sekunde Verzögerung dann in den Web-Request zur Abfrage der Daten nutze, dann ja. Oder meinst Du was anderes?

                                VG
                                Thomas

                                grafik.png

                                Kommentar

                                Lädt...
                                X