Schlagwort-Archive: Python

20.01. – 21.01.2020

alles leuchtet, … so schön bunt …

Nachdem in der letzten Woche das Python-Skript zur Umsetzung der Wetterdaten in die Ansteuerung der entsprechenden LEDs auf dem LED-Streifen entwickelt und ausgiebig getestet wurde, stehen nun nur noch Feinheiten und kleine programmier-stylistische Optimierungen des Codes an. Dabei sollen einige Doppelungen im Code in Funktionen ausgelagert und dieser damit übersichtlicher gestaltet werden.

Der letzte Punkt in der Softwareentwicklung zu meiner Hälfe des Projekt ist die Automatisierung des Python Skripts. Da auch dem Display des Pi’s dauerhaft die Diashow angezeigt werden soll und man auch in der Regel keine Tastatur an seine Uhr anschließen möchte, soll das Wetter automatisch abgefragt und im Hintergrund regelmäßig aktualisiert werden. Für die Realisierung der regelmäßigen Ausführung des Python-Skripts habe ich mich dem Raspbian Onboard-Tools Crontab bedient. Dieses ermöglicht eine einfache Umsetzung von geplanten regelmäßigen Ausführungen.

Dabei habe ich zudem darauf geachtet, dass die Ausführung auch bei laufender Diashow funktioniert und diese nicht beeinflusst.

15.01. – 19.01.2020

jetzt geht es an die Hardware…

Nachdem ich zuletzt bereits Abfrage und Auswertung der Wetterdaten aus dem Internet realisieren konnte, musste ich mich nun um die Ansteuerung der LEDs kümmern. Zum Glück war mittlerweile der Großteil unseres Materials angekommen, sodass ich direkt mit den LED-Streifen arbeiten konnte, die wir für unser Projekt eingeplant hatten.

Nach einigen Startschwierigkeiten bezüglich der Ansteuerung und beim Anschließen des LED-Streifens (ich habe mich dann doch zu Testzwecken dazu entschieden, nicht gleich den richtigen sondern unseren kurzen Teststreifen zu verwenden) konnte ich mich damit auseinandersetzen, auf welche Weise einzelne LEDs auf dem Streifen ansteuerbar sind und wie dessen Farbe und Helligkeit angepasst werden kann.

Im Laufe der Arbeit mit dem LED-Streifen festigte sich bei mir zudem die Idee, das ursprüngliche Konzept insofern umzuwerfen, als das ich auf die einzelnen LEDs, die ich vorher zur Beleuchtung der Wettersymbole vorgesehen hatte, verzichten wollte. Stattdessen entschied ich, dass es einfacher und schöner wäre, alle LEDs in der Uhr als Teil des LED-Streifens zu realisieren. Weitere Entscheidungen, die sich erst während der Entwicklung festigten, war die Festlegung, wielang der eingebaute Temperaturstreifen sein sollte, aber dazu gleich mehr. Neue Ideen und Möglichkeiten, wie ein multifunktionales Wettersymbol, dass vier Symbole in sich vereint, entstanden ebenso bei der Programmierung und der Erforschung der Möglichkeiten des LED-Streifens.

Um unsere weitere exakte Planung zur Größe, Form, Anordnung und Zusammensetzung aller Komponenten zu einer richtigen Uhr besser zu managen, fertigten wir aus Papier ein 2D-Modell in Originalgröße an. Da die sichtbaren Komponenten (Uhrwerk, LED-Streifen, Display) nun alle vorhanden waren, konnten wir alle Teile des Modells präzise anfertigen. Dabei stellte sich heraus, dass eine der schwierigsten Komponenten der lange LED-Streifen zur Anzeige der Temperatur war. Wir hatten dabei die fixe Idee, dass jede LED auch genau für ein Grad Celsius stehen sollte, aber auch sicherlich Temperaturen von -15 bis +35 Grad problemlos darstellbar sein sollten. Da die LEDs in verschiedenen Farben leuchten können, entstand daher die Idee, sowol für positive als auch für negative Temperaturen die gleiche Skala zu verwenden, jedoch in einer anderen Farbe zu beleuchten. Auf diese Weise konnten wir die benötigte Länge halbieren. Schlussendlich kamen wir überein, dass es möglich ist, den Temperaturstreifen mit 35 LEDs (Temperaturen bis +/- 35°C) übereinander auf der Uhr unterzubringen, ebenso wie die drei Wettersymbole, das 7″ Display und die analoge Uhr.

Die exakte Ansteuerung der LEDs auf dem LED-Streifen anhand der Wetterdaten war aufgrund der Vorarbeit in Python aus der Vorwoche gut umzusetzen, sodass „nurnoch“ die Feinheiten eingearbeitet werden mussten und zu einem guten Ergebnis führten.

Hier ein Beispiel des angesteuerten Streifens bei Gewitter mit Regen und +14 °C:

Ein Beispiel für starken Schneeregen bei 1°C:

Ein letztes Beispiel für klaren Himmel bei -7°:

Hier wird deutlich, dass die LEDs rechts später das enstsprechende Wettersymbol und links die LEDs das Thermometer, bzw. die Temperatur darstellen.

11.01. – 14.01.2020

endlich geht das Programmieren los…

Damit das Projekt jetzt richtig Fahrt aufnehmen kann, muss ich versuchen, mein Wissen über die abgefragten Wetterdaten in Python auszuwerten. Da die Daten im JSON-Format vorliegen, ist der Umgang mit diesen deutlich leichter als befürchtet. Python kann dabei leicht und schnell durch die verschachtelten Listen navigieren. Nach etwas Rumprobieren und Auswerten der verschiedenen Teile der Listen konnte ich dabei die für mich relevanten Daten wie Temperatur und WetterID recht einfach auslesen. Dabei ist die WetterID ein dreistelliger Dezimalwert, der genau die Wetterlage beschreibt. Beispielsweise steht 800 für klaren Himmel und 201 für Gewitter mit Regen. Die Temperatur wird direkt in Kelvin übermittelt.

Zu Beginn habe ich mich dabei ausschließlich auf die Auswertung der übermittelten Daten konzentriert, bevor ich mich mit der Ansteuerung der Hardware beschäftigen wollte. Dies hatte zum Vorteil, dass ich die Programmierung einfach am Computer machen konnte, wärend Henrike direkt am Raspberry Pi an ihrem Teil des Projekts arbeitete.