Trong các hệ thống nhà thông minh, có nhiều cách để theo dõi sự hiện diện của cá nhân trong một căn phòng. Các cảm biến phát hiện chuyển động sử dụng công nghệ mmWave và PIR thường được áp dụng, hay các cơ chế đơn giản hơn như cảm biến cửa mở/đóng. Tuy nhiên, để phát hiện hiện diện liên tục – tức là một người đang ở trong phòng và không di chuyển – mọi thứ trở nên phức tạp hơn nhiều. Nhiều cảm biến quảng cáo khả năng này nhưng thực tế lại dễ bị đánh lừa khi người dùng ngồi yên một chỗ (ví dụ: nằm trên giường hay xem phim trên ghế sofa). Đó là lý do một giải pháp cảm biến hiện diện bằng ESP32 đã được phát triển và hoạt động hiệu quả.
Giải pháp này hoạt động đơn giản: bạn có thể theo dõi các thiết bị di động bằng Bluetooth trên ESP32. Kết hợp giữa tín hiệu hiện diện và cường độ tín hiệu, bạn có thể định nghĩa một cảm biến chuyển sang trạng thái “on” khi thiết bị của bạn nằm trong phạm vi. Để phát hiện các thiết bị một cách nhất quán, Home Assistant và ESPHome là những công cụ không thể thiếu. Hầu hết các thiết bị hiện đại sử dụng Địa chỉ Riêng Tư Có Thể Giải Mã (RPA), quảng bá một địa chỉ MAC ngẫu nhiên. Mặc dù có thể thu thập Khóa Giải Quyết Danh Tính (IRK) để kiểm tra xem một địa chỉ ngẫu nhiên có thuộc về IRK cụ thể nào không, nhưng khóa này không thể thu được bằng ESPHome và khá phức tạp để truy xuất ngay cả khi không dùng ESPHome. Đối với iPhone, bạn có thể theo dõi bằng cách lấy IRK hoặc sử dụng tích hợp Bermuda HACS. Tuy nhiên, giải pháp cho Android đơn giản hơn nhiều và chỉ cần ứng dụng Home Assistant. Bermuda vẫn rất hữu ích cho người dùng Android trong một số tình huống nhất định, điều này sẽ được giải thích rõ hơn sau.
Cần lưu ý rằng thiết lập này có một số hạn chế, nhưng đối với phần lớn người dùng, nó sẽ hoạt động khá tốt. Bạn cần một bo mạch ESP32 có khả năng nhận tín hiệu Bluetooth Low Energy (BLE), cùng với ứng dụng Home Assistant và ESPHome. Ngăn xếp Bluetooth Low Energy cũng tiêu thụ khá nhiều RAM trên ESP32, vì vậy bạn có thể gặp vấn đề khi thêm tính năng này vào các thiết bị ESP32 đang được sử dụng. Tuy nhiên, bạn vẫn có thể thử nghiệm, vì nếu ESP32 hết RAM khi tính năng này được kích hoạt, bạn luôn có thể tải lên phiên bản mã mới đã loại bỏ nó. Cuối cùng, giải pháp này phụ thuộc vào việc điện thoại hoặc đồng hồ thông minh của bạn phải có mặt và hoạt động để cảm biến phát hiện.
Các sự cố có thể xảy ra nếu bạn bao gồm quá nhiều thành phần bổ sung trong cấu hình của thiết bị. Các thành phần tiêu tốn nhiều bộ nhớ như Trợ lý giọng nói và các thành phần âm thanh khác rất dễ gây ra vấn đề. Mặc dù vậy, việc triển khai giải pháp này cực kỳ dễ dàng nếu bạn có một chiếc ESP32 dự phòng hoặc không sử dụng nhiều tài nguyên trên đó.
Hướng dẫn thiết lập điện thoại hoặc smartwatch của bạn
Kích hoạt cài đặt đơn giản trong ứng dụng Home Assistant
Cài đặt bộ phát BLE (iBeacon) trong ứng dụng Home Assistant trên điện thoại Android, cho phép ESP32 phát hiện hiện diện
Điều đầu tiên bạn cần làm là truy cập ứng dụng Home Assistant trên điện thoại và điều hướng đến mục Cài đặt (Settings), sau đó chọn Ứng dụng đồng hành (Companion app). Tiếp theo, chọn Quản lý cảm biến (Manage sensors) và cuộn xuống tìm Bộ phát BLE (BLE transmitter). Ở đây, chúng ta sẽ kích hoạt iBeacon – một giao thức do Apple phát triển cho phép theo dõi các thiết bị cụ thể, được coi là tiền thân của AirTags khi ban đầu nó nhắm đến các thiết bị nhỏ, có thể theo dõi. Giao thức này rất tiết kiệm năng lượng, và có các cài đặt mà chúng ta có thể kích hoạt để làm cho nó hiệu quả hơn nữa. Nếu bạn sở hữu một đồng hồ thông minh Wear OS, bạn cũng có thể kích hoạt tính năng này thông qua các bước tương tự trong ứng dụng Home Assistant, đặc biệt nếu bạn thường xuyên di chuyển quanh nhà mà không mang theo điện thoại.
Các cài đặt chính chúng ta muốn bật là lowPower trong “Advertise mode” và ultraLow trong “Transmitting power” ngay khi bạn đã kích hoạt bộ phát BLE. Ngoài ra, bạn có thể cuộn xuống để chọn “Transmit on Home network only”, cài đặt này được định nghĩa trong Cài đặt ứng dụng đồng hành của Home Assistant. Hãy thêm tất cả các SSID mạng gia đình của bạn (nếu có nhiều), và bạn sẽ chỉ phát các beacon này khi ở trong mạng gia đình. Điều này không chỉ giúp bảo vệ quyền riêng tư mà còn giúp tiết kiệm pin khi bạn ra ngoài. Cuối cùng, ở cuối trang Bộ phát BLE, hãy ghi lại UUID. Đây chính là giá trị mà chúng ta sẽ tìm kiếm cụ thể trên ESP32 của mình.
Với thiết lập đó đã sẵn sàng, chúng ta có thể chuyển sang ESPHome, nơi chúng ta sẽ thêm mã để theo dõi điện thoại hoặc đồng hồ thông minh nhằm nhận diện hiện diện. Nếu bạn nhận thấy có tác động đáng kể đến thời lượng pin, bạn có thể tắt tùy chọn bộ phát BLE trong ứng dụng Home Assistant và thay vào đó sử dụng Bermuda. Bermuda có thể sử dụng một ESP32 được thiết lập như một Bluetooth Proxy và không cần bất kỳ mã cụ thể nào khác để hoạt động. Nhìn chung, Bermuda yêu cầu thiết lập phức tạp hơn một chút, nhưng về lâu dài nó có thể tiện lợi hơn và thậm chí có thể ước tính khoảng cách.
Thiết lập ESP32 với ESPHome để nhận diện hiện diện
Cấu hình cảm biến nhị phân đơn giản
Sơ đồ kết nối hoặc mô hình hoạt động của cảm biến hiện diện ESP32 trong hệ thống nhà thông minh
Khi bạn đã sẵn sàng với ESPHome, những dòng mã sau đây là những gì được sử dụng trên ESP32 để phát hiện hiện diện. Lưu ý rằng bạn cần đảm bảo mọi thứ được thụt lề đúng cách và bạn phải nhập UUID của mình vào trường “ibeacon_uuid”. Điều này sẽ cho phép một bộ theo dõi nhận diện UUID của bạn khi nó ở gần và sẽ hiển thị một cảm biến trong Home Assistant chuyển sang trạng thái “on” khi bạn ở gần. Thiết bị ESP32 này cũng có thể được dùng làm bộ điều khiển cho đèn Govee H615B, và cảm biến hiện diện này hoạt động rất tốt bên cạnh đó.
binary_sensor:
- platform: ble_presence
ibeacon_uuid: '(UUID của bạn ở đây)'
name: "ESP32 BLE Tracker Tên điện thoại của bạn"
esp32_ble_tracker:
id: tracker
on_ble_advertise:
- then:
# Điều này không bắt buộc, nhưng có thể tốt cho việc gỡ lỗi bằng cách thêm mã vào khối "then:"
scan_parameters:
interval: 400ms
window: 200ms
Sau khi thêm mã, bạn có thể cài đặt nó vào ESP32 của mình và nó sẽ hoạt động. Thông thường, thiết bị sẽ nhận diện điện thoại của bạn trong vòng vài giây sau khi bạn bước vào phòng, mặc dù đôi khi có thể mất tới hai phút. Dù vậy, vẫn có rất nhiều không gian cho các tự động hóa. Dưới đây là một số điều bạn có thể thực hiện:
- Nếu cảm biến ở trong phòng ngủ và bạn ở đó vài phút sau khi mặt trời lặn, hãy kích hoạt chế độ “đi ngủ”.
- Nếu cảm biến ở văn phòng, hãy kích hoạt chế độ “làm việc” nếu đó là trong giờ làm việc của bạn.
- Bật hoặc tắt đèn khi bạn vào hoặc rời khỏi phòng.
- Tắt các thiết bị ở các phòng khác khi bạn ở một phòng trong thời gian dài.
Có rất nhiều không gian để thử nghiệm và tự động hóa với giải pháp này, và điểm thú vị là bạn có thể mua một chiếc ESP32 chỉ với vài đô la. Bất kỳ ESP32 cơ bản nào cũng có thể được sử dụng, vì hầu hết chúng đều hỗ trợ Bluetooth Low Energy, ngoại trừ một số dòng đáng chú ý như ESP32-S2 và ESP32-P4. Bạn có thể thêm cảm biến này vào một hệ thống hiện có hoặc tận dụng một chiếc ESP32 cũ thành cơ chế phát hiện hiện diện. Đây là một cách tuyệt vời để khai thác nhiều hơn từ những thiết bị nhỏ bé này và tăng thêm chức năng cho các thiết bị bạn có thể đã có ở nhiều nơi trong ngôi nhà của mình.
Tổng thể, việc triển khai cảm biến hiện diện liên tục với ESP32 và Home Assistant là một giải pháp mạnh mẽ và đáng tin cậy, giúp giải quyết triệt để vấn đề mà các cảm biến truyền thống thường gặp phải. Với chi phí thấp và khả năng tùy biến cao, đây là một lựa chọn lý tưởng cho những ai muốn nâng cấp hệ thống nhà thông minh của mình lên một tầm cao mới, mang lại trải nghiệm tự động hóa mượt mà và thông minh hơn. Hãy bắt đầu thử nghiệm ngay hôm nay để khám phá toàn bộ tiềm năng mà giải pháp này mang lại.