Autor Thema: Neuer Wetter-Baustein für Weatherbit.io  (Gelesen 907 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline mattsches

  • Full Member
  • ***
  • Beiträge: 247
    • Profil anzeigen
Neuer Wetter-Baustein für Weatherbit.io
« am: 21. Juli 2019, 21:28:09 »
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ß!

Offline Nete

  • Newbie
  • *
  • Beiträge: 4
    • Profil anzeigen
Re: Neuer Wetter-Baustein für Weatherbit.io
« Antwort #1 am: 28. August 2019, 18:43:13 »
Hallo,

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


Danke !

Offline mattsches

  • Full Member
  • ***
  • Beiträge: 247
    • Profil anzeigen
Re: Neuer Wetter-Baustein für Weatherbit.io
« Antwort #2 am: 28. August 2019, 19:56:30 »
Sorry, bin gerade im Urlaub. Wird noch etwas dauern.

Offline Nete

  • Newbie
  • *
  • Beiträge: 4
    • Profil anzeigen
Re: Neuer Wetter-Baustein für Weatherbit.io
« Antwort #3 am: 14. September 2019, 16:10:01 »
Any updates ?

Thanks !

Offline mattsches

  • Full Member
  • ***
  • Beiträge: 247
    • Profil anzeigen
Re: Neuer Wetter-Baustein für Weatherbit.io
« Antwort #4 am: 20. September 2019, 12:49:18 »
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.

Offline vicky

  • Jr. Member
  • **
  • Beiträge: 53
    • Profil anzeigen
    • E-Mail
Re: Neuer Wetter-Baustein für Weatherbit.io
« Antwort #5 am: 23. September 2019, 19:54:10 »
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

Offline mattsches

  • Full Member
  • ***
  • Beiträge: 247
    • Profil anzeigen
Re: Neuer Wetter-Baustein für Weatherbit.io
« Antwort #6 am: 23. September 2019, 20:00:12 »
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

Offline Nete

  • Newbie
  • *
  • Beiträge: 4
    • Profil anzeigen
Re: Neuer Wetter-Baustein für Weatherbit.io
« Antwort #7 am: 29. September 2019, 11:37:32 »
    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)
    « Letzte Änderung: 29. September 2019, 11:53:06 von Nete »

    Offline mattsches

    • Full Member
    • ***
    • Beiträge: 247
      • Profil anzeigen
    Re: Neuer Wetter-Baustein für Weatherbit.io
    « Antwort #8 am: 29. September 2019, 19:41:18 »
    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.