Ankündigung

Einklappen
Keine Ankündigung bisher.

und noch ein LBS OpenWeatherMap

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

    HS/FS und noch ein LBS OpenWeatherMap

    Hallo zusammen,
    erst einmal, das soll hier kein Wettbewerb für OpenWeathermap Bausteine sein. Ich habe den Baustein (13208) vom Holger ( eckerho1 ) eingesetzt, wollte aber etwas andere Daten haben über die "onecall-api". Daher habe ich kurz einen Baustein mittels SDK erstellt. Falls also jemand den Baustein ändern möchte, dann kann er/sie das gerne tun.

    Wie gesagt, dieser Baustein nutzt die Onecall-API von OpenWeatherMap und ermöglicht die Abfrage für
    • current
    • hourly
    • daily
    Auf minutely habe ich bewußt verzichtet, ein Blick aus dem Fenster reicht da aus . Wie gesagt, der LBS ist offen und es kann jeder den Baustein für sich erweitern.

    Einbindung:
    1. Web-Seiten/IP-Geräte Abfrage erstellen
      Daten: api.openweathermap.org
      Senden: /data/2.5/onecall?lat={WERT}&lon={WERT}&exclude=minutely,hou rly&appid={API-KEY}&units=metric&lang=de

      Es müssen immer zwei Bereiche exkludiert werden (minute, hourly, daily), so dass nur der relevante Bereich übertragen wird.
    2. Bei Empfang muss lediglich folgendes eingetragen werden
    weather001.jpg

    Ansonsten sieht die Logik im Editor relativ einfach aus
    E1: Eingang der Infos aus der Abfrage
    E2: Definition, welche Position abgefragt werden soll (bei daily 0-7, bei hourly 0-47, bei current egal)
    E3: current=1, hourly=2, daily=3
    E4 und E5: definieren die Datum und Zeitformate

    weather002.jpg
    In der Visu habe ich entsprechende Elemente definiert, die einen Suffix haben (°C, hPa, m/s usw.)
    Die Visu-Seite sieht dann (in meinem Fall) so aus (Möglich daily 0 - 7 Tage), hier Heute und die nächsten 3 Tage
    weather003.jpg ... und hourly Daten (Möglich von 0-47 Stunden) stehen dann auf der Homepage und sehen so aus (hier nur 0, 6h, 12h):
    weather004.jpg

    Da OpenWeather ja nur die UTC Timestamps liefert habe ich die Möglichkeit eingebaut, die Format einzustellen über die Eingänge E4 und E5.
    In meinem Fall oben habe ich bei Daily-Abfrage %d.%m.%Y eingetragen, so dass nur das Datum angezeigt wird. Bei Hourly-Abfrage entsprechend %H:%M
    Das macht beim WAF gleich doppelte Punktzahl

    Ich werde den Baustein in den nächsten Tagen im Download zur Verfügung stellen.
    https://service.knx-user-forum.de/?c...nload&id=12936

    Anmerkung: Ich habe eine Reihe von Replacements für "merkwürdige" Zeichen eingebaut, damit es nicht zu sonderbaren Darstellungen kommt. Falls jemand doch irgendwelche Sonderzeichen in seiner Darstellung bekommt, dann einfach posten und ich baue sie mit ein.

    Ciao
    Der DJ

    vento66
    der Baustein liegt im Download-Bereich
    Zuletzt geändert von DJ.Picasso; 29.11.2021, 16:45.
    Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
    Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

    #2
    Ach ja, ich habe doch noch etwas vergessen.

    JSON APIs sind - wie die meisten wissen - nicht stringent, also eher dynamisch. Teilweise werden Daten mitgeliefert, teilweise fehlen sie komplett. Daher ist es immer etwas tricky, die Zuordnungen zu realisieren. Bei der Onecall API habe ich gesehen, dass es bsp. die Werte für Regen und Schnee betrifft, die mal fehlen, mal ist nur einer der Werte dabei, ein anderes Mal beide Werte vorhanden.
    Ich kenne die API von Openweather nicht bis ins kleinste Detail und habe versucht, dies zu berücksichtigen.
    Falls jemandem auffällt, dass zusätzliche als von mir erfasste Werte geliefert werden, dann bitte kurz melden. Der Einbau ist relativ easy und schnell zu realisieren.
    Bitte dann am besten die komplette JSON, ist einfacher.
    Ciao
    Der DJ
    Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
    Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

    Kommentar


      #3
      Sehr coole Sache. Vielen Dank für deine Mühe. Sind die Darstellungen mit Landkarte auf der rechten Seite auch mit deinem Baustein machbar oder wie bekommst du die integriert ? (Darstellung VISU QC)

      Kommentar


        #4
        No, die kommen nicht von OpenWeatherMap sondern aus dem Netz. Kann man von zig-verschiedenen Quellen laden. Einfach eine "Kamera" im HS definieren und laden.
        Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
        Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

        Kommentar


          #5
          okay das werd ich mal testen. Hast du mir die Quelle für deine oben gezeigte Visu ? Sieht echt cool aus.

          Kommentar


            #6
            DJ.Picasso Könntest du mir deine IP Abfrage noch etwas genauer erklären? Aus dem LINK den WERT und API-KEY, woher bekomme ich die z. B. bzw. wie kommt man geneerell drauf? Mir geht es hier nicht nur um die Screenshots um dann Copy & Paste zu machen, sondern um das "zu verstehen"....

            Du sendest quasi eine Anfrage an eine Webseite, hier an api.openweathermap.org...

            Den Text den du sendest lautet:

            /data/2.5/onecall?lat={WERT}&lon={WERT}&exclude=minutely,hou rly&appid={API-KEY}&units=metric&lang=de


            Empfang analog deinem Bild....

            Das Ergebnis weißt du einem KO bzw. dem Eingang des Logikbausteins zu.

            Dank dir vorab bzw. auch jedem anderen der sich angesprochen fühlt und bereit ist meinen Horizont wieder etwas zu erweitern!



            Kommentar


              #7
              skami
              in diesem Fall von tagesschau.de. schau Dir mal die Wetter-Seiten an und such Dir dann die Bilder raus, die Du verwenden möchtest. Wie gesagt, kannst Du auch von allen möglichen anderen Seiten abgreifen.

              Jokl und all

              Klar, erst einmal musst Du natürlich den Link kennen, über den Du die Infos bekommst. In diesem Fall, das ist aber hier auch schon mehrfach beschrieben worden,
              über die Seite: openweathermap.org
              1. Dort kannst Du Dir einen kostenlosen Account einrichten
              2. Danach richtest Du Dir unter Deinem Account einen API-Key ein. Du kannst zig Keys einrichten aber eigentlich reicht einer in der Regel aus. Der Key ist ein alphanumerischer Wert, der aus 20-30 Zeichen besteht.
              3. über die Seite https://openweathermap.org/api kommst Du an die möglichen APIs ran
              4. Ich habe mich in diesem Fall für die Onecall-API entschieden: https://openweathermap.org/api/one-call-api
                1. Auf der Seite findest Du dann auch den Aufbau der URL und was wann wie geliefert wird
              5. Hier findest Du also auch die entsprechenden Infos zu den JSON oder XML Infos, die als Response zurückkommen
              6. Damit hast Du also Deinen Aufbau der URL mit entsprechenden Infos. Bevor Du im HS oder sonstwo loslegst, einfach über den Browser testen
              Zurückkommen müsste dann so etwas in der Art
              weather005.jpg weather006.jpg
              D.h. es klappt schon mal mit der "Nachbarin" ääh mit der Response.

              Als nächstes also im HS eine Web-Seiten-Abfrage einrichten.
              1. Daten\IP\Host-Adresse:api.openweathermap.org
                Senden\HTTP-Abruf senden : /data/2.5/onecall?lat={WERT}&lon={WERT}&exclude=minutely,hou rly&appid={API-KEY}&units=metric&lang=de
                Wenn Du jetzt den Link hier mit der Beschreibung auf der openweathermap.org-API-Seite vergleichst, dann weißt Du warum die URL so aussehen muss.
              2. Im Reiter Empfang muss Du natürlich jetzt spezifizieren, was Du mit den empfangenen Daten machen willst, denn Du willst ja was machen ... nämlich die Infos entsprechend darstellen auf Deiner VISU, heißt also:
                1. Text empfangen, Text einem Objekt zuweisen, Objekt irgendwo in einer Logik nutzen und die Inhalte dann entsprechend verarbeiten.
              In diesem Fall unter Empfang habe ich erst einmal den Header ignoriert (1. Zeile mit "Beliebige Daten")
              weather007.jpg

              In der 2. Zeile suche ich dann nach dem Eintrag GET,POST im Header (siehe Bild oben bei Response-Header). Direkt danach beginnt dann der eigentlich Inhalt, der als Rohdaten so aussieht, also typische Struktur einer json-datei.
              {"lat":51.48,"lon":7.22,"timezone":"Europe/Berlin","timezone_offset":3600,"current":{"dt":163 8261307,"sunrise":1638256394,"sunset":1638286008," temp":5.9,"feels_like":5.9,"pressure":1005,"humidi ty":97,"dew_point":5.46,"uvi":0.01,"clouds":100, "v isibility":6561,"wind_speed":0.89,"wind_deg":310," wind_gust":8.49,"weather":[{"id":804,"main":"Clouds","description":"Bedeck t", "icon":"04d"}],"rain":{"1h":0.1}},"daily":[{"dt":1638270000,"sunrise":1638256394,"sunset": 163 8286008,"moonrise":1638236220,"moonset":1638279780 ,"moon_phase":0.85,"temp":{"day":6.53,"min":1.6 9," max":8.41,"night":8.41,"eve":7.39,"morn":3.15},"f e els_like":{"day":3.15,"night":5.51,"eve":5.07,"mor n":-1.9},"pressure":1005,"humidity":97,"dew_point":6.0 9,"wind_speed":7.56,"wind_deg":248,"wind_gust":1 7. 56,"weather":[{"id":616,"main":"Snow","description":"Regen und Schnee","icon":"13d"}],"clouds":100,"pop":1,"rain":10.52,"snow":0.33, "uv i":0.08},{"dt":1638356400,"sunrise":1638342878, "su nset":1638372368,"moonrise":1638327600,"moonset":1 638367200,"moon_phase":0.89,"temp":{"day":7.9,"min ":4.57,"max":9.15,"night":4.75,"eve":6.98,"mor n":8 .55},"feels_like":{"day":4.53,"night":2.48,"eve":3 .4,"morn":4.53},"pressure":993,"humidity":79,"dew _ point":4.44,"wind_speed":9,"wind_deg":220,"wind_gu st":20.46,"weather":[{"id":501,"main":"Rain","description":"Mäßiger Regen","icon":"10d"}],"clouds":100,"pop":1,"rain":8.74,"uvi":0.25},{ "dt ":1638442800,"sunrise":1638429361,"sunset":163 8458 731,"moonrise":1638419280,"moonset":1638454800,"mo on_phase":0.93,"temp":{"day":4.25,"min":1.76,"max" :4.88,"night":2.01,"eve":2.5,"morn":2.65},"feels_l ike":
              Damit musst Du Dich natürlich auseinandersetzen und verstehen, wie die Strukturen - vor allem die nested-Infos - aufgebaut sind.

              Diese komplette Info übergebe ich jetzt dem Internen-KO im HS
              weather008.jpg

              Siehe Web-Abfrage und hier Kommunikationsobjekte

              Jetzt hast Du also erst einmal deine Abfrage-Infos als Text-String innerhalb des HS und kannst anfangen diese Infos zu strukturieren, auszuwerten, "durchzurühren", zu "schütteln" und am Ende irgendwelchen Werte zuzuordnen.

              Und genau das "Durchrühren" macht jetzt dieser LBS bzw. auch andere - egal ob mit den Wetter-Infos oder anderen.
              Daher das KO wieder an der Eingangsbox und an der Ausgangsbox kommen viele kleine geordnete Werte raus
              weather002.jpg

              Und dann kommt natürlich noch der Aufbau der VISU. Hier ist natürlich der "freischaffende Künstler" in jedem Einzelnen gefordert.
              Unterm Strich musst Du aber "nur" noch die KOs, die an den Bausteinen hängen in "irgendeiner Form" auf der VISU platzieren.

              That's it. Eigentlich doch ganz einfach, oder

              Ich hoffe, es ist etwas klarer geworden, wie der Experte im HS so tickt. Ich kenne zwar Edomi und andere Systeme nur rudimentär aber die Vorgehensweise wird sich ähneln.

              Ciao
              Der DJ

              PS: Beim nächsten Treffen zahlst Du die Runde
              Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
              Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

              Kommentar


                #8
                Ach ja, wieder was vergessen.
                In der Visu nutze ich nicht die Icons von openweathermap sondern noch aus der Historie heraus die Icons von Wetter.com. Die sind einfach schöner
                Hierzu bedarf es natürlich "Dynamischer Symbole". Es gibt verschiedene Möglichkeiten, diese darzustellen. In meinem Fall nutze ich den numerischen Code der IconID und werte es dann so aus:

                weather009.jpg weather010.jpg
                Diese Zuordnungen finden sich auch auf den API-Seiten von openweathermap. Einfach mal nach den ICONs suchen.

                ... und noch ein Drink!
                Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
                Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

                Kommentar


                  #9
                  DJ.Picasso

                  Sau starker Beitrag und vielen Dank für deine Mühen! Hat mir sehr geholfen die Zusammenhänge besser zu erfassen... Ich werd mich die Tage mal in Ruhe über die Umsetzung machen und mich ggf. bei Fragen nochmals melden! Wirklich TOP - DANKE!

                  Kommentar


                    #10
                    Na da kann ich ja dem Weihnachtsmann sagen, dass ich richtig lieb gewesen bin .... und das Geschenk wird umso größer!
                    Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
                    Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

                    Kommentar


                      #11
                      Grüezi zusammen

                      Gratulation DJ.Picasso zu dem tollen LBS Openweather Baustein. Frage; funktioniert der Baustein noch mit Experte 4.5??

                      Gruss aus der Schweiz
                      Pit

                      Kommentar


                        #12
                        Ich kann es Dir leider nicht sagen, aber aus meiner Sicht sollte nichts dagegen sprechen.
                        Unterm Strich bleibt Dir nur eines: Ausprobieren.
                        Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
                        Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

                        Kommentar


                          #13
                          Tolles Projekt, war sicher sau viel Arbeit :-)

                          Das mit den teilweise Daten mal da und nicht da bei JSON hat mich vor Jahren schon dazu bewegt, den Wetter Baustein bei Grot zu kaufen. Der läuft jetzt seit Jahren problemlos. Ich steuere inzwischen damit sogar meine FBH anhand der 6h Vorhersage sehr zuverlässig. Das war mir vorher mit meiner eigenen Openweather Abfrage nie zuverlässig gelungen. Wenn es nur für Visualisierung ist, dann ist es natürlich alles halb so wild! Das muß man halt mit bedenken, wenn man da tatsächlich eine Regelung hinten dran hängt.

                          Kommentar


                            #14
                            Vielen Vielen Dank für die geile Erklärung, habe sogar ich gecheckt dickes Lob.

                            Natürlich wollte ich das bei mir gleich machen, jedoch fragt mich der Experte nach einem IP-Port.
                            Was ist denn der Port vom Openweathermap API?

                            Oder stehe ich grad komplett daneben??

                            Mit freundlichen Grüßen

                            Domi

                            Kommentar


                              #15
                              falls Du die Web-Abfrage meinst, einfach 80 eintragen.

                              Es gibt noch eine Reihe weiterer Stellen im Experten, in denen Ports eingetragen werden. Falls die angemäkelt werden, hat das nichts mit dem Baustein zu tun. Du kannst unten im Fenster auf den Fehler klicken und kommst dann zu der entsprechenden Stelle.
                              Darf man fremden Leuten eigentlich Fragen stellen, nachdem sie im Bus telefoniert haben und einem noch etwas unklar ist?
                              Projects: Sonos Gateway (Musterprojekt) - KNX-MonAMI - Nutzer-Profile

                              Kommentar

                              Lädt...
                              X