See documentation/design_document.pdf
for detailed design notes and documentation.
This project was written as part of my computer science A-Level during sixth form. The code is certainly not perfect, and I would definitely change many of the ways I have approached accomplishing certain tasks here. Yet it works well - and demonstrates core skills.
This project creates a smart home controller on a Raspberry Pi. Clients can then connect to this controller over the local (or non local with port forwarding) network. The controller is implemented using Flask to create a REST API to which the clients can use to control and monitor the home.
A web server is also hosted on this controller which uses AJAX to dynamically change its self and send commands to the controller.
A data flow diagram for the system.
The IoT devices that this home controls are based on a an ESP8266 microcontroller onto which I loaded MicroPython.
2 IoT devices a thermometer (left) and a switch (right).
The controller queries and controls the IoT devices by sending commands over the network using network sockets in Python.