An IoT smart-home graduation project with embedded safety modules, PCB design, MQTT communication, Python server, database, Flutter mobile app and custom mechanical designs.
It was designed for home automation and safety-oriented monitoring for fire, flooding, motion, door opening, temperature, alarms, electrical loads, and power availability.
The original implementation used a MQTT broker locally configured, a Python server, a database and hardware modules based on ESP8266. To reproduce live functionality, the local environment must be rebuilt and configured.
- Android application release
- Mechanical designs on GrabCAD
- Final project report
- Academic poster
- Final presentation
The project is based on ESP8266 modules connected over a local network. MQTT allows messages exchange between hardware, Python server and mobile application. The server interfaces with the database of the project.
Click the preview to open the full-resolution system schematic.
The system was organized into ten functional modules:
- Dual Channel Relay — control of two connected electrical loads.
- UPS — backup power.
- Fire Detection Module — fire hazard detection.
- IR Transceiver Module — infrared control of compatible appliances.
- Motion Detection Module — motion monitoring.
- Alarm Module — audible alarm control.
- Temperature Module — environmental temperature monitoring.
- Flood Detection Module — water and flooding detection.
- Door Opening Detection Module — door-opening monitoring.
- Power Meter Module — electrical power-monitoring interface.
Firmware source code is only provided for Alarm Module and Flood Detection Module as a sample of representative implementations. The original firmware of the other eight modules is not found in the archived project files.
The two examples included are not the full firmware needed to run the full ten-module system.
The Android app was developed using Flutter. It gives interfaces to configure the server, to communicate with MQTT, to control modules, to send notifications, and to change system settings.
Android build is available from the latest GitHub Release.
The ESP8266 modules used browser-based setup pages for entering Wi-Fi and MQTT connection details.
For each module the electrical schematics, PCB source files and board previews are available in the hardware/modules/ directory.
Mechanical CAD, enclosure assemblies, and printable files are published separately on GrabCAD.
Requirements:
- Flutter SDK
- Android SDK
- a compatible Java Development Kit
- an Android device or emulator
From the Flutter project directory:
cd mobile-app/smarthome
flutter pub get
flutter analyze
flutter runThis project was created with an older version of Flutter/Android toolchain, and may require dependency or gradle updates on current development environments.
The entry point of the server is:
server/script.py
To reconstruct the original environment:
- Create a Python environment.
- Install the packages referenced by the imports in
script.py. - Configure a local MQTT broker.
- Recreate the project database using the schema image.
- Replace the archived local addresses and credentials with your own configuration.
- Run the server on the same network as the application and ESP8266 modules.
The provided firmware examples can be opened in the Arduino IDE. Before compiling each sketch, install the board support and libraries referenced.
The firmware uses local Wi-Fi, MQTT, server and certificate settings. These values have to be replaced before reuse.
- Live functionality requires reconstruction of the original local environment.
- Only two of the ten firmware projects are available.
- The power-meter interface contains simulated data only, not real data.
This repository stores original local credentials, certificates, and private-key files for historical documentation.
Anyone adapting this project must:
- replace all usernames and passwords
- change broker, server, and database addresses
- generate new certificates and cryptographic keys
- apply current security practices before deployment










