Background
Back to Portfolio

E-Connect - Connect all your things

<thepapercraft />

Source

Overview

E-Connect là một nền tảng nhà thông minh (Smart Home) Local-first và Self-hosted, cung cấp giải pháp toàn diện để quản lý, điều khiển và tự động hóa các thiết bị IoT (đặc biệt là thiết bị tự chế DIY ESP32/ESP8266) một cách an toàn mà không bị phụ thuộc vào kết nối Internet.

Development Process

Câu Chuyện Về E-Connect: Khởi Nguồn & Trải Nghiệm Phát Triển

Dự án này mang dấu ấn cá nhân mạnh mẽ, bắt đầu từ một bài toán rất thực tế của chính tôi và phát triển thành một nền tảng mã nguồn mở trọn vẹn dành cho cộng đồng DIY Smart Home.


1. Khởi nguồn: Bài toán từ căn phòng của những mảnh ghép rải rác

Mọi dự án ý nghĩa nhất thường bắt đầu từ một sự bất tiện cá nhân. Câu chuyện của E-Connect cũng không ngoại lệ. Nó không đến từ một kế hoạch kinh doanh phức tạp nào, mà đơn giản nảy sinh từ chính căn phòng của tôi.

Khi đó, căn phòng của tôi là tập hợp của nhiều mảnh ghép thông minh rải rác:

  • Một hệ sinh thái nhỏ gồm các cảm biến, công tắc đo do chính tay tôi chế tạo (DIY) từ nền tảng phần cứng ESP32/ESP8266.
  • Đặt ở một góc phòng là chiếc đèn thông minh thương mại đến từ Xiaomi (Yeelight).

Sự bất tiện bắt đầu nảy sinh ngay khi tôi muốn chúng "nói chuyện" với nhau. Việc muốn chiếc đèn Yeelight tự động bật lên khi cảm biến tự chế của tôi phát hiện chuyển động là một kịch bản đơn giản, nhưng lại mang đến loạt vấn đề đau đầu:

  • Hệ sinh thái đóng: Thiết bị thương mại thì bị khóa chặt vào ứng dụng và hệ sinh thái riêng của nhà sản xuất.
  • Sự phức tạp của phần cứng DIY: Thiết bị tự chế liên tục đòi hỏi phải viết code, biên dịch lại từ đầu mỗi lần tôi muốn thay đổi chân cắm (pin) hay đổi cấu hình mạng Wi-Fi.
  • Sự phụ thuộc vào Internet: Các giải pháp tự động hóa có sẵn đa phần dựa vào máy chủ đám mây (Cloud), dẫn đến độ trễ cao và hệ thống trở nên "ngu ngốc" mỗi khi đường truyền Internet gặp sự cố.

2. Động lực bứt phá: Nhu cầu về một "Nhạc trưởng" Local-first

Tôi khao khát một sự đồng bộ tuyệt đối. Tôi cần một hệ thống có khả năng kết nối những "đứa con tinh thần tự chế" bằng mạch điện với các "thiết bị thương mại công nghệ cao", để điều khiển chúng chung trên một bảng điều khiển duy nhất. Và trên hết: Mọi thứ phải được xử lý nội bộ tại nhà (Local-first) để đảm bảo độ trễ gần như bằng không và thông tin riêng tư được bảo mật tuyệt đối.

Do không tìm thấy một giải pháp nào trên mạng có đủ độ "mở", linh hoạt và "thấu hiểu" người chơi hệ DIY, tôi đã xắn tay áo tự thiết kế giải pháp cho riêng mình. Vượt qua giới hạn của những đoạn code tạm bợ ban đầu, tôi đặt những viên gạch nền móng đầu tiên cho E-Connect.

3. Hành trình xây dựng hệ thống

Hành trình nâng cấp E-Connect trải qua những giai đoạn đập đi xây lại liên tục để tối ưu hóa trải nghiệm sử dụng thực tế:

Giai đoạn 1: Chuẩn hóa ngôn ngữ giao tiếp cốt lõi

Tôi bắt đầu bằng việc thiết lập MQTT thành "ngôn ngữ chung" cho toàn bộ thiết bị trong nhà. Mọi thông điệp trạng thái từ các cảm biến tự chế (DIY) hay các lệnh điều khiển chiếc bóng đèn Yeelight đều được quy chuẩn hóa lại thành những gói tin nhẹ, truyền tải tức thì trong mạng LAN nội bộ.

Giai đoạn 2: Giải phóng đôi tay khỏi lập trình phần cứng phức tạp

Nhớ lại những đêm thức trắng để sửa đổi cấu hình chân (GPIO) rồi Flash lại mã nguồn, tôi quyết tâm phát triển tính năng No-code DIY Builder. Thông qua giao diện SVG kéo thả vô cùng trực quan ngay trên trình duyệt Web, người dùng (và tôi) có thể tự do gán định mức linh kiện vào phần cứng để rồi hệ thống backend sẽ tự động biên dịch, sinh ra Firmware và tiến hành Flash luôn từ máy chủ, xóa bỏ hoàn toàn rào cản thao tác lập trình thủ công.

Giai đoạn 3: Tự động hóa đồng bộ vạn vật

Để kết nối trọn vẹn cả căn phòng, tôi tiếp tục dựng lên hệ thống Tự động hóa theo chuỗi đồ thị (Visual Rule Graph) kéo-thả logic: Trigger (Kích hoạt) -> Condition (Điều kiện) -> Action (Hành động). Giờ đây, chỉ mất vài thao tác kéo thả chuột, sự kiện "cảm biến phát hiện chuyển động" đã xuất tín hiệu kích hoạt tính năng "bật đèn Yeelight" ngay tại Local Server, phục vụ mượt mà bất kể ngắt mạng Internet.

4. Thành quả của ngày hôm nay

Từ một dự án "chữa cháy" cá nhân với mục đích tối giản là dùng mạch ESP32 tự chế thao tác đồng bộ với chiếc đèn thông minh Xiaomi, E-Connect đã vươn mình trở thành một nền tảng quản trị năng lực nhà thông minh (Smart Home Platform) vững chắc, đa dụng và thân thiện.

Dự án là lời khẳng định về quan điểm: Công nghệ chế tác thủ công (DIY) hoàn toàn có thể đứng chung hệ sinh thái với thiết bị điện tử thương mại, dưới quyền kiểm soát làm chủ tuyệt đối của người dùng một cách đơn giản, đồng bộ và bảo mật nhất!

How to Use

Hướng dẫn Cài đặt & Khởi chạy E-Connect bằng Docker

Tài liệu này hướng dẫn bạn cách thiết lập và tự chạy toàn bộ nền tảng E-Connect trên hệ thống máy chủ (hoặc máy tính cá nhân/Raspberry Pi) của riêng bạn thông qua Docker.

Hệ thống hoạt động theo tiêu chí Local-first, nghĩa là mọi dữ liệu và quá trình xử lý đều nằm hoàn toàn trên thiết bị của bạn. Không cần đám mây, không rò rỉ dữ liệu.


1. Yêu cầu hệ thống bao đầu

  • Máy chủ (Server), Server mini, máy tính cá nhân (Windows/macOS/Linux) hoặc Raspberry Pi.
  • Đã cài đặt Docker và Docker Compose.
    • Tham khảo tài liệu cài đặt Docker: https://docs.docker.com/get-docker/
  • Cùng một mạng LAN (Local Area Network) nếu bạn tính kết nối qua các thiết bị khác (điện thoại, máy tính bảng).

2. Chuẩn bị file cấu hình

Để người dùng cuối dễ dàng tích hợp, dự án cung cấp sẵn file docker-compose.user.yml.

  1. Tải (hoặc Copy nội dung) file docker-compose.user.yml về máy tính của bạn và đặt nó trong một thư mục trống định trước (Ví dụ: thư mục E-Connect). Mẹo: Bạn có thể đổi tên file thành compose.yml (hoặc docker-compose.yml) cho các lệnh chạy gọn gàng hơn.

  2. Chỉnh sửa các biến cấu hình bảo mật: Mở file vừa tải lên bằng trình soạn thảo mã (VS Code, Notepad, v.v) và tìm đến phần x-user-config. Tại đây, bạn BẮT BUỘC phải thay đổi các giá trị mặc định để bảo mật hệ thống:

    x-user-config: db_root_password: &db_root_password "HomeRoot!2026" # Đổi thành mật khẩu root MariaDB của riêng bạn db_password: &db_password "HomeApp!2026" # Đổi thành mật khẩu Database App của bạn secret_key: &secret_key "thay-doi-chuoi-khoa-bao-mat-nay" # Thay thế bằng 1 chuỗi dài, ngẫu nhiên để mã hóa Auth Token.
  3. Cấu hình địa chỉ IP (Nếu truy cập qua các thiết bị khác): Mặc định hệ thống chạy ở localhost. Nếu máy chủ E-Connect của bạn có một địa chỉ IP nội bộ (IP tĩnh LAN, ví dụ: 192.168.1.25), hãy điền thông tin đó vào để hệ thống tạo SSL Certificate (HTTPS) chính xác:

    https_ips: &https_ips "192.168.1.25" https_hosts: &https_hosts localhost,econnect.local

3. Khởi chạy hệ thống

Mở terminal (như Command Prompt/PowerShell trên Windows hoặc Terminal trên macOS/Linux), điều hướng vào thư mục chứa file cấu hình và chạy lệnh sau:

# Nếu file tên gốc là docker-compose.user.yml: docker compose -f docker-compose.user.yml up -d # Chỉ dùng nếu bạn đã đổi tên file thành compose.yml hoặc docker-compose.yml: docker compose up -d

Docker sẽ bắt đầu kéo (pull) các hình ảnh (images) mới nhất về từ máy chủ và khởi tạo toàn bộ hạ tầng gồm: Database, Mqtt Broker, Backend Server và Frontend WebApp.


4. Truy cập & Trải nghiệm

Sau khi mọi Container báo cờ (Healthy & Started) thành công, bạn đã có thể truy cập Web UI. Hệ thống bắt buộc truy cập qua chuẩn HTTPS cho các tính năng người dùng:

  • Nếu đang dùng trực tiếp trình duyệt trên Máy chủ đang cài E-Connect: 👉 TRUY CẬP: https://localhost:3443

  • Nếu dùng Điện thoại / Laptop khác trong cùng mạng LAN: 👉 TRUY CẬP: https://[IP_MÁY_CHỦ_CỦA_BẠN]:3443 (VD: https://192.168.1.25:3443)

Lưu ý: Do E-Connect tự sinh ra chứng nhận SSL nội bộ cục bộ (Local Certificates) dành riêng cho mạng nhà bạn, nên trình duyệt sẽ cảnh báo độ tin cậy "Your connection is not private". Đây là hiện tượng bình thường với mạng cục bộ. Xin vui lòng bấm Advanced -> Proceed to [IP] (unsafe) để tiếp tục truy cập.


5. (Mở rộng) Thiết lập tìm kiếm thiết bị công khai (Discovery Web)

E-Connect cung cấp Cổng tìm kiếm công khai tại địa chỉ: https://find.isharoverwhite.com

Trang nội bộ này sẽ chạy các thuật toán Web-scan từ chính trình duyệt của bạn lên mạng LAN, nhằm tìm ra Máy chủ E-Connect Local trong nhà không cần nhớ IP cồng kềnh.

Để hệ thống mDNS nhận diện tốt hơn với cổng tìm kiếm Website này, bạn có thể chạy thêm lệnh khởi tạo mDNS (Đảm bảo đã điền https_ips ở bước cấu hình):

docker compose -f docker-compose.user.yml --profile discovery-mdns up -d

6. Lần truy cập đầu & Tạo tài khoản

  1. Ở lần đầu tiên bạn truy cập vào đường dẫn Web UI thành công, hệ thống sẽ tự động chuyển hướng màn hình đến "Setup First Admin" (Khởi tạo Quản trị đầu tiên).
  2. Điền thông tin muốn thiết lập và đăng ký tạo tài khoản.
  3. Chào mừng đến với ngôi nhà E-Connect của bạn! Hãy bắt đầu gắn kết và sáng tạo nên các hệ thống Smart Home tự chủ dành riêng cho mình.

Recent Activity

[update] refine dashboard widgets and notification ui

4/8/2026

by Đinh Trung Kiên

8a9c843

[bug] fix sidebar not visible and not properly collapsed on mobile

4/8/2026

by Đinh Trung Kiên

ad93a30

[bug] prevent manually dragging cards over each other

4/8/2026

by Đinh Trung Kiên

dc57a62

[bug] fix dashboard card overlapping by introducing 2D collision layout

4/8/2026

by Đinh Trung Kiên

d187fcb

[update] refined extensions card layout UI

4/8/2026

by Đinh Trung Kiên

3da345f

Project Details

Categories
No specific categories
Project Type
Individual
Status
In Progress
Tech Stack
TypeScriptPythonC++JavaScript
Links
GitHub Repository