LÝ THUYẾT TỔNG QUAN
Khái niệm về nhà thông minh
Nhà thông minh, hay còn gọi là hệ thống nhà thông minh, là một ngôi nhà hoặc căn hộ được trang bị các hệ thống tự động tiên tiến Những hệ thống này cho phép điều khiển đèn chiếu sáng, nhiệt độ, truyền thông đa phương tiện, an ninh, rèm cửa, cửa ra vào và nhiều tính năng khác Mục tiêu của nhà thông minh là nâng cao tiện nghi và an toàn cho cuộc sống, đồng thời góp phần sử dụng hợp lý các nguồn tài nguyên.
Nhà thông minh tích hợp các thiết bị kết nối Internet, cho phép người dùng quản lý và giám sát từ xa các hệ thống như ánh sáng và nhiệt độ.
Yêu cầu công nghệ của hệ thống tắt bật đèn thông minh
Hệ thống nhà thông minh giúp người dùng tiết kiệm năng lượng bằng cách cho phép kiểm soát các thiết bị thông qua ứng dụng trên smartphone hoặc thiết bị kết nối mạng khác Là một phần của mạng lưới vạn vật kết nối (IoT), các thiết bị này hoạt động đồng bộ, chia sẻ dữ liệu và tự động hóa các hành động dựa trên ưu tiên của chủ nhà.
NỀN TẢNG GIAO TIẾP
Home Assistant
Home Assistant, thường được gọi là “HA” hay “HASS”, là một nền tảng quản lý nhà thông minh được lập trình bằng ngôn ngữ Python Nền tảng này có khả năng hoạt động trên mọi hệ điều hành và cho phép người dùng quản lý ngôi nhà thông minh thông qua giao diện web hoặc ứng dụng di động Home Assistant có hai phiên bản, trong đó phiên bản “Home Assistant” hay "Home Assistant Core" là thành phần cốt lõi, có thể được cài đặt trên bất kỳ hệ điều hành nào như một phần mềm máy tính.
Home Assistant OS là sự kết hợp giữa Home Assistant Core và các công cụ khác, cho phép cài đặt trên các thiết bị như Raspberry Pi hoặc máy ảo Khi được cài đặt, nó biến thiết bị thành một hub tổng, giúp kết nối và điều khiển các thiết bị nhà thông minh, tương tự như Gateway của Xiaomi, Aqara, và Hub tổng của Samsung SmartThings.
Hình 2.1 Một giao diện quản lý nhà thông minh với Home Assistant
Home Assistant là phần mềm mã nguồn mở, được phát triển với sự hỗ trợ của đội ngũ kỹ sư và lập trình viên toàn cầu Phần mềm này tương thích với hầu hết các thiết bị nhà thông minh, mang đến khả năng kết nối và điều khiển không giới hạn cho các thiết bị trong ngôi nhà của bạn.
Để sử dụng Home Assistant, người dùng cần cài đặt phần mềm trước Sau khi cài đặt, hệ thống sẽ tự động quét và nhận diện các thiết bị nhà thông minh hiện có Người dùng sau đó sẽ tiến hành cấu hình các thiết bị này để chúng hoạt động theo nhu cầu của mình.
Các nền tảng nhà thông minh hiện nay nổi bật về sự tiện lợi và nhanh chóng, tuy nhiên, Home Assistant lại thể hiện ưu thế vượt trội trong khả năng điều khiển mạng nội bộ và tính tùy biến mạnh mẽ.
Các tính năng của Home Assitant
Hình 2.2 Giao diện quản lý của Home Assistant thân thiện dễ dùng
Home Assistant là trung tâm điều khiển cho hệ thống nhà thông minh, cho phép tạo ra các ngữ cảnh để thực hiện các tác vụ từ đơn giản đến phức tạp Nó đóng vai trò kết nối các thiết bị thông minh sử dụng công nghệ IoT khác nhau.
Nền tảng nhà thông minh mã nguồn mở cung cấp giải pháp lưu trữ dữ liệu tại chỗ, đảm bảo an toàn và không sử dụng nền tảng đám mây Nó cho phép kết nối các thiết bị nội bộ hoặc tích hợp với nền tảng đám mây từ các nhà cung cấp khác nhau, cả mở lẫn đóng.
Home Assistant cho phép tích hợp các hệ sinh thái IoT từ những nhà cung cấp phần mềm như Google, Apple, Amazon, cũng như các thương hiệu phần cứng như IKEA, Philips, Sonos, Tuya và Xiaomi thông qua các thành phần add-on hoặc plugin.
Home Assistant tập hợp tất cả các thiết bị thông minh vào một nền tảng duy nhất, giúp quản lý dễ dàng và tạo ra các ngữ cảnh linh hoạt để các thiết bị hoạt động liền mạch với nhau, thay vì phải cài đặt nhiều ứng dụng khác nhau cho từng hãng.
Hình 2.3 Home Assistant có thể kết nối các thương hiệu khác nhau để hoàn tất tác vụ nhà thông minh cần thiết
Việc quản lý mọi thứ từ một "máy chủ" nội bộ không chỉ đảm bảo an toàn cho ngôi nhà và dữ liệu cá nhân, mà còn giúp duy trì hoạt động trơn tru ngay cả khi gặp sự cố mạng, trong khi nhiều nền tảng khác lại đặt máy chủ ở nước ngoài.
Người dùng có thể điều khiển nhà thông minh bằng giọng nói thông qua trợ lý ảo như Google Assistant và Amazon Alexa Mặc dù Home Assistant cung cấp tính mở và tùy biến cao, nhưng không phải ai cũng dễ dàng sử dụng Tuy nhiên, cộng đồng người dùng của nền tảng này rất đông đảo và năng động, giúp người dùng có thể học hỏi và thực hiện nhiều điều thú vị.
Người dùng cần hiểu biết về hệ thống để cài đặt Home Assistant Core trên các hệ điều hành như Windows hoặc Mac, hoặc có thể cài đặt Home Assistant OS Để tùy biến hệ thống, kiến thức lập trình Python là cần thiết.
Giao thức MQTT
MQTT, viết tắt của Message Queueing Telemetry Transport, là một giao thức mạng mở được thiết kế để truyền thông điệp giữa các thiết bị Được coi là tiêu chuẩn nhắn tin cho IoT, MQTT nổi bật với khả năng truyền tải nhẹ, độ tin cậy cao và yêu cầu băng thông tối thiểu.
MQTT, ra mắt lần đầu vào năm 1999, đã trở thành giao thức phổ biến trong nhiều lĩnh vực Phiên bản mới nhất, MQTT 5.0, mang đến nhiều cải tiến vượt trội so với các phiên bản trước.
Kiến trúc MQTT bao gồm 2 phần chính là Broker - có nhiệm vụ xuất bản và Client - có nhiệm vụ đăng ký
Trong kiến trúc MQTT, MQTT Broker hoạt động như một trung tâm lưu trữ thông tin, trong khi MQTT Client được chia thành hai nhóm chính: Publisher (xuất bản) và Subscriber (đăng ký).
Broker là cầu nối giữa Publisher và Subscriber, nhận thông tin từ Publisher và chuyển tiếp đến các Client đã đăng ký topic tương ứng trên Broker.
Mô hình này được phát triển nhằm đảm bảo việc giao nhận thông tin diễn ra liên tục, ngay cả khi đường truyền không ổn định, và được coi là giao thức lý tưởng cho các ứng dụng M2M (Máy đến máy).
Hình 2.4 Sơ đồ hoạt động của MQTT
2.3.3 Tính năng, đặc điểm nổi bật
• Dạng truyền thông điệp theo mô hình Pub/Sub cung cấp việc truyền tin phân tán một chiều, tách biệt với phần ứng dụng
• Việc truyền thông điệp là ngay lập tức, không quan tâm đến nội dung được truyền
• Sử dụng TCP/IP là giao thức nền
Có ba mức độ tin cậy trong việc truyền dữ liệu (QoS: Quality of Service): QoS 0 cho phép broker/client gửi dữ liệu đúng một lần, với việc xác nhận chỉ qua giao thức TCP/IP; QoS 1 yêu cầu broker/client gửi dữ liệu ít nhất một lần và nhận được ít nhất một xác nhận từ bên nhận, có thể dẫn đến nhiều xác nhận; QoS 2 đảm bảo rằng dữ liệu được gửi từ broker/client sẽ chỉ được nhận một lần duy nhất bởi bên nhận.
• Phần bao bọc dữ liệu truyền nhỏ và được giảm đến mức tối thiểu để giảm tải cho đường truyền
MQTT, với những tính năng và đặc điểm nổi bật, mang lại nhiều lợi ích cho hệ thống SCADA (Supervisory Control And Data Acquisition) trong việc truy cập dữ liệu IoT.
• Truyền thông tin hiệu quả hơn
• Tăng khả năng mở rộng
• Giảm đáng kể tiêu thụ băng thông mạng
• Rất phù hợp cho điều khiển và do thám
• Tối đa hóa băng thông có sẵn
• Rất an toàn, bảo mật
• Được sử dụng trong các ngành công nghiệp dầu khí, các công ty lớn như Amazon, Facebook,
• Tiết kiệm thời gian phát triển
• Giao thức publish/subscribe thu thập nhiều dữ liệu hơn và tốn ít băng thông hơn so với giao thức cũ
Máy chủ môi giới (Broker) không yêu cầu thông báo về trạng thái gửi thông điệp, dẫn đến việc không thể xác định liệu thông điệp đã được gửi thành công hay chưa.
• Publisher không hề biết gì về trạng thái của subscribe và ngược lại Vậy làm sao chúng ta có thể đảm bảo mọi thứ đều ổn
• Những kẻ xấu (Malicious Publisher) có thể gửi những thông điệp xấu, và các Subscriber sẽ truy cập vào những thứ mà họ không nên nhận.
THIẾT KẾ HỆ THỐNG
Sơ đồ nguyên lý
Hình 3.1 Sơ đồ nguyên lý
Chọn linh kiện
ESP8266 là vi mạch SoC với tính năng thu phát wifi tích hợp, sử dụng CPU 32-bit với xung nhịp 80Mhz, mang lại khả năng xử lý mạnh mẽ Mặc dù số lượng ngoại vi không nhiều, nhưng đủ cho các ứng dụng nhỏ Để hoạt động, ESP8266 cần kết nối với bộ nhớ Flash bên ngoài và một thiết kế antena tốt, vì vậy module tích hợp ESP8266 thường được ưa chuộng hơn vi mạch đơn lẻ.
Các module phổ biến hiện nay bao gồm ESP-WROOM-XX của ESPRESSIF và ESP-XX của AI-Thinker Mạch phát triển ESP-8266 tích hợp module ESP8266 với các chức năng như cấp nguồn, giao tiếp máy tính và kết nối ngoại vi.
Có thể kể đến các mạch phát triển phổ biến như ESP8266 NodeMCU, ESP8266 Wemos D1, ESP8266 - IoT WiFi Uno
NodeMCU là firmware dựa trên mã nguồn mở LUA được phát triển cho chip wifi ESP8266 Firmware NodeMCU đi kèm với bo ESP8266, tức là bo Dev NodeMCU
Vì NodeMCU là một nền tảng mã nguồn mở, thiết kế phần cứng của nó có thể mở để chỉnh sửa hoặc sửa đổi hoặc xây dựng thêm
Nó hỗ trợ các giao thức truyền thông nối tiếp như UART, SPI, I2C,
Hình 3.3 Sơ Đồ Chân NodeMCU ESP8266
Nhãn GPIO Đầu vào Đầu ra Ghi chú
D0 GPIO16 không gián đoạn không hỗ trợ PWM hoặc I2C
MỨC CAO khi khởi động Sử dụng để đánh thức khi ngủ sâu
D1 GPIO5 OK OK thường được sử dụng như
D2 GPIO4 OK OK thường được sử dụng như
D3 GPIO0 kéo lên OK kết nối với nút FLASH, khởi động không thành công nếu kéo MỨC THẤP
MỨC CAO khi khởi động kết nối với đèn LED trên bo mạch, khởi động không thành công nếu kéo MỨC THẤP
D5 GPIO14 OK OK SPI (SCLK)
D6 GPIO12 OK OK SPI (MISO)
D7 GPIO13 OK OK SPI (MOSI)
SPI (CS) Khởi động không thành công nếu kéo MỨC CAO
RX GPIO3 OK Chân RX MỨC CAO khi khởi động
TX GPIO1 Chân TX OK
MỨC CAO khi khởi động đầu ra gỡ lỗi khi khởi động, khởi động không thành công nếu kéo MỨC THẤP
Rơ le là một công tắc điện từ có khả năng đóng mở mạch điện cơ hoặc điện tử Thiết bị này có thể chuyển đổi dòng điện nhỏ thành dòng điện lớn hơn theo yêu cầu Rơ le hoạt động bằng cách nhận tín hiệu điện và điều khiển thiết bị khác thông qua việc bật và tắt công tắc Dù là tiếp điểm normally closed hay normally open, rơ le không được cấp điện cho đến khi có dòng điện đi qua các điểm tiếp xúc, lúc đó trạng thái của nó mới thay đổi.
Module này được phát triển để chuyển đổi một thiết bị công suất cao duy nhất từ NodeMCU ESP8266, với khả năng điều khiển rơ le lên đến 10A ở mức 250VAC hoặc 30VDC.
Hình 3.4 Sơ đồ chân Module Relay 5V 1 kênh
Chân điều khiển rơ le hoạt động với mức tín hiệu tích cực thấp, có nghĩa là rơ le sẽ được kích hoạt khi chân được kéo xuống mức LOW và sẽ không hoạt động khi chân ở mức CAO.
• GND: là chân nối đất
• VCC: là chân cấp nguồn cho module
• COM (Common): Đây là chân nên kết nối với tín hiệu (điện lưới trong nhà) bạn đang định chuyển đổi
Cấu hình normally closed (NC) được sử dụng khi bạn cần rơle tắt theo mặc định Trong chế độ này, rơle luôn ở trạng thái đóng và chỉ mở khi nhận tín hiệu từ Arduino hoặc NodeMCU ESP8266, cho phép mạch hoạt động.
Cấu hình normally open (NO) hoạt động với rơle luôn ở trạng thái mở cho đến khi nhận tín hiệu từ Arduino hoặc NodeMCU ESP8266, kích hoạt mô-đun rơle để đóng mạch.
3.2.3 Cảm biến chuyển động PIR HC-SR501
Cảm biến thân nhiệt chuyển động PIR HC-SR501 là thiết bị phát hiện chuyển động hiệu quả, nhờ vào khả năng nhận diện bức xạ hồng ngoại từ con người, động vật và các vật phát nhiệt khác Cảm biến này cho phép điều chỉnh độ nhạy, giúp giới hạn khoảng cách phát hiện từ 0 đến 6m với góc quét 360 độ Ngoài ra, người dùng có thể tùy chỉnh thời gian kích trễ lên đến 30 giây thông qua biến trở tích hợp Với kích thước PCB 32x24mm, cảm biến hoạt động trong dải nhiệt độ từ 32-122°F (0-50°C) và điện áp từ 3.8V đến 5V, đồng thời tiêu thụ dòng điện ≤ 50uA, đảm bảo hiệu suất cao và độ bền lâu dài.
• Chân VCC : nguồn hoạt động của cảm biến cấpvào từ 4.5V đến 12V
• Chân OUT : Output kết nối với chân I/O của vi điều khiển hoặc relay Khi cho tín hiệu: o 0V không có vật thể qua
• Chân GND : chân đất nối GND
• Chế độ H: Điện áp ra V_out tự động giữ nguyên 3.3V cho đến khi không còn chuyển động
• Chế độ L: Điện áp ra V_out tự động chuyển về 0 khi hết thời gian trễ
Khi khởi tạo, module cần khoảng 1 phút để hoàn tất quá trình cài đặt Trong thời gian này, module sẽ tạo ra điện áp cao từ 1-3 lần trước khi chuyển sang chế độ chờ.
- Điện áp ra 1.5-3.3V, nếu sử dụng I/O 4.5-5.5V bạn nên lắp thêm trans
Nên hạn chế ánh sáng trực tiếp và các nguồn nhiễu gần bề mặt lăng kính của các module để giảm thiểu tín hiệu nhiễu Đồng thời, tránh sử dụng trong môi trường có nhiều gió để đảm bảo hiệu suất hoạt động tốt nhất.
CÀI ĐẶT
Home Assistant
Để quản lý smart home hiệu quả, cần một nền tảng quản lý, trong đó Home Assistant là lựa chọn phổ biến Home Assistant là phần mềm đa nền tảng với nhiều phương pháp cài đặt Bài viết này sẽ trình bày cách cài đặt thông dụng nhất trên hệ điều hành Windows 10.
PC đã có sẵn phần mềm tạo máy ảo Oracle VM VirtualBox
To begin, open your web browser and navigate to https://www.home-assistant.io/installation/windows Next, select the "VirtualBox (.vdi)" option to download the installation file for the virtual machine Once the download is complete, you will need to extract the files.
Next, we will launch Oracle VM VirtualBox to create a new virtual machine for running the Home Assistant installation that we have just downloaded and extracted.
Mở cửa sổ VirtualBox lên và chọn “New”
In the "Create Virtual Machine" window, select "Linux" for the "Type," choose "Other Linux (64-bit)" for the "Version," and enter a custom name in the "Name" field before clicking "Next" to proceed with the Home Assistant installation.
Trong cửa sổ "Memory Size", bạn sẽ chọn dung lượng RAM cho máy ảo Lưu ý rằng dung lượng RAM không được vượt quá dung lượng RAM của máy thật Sau khi hoàn tất, hãy chọn "Next" để tiếp tục.
Để cài đặt Home Assistant, trước tiên hãy chọn file cài đặt đã tải về và đánh dấu vào ô “Use an existing virtual hard disk file” Tiếp theo, nhấn vào biểu tượng thư mục bên cạnh để chọn file Nếu file không xuất hiện trong bảng Hard Disk Selector, hãy nhấn nút “Add” để thêm file đã giải nén Sau khi chọn file, nhấn “Choose” và sau đó nhấn “Create” để tạo máy ảo Cuối cùng, điều chỉnh một số thông số cần thiết để hoàn tất quá trình cài đặt máy ảo.
Ta chọn “Settings”, chọn “System” và chọn tab “Motherboard”, tích vào ô Enable EFI (special Oses only)
Tiếp tục, ta chọn “Network”, chọn tab “Adapter1”, trong ô “Attached to:”, chọn
“Bridged Adapter” để Home Assistant có địa chỉ IP trong mạng Lan cục bộ Rồi chọn
Tại cửa sổ chính của VM VirtualBox, ta chọn máy ảo có tên ta vừa cài đặt rồi chọn “Start” để bắt đầu chạy máy ảo
Máy ảo giả lập Home Assistant bắt đầu chạy và cài đặt
HassIO được cài đặt thành công được cài đặt với địa chỉ IP 192.168.1.26
Truy cập vào trang web http://homeassistant.local:8123/ hoặc http://X.X.X.X:8123, trong đó X.X.X.X là địa chỉ IP của máy ảo Home Assistant đã cài đặt, để tạo tài khoản và đăng nhập vào HassIO Lưu ý rằng bạn sẽ cần chờ khoảng 20 phút để hệ thống hoàn tất việc tạo giao diện.
Sau khi hoàn tất việc tạo tài khoản, Home Assistant sẽ yêu cầu người dùng chọn vị trí và đặt tên cho smarthome của mình Sau khi hoàn thành các bước này, người dùng chỉ cần nhấn “Next” để tiếp tục Đây là giao diện khởi đầu cho Home Assistant, đánh dấu việc cài đặt đã hoàn tất.
MQTT – Add-on Mosquitto broker
Sau khi hoàn tất cài đặt Home Assistant, bước tiếp theo là cài đặt Mosquitto broker để quản lý các thiết bị trong hệ thống smart home Đầu tiên, bạn hãy vào mục “Cài đặt” và sau đó chọn tab “Add-ons”.
Ta click vào “ADD-ON STORE” sau đó gõ vào ô tìm kiếm “mqtt” để tìm kiếmAdd-on “Mosquitto broker” Sau đó click vào Add-on “Mosquitto broker”
Rồi chọn “Install” để cài đặt vào Home Assistant
Sau đó ta chọn “Start” để bắt đầu dịch vụ
Tạo user_mqtt để quản lý các bản tin MQTT:
1 Chọn “Settings” sau đó chọn “People”
3 Ở “Name” điền tên user Sau đó tích vào “Allow person to login” để cho phép tài khoản đăng nhập
4 Tạo mật khẩu cho tài khoản
- Sau đó tích vào “Can only login from the local network” để chỉ cho phép tài khoản đăng nhập từ mạng local, tăng tính bảo mật cho HomeAssistant
- Không tích vào “Administator” để hạn chế quyền của user này không cho chạy dưới quyền admin
5 Tích vào “Create” để tạo user
1 Chọn “Settings”, sau đó chọn “Devices & Services”
• Đặt tên cho broker là “core-mosquitto”
• Username và mật khẩu lấy từ tài khoản user_mqtt vừa tạo ở trên Sau đó bấm Next → Submit → Finish
Cài đặt Samba Share trên HomeAssistant để cấu hình “configuration.yaml”:
Tạo tài khoản và mật khẩu để quản lý file được chia sẻ Cấu hình địa chỉ IP theo địa chỉ
To access the file system of HomeAssistant, first note its IP address and save the settings before starting the Samba Share Open File Explorer and enter the HomeAssistant IP address in the network section, then press Enter You will need to log in with the username and password configured in Samba Share to access the system files.
Next, we locate the "configuration.yaml" file and open it with Notepad++ to configure the entities We add status topics and set the states for the MQTT entities.
Vì file “configuration.yaml” có đuôi yaml, vì vậy các dữ liệu trong file sẽ được thể hiện dưới dạng ngôn ngữ YAML
Trong bài viết này, chúng ta sẽ bổ sung các thực thể và các chủ đề liên quan Cụ thể, hai thực thể được thêm vào là module relay 5V và cảm biến PIR 501 Ba dòng “state_topic:”, “command_topic:”, “availability_topic:” sẽ tương ứng với ba kênh của mqtt broker Giá trị “payload” sẽ tương ứng với giá trị của “state_topic”.
“state” tương ứng với giá trị của “command_topic”, các giá trị “payload_available”,
“payload_not_available” tương ứng với giá trị của “availablility_topic”
Sau đó, ta sẽ phải check xem cấu hình đã đúng hay chưa Nếu sai thì phải sử lại cho đúng sau đó bấm “Restart”
After selecting "OK," wait for a moment while the server restarts Once Home Assistant is rebooted, it will recognize the newly added MQTT switch (relay) and binary sensor (PIR 501).
Để kiểm tra hoạt động của MQTT Broker, sử dụng công cụ MQTT Explorer để kiểm tra cổng 1833 trên địa chỉ IP của MQTT broker Nếu kết quả hiển thị là "connected", điều này xác nhận rằng Mosquitto broker đang hoạt động Ô Module IP nên được điền với địa chỉ IP của máy ảo Home Assistant.
Sơ đồ thuật toán
Hình 4.1 Sơ đồ thuật toán