After running my SprinklerSystem 1.0 for 3 yrs, its time formore & new concepts. Find below the still-in-progress functional requirements, to which I am building the system.
A 4 x leg sprinkler system, and borehole pump switching system with RPi & Node-RED, and ESP8266. Where-as Sprinkler 1.0 did all the control from Node-RED on the RPi, the next version - Sprinkler 2.0 will provide the variables of control to the ESP8266, and it will do the control.
Find below the requirements for an edge-based solution:
- 4 x sprinkler leg valves to be switched on- and off.
- A borehole pump to be switched on before any leg is activated, and switched off afterwards.
- Switching can either be automatic, or manual.
- For automatic, A schedule of start / stop / in-between leg-rest time will be downloaded to the ESP from the RPi at startup of the ESP.
- If manual, a message will be sent via mqtt for the leg to switch on, and duration it has to be in this state.
- Whilst sprinkling, the ESP will send back a message to show the time left till it switches off.
- On the sprinkler
leg schedules
:- Able to switch each leg on
twice a day
; - Able to choose which legs should sprinkle on
which days
; Duration between
legs on as a variable- to allow the borehole water to fill-up;
- Able to switch each leg on
- The above must be downloaded as variables to the ESP.
//DEPRECATED//- All schedules functions to be data-driven
, where a json file on the system stores the definitions of all above, to allow this file to be manipulated to change sprinkling time, rest period, sprinkle period, and days,- per leg.
A Web front-end to work on a phone, where the sprinkler system can be:
- Actions:
- put into
auto-mode
, where the data-file is used for the schedule; - put in
non-auto mode
or manual, where the schedule does not determine the on/off times; - Able to switch any leg
on/off manually
, including the pump; - Button to override
All Off
- switching the pump and legs off at once.
- put into
- Reports:
- A report to determine the
total sprinkler time per day
; - Report on how much
water was pumped
for the day; - Report to view the current schedules, times, and rest periods that are set.
- A report to determine the
- the ESP8266 will be controlled with the homie 4.0 standard, (as at 2019 Aug - not yet promolgated).
- must be able to work with Apple Homekit.
Building blocks are:
- Node-RED on a Raspberry Pi
- Mosquitto as MQTT server running on the same RPi
- The sprinkler solenoids is controlled with an ESP8266, on a wifi network, using
mqtt
from Node-Red. - We use ESPEasy on the Node-RED, from the community letscontrolit.com.
- /DEPRECATED/ A MariaDB instance to track stats of sprinkling.
- All servers running on the RPi, runs in Docker images & containers.
The project is not yet completed. Further requirements includes:
-
Did it, or is it raining? Is it, or will the rain be enough? Use either barometric pressure, and/or Darksky forecast, and the IoTPlay ESP8266 rain meter to stop sprinkling for a day;
-
Amount of water to drop based on levels of Soil moisture, using for instance Tindie's SoilWatch10.
-
Change starting time of the cycle with the season's changes.