A Prototype for an Indoor Plant Treatment Gadget

This is my first microcontroller based Python project and also a prototype of a product idea. In addition this was an opportunity to better understand the challenges of embedded computing.

The product idea 

This networked gadget provides hope to those who have ever unintentionally destroyed an indoor  plant by too little or too much water. It can generate revenueas as an advertisement-supported ecosystem that allows media space for the booming floral industry.

The solution

The solution consists of a hardware and a software component. 

  • The hardware is a small capacitive soil moisture sensor connected to a wifi-enabled ESP8266 microcontroller board. The prototype is running on a power bank.
The first prototype. 
  • The software component is a 'mobile first' website that logs the sensor data and triggers personalized reminders.

The User Journey

  1. Setup - The sensor needs a one-time setup so that it can access the internet. Turn on the device (ie. switch on the powerbank) and connect your mobile to its wifi access point - just like you do it with any wifi network. The network name and password can be printed on the device. Once connected navigate your mobile browser to the configuration page at192.168.4.1 The page allows you to save the name and password of your home wifi into the memory of the microcontroller device. Turn it off now.


  2. Measure - First slightly push the sensor into the soil.


    Then turn on the device and check the red and green leds:
    - The RED led will show up if the flower needs water. Water it now, before it gets too late.
    - The GREEN one will show up if the moisture level of the plant is ideal.
    - A BLINKING GREEN led indicates that the moisture level is too high, you might have over-watered the poor plant.

    Turn off the device and repeate the measuring with some other plant.  (Keeping the sensor in a single plant is actually a separate project idea, see below.)

  3. Upload - At each run of the sensor the device uploads the sensor data to a website. The success of the process is indicated by a BLINKING BLUE led. Quick blinks indicate that the upload was unsuccessful. Perhaps your wifi signal is weak or you might have entered the details of the wifi network incorrectly. You can check this by going back to step 1. If the blue led indicates successful upload, go to the next step.

  4. Diary - Open the webpage of the solution and check the diary of the moisture level. 


  5. Reminder - Repeat the measuring every day until you find out the ideal interval of watering. At this point you can setup a browser notification as a reminder.

Backlog

The early prototype is almost done: the reminder feature is not available yet. I presented the prototype to family and friends and based on their feedback collected tons of further development ideas. Thus my backlog is huge and prioritization is a challenge on its own. I must keep a priority balance between the following story categories:

  • Hardware: house, powering, controls...
  • Embedded software: user interface and controls...
  • Web features: security, reminders... 

In addition there are further epics to consider:

  • Single plant mode: the sensor is kept in single plant permanently and an alert is triggered whenever moisture level gets low. Home Assistant offers a no-code solution for requirement, see below.
  • Alternative sensors: once the soil moisture sensor is replaced with some other type of environmental sensor the number of potential project ideas multiplies.

Technical details of the prototype

A no-code alternative

If you run Home Assistant as a smart home server and prefer deploying multiple sensors, eg. one for each important plant, ESPHome offers an (almost) click-click-click-ready analog-to-digital sensor configuration for ESP8266. 

Home Assistant dashboard. The sensor value also triggers a notification when the moisture level reaches a critically low level.