Wer kennt das nicht: Man möchte schnell die Hardware für ein neues Projekt erstellen und dann beginnen lange Stunden mit dem Steckbrett oder das Löten auf einem Proto-Board. Bei neueren Sensoren benötigt man noch Breakout-Boards, da die Anschlüsse nicht direkt lötbar sind. Viele haben mich angeschrieben, ob es nicht eine Alternative gibt, die schneller funktioniert und sicherere Ergebnisse liefert. Ja, die gibt es: Das GROVE-System von Seeed-Studio. Einen schnellen Aufbau mit GROVE stelle ich Euch hier für eine kleine Wetterstation vor. |
Für meine Homeautomation benötige ich Wetterdaten für die Heizungssteuerung. Da ich gerne selbst entwickle und mir teure Fertiggeräte sparen möchte, baue ich mit GROVE-Bauteilen eine eigene Wetterstation auf.
Zentrale
Als Zentrale dient mir ein Raspberry Pi 3 mit OpenHAB als Controller-Software. Wie man diese aufsetzt habe, ich in diesem Artikel beschrieben.
Wetterstation
Als Basis dient ein Wemos D1 Mini (ESP8266-basierend), auf dem die Software Tasmota installliert wurde. Dies ist in diesen Artikeln beschrieben.
Messwerte
Als Messwerte benötige ich
- Temperatur in °C
- Luftfeuchtigkeit in %rH
- Atmosphären-Druck in HPa
- Helligkeit in Lux (für die Steuerung der Außenbeleuchtung und Rollos)
Für diese Aufgaben habe ich mich für die Sensoren BME280 (Temperatur, Luftfeuchte und Druck) und TSL2561 (Helligkeit) entschieden. Diese Sensoren werden von Tasmota unterstützt.
Eingesetzte Bauteile
Ausgehend von den Anforderungen bestellt man die passenden Teile:
Bauteil | Bild | Link | Anzahl | Preis |
GROVE BME280 | Link | 1 | 17,00 $ | |
GROVE Digital Light Sensor | Link | 1 | 9,90 $ | |
GROVE Schraubterminal | Link | 3 | 2,90 $ | |
GROVE Universal 4pin-Kabel 20cm | Link | 1 | 2,90 $ | |
Wemos D1 Mini | Link | 1 | 6,29 € | |
Jumperkabel Male-Male | Link | 1 | 3,99 € | |
TFA-Dostmann Wetterschutzhülle | Link | 1 | 9,99 € |
Das Bestellen bei Seeed-Studio ist sehr einfach. Legt Euch einen Account an und wählt die Bauteile aus. Beim Versand gibt es zwei Optionen, ich habe den Seeed-Carrier für 8,87 $ gewählt. Die Lieferung kann dann 20-30 Tage dauern. Diese Methode ist aber viel billiger als die Express-Lieferung. Nachtrag: Meine Bauteile trafen bereits nach 10 Tagen ein - Super!
Der Wemos und der Wetter-Shield kann bei Amazon oder Ebay bestellt werden.
Weiteres Vorgehen
- Installation des Raspbery-Pi mit dem Betriebssystem OpenHABian und Konfiguration von OpenHAB
- Installation von Tasmota auf dem Wemos D1 Min und Grundkonfiguration
- Hardware aufbauen mit nachfolgender Anleitung
Aufbau der Hardware
Tasmota kann mit einer großen Vielfalt von Sensoren umgehen. Allerdings müssen diese an bestimmten Pins des Wemos D1 angeschlossen werden Laut Tasmota-Wiki sind für unsere Sensoren folgende Pins wichtig:
Sensortyp | Wemos-Pin | Sensor-Pin | Tasmota |
BME280 | GND | GND | Wiki-Link |
3,3V | Vcc | ||
D3 (GPIO 0) | SDA | ||
D4 (GPIO 2) | SCL | ||
TSL2561 | GND | GND | Wiki-Link |
3,3V | Vcc | ||
D3 (GPIO 0) | SDA | ||
D4 (GPIO 2) | SCL |
Für die Verdrahtung verwende ich die GROVE-Schraubterminals und die kleinen Jumperkabel. SDA und SCL der beiden I2C-Sensoren werden parallel verbunden, ebenso die +3,3V und GND. Anschließend werden die beiden Sensoren mit den GROVE-Flachkabeln verbunden. Somit kann man die Hardware in wenigen Minuten zusammenbauen. Während des Zusammenbaus darf keine Spannungsversorgung am Wemos erfolgen.
Ich habe die einzelnen Module mit Heißkleber auf ein Brett geklebt. Dann verrutschen sie nicht und man kann die Kabel einfacher einstecken. Nachdem man mit der Entwicklung fertig ist, können die Module ohne großen Kraftaufwand wieder abgelöst werden. | |
Die Jumperkabel lassen sich wunderbar im GROVE-Schraubterminal befestigen. Vom Schraubterminal führen die GROVE-Flachkabel zu den Sensoren. | |
Der Wemos D1 Mini hat Steckerleisten, in welchen das andere Ende der Jumperkabel eingesteckt wird. Das gelbe Kabel ist der USB-Anschluß an den Laptop. |
Tasmota konfigurieren
Ich nehme die wichtigsten Einstellungen wie SSID und Passwort und den MQTT-Server bereits in der Source-Software vor. Nach Kompilieren und Hochladen, muss ich deshalb hier keine Eingaben mehr machen. Im Folgenden sind die Einstellungen für den Wemos zu finden. Noch ein wichtiger Hinweis: die beiden Sensoren müssen noch im Quelltext freigeschaltet werden
Datei: sonoff/my_user_config.h
Startseite -> Einstellungen -> Geräteeinstellungen Für den Wemos D1 Mini wird als Gerätetyp "Generic (18)" eingestellt. Die beiden GROVE-Sensoren werden über den I2C-Bus angesteuert. Deshalb vereinbart man D3: SDA und D4: SCL. Anschliessend auf "Speichern" klicken. Das Modul bootet neu. |
|
Startseite -> Einstellungen -> WLAN-Einstellungen Hier ist die SSID des eigenen WLAN und das Passwort einzugeben. Der Hostname sollte abgeändert werden. In meinem Netzwerk beginnen alle IOT-Geräte mit dem Präfix "IOT-...". Anschließend speichern, der Wemos bootet neu. |
|
Startseite -> Einstellungen -> MQTT-Einstellungen Bei den MQTT-Einstellungen gibt man Hostname oder IP-Adresse des MQTT-Servers vor. In unserem Fall ist das der Raspberry Pi. |
|
Startseite -> Einstellungen -> Logging-Einstellungen Unter Logging-Einstellungen sollte die Telemetrie-Periode auf 300 Sekunden gesetzt werden, um die Datenübermittlung zu minimieren. |
|
Startseite -> Einstellungen -> Sonstige Einstellungen Bei den sonstigen Einstellungen sollte man einen "Friendly Name" eingeben, welcher der Funktion des Gerätes entspricht. Dann wieder speichern. |
Damit sind die Einstellungen abgeschlossen.
Konfiguration von Tasmota überprüfen
Jetzt muß überprüft werden, ob der Wemos richtig arbeitet.
Startseite -> Information Diese Informationen zeigen, dass der Wemos D1 Mini ordnungsgemäß arbeitet. Er hat eine IP-Adresse, und zeigt diese Infos an. |
|
Startseite -> Konsole In der Konsole sind die einzelnen Meldungen zu sehen, welche an den MQTT-Server geschickt werden. Die Daten können dann von OpenHAB ausgewertet werden. |
|
Startseite Auf der Startseite werden die einzelnen Messwerte angezeigt. Alle paar Sekunden werden die Daten automatisch aktualisiert. |
Tasmota ist in der Lage, den Luftdruck auf Meereshöhe umzurechnen.Dazu muß man in der Konsole nur die Höhe des eigenen Standorts in Metern angeben:
Anschließend <Enter> drücken und der Wert ist vereinbart. Wechselt man jetzt ins Startmenü, sieht man einen zusätzlichen Messwert:
Jetzt kann man die eigene Messung mit der Wettervorhersage im Radio oder Internet vergleichen. Auf der Seite der Wetterstation ist jetzt alles einsatzbereit. Nun wird OpenHAB konfiguriert
OpenHAB konfigurieren
Ich bevorzuge die Konfiguration von OpenHAB über Konfigurationsdateien und nicht über die Oberfläche. Ihr kopiert Euch einfach die Inhalte der einzelnen Dateien und erstellt auf dem Raspberry Pi damit Eure eigene Konfiguration. In der Konsole der Wetterstation sieht man die Datenübertragung an den MQTT-Server:
Home/IOT-WEATHER1/tele/SENSOR = {"Time":"2019-08-30T07:45:23","BME280":{"Temperature":20.8,"Humidity":77.4,"Pressure":969.0,"SeaPressure":1028.7},"TSL2561":{"Illuminance":13040.000},"PressureUnit":"hPa","TempUnit":"C"}
Diese Struktur muß nun in OpenHAB ausgewertet werden.
Things vereinbaren
Datei things/mqtt.things
//=======================================================================================// // File: things/mqtt.things Rev. 30.08.2019 / 09:15 // // (C) 2019 IoT-Systems, D-83043 Bad Aibling // // Author: Andreas Kriwanek // //=======================================================================================// // Project: Kriwanek's Home // //=======================================================================================// // THIS IS FOR MQTT BINDING 2.4.x!!! // //=======================================================================================// Bridge mqtt:broker:mosquitto "Mosquitto local" [ host="ohabint.iot", secure=false ] { //================================================================================== // AUSSSENBEREICH: //---------------------------------------------------------------------------------- // Wetterstation Wemos D1 Mini. Hostname: IOT-WEATHER1 Thing mqtt:topic:GA-WEATHER1 "Wetterstation 1" { Channels: Type number : chTemp "Temperatur" [ stateTopic="Home/IOT-WEATHER1/tele/SENSOR" , transformationPattern="JSONPATH:$.BME280.Temperature" ] Type number : chHum "Luftfeuchtigkeit" [ stateTopic="Home/IOT-WEATHER1/tele/SENSOR" , transformationPattern="JSONPATH:$.BME280.Humidity" ] Type number : chPres "Luftdruck" [ stateTopic="Home/IOT-WEATHER1/tele/SENSOR" , transformationPattern="JSONPATH:$.BME280.Pressure" ] Type number : chPresSL "Luftdruck Meereshöhe" [ stateTopic="Home/IOT-WEATHER1/tele/SENSOR" , transformationPattern="JSONPATH:$.BME280.SeaPressure" ] Type number : chIlu "Beleuchtungsstärke" [ stateTopic="Home/IOT-WEATHER1/tele/SENSOR" , transformationPattern="JSONPATH:$.TSL2561.Illuminance" ] } }
Nach dem Erzeugen der Datei ist OpenHAB neu zu starten, damit die Einstellungen übernommen werden:
sudo systemctl restart openhab2.service
Items vereinbaren
Datei: items/mqtt.items
//================================================================================== // AUSSENBEREICH: //---------------------------------------------------------------------------------- Number It_GA_W1Temperature "Aussen-Temperatur [%.1f °C]" (gPersistence) { channel="mqtt:topic:GA-WEATHER1:chTemp" } Number It_GA_W1Humidity "Aussen-Luftfeuchtigkeit [%.1f %%rH]" (gPersistence) { channel="mqtt:topic:GA-WEATHER1:chHum" } Number It_GA_W1Pressure "Luftdruck [%.1f hPa]" (gPersistence) { channel="mqtt:topic:GA-WEATHER1:chPres" } Number It_GA_W1PressureSL "Luftdruck Meereshöhe [%.1f hPa]" (gPersistence) { channel="mqtt:topic:GA-WEATHER1:chPresSL" } Number It_GA_W1Illuminance "Aussen-Beleuchtungsstärke [%.0f Lux]" (gPersistence) { channel="mqtt:topic:GA-WEATHER1:chIlu" }
Nach dem Erzeugen der Datei ist OpenHAB neu zu starten, damit die Einstellungen übernommen werden:
sudo systemctl restart openhab2.service
Sitemap erzeugen
Datei sitemaps/weather1.sitemap
sitemap weather1 label="Wetterstation" { Frame label="Wemos D1 Mini" icon="lawnmower" { Text item=It_GA_W1Temperature Text item=It_GA_W1Humidity Text item=It_GA_W1Pressure Text item=It_GA_W1PressureSL Text item=It_GA_W1Illuminance } }
Damit ist die Konfiguration von OpenHAB beendet.
Messergebnisse anzeigen
Jetzt können wir uns das Ergebnis auf dem Webserver von OpenHAB ansehen:
In der Sitemap werden die Messergebnisse angezeigt. Mit Rules können sie z.B. zur Heizungssteuerung weiterverarbeitet werden.
Wetterstation für den Außeneinsatz vorbereiten
Um die neue Wetterstation außen verwenden zu können, verwendet man am Besten die Schutzhülle von TFA Dostmann. Sie ist preisgünstig und die gesamte Hardware kann darin montiert werden. Wer will, kann sich noch Teile im 3D-Druck herstellen, um die Sensoren einfach darauf festschrauben zu können. Durch die vielen Belüftungsschlitze haben die Sensoren direkten Kontakt zur Umgebungsluft. Die Wetterstation ist im Schatten zu montieren.
Als Stromversorgung verwende ich ein USB-Steckernetzteil mit Kabel. Der Wemos D1 Mini ist für die 5V Eingangsspannung ausgelegt. Er erzeugt seine 3,3V-Betriebsspannung intern. Eine Versorgung mit Batterien kann ich nicht empfehlen. Diese sind nach kurzer Zeit leer.
Die einzelnen Komponenten nach dem Zusammenbau im Wetterschutzgehäuse. Der Wetterschutz wird über den Sensorhalter geschoben und mit einer kleinen Drehung verriegelt. | |
In das Wetterschutzgehäuse habe ich mit einem Stufenbohrer ein etwa 20mm großes Loch gebohrt. Über das Loch wird eine Glaslinse (Cabochon) mit Sekundenkleber dicht aufgeklebt. Dadurch kann das Licht auf den darunterliegenden GROVE-Lichtsensor fallen. Die Cabochons gibt es für wenig Geld bei Amazon. | |
Den Sensorhalter fertigt man aus vier ABS-Kunststoffplatten, welche man mit Modellbaukleber zu einem Vierkantrohr verklebt, das auf der Grundplatte aufgeklebt wird. Auf der Vorderseite (im Bild sind der Wemos D1 Mini und die beiden GROVE-Schraubklemmen angebracht. Der Temperatursensor befindet sich auf der Rückseite. Dies ist erforderlich, weil der Wemos D1 Abwärme erzeugt, welche sonst das Messergebnis verfälscht. | |
Der GROVE-Multisensor wird am Vierkantrohr befestigt. Dies erfolgt auf der dem Wemos D1 abgewandten Seite. | |
Der Lichtsensor wird oben aufgeklebt/geschraubt. Das Licht kann jetzt durch die Glaslinse direkt auf den Sensor fallen. | |
Alles auf dem Basteltisch zusammengesteckt und getestet. | |
Der Wettersensor wird mit Kabelbindern am Regenfallrohr befestigt. Das USB-Kabel führt zu einer wasserdichten Verteilerdose mit dem Mininetzteil 5V/600mA.
Der Wettersensor wurd auf der Nordseite des Gebäudes angebracht, damit Sonneneinstrahlung nicht die Temperatur verfälscht. |
Fazit
Die Verwendung von GROVE (Seeed Studio) erleichtert den Hardware-Aufbau wesentlich. Die Preise sind OK, lediglich Porto und Verpackung sind nicht günstig. Also am Besten gleich noch ein paar Sensoren mehr bestellen, dann rentiert es sich. Meine Grove-Sensoren sind bereits nach 10 Tagen in Deutschland eingetroffen. Der gesamte Hardware-Aufbau war in 10 Minuten erledigt.
In etwa vier Stunden konnte ich dieses Homeautomation-System erstellen. OpenHAB war allerdings bereits vorinstalliert.