sprinkler control
IoT project featuring an Angular web application & a Raspberry Pi-controlled back-end for the wireless control of a home sprinkler system
Overview
This is an ongoing project! Since this is a personal project & development happens when I'm
not otherwise occupied with work or school, it takes a while to add features.
The ultimate goal of this project is to make a smart sprinkler system that can change its
behavior based on the weather forecast.
Right now the baseline functionality of the existing hardware sprinkler control system is
being implemented.
System Design
Take a look at my system specification document for a set of requirements, design diagrams,
& release benchmarks.
To avoid having an open internet-facing device on a home network (which could introduce
security risks), a cloud database tracks the sprinkler system & the Raspberry Pi simply
reads from this database
Login & Account Creation
The user either logs in or creates an account with their email. This creates a UID for the
user in Firebase Auth, which is used to reference the user
for all other applications of the system.
The user can view their zones on their dashboard. If the user is logging in for the first
time they will be directed to connect their Raspberry Pi. This only happens once.
Initial Connection
If the user has just logged in for the first time and has not registered their Raspberry Pi
they will be prompted to enter the Pi's IP address. Note this is the only time both devices
must be connected to the same network.
The user will be promped to log in. Once the device is registered, the user's UID is stored
on the Pi and the user can see their sprinkler zones on their dashboard.
Remote control
From any network, the user can control their sprinkler system remotely using the web app.
The user can set how many zones they have connected, and can toggle these zones on & off.
Note two zones cannot be on at once due to water pressure constraints.
GPIO Control
The user can control the sprinkler hardware connected to the Pi from anywhere (once I get
the web app hosted).
Surprisingly I didn't bring a home sprinkler system to college, so here's an LED stepping in
for Zone 1
to demo the GPIO signals.
Other Features
-
Get that cat! If you want the neighbor cat out of your yard you can
interrupt your current sprinkler schedule by pressing the Get That Cat! button &
entering the zone you want to turn on. All other zones turn off.
- Grid or list view
- Zone scheduling (one-time, kind of like a timer that counts down. Repeat scheduling is under development)
Future Work
- In progress: schedule saving (creating a timing schedule & being able to save & reuse that schedule)
- In progress: secure login in initial device setup
- Map visualization (aerial image of yard with clickable zones to toggle)
- Implementation of weather API for automatic adjustment to watering schedule based on weather forecast
- Mobile app - using Capacitor to create iOS and Android app (Capacitor is one of the main reasons I used Angular for this project)