IoT Project - Smart Watering

Project Goal
The goal of this project is to implement a smart watering system in order to be more efficient with water usage when growing plants. The system should use a combination of sensor data for soil humidity and weather data to determine if watering is necessary.

Implementation
For monitoring the humidity level in the soil, the Soil Hygrometer - LM393 should be used together with a Analog-to-Digital Converter - MCP3008 in order to be able to more precisely monitor the humidity level. The sensor should occasionally retrieve the value of the soil humidity. How often is up to the implementation but it is unlikely for the humidity to change rapidly so reading the value every 5-15 minutes would probably be good enough.

For monitoring the weather an integration needs to be made with an online weather api. The weather info should mainly be concerned with if it’s going to or is raining (in that case we don’t need to water). Weather reports do change over the course of a day but not that often. As such this info can be polled every 30-120 minutes or whatever is deemed necessary through testing.

Bonus Round!
Store historical values sensor side so it is possible to decrease the polling rate when the humidity is stable and vice versa.

As with the humidity sensor, the polling rate for weather updates could be decreased or increased depending on how stable it is.

Extend the system by storing all reported sensor values to enable creating charts/diagrams showing how the humidity has changed over time. Additionally, the system could also log when it starts and stops watering so this could also be correlated in a chart/diagram.

Make the system send out an alert to the manager whenever it starts/stops watering to enable remote monitoring of the system.

Add an LCD display that shows the state of the system (humidity, watering or not, weather prognosis etc.).

Any other ingenious ideas!