Wetterdaten in die Steuerung

Hallo wolfi-sps,

es besteht die Möglichkeit sich einen Account bei „World Weather Online“ anzulegen.

http://www.worldweatheronline.com/api/

Im Anschluss können mit dem Anwendungshinweis für die WagoLibHttp_02.lib und dem darin enthaltenen Beispielprojekt „Example_02 - GET – WorldWeather“ die Wetterdaten für eine beliebige Stadt angefordert werden.
Der Link zum entsprechenden Anwendungshinweis findest Du im Folgenden:

http://www.wago.de/suche/index.jsp?...dium=forum&utm_content=sps-forum&utm_term=APN

Leider hat sich der „http-get Request“ für „World Weather Online“ bedingt durch den Anbieter in der Zwischenzeit etwas verändert, so dass Du die drei folgenden Codefragmente, wie im Folgenden zu sehen, anpassen musst.

Code:
VAR_GLOBAL CONSTANT
    (* Server name *)
    [B]gsServerName: STRING := 'api.worldweatheronline.com';[/B]
    (*  Defines the maximum length of a HTTP-GET-Request  *)
    [B]MAX_RECEIVE_TCP_CLIENT: UINT := 8000;[/B]
END_VAR
 
FUNCTION_BLOCK fbWorldWeatherForecast

CASE wStateMachine OF
     0: (*Init*)
         (*Url builder*)
         [B]sUrl := ‘/free/v1/weather.ashx?q=’;
[/B]
Zu guter Letzt noch den „sCityState“ für Land und Stadt bzw. den „sAccessKey“ für das Passwort vom Account anpassen und über "xDoIt" den Baustein starten.
 
Zuletzt bearbeitet von einem Moderator:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
funktioniert bei euch jetzt die Wettervorhersage?
Ich bekomme nur die Wetterdaten für den aktuellen Tag (wDayofForecast:=0). Sobald die 0 durch eine 1 ersetzt wird, bekomme ich keine Wetterdaten mehr.
Bei sUrl musste ich v1 durch v2 ersetzen!
(sUrl := ‘/free/v1/weather.ashx?q=’; )
 
Hallo zusammen,
erstmal vielen Dank für die Tipps auf der Seite.
Leider komme ich nicht ganz weiter, ich habe den heutigen Tag damit verbracht das Programm zu verstehen und auch entsprechend anzupassen, jedoch bekomme ich den Fehler:
sStatus= 'TCP-ERROR: Could not convert servers IP adress into dotted format'
diError = -2147479550
Leider kenne ich mich mit Codesys noch nicht so gut aus, falls noch weitere Infos benötigt werden, einfach kurz bescheid geben.
Bin für jeden Tipp dankbar :)
Vielen Dank und Grüße
Pierre
 
Hallo zusammen,
ich konnte den Fehler finden, es lag an meiner SPS Konfiguration.
Folgendes musste ich noch anpassen, da sich das XML File wohl geändert hat:

tempMinC zu mintempC sowie bei der Maximaltemperatur.

100: (* Search for '<tempMinC>' string in the XML file *) (*alt*)
sSearchedString := '<mintempC>'; (*geändert*)
SearchForString;
IF xFail THEN
sStatus := 'ERROR: No <mintempC> in file'; (*geändert*)

Leider kann ich auch nur den aktuellen Tag laden und nicht für die anderen Tage, vielleicht hat jemand noch eine Idee?
Viele Grüße
Pierre
 
Hallo SPS_Horst84,

das Beispielprojekt „Example_02 - GET - WorldWeather.zip" zum Anwendungshinweis A303000 wurde aus gegebenen Anlass aktualisiert bzw. angepasst.

Neben den bereits erwähnten API Änderungen kam hinzu, dass die Response der API inzwischen auf ca. 50kb angewachsen ist (Die API liefert jetzt 3-stundengenaue Wettervorhersagen)
Daher wurde die URL um den Parameter „tp=24" erweitert um die Wettervorhersage mit den Tagesdurchschnittswerten zu erhalten. Dadurch reduziert sich die Größe der Response auf etwas freundlichere ca. 9,5kb.

Der Receivebuffer muss daher jetzt auf 9500 (Bytes) eingestellt werden:
Code:
MAX_RECEIVE_TCP_CLIENT: UINT := 9500;
 
Hallo,

ich habe nun das Projekt von Wago in mein bestehendes integriert. Trotz Eingabe meines Access Keys, Username und Passwort kommt bei mir die Fehlermeldung "sStatus='TCP-ERROR: DNS-Request failed, could not retrieve Servers IP address'

Wo könnte mein Fehler liegen das es nicht geht?

Globalvariablen Einstellungen:

gsServerName: STRING := 'api.worldweatheronline.com';
MAX_RECEIVE_TCP_CLIENT: UINT := 9500;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst bei deiner Wago-Steuerung einen DNS-Server eintragen, der dann die URL "api.worldweatheronline.com" in die IP-Adresse auflöst. Meistens ist das Gateway (d.h. dein DSL-Router) auch gleichzeitig DNS-Server, d.h. du kannst die gleiche IP-Adresse wie beim Gateway auch als DNS-Server eintragen.
 
Im Anschluss können mit dem Anwendungshinweis für die WagoLibHttp_02.lib und dem darin enthaltenen Beispielprojekt „Example_02 - GET – WorldWeather“ die Wetterdaten für eine beliebige Stadt angefordert werden.
Der Link zum entsprechenden Anwendungshinweis findest Du im Folgenden:

http://www.wago.de/suche/index.jsp?...dium=forum&utm_content=sps-forum&utm_term=APN
Hallo, ich möchte diesen Faden nochmal hochholen, da er die Lösung für mein aktuelles Problem sein könnte. Allerdings habe ich Probleme, das Beispiel „Example_02 - GET – WorldWeather“ zu verstehen, da dessen PLC_PRG leider nicht als ST vorliegt, sondern in der mir völlig schleierhaften Form AWL (?). Zwar kann man Objekte ja konvertieren, aber eine Möglichkeit, mir PLC_PRG in der mir geläufigen Form ST anzuzeigen, habe ich bisher nicht entdecken können.

Kann mir jemand helfen ? Irgendwo stehe ich auf dem Schlauch.
 
Zuletzt bearbeitet:
Hallo Christoph
Ohne die Lib von Wago und dein Problem zu kennen kann ich dir die Lib "WEATHER FORECAST" mit Zugriff auf OpenWeather im Codesys Store nur empfehlen.
Funktioniert bei mir auf einem PFC200 ohne Probleme.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo holgermaik,

vielen Dank für den Tipp. Dein Hinweis ist insofern interessant, als ich tatsächlich vorhabe, Wetterdaten - anders als im Beispiel von Wago - bei OpenWheatherMap.org abzurufen. Habe dort bereits ein Account und damit den API Key.

Allerdings finde ich im CodeSys-Store nur eine "Wheather Forecast Library" welche aber offenbar nur für CodeSys V3 verwendbar ist (V3.5.10.0). Da meine 750-841 unter V2.3 läuft, wird das dann wohl nichts. Hast du eine Lib für V2.3 und wenn ja, wo genau hast du die gefunden ? Der CodeSys Store scheint ja etwas chaotisch organisiert.
 
Zurück
Oben