The smart home is the dream of the future. But to get there, we need a strong, unified, and extensible platform to build on. The smart hubs available today are generally inflexible or tied to a large company. By building our smart home platform on commonly available, open source hardware, we're letting the community take the lead in IOT development.
What it does
Saguaro is an IOT platform that allows hardware devices to be controlled by a simple web interface. Activating hardware in your home -- lights, windows, anything you can run a wire to -- is as simple as pushing a button. Additionally, Saguaro learns your schedule, and over time will be able to anticipate your actions and automate your home for you.
How I built it
Saguaro was a team effort. We started off with a single LED on a breadboard, and built it up from there. We wrote the Saguaro Hub controller for the raspberry pi, and then we could turn on the LED via ssh. Once we had that, we built our cloud synchronization manager on an Ubuntu VM running on Microsoft Azure. From there, we attached a web interface and completed our original goal of controlling our model "home" with a web browser. We kept on adding bells and whistles along the way, eventually bringing an arduino into our lowest level control system, and TensorFlow into our server for the behavior prediction model.
Challenges I ran into
We did a lot of exploring along the way, trying to figure out what would be the most robust, user-friendly, and extensible way to build our codebase. We migrated the backend from Apache Tomcat to Flask around midnight, and while it cost some time initially, it eventually was a great time saver. Hardware is always finicky, but enough tinkering solved that problem, and we all learned a bit more about electronics along the way.
Accomplishments that I'm proud of
The best part about Saguaro is its extensibility. The database is flexible and allows for random device additions on the fly, and the Raspberry Pi hub is naturally multithreaded on one or many computers. It just wouldn't be useful to have a program that can't adapt and take on new devices as they are invented. Saguaro is extensible to its core.