Die Tisch-Wetterstation ist eine touchfähige Open Source Wetterstation. Sie misst Temperatur, Luftfeuchtigkeit, Luftdruck und Luftqualität (Air Quality Index) mit hoher Präzision. Das Basiskit basiert auf:
Sie kann per USB von einem (Embedded-) PC gesteuert werden. Auch eine Steuerung per WLAN ist über die WIFI Extension möglich. Alternativ kann die Wetterstation auch mittels einer Ethernet Extension in das lokale Netzwerk eingebunden werden. Für einen Standalone-Betrieb kann ein RED Brick oder ein anderes Embedded Board, wie z.B. das Raspberry Pi genutzt werden.
Das Kit ermöglicht es nach eigenen Wünschen sowohl Soft- als auch Hardware zu gestalten. Das Gehäuse besteht aus bastelfreundlichem PMMA und ist einfach zu bearbeiten. Zusätzlich sind bereits Bohrlöcher für weiter Bricklets vorhanden.
Die Wetterstation kann über alle verfügbaren Bindings (C/C++, C/C++ für Mikrocontroller, C#, Delphi/Lazarus, Go, Java, JavaScript, LabVIEW, Mathematica, MATLAB/Octave, MQTT, openHAB, Perl, PHP, Python, Ruby, Rust, Shell, Visual Basic .NET) programmiert werden. Einfache Beispielimplementierungen für viele Programmiersprachen stehen zur Verfügung. Eine Demo-Anwendung implementiert Steuerung über Touch, Trendansicht per Graphen, Logging in einer Datenbank usw. Sie ist in Python geschrieben und für Windows, Linux und macOS verfügbar.
Das Kit kann mit dem Outdoor Weather Bricklet erweitert werden. Montagelöcher und eine Öffnung für die Antenne sind im Gehäuse bereits vorgesehen. Mit dem Bricklet können die folgenden Funk-Außenwetterstationen und Sensoren ausgelesen werden:
Beide werden von der Demo-Anwendung unterstützt.
Eigenschaft | Wert |
---|---|
IAQ Index-Auflösung | 1 |
Luftdruck-Auflösung | 0,0018hPa |
Luftfeuchte-Auflösung | 0,008%RH |
Temperatur-Auflösung | 0,01°C |
IAQ Index-Genauigkeit | ±15 und ±15% des Wertes |
Luftdruck-Genauigkeit | ±0,12hPa (700-900hPa bei 25-40°C), ±0,6hPa (gesamter Messbereich) |
Luftfeuchte-Genauigkeit | ±3%RH (20-80%RH bei 25°C) |
Temperatur-Genauigkeit | ±0,5°C (at 25°C), ±1,0°C (0-65°C) |
Abmessungen (B x T x H) | 110 x 125 x 65mm |
Gewicht | 238g (Basis), 288g (Basis + RED Brick + Outdoor Weather Bricklet) |
Im ersten Schritt sollten die Bricks und Bricklets ausprobiert und die Firmwares ggf. aktualisiert werden.
Dazu müssen der Brick Daemon und der Brick Viewer installiert werden. Schließe alle Bricklets an den Master Brick an und verbinde es per USB mit dem PC. Anschließend kann über den Brick Viewer bestimmt werden, ob alle Firmwares aktuell sind. Falls nicht so sollten diese aktualisiert werden (Bricks aktualisieren, Bricklets aktualisieren):
Danach sollten mit dem Brick Viewer alle Sensoren überprüft werden. Dazu klickt man am besten durch die verschiedenen Tabs und überprüft die Sensorwerte. Anschließend ist sichergestellt, dass der Master Brick und alle Bricklets korrekt funktionieren auch nachdem alles in das Gehäuse geschraubt wurde.
Die Demo-Anwendung für die Tisch-Wetterstation ist in Python geschrieben. Der Source Code kann hier gefunden werden. Ausführbare Dateien stehen für Linux, macOS und Windows hier zur Verfügung.
Es werden die Daten des Air Quality Brickelts sowie der Außenwetterstation dargestellt. Graphen können mit einer einstellbaren Zeitbasis angezeigt werden und die Daten werden in einer SQLite Datenbank geloggt. Konfigurationen können per Touch-Bedienung über die Wetterstation selbst eingestellt werden.
Die Anwendung ist in "Screens" aufgeteilt. Jeder Screen wird als ein Tab mit Text-Label oder Icon dargestellt. Touch-Klick/Gesten und GUI-Callbacks werden zur einfachen Nutzung vom LCD 128x64 zum selektierten Screen weitergeleitet.
Eigene Screens können über die custom_screens.py hinzugefügt werden.
Ein einfacher Screen der die aktuelle Uhrzeit auf das Display schreibt könnte wie folgt aussehen:
class ClockScreen(Screen):
# text/icon: Text is taken if no icon is available
text = "Clock" # Text shown on tab
icon = None # Icon shown on tab (see icons.py and data/ sub-directory)
# Called when tab is selected
def draw_init(self):
self.lcd.draw_text(40, 5, self.lcd.FONT_12X16, self.lcd.COLOR_BLACK, 'Time')
self.draw_update()
# Called when new data is available (usually once per second)
def draw_update(self):
# Get current time in HH:MM:SS format
current_time = time.strftime("%H:%M:%S")
self.lcd.draw_text(16, 30, self.lcd.FONT_12X16, self.lcd.COLOR_BLACK, current_time)
Minimalst muss der Tab-Text (oder optional ein icon) festgelegt und die draw_init
-
sowie draw_update
-Funktion implementiert werden. Beispiele für die Nutzung von
Touch-Gesten und ähnliches können in den bereits implementierten Screens in der
screens.py
gefunden werden.
Der obige Code fügt folgenden Tab zur Demo-Anwendung hinzu:
Pull Requests für neue Screens sind definitiv erwünscht, wir freuen uns schon darauf eure schicken Screens in die Demo-Anwendung zu integrieren :-).
Für den Zusammenbau der Tisch-Wetterstation empfehlen wir zuerst alle Bricks/Bricklets an den Plastikteilen zu befestigen und diese danach zusammenzusetzen.
Wenn zusätzlich ein RED Brick und/oder Outdoor Weather Bricklet verwendet werden soll, können diese auf die gleiche Platte wie der Master Brick geschraubt werden:
Wie in den Explosionszeichnungen zu erkennen ist befestigen wir das Air Quality Bricklet auf der Außenseite der Wetterstation. Dies stellt sicher dass die Hitze die von den anderen Komponenten (LCD 128x64 Bricklet, Master Brick, eventuell RED Brick) abgegeben wird nicht die Temperaturmessung des Air Quality Bricklets beeinflussen kann.
Es ist auch möglich das Air Quality Bricklet auf die Innenseite zu schrauben. In diesem Fall empfehlen wir die Temperatur über die Temperatur-Kalibrierungsfunktion des Bricklets zu korrigieren. Dies ist wichtig, da die ermittelte Temperatur auch zur Bestimmung der Luftqualität und der Luftfeuchte verwendet wird.
Das folgende Video zeigt den Zusammenbau im Zeitraffer. An den wichtigen Stellen wird das Video verlangsamt.
Wenn kein Python verwendet werden soll oder das Programm nicht auf der Demo-Anwendung basieren soll, gibt es Beispiele für die folgenden Programmiersprachen:
Diese Beispiele schreiben die gemessenen Daten mit einem Ein-Sekunden-Intervall auf das Display. Sie sind so einfach wie möglich gehalten, aber mit einem robusten Ansatz. Die Beispiele warten auf Verfügbarkeit des Brick Daemons, führen ein automatisches Reconnect durch falls notwendig, enumerieren automatisch die UIDs der Bricklets und unterstützen Hotplug.
Daher sind die Beispiele gut als Grundlage für eine eigene Anwendung geeignet.
Ein RED Brick kann zur Tisch-Wetterstation hinzugefügt werden und wird unter den Master Brick geschraubt. In diesem Fall erfolgt die Stromversorgung über den USB-Stecker des RED Bricks.
Mit dem RED Brick kann die Anwendung der Tisch-Wetterstation selbständig ausgeführt werden. Um die Demo-Anwendung auf den RED Brick hochzuladen klicke im RED Brick Tab des Brick Viewers auf "Program" und "New".
Wähle einen Namen und Python als Programmiersprache.
Füge die Dateien der Demo-Anwendung hinzu. Die Daten können auf
GitHub gefunden werden.
Wenn die Wetterstation bereits zuvor gelaufen ist kann die SQLite
Datenkank mit hochgeladen werden (.tabletop_weather_station_demo.db
Datei
deinem Home-Verzeichnis) um die bereits gespeicherten Messwerte weiter zu
verwenden.
Wähle main.py
als Startdatei.
Es gibt in der Demo kein Standard-Input, alle anderen Optionen können auf den Standardwerten bleiben.
Nach dem der Upload fertig ist sollte die Demo-Anwendung automatisch auf dem RED Brick laufen sobald dieser gestartet wird!