Openweather - Einbindung in die Uhr

Eine weitere Frage ist, wie wir die Openweather-Abfrage in die Anzeige der Uhrzeit integrieren. Die Zeitanzeige läuft in einer Endlosschleife, in der wir im Takt von wenigen Millisekunden die Uhrzeit ermitteln und auf unserem Display ausgeben. Dazu später mehr. In diese Zeitschleife gehört auch die Ermittlung der Wetterdaten mit hinein.

Stellenmarkt
  1. (Junior) IT Business Partner / Demand Manager - Sales Units (m/w/d)
    Jungheinrich AG, Hamburg
  2. CAD/CAM Programmierer (w/m/d)
    AIXTRON SE, Herzogenrath
Detailsuche

Nun ist es nicht sinnvoll, den Aufruf der Openweather-URL sowie die Auswertung beziehungsweise Aufbereitung der Daten in diese Endlosschleife aufzunehmen. Das würde zwangsläufig die Zeitanzeige ausbremsen. Die Lösung dieses Problems teilen wir in zwei Bereiche:

1. Wir lagern die Openweather-Abfrage in einen Programmzweig außerhalb der Zeitschleife aus. 2. Die abgefragten Daten bereiten wir so weit auf, dass wir sie innerhalb der Zeitschleife im Hinblick auf die Performance unkritisch einlesen können.

Openweather - Auslagerung der Datenabfrage

Für die Auslagerung der Openweather-Abfrage prüfen wir zwei Varianten.

Golem Karrierewelt
  1. Adobe Premiere Pro Grundkurs: virtueller Zwei-Tage-Workshop
    27./28.10.2022, Virtuell
  2. Automatisierung (RPA) mit Python: virtueller Zwei-Tage-Workshop
    03./04.11.2022, Virtuell
Weitere IT-Trainings

Eine Möglichkeit besteht darin, ein separates Openweather-Abfrageprogramm zu schreiben und dieses zyklisch in einem Cronjob auszuführen. Auf unserem Raspberry Pi ist ein Linux-Betriebssystem installiert, das über einen Cron-Deamon verfügt. Dieser ermöglicht das Ausführen wiederkehrender Jobs. Wir könnten dort unser eigens erstelltes Programm eintragen und so konfigurieren, dass es täglich im gewünschten Minutenzyklus abgearbeitet wird.

Die zweite Möglichkeit besteht darin, die Wetterabfrage zwar aus besagter Endlosschleife herauszunehmen, aber nicht aus dem Hauptprogramm der Uhr. Wir lagern die Abfrage in einen eigenen Programm-Thread aus. Die Thread-Fähigkeit unserer Raspberry-CPU hält sich zwar in Grenzen, aber physikalisch dürften sich beide Varianten nicht wesentlich unterscheiden.

Der Vorteil der zweiten Variante ist, dass wir letztendlich nur ein einziges Programm erstellen und ausführen müssen. Es hält den Code zusammen und verbessert auch die Möglichkeit, an den verschiedenen Stellschrauben zu drehen. Die entsprechenden Parameter befinden sich ja quasi alle am selben Ort.

Openweather - Aufbereitung der Daten und Integration in die Zeitschleife

Da wir die Wettervorhersage auf dem Uhr-Display ausgeben wollen, kommen wir nicht umhin, die laufende Datenermittlung in die Endlosschleife für die Zeitanzeige zu integrieren. Dazu müssen die Daten in einem geeigneten Format vorliegen. Geeignet heißt, dass die sie keinen überflüssigen Ballast enthalten, also wenig Speicher erfordern. Darüber hinaus sollten sie sich ohne aufwendige Programmierlogik auslesen lassen. Wir entscheiden uns für das CSV-Format.

Wir bekommen die Originaldaten von Openweather im JSON-Format, ignorieren, was wir nicht benötigen, und speichern die verbleibenden Daten in einer CSV-Datei. Auf diese greifen wir innerhalb unserer Endlosschleife ebenfalls in einem moderaten Minutenzyklus zu. Wir wählen einen Zeitraum von 15 Minuten. Damit wir ein bisschen experimentieren können, legen wir auch diesen Wert in eine Variable.

Raspberry Pi: Das umfassende Handbuch. Über 1.000 Seiten in Farbe. Mit Einstieg in Linux, Python und Elektrotechnik. Aktuell zum Raspberry Pi 4

Mit dem Einbinden der CSV-Datei erhöhen wir auch die Ausfallsicherheit. Bei längeren Internet-Blackouts profitieren wir davon, dass in der Regel vom letzten Abruf noch eine CSV-Datei mit 48-Stunden-Werten liegengeblieben ist.

Sofern die Datei nicht älter ist als 36 Stunden, besteht die Möglichkeit, dort für zwölf Stunden aktuelle Daten auszulesen. Das geschieht ganz automatisch, da wir in den CSV-Daten immer die vorhandenen Stunden durchlaufen und ab der aktuellen Stunde die nächsten Werte ermitteln. Natürlich kommt in diesen Fällen die zunehmende Ungenauigkeit der Vorhersage dazu, je nachdem, wie alt die Datei ist.

Zusammengefasst ergibt sich an dieser Stelle bezüglich der Openweather-API folgender Programmablauf.

Der Programmablauf

Mit dem Start des Uhr-Programms wird automatisch auch ein eigener Programm-Thread aufgerufen, der permanent läuft und in regelmäßigen Abständen prüft, ob neue Wetterdaten da sind. Sofern das der Fall ist, werden die Daten von der Openweather-Webseite ausgelesen und diejenigen Daten, die wir benötigen, in einer CSV-Datei abgelegt.

Die Endlosschleife zur Darstellung der Uhrzeit holt in regelmäßigen Abständen die kompletten Daten aus der CSV-Datei in den Speicher. Die Datei ist mit höchstens 5.000 Byte relativ klein. Der Speicher unseres Raspberrys hat 512 MByte. Im Normalbetrieb ist davon ungefähr die Hälfte belegt. Es sollte also kein Problem sein, die CSV-Daten vollständig in den RAM zu laden.

Das Splitten der einzelnen CSV-Zeilen zur Bestimmung der Detaildaten wird dann allein durch Speicheroperationen ausgeführt. Mit Blick auf die Performance dürfte es kein besseres Verfahren geben. Nachdem die Werte ermittelt sind, werden sie bei jedem Schleifendurchlauf so lange immer wieder angezeigt, bis der Zyklus abgelaufen ist und neue CSV-Daten eingelesen werden müssen.

Beide Jobs - Openweather-Thread und Endlosschleife - bedingen einander nicht. Jeder erledigt seine eigenen Aufgaben. Der eine stellt eine CSV-Datei bereit, der andere liest sie aus. Die Laufzeiten beider Jobs sind so gewählt, dass unsere Wettervorschau auch bei Fehlern nicht gefährdet ist.

Diverse Parameter werden wir nach entsprechenden Testläufen möglicherweise noch optimieren.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Wetterdaten von OpenweatherOpenweather - Programmierung 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10.  


mbroede 22. Aug 2022 / Themenstart

Hallo Kastenbrot, ich gebe Dir recht: Windows Forms, WPF o.ä. unter Linux nur wenn man...

OutOfCoffee 19. Aug 2022 / Themenstart

Flaschenhals? Willst Du die Daten alle paar Millisekunden abfragen? Das Wetter scheint...

Paramus 18. Aug 2022 / Themenstart

... sind genau was man momentan braucht - aber immerhin kann man mit dem Ding im...

landfuerst 18. Aug 2022 / Themenstart

Wenn du deine Wettervorhersage selber berechnen willst, mit ähnlichem Umfang, wirst du...

Kommentieren



Aktuell auf der Startseite von Golem.de
Neue Grafikkarten
Erste Preise für Nvidias Geforce RTX 4090 aufgetaucht

Der US-Händler Newegg gibt einen Blick auf die Preise der Nvidia-Ada-Grafikkarten. Sie werden teurer als die Geforce RTX 3090 zuvor.

Neue Grafikkarten: Erste Preise für Nvidias Geforce RTX 4090 aufgetaucht
Artikel
  1. Smart Home Eco Systems: Was unterscheidet Alexa von Homekit von Google Home?
    Smart Home Eco Systems
    Was unterscheidet Alexa von Homekit von Google Home?

    Alexa, Homekit, Google Home - ist das nicht eigentlich alles das Gleiche? Nein, es gibt erhebliche Unterschiede bei Sprachsteuerung, Integration und Datenschutz. Ein Vergleich.
    Eine Analyse von Karl-Heinz Müller

  2. Hideo Kojima: Es sollte ein Death-Stranding-Spiel für Google Stadia geben
    Hideo Kojima
    Es sollte ein Death-Stranding-Spiel für Google Stadia geben

    Hideo Kojima arbeitete am Exklusivtitel für Stadia. Das wurde vorzeitig eingestellt, auch weil Google nicht an Einzelspieler-Games glaubte.

  3. Superbase V: Zendures Solarstation mit 6.400 Wh kommt mit hohem Rabatt
    Superbase V
    Zendures Solarstation mit 6.400 Wh kommt mit hohem Rabatt

    Vor dem Verkaufsstart über die eigene Webseite verkauft Zendure seine Superbase V über Kickstarter - mit teilweise fast 50 Prozent Rabatt.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Razer DeathAdder V3 Pro 106,39€ • Alternate (u. a. Kingston FURY Beast RGB 32 GB DDR5-6000 226,89€, be quiet! Silent Base 802 Window 156,89€) • MindFactory (u. a. Kingston A400 240/480 GB 17,50€/32€) • SanDisk microSDXC 400 GB 29,99€ • PCGH-Ratgeber-PC 3000 Radeon Edition 2.500€ [Werbung]
    •  /