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

    X1 Webservices mit dem Gira X1 oder L1 abfragen

    Hallo allerseits,

    da die Frage schon in drei Threads aufgetaucht ist, folgt hier die Antwort an zentraler Stelle.

    Man kann mit dem Gira L1 oder X1 Webservices anzapfen, die Daten als XML oder JSON-Text liefern. Dazu braucht man zwei Drittentwickler-Logikbausteine:
    Für eine stündliche Abfrage der OpenWeatherMap-Vorhersage sieht das Logikblatt z. B. so aus (gezeigt sind beispielhafte Simulationsdaten):

    XmlJsonParserExample1.png

    Weitere Information zu diesem Beispiel findet sich in der Dokumentation zum XML-/JSON-Parser, die nach dessen Installation im GPA zur Verfügung steht. Neben den beispielhaft extrahierten Daten sind noch eine ganze Reihe weiterer Vorhersagedaten im OpenWeatherMap-XML verfügbar.

    Auch Ger
    äte im lokalen Netz können abgefragt oder mit Daten versorgt werden, soweit sie eine HTTP-Schnittstelle anbieten. Weitere Informationen zu den technischen Möglichkeiten finden sich in den Dokumentationen zu den Request Bausteinen.

    Ein weiteres Beispiel, das die Einbindung von preiswerten DECT-Smart-Home-Ger
    äten über eine FRITZ!Box zeigt, findet sich wieder in der Dokumentation zum XML-/JSON-Parser.

    Grüße von Horst
    Zuletzt geändert von hyman; 27.11.2019, 23:18.

    #2
    Die folgende Frage erreichte mich per PN, ich denke aber, dass die Antwort von allgemeinem Interesse ist:

    gibt es mit dem X1 auch die Möglichkeit bei bestimmten Events Http Befehle zu senden? ... bin im GPA aber irgendwie nicht fündig geworden ausser irgendwelche http Seiten in der App anzeigen zu lassen.
    Den weiteren Ausführungen des Fragestellers entnehme ich, dass er mit "Event" KNX-Bustelegramme meint.

    Die Antwort ist: Ja, es lassen sich Webservices nicht nur abfragen, sondern auch mit Daten füttern. Dabei kommt in der Regel eine geeignete Kombination folgender
    Möglichkeiten des Web-Request-Bausteins zum Einsatz:
    • Der Trigger-Eingang bestimmt, wann ein Request geschickt wird
    • Die URL bestimmt was als Request geschickt wird.
    • Neben der (auch von Webbrowsern) standardmäßig verwendeten Methode 'GET' stehen auch die Methoden 'POST', 'PUT' und 'DELETE' zur Verfügung. Welche davon zu verwenden ist, entnimmt man der API-Spezifikation des anzusprechenden Geräts.
    • Je nach Methode kann weiterer Dateninhalt mit dem Request verschickt werden.
    • In der URL wie in den gesendeten Daten können Variablen benutzt werden, deren Daten von zusätzlichen Baustein-Eingängen geholt werden.
    Wichtige Einschränkung: Derzeit funktionieren generell nur ungesicherte HTTP-Requests. HTTPS wird nicht unterstützt.

    In der Dokumentation zum GPA steht zu alledem natürlich nix, weil man ja einen Fremdbaustein dazu braucht. In dessen Dokumentation steht alles weitere...

    Grüße von Horst
    Zuletzt geändert von hyman; 27.11.2019, 23:21.

    Kommentar


      #3
      Ich reihe mich hier mal ein, da meine Frage zu dem letzten Beitrag passt.

      Ich möchte mit dem - WEB REQUEST - Baustein einige Temperaturen zu Thinkspeak schicken um dort die zeitlichen Verläufe sichtbar zu machen.
      Aber leider funktioniert es bei mir nicht und ich kommen nicht dahinter warum.

      Gebe ich die folgende Zeile in meinem Browser ein werden alle 4 Felder mit dem Wert "50" gefüllt. Das funktioniert.
      Den API key habe ich durch XXX ersetzt.

      http:// api.thingspeak.com/update?api_key=XXXXXXXXXXXXXX&field1=50&field2=5 0&field3=50&field4=50

      Diesen Post request möchte ich nun über dem Baustein von meinem X1 senden.

      Den Baustein triggere ich alle 20 s mit einem Telegrammgenerator.
      Die Werte kommen vom KNX-Bus über Eingänge.



      Unbenannt.JPG
      Zuletzt geändert von poertner; 13.10.2019, 13:24.

      Kommentar


        #4
        Zitat von poertner Beitrag anzeigen
        Gebe ich die folgende Zeile in meinem Browser ein werden alle 4 Felder mit dem Wert "50" gefüllt. Das funktioniert.
        Den API key habe ich durch XXX ersetzt.

        http:// api.thingspeak.com/update?api_key=XXXXXXXXXXXXXX&field1=50&field2=5 0&field3=50&field4=50

        im Browser ist das dann aber GET ohne Body

        Kommentar


          #5
          Zitat von EugenDo Beitrag anzeigen
          im Browser ist das dann aber GET ohne Body
          Mit GET und ersetzen des "=" durch ":" bekomme ich in der Simulation schon Mal eine Antwort vom Server.
          Leider eine 0. Und richtig wäre die die Anzahl der bereits gesendeten Datenpunkte.

          Kommentar


            #6
            Wieso ":"? Im Browser hast Du doch auch "=" benutzt, oder verstehe ich das falsch?

            Kommentar


              #7
              hyman Nein, hast du ganz richtig verstanden. Ich hatte nachdem es nicht funktionieren wollte etwas mit dem Parametern "gespielt".
              Leider immer noch mit Antwort "0".

              Update: Solange ich in der Simulation keine Werte vorgebe, also leere Felder schicke funktioniert es und ich bekomme eine gültige Rückmeldung vom Server. Daraus schließe ich --> mein Datentyp ist falsch. ?
              Ankommend ist Datenpunkt-Typ "Temperatur" diesen habe ich über einen "Typ-Konverter" mit dem Eingang des "Web Request" verbunden.

              Update2: Jetzt habe ich den "Typ-Konverter" durch deinen "Text-Formatierer" ersetzt und schneide mit {Eingang:F0} einfach die Nachkommastellen ab und es funktioniert. :-)

              Habe den Verdacht, dass Thinkspeak nur "." statt in Europa üblich "," akzeptiert.
              Zuletzt geändert von poertner; 14.10.2019, 18:57.

              Kommentar


                #8
                Hmm, wenn ich mit die Doku anschaue, ist der GET Aufruf anders gestaltet ...

                https://www.mathworks.com/help/thingspeak/writedata.html;jsessionid=ea64d9f168305a05207901ed 3d57

                Du bist Dir auch sicher, dass HTTP Aufruf bei MATLAB unverschlüsselt geht?

                Kommentar


                  #9
                  EugenDo
                  ich glaube dein Posting und mein Update des vorherigen Posts haben sich überschnitten.

                  Habe ich auch inzwischen gesehen, ein Aufruf ohne Key geht weder beim write noch beim read.

                  Es funktioniert nun, wobei der Fehler nicht im GET Aufruf lag sondern an den Daten die ich senden wollte. Siehe Post #7.

                  Danke für die Hinweise.

                  Kommentar


                    #10
                    Welche Zahlenformatierung das API braucht, sollte doch irgendwo dokumentiert sein. Wenn da ein Punkt als Dezimaltrennzeichen gebraucht wird, kann ich dafür evtl. imTextformatierer einen neuen Formatbuchstaben einführen. Oder noch besser: Der Web-Request-Baustein lernt es direkt selber...

                    Kommentar


                      #11
                      Wenn ein float Wert gesendet wird muss dieser durch "." und nicht durch "," getrennt werden.
                      Deswegen funktioniert er sobald ich die Nachkommastellen mit dem Textformatierer abschneide (F0).

                      ​Für mich funktioniert es damit. Sonst wäre sicherlich ein Update des Textformatierers, das "," durch "." ersetzt an der ein oder anderen Stelle ganz nett.

                      Kommentar


                        #12
                        Lösung mit existierenden Bausteinen: Man nehme die Formelberechnung. Ab Version 1.1.1 kann die auch Texte ausgeben. Mit der Formel:
                        Code:
                        {Number:N}.ToString("N1",System.Globalization.CultureInfo.InvariantCulture)
                        bekommt man die Zahl mit einer Nachkommastelle und '.' als Dezimaltrennzeichen.
                        Zuletzt geändert von hyman; 14.10.2019, 22:19.

                        Kommentar


                          #13
                          Danke hyman probiere ich heute Abend aus.

                          Kommentar


                            #14
                            So, jetzt endlich bin ich dazu gekommen den Baustein "Formelberechung" auf Version 1.1.1 zu aktualisieren.
                            Aber sobald ich den Ausgang der Formelberechnung mit dem Eingang des WebRequest verbinden möchte wird der Eingang ausgegraut?
                            Am Eingang des WebRequest steht "TYP: String" damit sollte es doch passen?

                            Kommentar


                              #15
                              Du musst den Ausgang auf Typ String umstellen -- dazu gibt es einen Parameter mit Menüeinträgen. Hier ein Screenshot mit einem Beispiel; der erste Ausgang ist vom Typ String, der zweite vom Typ Boolean:

                              AusgängeTyp.PNG
                              Zuletzt geändert von hyman; 22.10.2019, 06:45.

                              Kommentar

                              Lädt...
                              X