Drucken
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

  1. Temperatur in °C
  2. Luftfeuchtigkeit in %rH
  3. Atmosphären-Druck in HPa
  4. 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

 

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.