Build a home automation controller using a RaspberryPi web server with Flask REST API on Nginx, Gunicorn, and Supervisor. Easily create API endpoints to install and have control of a local network of devices through one edge device. The controller can be used with its default browser interface or an application capable of making HTTP requests. Currently a ReactNative mobile application is under development.
NOTE: This project is still under development. The fundamental concept is complete but a few of its features are not yet fully implemented.
- Flask (Python)
- Nginx (RaspberryPi/Linux System)
- Gunicorn (RaspberryPi/Linux System)
- Supervisor (RaspberryPi/Linux System)
- ReactNative (Mobile Client)
- Redux (Mobile Client)
/Server
These files are for the RaspberryPi's web server. For this project, a RaspberryPi was used, but any system running a version of Linux will work as well.
nginx.conf
is used to configure the NGINX server for authentication, file locations, and application proxiesdhcpcd.conf
is used to configure a static IP address which is helpful for both developer access (SSH) and user access (Browser Interface, REST API)supervisor.conf
is used to configure Supervisor, which is used to automatically start the Flask server upon bootup.htpasswd
is used to store the user authentication information
/FlaskApp
These files are for the Flask API and web interface.
- HTML, CSS, and Javascript is used with Bootstrap to create a simple, mobile friendly browser interface
- Flask is used to create the REST API endpoints
/MobileClient
These files are for the mobile client which is built with React Native to design the UI/UX and Redux to maintain the state of the application.
NOTE: This part of the application is in early development and many of its features are yet to be implemented.
This repository includes a modified version of Audio Reactive LED Strip as a sample API endpoint function