Die Firma OpenWeather stellt auf ihrer Webseite OpenWeatherMap https://openweathermap.org Wetterdaten und Prognosen zum Abruf bereit. Die Daten können in eigene Anwendungen integriert werden. Der Abruf ist durch die angebotene API per REST Schnittstelle möglich, wodurch die Integration automatisiert werden kann. Neben kostenpflichtigen detaillierten Langzeit-Prognosen sind kostenfrei aktuelle Wetterdaten und kurzfristige Prognosen abrufbar.
Am Beispiel von OpenWeatherMap zeigen wir hier den Einsatz des OPC Router REST Plug-in zum Aufruf von REST API Schnittstellen und zeigen, wie
- Wetterdaten von OpenWeatherMap abgerufen werden
- JSON Wetterdaten verarbeitet werden
- Daten in eine SQL Datenbank gespeichert werden mit dem SQL Server Plug-in
- Wetterdaten per Telegram versendet werden mit dem Telegram Plug-in
Weather API, die REST Schnittstelle zu den Wetterdaten
REST API
Eine REST Schnittstelle ist eine Datenschnittstelle auf Basis von Webtechnologien. Daten können von der REST API über das https-Protokoll abgefragt werden. Technisch erfolgt ein Webseitenaufruf mit einer URL, genau wie im Browser. Dem Webseiten-Aufruf werden Parameter übergeben, die an die URL als aneinandergereihte Parameterfelder angehängt werden. Welche Bedeutung die Parameter haben, wird in der jeweiligen REST API Dokumentation definiert. Für die Weather API von OpenWeather ist die Dokumentation online abrufbar https://openweathermap.org/api. Für jede Form von Datenabruf (Aktuelles Wetter, Vorhersage täglich / 5 Tage / 16 Tage / 30 Tage, etc.) gibt es eine eigenen REST API Endpunkt (Aufruf URL).
Ein Beispiel für den Abruf des aktuellen Wetters in London sieht so aus: Ergebnisdaten im JSON Format (Aufruf liefert nur Testdaten)
REST Aufruf
Der Parameter “q” beinhaltet hierbei die Stadt und den Ländercode. Der REST API Endpunkt ist “weather”. Die Parameter werden dem Endpunkt per “?” angehängt und mit “&” verkettet. Jeder Parameter wird mit Namen und Wert, getrennt durch ein “=”, deklariert.
Der Parameter “appid” wird bei der Weather API als Authentifikation verwendet, um den abrufenden Client zu identifizieren. Für Ihren eigenen Testaufbau müssen Sie sich eine eigene App-ID anfordern, um Datenabrufe machen zu können. Die App-ID bzw. den API KEY erhält man, wenn man sich auf folgender Seite registriert https://home.openweathermap.org/users/sign_up. Der API KEY ist dann im Nutzerbereich unter “API keys” einsehbar.
Die Beschreibung für den Abruf des aktuellen Wetters eines beliebigen Standorts ist hier dokumentiert: https://openweathermap.org/current
Anbindung der REST Schnittstelle im OPC Router
Um den REST Endpunkt mit dem OPC Router aufzurufen, muss im ersten Schritt dem REST Plug-in der HOST bekannt macht werden. Dafür wird folgender Eintrag angelegt:
Nachdem der Host für den Aufruf bekannt ist, kann nun in einer OPC Router Verbindung ein REST Transferobjekt eingesetzt werden, dass den angelegten Host nutzt. Im Transferobjekt wird dann der jeweilige Endpunkt (Endpoint) gewählt und es werden die Parameter bestimmt. Für den Abruf des aktuellen Wetters wird der “weather” Endpunkt benutzt und in diesem Fall wird der Ort über die Orts-ID bestimmt (hier Schenefeld mit ID=2839763).
Um die ID Ihres Ortes zu finden, suchen Sie einfach auf der Homepage ( https://openweathermap.org ) nach Ihrer Stadt. In der Vorhersageseite zu Ihrer Stadt, ist die ID in der URL zu finden: https://openweathermap.org/city/2839763
Als REST Methode wird hier GET verwendet und die Parameter werden als “QueryString” übergeben. Die Dokumentation zum Abruf des aktuellen Wetters per ID finden Sie hier: https://openweathermap.org/current#cityid
Abruf der Wetterdaten per REST als JSON Dokument
Der REST API Aufruf gibt als Antwort ein JSON Dokument mit den Wetterdaten zurück. Dieses JSON Dokument kann in der OPC Router Verbindung in ein JSON Transferobjekt übergeben werden:
Nachdem die Verbindung einmal ausgeführt wurde, stehen die JSON Strukturinformationen zur Verfügung. Deswegen ist in der Verbindung bereits ein 30 Sekunden Trigger platziert und die Verbindung wurde publiziert, so dass sie ausgeführt wird.
Nach dem die Verbindung ausgeführt wurde, kann in der Konfiguration des JSON Transferobjekts die Funktion “Vorschläge“ genutzt werden, die verfügbare Felder aus dem JSON Dokument ermittelt und komfortabel zur Auswahl bereitstellt. Über die Pfeil-Buttons können Felder zur Benutzung in der Verbindung ausgewählt werden.
Für dieses Beispiel werden einige elementare Informationen zum aktuellen Wetter aus dem JSON Dokument ausgewählt (Temperatur, Luftdruck, Luftfeuchte, Min/Max Tages-Temperatur, Windgeschwindigkeit und –Richtung). Nach Auswahl der Datenfelder wird das Transferobjekt entsprechend angezeigt.
Ablage der Wetterdaten in eine SQL Datenbank
Die abgerufenen Wetterdaten können jetzt nach Belieben weiterverarbeitet werden. Im Beispiel werden wir die Daten in eine Datenbank speichern und an einen Messenger Dienst senden.
Für die Speicherung in eine MS SQL Datenbank kann das SQL Server Plug-in des OPC Router verwendet werden. In der Plug-in Konfiguration werden die üblichen Verbindungsparameter der SQL Datenbank angegeben und dann stehen Tabellen und Stored Procedures in der Auswahl des Transferobjekts zur Auswahl. Im Beispiel ist eine Datenbank “Weather” vorhanden und darin eine Tabelle “TBL_WEATHER_CURRENT” als Ablageort für die aktuellen Wetterdaten. Die Tabelle wird ausgewählt und die zu verwendenden Spalten markiert.
Im Ergebnis steht das SQL Server Transferobjekt bereit und wird mit den Felder des JSON Dokuments verbunden. Wird nun der Trigger der Verbindung ausgelöst, speichert die Verbindung die Wetterdaten in der SQL Server Tabelle. Der Trigger ist jetzt auf einen morgendlichen Transfer um 6:15 Uhr eingestellt.
Aus der Tabelle heraus stehen die Daten nun anderen Applikationen zur Verfügung.
Versenden von Wetterinformationen per Telegram
Um die Wetterdaten nicht nur per SQL zu verteilen, sondern als Beispiel auch direkt per Push-Nachricht an ein mobiles Endgerät zu senden (z.B. Handy), kann das Telegram Plug-in verwendet werden. Mit dem Telegram Plug-in werden sogenannte Telegram Bots angebunden. Über den Bot können zum einen aktiv vom mobilen User Befehle an den OPC Router gesendet werden, zum anderen kann der OPC Router aber auch aktiv Nachrichten an angemeldete Benutzer senden.
Für unser Beispiel haben wir einen Telegram Bot generiert, der extra für die Verteilung der Wetterinformationen dient. Ein Bot wird über die Telegram App erzeugt:
Um den angemeldeten Benutzer eine Nachricht mit den Daten zu senden, wird nun ein Telegram Transferobjekt in die Verbindung hineingezogen. Das Transferobjekt sendet den ihm übergeben Text an alle Benutzer. Um den Text für die Benutzer gut leserlich zu gestalten, wir ein “Text Replace” Transferobjekt eingefügt, indem die Werte aus dem JSON Dokument in einen Text eingefügt werden. Für die Umrechnung von Kelvin in Grad Celsius wird ein Taschenrechner Transferobjekt hinzugezogen.
Endergebnis: Von OpenWeather in den SQL Server und an Telegram
Neben dem SQL Server Plug-in und dem Telegram Plug-in stehen noch viele weitere Plug-ins zur Verfügung, mit denen sich die Wetterdaten in verschiedenste Systeme übertragen lassen, um zu informieren oder Prozesse wetterabhängig zu optimieren.
OPC Router Test
Probieren Sie es selbst aus und laden Sie hier Ihre Test-Version des OPC Routers noch heute runter: