Who does not know this: you want to quickly build the hardware for a new project and then start long hours with the breadboard or soldering on a proto board. With newer sensors one still needs breakout boards, since the connections are not directly solderable. Many have written to me if there is not an alternative that works faster and delivers safer results. Yes, there is one: Seeed-Studio's GROVE system. I introduce you to a quick weather setup with GROVE for a small weather station.

 

For my home automation I need weather data for the heating control. As I like to develop my own and want to save expensive finished equipment, I use GROVE components to set up my own weather station.

IOT Controller

The controller is a Raspberry Pi 3 with OpenHAB as controller software. How to set these up, I described in this article.

Weather station

The basis is a Wemos D1 Mini (ESP8266-based), on which the software Tasmota was installed. This is described in these articles.

Readings

As measured values I need

  • Temperature in ° C
  • Humidity in% RH
  • Atmospheric pressure in HPa
  • Brightness in lux (for controlling the exterior lighting and roller blinds)

For these tasks I decided for the sensors BME280 (temperature, humidity and pressure) and TSL2561 (brightness). These sensors are supported by Tasmota.

 

Used components

Based on the requirements you order the suitable parts:

Bauteil Bild Link Anzahl Preis
GROVE BME280 Link 1 17,00 $
GROVE Digital Light Sensor Link 1 9,90 $
GROVE Screwterminal Link 3 2,90 $
GROVE Universal 4pin-Cable 20cm Link 1 2,90 $
         
Wemos D1 Mini Link 1 6,29 €
Jumper cable Male-Male Link 1 3,99 €
         
TFA-Dostmann weather shield Link 1 9,99 €

 

Ordering at Seeed Studio is very easy. Create an account and select the components. There are two options when shipping, I chose the Seeed Carrier for $ 8.87. The delivery can then take 20-30 days. This method is much cheaper than the express delivery. Addendum: My components arrived already after 10 days - Super!

The Wemos and the Weather Shield can be ordered from Amazon or Ebay.

Proceed further

  • Installation of the Raspbery Pi with the OpenHABian operating system and configuration of OpenHAB
  • Installation of Tasmota on the Wemos D1 Min and basic configuration
  • Hardware setup with following instructions

 

Structure of the hardware

Tasmota can handle a wide variety of sensors. However, these must be connected to certain pins of the Wemos D1 According to Tasmota Wiki, the following pins are important for our sensors:

Sensor type 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  

 

For the wiring, I use the GROVE screw terminals and the small jumper cables. SDA and SCL of the two I2C sensors are connected in parallel, as are the + 3.3V and GND. Then the two sensors are connected to GROVE flat cables. Thus, you can assemble the hardware in a few minutes. During assembly, no power must be supplied to the Wemos.

I stuck the individual modules on a board with hot glue. Then they do not slip and you can plug in the cables easier. After you have finished the development, the modules can be replaced without much effort.
The jumper cables can be wonderfully fastened in the GROVE screw terminal. The GROVE flat cables lead from the screw terminal to the sensors.
The Wemos D1 Mini has female connectors into which the other end of the jumper cable is plugged. The yellow cable is the USB port on the laptop.

 

Configure Tasmota

I already make the most important settings such as SSID and password and the MQTT server in the source software. After compiling and uploading, I do not have to make any more entries here. The following are the settings for the Wemos. Another important note: the two sensors still need to be unlocked in the source code

File: sonoff/my_user_config.h

 

 

Startseite -> Einstellungen -> Geräteeinstellungen

For the Wemos D1 Mini is set as the device type "Generic (18)". The two GROVE sensors are controlled via the I2C bus. Therefore D3: SDA and D4: SCL are agreed. Then click on "Save". The module reboots.

Startseite -> Einstellungen -> WLAN-Einstellungen

Enter the SSID of your own WLAN and the password here. The host name should be changed. On my network, all IOT devices start with the prefix "IOT -...". Then save, the Wemos reboots.

Startseite -> Einstellungen -> MQTT-Einstellungen

In the MQTT settings, enter the host name or IP address of the MQTT server. In our case that's the Raspberry Pi.

Startseite -> Einstellungen -> Logging-Einstellungen

Under Logging Settings, the telemetry period should be set to 300 seconds to minimize data transmission.

Startseite -> Einstellungen -> Sonstige Einstellungen

In the other settings you should enter a "Friendly Name", which corresponds to the function of the device. Then save again.

This completes the settings.

 

Check configuration of Tasmota

Now it must be checked if the Wemos is working properly.

Startseite -> Information

This information shows that the Wemos D1 Mini is working properly. He has an IP address, and displays this info.

Startseite -> Konsole

The console shows the individual messages that are sent to the MQTT server. The data can then be evaluated by OpenHAB.

Startseite

The individual measured values are displayed on the start page. Every few seconds, the data is updated automatically.

Tasmota is able to convert the air pressure to sea level. To do this you only need to specify in the console the height of your own location in meters:

press <Enter> and the value is agreed. If you now switch to the start menu, you will see an additional reading:

Now you can compare your own measurement with the weather forecast on the radio or the Internet. Everything is ready for use on the weather station side. Now OpenHAB is configured

Configure OpenHAB

I prefer the configuration of OpenHAB over configuration files and not over the interface. You simply copy the contents of each file and create your own configuration on the Raspberry Pi. In the console of the weather station you can see the data transfer to the 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"}

This structure must now be evaluated in OpenHAB.

 

Create Things

File: 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" ]
	}
}

After creating the file OpenHAB must be restarted, so that the settings are adopted:

sudo systemctl restart openhab2.service

 

Create Items

File: 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" }

After creating the file OpenHAB must be restarted, so that the settings are adopted:

sudo systemctl restart openhab2.service

Create Sitemap

File: 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
    }
}

This completes the configuration of OpenHAB.

 

Show measurement results

Now we can look at the result on the web server of OpenHAB:

The measurement results are displayed in the sitemap. With rules you can e.g. be further processed for heating control.

 

Prepare weather station for outdoor use

In order to be able to use the new weather station outside, it is best to use the protective cover from TFA Dostmann. It is inexpensive and all the hardware can be mounted in it. If you want, parts can still be produced in 3D printing in order to simply screw the sensors onto it. Due to the many ventilation slots, the sensors have direct contact with the ambient air. The weather station is to be mounted in the shade.

As a power supply I use a USB power adapter with cable. The Wemos D1 Mini is designed for the 5V input voltage. It generates its 3.3V operating voltage internally. I can not recommend a supply of batteries. These are empty after a short time.

The individual components after assembly in the weatherproof housing. The weather protection is pushed over the sensor holder and locked with a small turn.
In the weatherproof housing, I drilled a 20mm hole with a step drill. A glass lens (cabochon) is glued over the hole tightly with super glue. This allows the light to fall on the underlying GROVE light sensor. The cabochons are available for little money on Amazon.
The sensor holder is made of four ABS plastic plates, which are glued with modeling adhesive to a square tube, which is glued to the base plate. On the front side (pictured are the Wemos D1 Mini and the two GROVE screw clamps.) The temperature sensor is located on the back, this is necessary because the Wemos D1 generates waste heat which would otherwise distort the measurement result.
The GROVE multi-sensor is attached to the square tube. This takes place on the side facing away from the Wemos D1.
The light sensor is glued on top / screwed. The light can now fall directly onto the sensor through the glass lens.
Everything put together and tested on the crafting table.

The weather sensor is attached to the downpipe with cable ties. The USB cable leads to a waterproof junction box with the mini power supply 5V / 600mA.

 

The weather sensor was installed on the north side of the building so that sunlight does not distort the temperature.

 

Conclusion

The use of GROVE (Seeed Studio) makes the hardware setup much easier. The prices are OK, only postage and packaging are not cheap. So it's best to order a few more sensors, then it will pay for itself. My Grove sensors have already arrived in Germany after 10 days. The entire hardware setup was done in 10 minutes.

In about four hours I was able to create this home automation system. However, OpenHAB was already preinstalled.