Bei Automatisierungsaufgaben kannst du dich nicht immer auf fertige Tools verlassen. Häufig musst du eine Schnittstelle zu einem bestehenden System selbst implementieren oder mit APIs sprechen, um eine Automatisierung einzubauen oder Informationen aus einem System zu ziehen. Am häufigsten werden dir hier Systeme mit JSON begegnen.
In diesem Kapitel schreibst du ein Programm um mit einer API zu sprechen und die Daten zu verarbeiten. Mit der Hilfe deines Mentors lernst du dein Programm in sinnvolle Einzelteile aufzuteilen und gut lesbaren und verständlichen Code zu schreiben.
Für deine Übungsaufgaben wirst du die Wetter API von open-meteo.com Show archive.org snapshot verwenden.
Deine Arbeitsergebnisse sollten in einem Git Repository eingecheckt werden. Bitte erstelle für jeden Arbeitsschritt einen Merge Request und lasse diesen von deinem Mentor reviewen.
Die Ausgaben des Scripts sollten nach Möglichkeit als Tabelle erfolgen.
Deine Aufgabe ist es, ein CLI Tool zu schreiben mit dem einige Wetterstatistiken für Standorte aufgerufen werden können. Da ein Benutzer üblicherweise keine GPS Daten angeben möchte, um einen Standort zu finden, benötigt dein Tool eine Möglichkeit anhand eines Ortsnamen GPS Koordinaten zu ermitteln. Es ist zunächst ausreichend diese vom Programm ausgeben zu lassen. Alternativ zum Ortsnamen können natürlich die GPS Koordinaten auch exakt angegeben werden.
Das CLI Tool soll eine Wettervorhersage für die nächsten 3 Tage ausgeben können. Dabei sollen die Daten Tagesgenau sein (nicht Stundengenau). Interessant für uns ist:
Alternativ zur 3-Tages Vorhersage soll es auch die Möglichkeit geben die Wetterdaten der nächsten 12 Stunden anzuzeigen. Dabei sollen die folgenden Daten (mit stündlicher Genauigkeit) ausgegeben werden:
Füge eine weitere Funktion hinzu, die es erlaubt historische Wetterdaten anzuzeigen. Dabei sollen bei einem Zeitraum von bis zu 24 Stunden stundengenaue Daten zurückgeliefert werden. Ist der Zeitraum länger als 24 Stunden, werden nur noch volle Tage zurück gegeben (aufgerundet). Gibt jemand bei über 24h eine Zeitangabe an, die nicht genau auf volle Tage matched, gibt das Script einen Fehler aus.
Als erstes soll eine Tabelle mit Durchschnittswerten sowie Maximalwerten von einigen Metriken über den gesamten Zeitraum angezeigt werden. Anschließend die Tabelle(n) die stunden-/tagesgenaue Daten anzeigen.
Dein Script benötigt ein neues Feature für einen Modellflugzeug Piloten. Dieser möchte, dass ihm das Script einfach sagen kann ob in den nächsten 6 Stunden gutes Flugwetter herrscht. Beachte, dass dabei die Wetterdaten aus unterschiedlichen Höhen ausgewertet werden müssen. Metriken die geprüft werden sollen:
Dein Programm erhält ein weiteres Feature. Für einen Gärtner soll das Programm regelmäßig in der Früh laufen. Aus Gründen, die nur der Gärtner versteht, verwendet dieser Gitlab Issues um seine TODOs zu tracken. Wenn es am aktuellen Tag keinen oder wenig Niederschlag gibt, soll ein Gitlab Issue erstellt werden, dass dem Gärtner sagt, dass die Pflanzen Wasser brauchen. Das Ticket soll ein Due Date mit dem aktuellen Datum erhalten und dem Gärtner assigned werden. Der Gärtner bist in diesem Fall du. Prüfe anhand der Response ob das Ticket erfolgreich erstellt wurde.
Beachte, dass in diesem Fall das Script automatisch läuft. Das heißt, dass bei einem Fehler von der API das Programm nicht gleich abbrechen sollte. Stattdessen muss der Fehler abgefangen werden. Wenn der Fehler abgefangen wird, wird ein Ticket erstellt selbst zu prüfen, ob die Pflanzen Wasser brauchen.