Neuer Wetter-Baustein für Weatherbit.io

Begonnen von mattsches, 21. Juli 2019, 21:28:09

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

mattsches

Hallo zusammen,

nachdem openweathermap.org auch für die bestehenden API Keys die tagesgenaue Wettervorhersage abgeschaltet hat, stand ich wieder einmal vor dem Problem, keine Wetterdaten zu bekommen. Yahoo und World Weather sind ja bekanntlich schon länger tot.

Also habe ich mich mal wieder an das Thema gesetzt und einen neuen Baustein geschrieben. Dieses Mal für Weatherbit.io. Dort enthält der kostenlose API-Zugang die tagesgenauen Daten - hoffen wir, dass das so bleibt.

Eine kleine Hürde war die Bereitstellung der Daten durch den Dienst. Weatherbit.io liefert (wie zwischenzeitlich viele andere Dienste auch) die Daten nicht im XML-, sondern im JSON-Format aus. Also musste im selben Zuge noch ein JSON-Parser her.

Zum Wetterbaustein: Die Handhabung ist ähnlich wie bei YAHOO_WEATHER:


  • Variable anlegen, in der die Wetterdaten bereitgestellt werden sollen (Typ WEATHERBIT_DATA)
  • Gewünschten Ort mittels CITY_ID an den Baustein übergeben (Liste mit verfügbaren IDs siehe https://www.weatherbit.io/api/meta)
  • API Key übergeben (dazu bei Weatherbit registrieren unter https://www.weatherbit.io/account/create)
  • IP_C, S_BUF, R_BUF und IP_CONTROL-Aufruf wie bei YAHOO_WEATHER beschrieben
  • Start der Abfrage mittels positiver Flanke an ACTIVATE

Es werden Daten für den aktuellen und die vier folgenden Tage abgerufen. Einheiten sind metrisch + °C; Imperial und Fahrenheit habe ich mir gespart, könnten aber leicht nachgerüstet werden.

Der neue JSON_READER wird vom Weatherbit-Baustein intern genutzt und ist in der angehängten Exportdatei bereits enthalten.

Das Ganze gibt es aktuell für CODESYS V2.3/TwinCAT 2. Eine Portierung auf CODESYS V3.5 ist sehr einfach möglich, eine angepasste Quelle kann ich bei Bedarf gerne nachliefern.

Bitte habt bei Fragen Verständnis, dass ich u. U. nicht sofort antworte. Ich schaue hier nicht unbedingt jeden Tag rein, schon gar nicht bei dem Wetter.  ;D

Viel Spaß!

Nete

Hallo,

Haben sie diese Portierung auf CODESYS3.5 zur verfügung bitte ?


Danke !

mattsches

Sorry, bin gerade im Urlaub. Wird noch etwas dauern.

Nete


mattsches

Hier eine Portierung für CODESYS V3.5. Namensräume sind OSCAT_BASIC für die Basic.lib und OSCAT_NETWORK für die Network.lib. Bitte entsprechend einstellen oder halt meine Bausteine anpassen.

Getestet habe ich nicht wirklich (=auf einer Steuerung). Das Programm lässt sich aber fehlerfrei übersetzen, die Bausteine (JSON_READER und WEATHERBIT) sollten so funktionieren.

vicky

Hallo mattsches,
ich möchte mich bei Deiner Vorarbeit bedanken.
Ich habe Deine Baustein im Einsatz und es funzte sofort alles los.

Was ich euch nicht enthalten wollte:
Ich hab den URL um den Parameter "language" erweitert.
Somit bekommt man die Antwort mit deutschem Text.
Entsprechend im Baustein sieht der Code dann so aus:
Zusätzliche Zeile: URL := CONCAT(URL, '&lang=de');

URL := CONCAT(URL_PREFIX, CITY_ID);
URL := CONCAT(URL, URL_KEY_PREFIX);
URL := CONCAT(URL, API_KEY);
        URL := CONCAT(URL, '&lang=de');

URL_DATA:=STRING_TO_URL(STR:=URL, DEFAULT_PROTOCOL:='', DEFAULT_PATH:='' );



Gruss vicky

mattsches

Hallo vicky,

schön, dass es funktioniert! Das mit der Sprache ist eine gute Idee. Bei mir war es nicht relevant, da ich mir nur die eigentlichen Wetterdaten aus der Vorhersage ziehe und rein symbolisch anzeige.

Vielleicht noch ein Hinweis an alle (es scheint ja noch nicht allzu viele Nutzer zu geben): Bei mir kommt es sporadisch zu dem Effekt, dass die Vorhersage "um zwei Tage verschoben" erscheint. Dass also im ersten Arrayelement die Daten für übermorgen hängen. Ich konnte den Fehler noch nicht forcieren, habe mir in letzter Zeit allerdings auch keine Zeit für eine genauere Analyse genommen. Kan auch sein, dass das ein Problem in meiner Applikation ist und nicht im Baustein. Aber es wäre schön, wenn hier jemand kurz Rückmeldung geben könnte, ob der Fehler auch anderswo auftritt.

Grüße,
mattsches

Nete

#7
    Zitat von: mattsches in 21. Juli 2019, 21:28:09
    Zum Wetterbaustein: Die Handhabung ist ähnlich wie bei YAHOO_WEATHER:

    • IP_C, S_BUF, R_BUF und IP_CONTROL-Aufruf wie bei YAHOO_WEATHER beschrieben
    • Start der Abfrage mittels positiver Flanke an ACTIVATE

    Where to find more information for the Yahoo weather module ?
    I cannot find information or examples for ip_c / s_buf / r_buf / ... variables

    Can someone help me ?[/list]


    EDIT :
    I also cannot get this working with Beckhoff PLC in Twincat 3.
    I'm getting over 200 error messages.. (mainly caused by oscat network library)

    mattsches

    The YAHOO_WEATHER block is part of the OSCAT_NETWORK lib and is well documented the respective PDF.

    There are different versions of the OSCAT_NETWORK lib, one for standard CODESYS and one Beckhoff. I assume that you either included the wrong OSCAT_NETWORK variant in library manager or that the namespace is set to something else than in my example. Both can be fixed in library manager.

    Hgo

    Hallo,
    funktioniert der Baustein mit dem Anbieter noch? Oder kann man sich die Mühe sparen?

    Ich suche eigentlich eine Möglichkeit den PV Ertrag der nächsten Stunden abzuschätzen. Wenn jemand eine besser Idee als die Wettervorhersage hat wäre ich nicht Böse ;)

    mattsches

    Der Baustein werkelt bei mir noch ohne Probleme. Weatherbit.io bieten weiterhin einen kostenfreien Zugang an, der für den Baustein auch ausreicht (wenn bzgl. der abrufbaren Daten nichts geändert wurde). Also einfach registrieren, API Key holen und ausprobieren.

    Für die PV-Prognose würde ich mir mal http://forecast.solar/ anschauen. Dort bekommst du einen tatsächlichen Ertag in kWh für den Folgetag prognostiziert. Wie gut, kann ich nicht beurteilen, habe das (noch) nicht im Einsatz. Die API liefert m. W. eine JSON-Antwort, der Weatherbit-Baustein ließe sich also als Grundlage für eine Abfrage nehmen.

    vicky

    Hallo,
    ich habe hier gesehen, das der Baustein wohl noch funktionieren sollte.
    Bei mir meldet er seit geraumer Zeit den Fehler:
    Error_C: 16#0000FF00
    Error_t: 16#01


    Mein System:
    Beckhoff TwinCat 2, CX1010 mit WinXPEmpd

    Nachdem ich meine CF-Card neu aufsetzen musste, dachte ich, es liegt an dem fehlendem TCPIP-Server.
    Den habe ich nachinstalliert und das brachte leider auch keine Veränderung.
    Wenn ich den URL im Browser eingebe, bekomme ich von der API auch eine sinnvolle Antwort.
    Also geht mein API-KEY noch.

    Weiß jemand, was der Fehlercode bedeutet?
    Oder was ich überprüfen könnte?

    Danke schon mal im Voraus
    Vicky


    stadlaa

    Hallo habe exakt gleiches Verahlten wie Vicky, irgenjemand Ideen?
    Gruß
    Stadler

    pezi179

    Der Beitrag ist zwar schon etwas älter, aber vielleicht ist ja noch jemand auf der Suche nach einer Lösung.

    Ich hatte auch genau das gleiche Problem. Einer der verwendeten /aufgerufenen Bausteine zeigte mir den Fehler 1797. Dadurch bin ich dann auf diesen Beitrag gestoßen. Der dort angeführte Workaround hat bei mir funktioniert und ich habe endlich meine Wetterdaten.

    http://www.oscat.de/community/index.php?topic=5805.0