Skip to content

Mayborg121/smartHome

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”’ ESP32 Smart Home Automation Project

πŸ“œ Project Overview

This project is a secure, Wi-Fi-enabled Smart Home Automation System built using the ESP32 microcontroller. It allows real-time control and monitoring of devices (Relays, NeoPixel RGB LEDs, Stepper Motor, DHT22 sensor) through a dynamic WebSocket interface served from the ESP32’s file system (LittleFS).

Only authenticated users can access the control panel using a challenge-response password hashing mechanism without storing the password in the ESP32 memory β€” ensuring secure, stateless authentication.


πŸ“Œ Features

  • πŸ” Secure Challenge-Response WebSocket Authentication
  • 🌐 Dynamic web interface with WebSocket-based real-time updates
  • πŸ”Œ 4x Relays: Toggle control via web and physical buttons
  • 🌑️ DHT22: Real-time temperature and humidity monitoring
  • 🎨 NeoPixel RGB LED: Color control from UI
  • πŸ€€ Stepper Motor: Angular control via slider with auto-reset on boot
  • πŸ“² Works over local Wi-Fi or fallback hotspot
  • πŸ’Ύ Uses LittleFS for HTML, CSS, JS
  • 🎯 UUID-based device recognition (up to 5 remembered clients)
  • πŸ“‰ System info console and log display

πŸ“‚ Folder Structure

SmartHome-ESP32/
β”‚
β”œβ”€β”€ data/                      # Web UI files for LittleFS
β”‚   β”œβ”€β”€ index.html             # Login page
β”‚   β”œβ”€β”€ control.html           # Smart control panel (after auth)
β”‚   β”œβ”€β”€ style.css              # Web styling
β”‚   └── script.js              # WebSocket + UI logic
β”‚
β”œβ”€β”€ src/
β”‚   └── main.cpp               # Core firmware code
β”‚
β”œβ”€β”€ platformio.ini             # PlatformIO config
β”œβ”€β”€ README.md                  # Project documentation (this file)
└── credentials_template.h     # Wi-Fi credentials (excluded from repo)

🧠 Authentication Logic (Password Verification)

We use challenge-response SHA-256 hashing. Password is never stored or transmitted directly. Here's a highlight from main.cpp:

#include <SHA256.h>
#include <Preferences.h>

Preferences preferences;
SHA256 sha256;

// Example password hash (not plain password)
const char* correctHash = "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd..."; // sha256("password")

bool verifyPassword(String userResponse, String challenge) {
    String combined = challenge + "password";  // 'password' is never stored; just shown here for understanding
    sha256.reset();
    sha256.update(combined.c_str(), combined.length());
    uint8_t* result = sha256.result();

    String calculatedHash = "";
    for (int i = 0; i < 32; i++) {
        char hex[3];
        sprintf(hex, "%02x", result[i]);
        calculatedHash += hex;
    }

    return userResponse.equals(calculatedHash);
}
  • Server sends a challenge string to the browser.
  • Browser JavaScript hashes challenge + password and sends it back.
  • ESP32 verifies by recomputing SHA-256 on same.

πŸ”§ Hardware Setup

  • βœ… ESP32 Devkit V1
  • βœ… 4x Relays on GPIO 16–19
  • βœ… 4x Buttons on GPIO 21–25 (optional debounce)
  • βœ… DHT22 Sensor on GPIO 4
  • βœ… NeoPixel RGB LED on GPIO 5 (WS2812)
  • βœ… Stepper Motor (28BYJ-48 + ULN2003) on GPIOs 26–29
  • βœ… Power supply: 5V regulated for relays/motor

🌍 Web Interface Walkthrough

See screenshots below for better understanding WEB APP πŸ‘ˆ Click Here

Smart Home Web UI

1. Login Page (``)

Login Page πŸ‘ˆ Click Here

  • User connects to ESP hotspot SmartHome-ESP32 (PW: 00000000) or home Wi-Fi.
  • A random challenge string is shown.
  • User enters password β†’ client hashes password + challenge β†’ sends hash.

2. Main Control Panel (``)

Controls Page πŸ‘ˆ Click Here Top Console:

  • Device info: RAM, CPU freq, uptime, IP
  • WebSocket client ID
  • Scrollable serial monitor logs

Relay Control:

  • Toggle buttons for 4 relays
    Example log:
    { "Type": "Control", "Key": "Light-1", "Value": "on" }

DHT22 Sensor Display:

  • Live temperature and humidity updates every 2s
    *Example: *Temp: 29.4Β°C | Humidity: 62%

NeoPixel Control:

  • HTML color picker to choose RGB values
    Logs as:
    { "Type": "Control", "Key": "Ambience", "Value": "#ff8800" }

Stepper Motor Slider:

  • Angular control via slider (0°–180Β°)
  • Resets to 0Β° on boot

πŸ” UUID-Based Authorization

  • On successful login, ESP stores { username : UUID } in NVS Preferences
  • Maintains last 5 UUIDs
  • If a known UUID connects, skips login and serves control.html directly

Code snippet:

preferences.begin("uuid-auth", false);
preferences.putString("user1", "UUID-1234");
String uuid = preferences.getString("user1");
preferences.end();

πŸ§ͺ Testing Instructions

First Time Setup

  1. Power on ESP32, connect to hotspot SmartHome-ESP32 (PW: 00000000)
  2. Open 192.168.4.1
  3. Enter password (e.g. password123)
  4. Control panel opens after successful hash match

Switching to Home Wi-Fi

  1. From UI, go to "Update Credentials"
  2. Enter your home Wi-Fi SSID and password
  3. Restart ESP32 β€” now it auto-connects

πŸ› οΈ PlatformIO Configuration

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
build_flags =
  -DCORE_DEBUG_LEVEL=3
lib_deps =
  bblanchon/ArduinoJson
  me-no-dev/ESP Async WebServer
  me-no-dev/AsyncTCP

πŸ““ Future Improvements

  • Add OTA firmware updates
  • Role-based access (Admin vs Guest)
  • MQTT integration with external broker
  • Voice assistant control (Alexa/Google)

πŸ–ΌοΈ HardWare Demonstrative

insides front pink isometric ariel inside project backpanel


πŸ–ΌοΈ Screenshots & UI

loginpage controls Debugmode updatespage


πŸ–ΌοΈ Code & Algorithms

Challenge Generation & UUID MGMT Hash Verification Authentication WebSocket Event Handling Device Info MGMT

πŸ“£ Credits

Developer: Mayur Borgude
Year: 2025
Project Type: B.E. Final Year Embedded + Web IoT System


πŸ“œ License

This project is open-source and free to use under the MIT License. Please give credit where due.

About

Smart Home Automation Security and Control.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published