Availability of water level at source is checked by a non-contact liquid level sensor.
Triggers for watering plant are defined as follows: 1. There is water in tank / source (checked by non-contact liquid level sensor) 2. Soil moisture level is below certain threshold (measured by 2 soil moisture capacity sensors embedded in the plant) 3. Watering duration is determined by current soil moisture level; Python script activates relay to run the pump for the right duration. 4. Same python script also: - activates camera to record watering (+2s buffer to have all on the video) via usb cam connected to the pi (leveraging opencv lib) - uploads recorded video automatically to youtube channel (if pi has internet connection) - summarizes watering event and sends me notification with link to the recording and other helpful stats (temp, humidity, moisture level etc.) - saves all metrics to sqllite db for future reference
Key parts I ended up using for the project: 1. Water pump: https://www.amazon.com/gp/product/B01LWXV7DE/ref=ppx_yo_dt_b...
2. Non-contact Liquid Level Sensor -XKC-Y25-NPN: https://www.amazon.com/gp/product/B07D3246BH/ref=ppx_yo_dt_b...
3. Gikfun Capacitive Soil Moisture Sensor: https://www.amazon.com/gp/product/B07H3P1NRM/ref=ppx_yo_dt_b...
4. Relay: https://www.amazon.com/KeeYees-Channel-Indicator-Arduino-Ras... (though I just bought my when visiting Fry's)
Primary motivation to do the project was so that wife can have pice of mind knowing plants are taken care of while we are away on longer trips.
Hope this helps.