The sensor unit is built from an NodeMCU ESP8266 development board which is connected to a temperature/humidity sensor and three soil moisture meters sampled from an ADC board. During its first test, it was powered with two 9V batteries which passed through a buck converter and a boost step up converter. (This was less than ideal but I just wanted it up and running. ) The unit is housed in a Tupperware container sealed with hot glue. The moisture sensors are coated with a silicon sealant and wrapped with shrink tubing. 

Data collected from the ESP8266 is formatted into JSON and sent over an HTTP connection which is received by the Raspberry Pi. I created a Python server which handles the requests, parses the JSON, and loads it onto a .csv file.

To view this file, it is copied from the Raspberry Pi and uploaded to Google Data Studio.

The shown data is just from the lifespan of the 9V batteries. Recently I have added two solar panels to continuously power it throughout the day. 


moisture is a percentage between the measured moisture in water and in air.

after a while without use the moisture sensors are very calibrated