Cảm biến khu vực, theo dõi chuyển động của bạn khi đi qua các phòng trong nhà để tạo tự động hóa
Hãy thử tưởng tượng bạn di chuyển từ phòng ngủ qua phòng khách và muốn các thiết bị trong phòng ngủ tự động tắt, phòng khách tự động bật. Hoặc khi đi chuyển từ phòng khách đi tới Garage trong giờ bạn thường đi làm thì cửa Garage tự mở.
Trong thời đại hiện nay thì gần như mỗi người đều có một thiết bị điện tử nào đó trên người, có thể là smart phone, smart watch hay smart ring. Dự án này mình sẽ sử dụng tín hiệu bluetooth từ các thiết bị này để xác định vị trí của một người ở các khu vực cụ thể trong nhà với độ chính xác cực kỳ cao.
[!summary] Một trong những lầm tưởng phổ biến Thông thường các dự án liên quan tới tracking bluetooth sẽ thất bại do đặc trưng loại công nghệ này bị hạn chế số lần gửi tín hiệu lên trong khoảng thời gian nhất định, nên rất dễ bị tracking nhầm. Với dự án này mình đã có thể giảm tỉ lệ lỗi xuống ở mức tối thiểu, và sử dụng trong nhiều tháng qua rất ổn định
Ý tưởng thực hiện
Chúng ta cần một thiết bị đóng vai trò đọc địa chỉ MAC của các thiết bị bluetooth nhằm xác định khoảng khách nhờ vào RSSI. Tương tự cách dơi xác định mục tiêu khi di chuyển. Ở đây mình sẽ lựa chọn mạch ESP32-C3 để chạy firmware đọc tín hiệu bluetooth.
Có một dự án chuyên biệt cho phần này ở đây: https://espresense.com/. Mình đã dùng thử dự án này nhưng có một điểm yếu là nó tạo ra rất nhiều cảm biến hiện diện cho 1 thiết bị, và dễ bị tình trạng cùng lúc mình xuất hiện ở cả 2 phòng do cả 2 thiết bị đọc đều nhận được tín hiệu, cho dù mình cố gắng căn chỉnh chỉ số RSSI tới đâu. Vì bản chất công nghệ bluetooth đễ bị cản sóng nên chỉ cần một thay đổi nhỏ như để điện thoại vào túi quần dày hơn nó cũng đã sai lệch chỉ số phát sóng tới thiết bị nhận.
Nhưng nếu chúng ta tạo ra một mạng lưới các thiết bị đọc sóng bluetooth này để các thiết bị đọc thay phiên nhau nhận tín hiệu tương tự như cách WiFi Mesh hoạt động thì sao? Đấy là lý do mình tìm đến khái niệm Bluetooth Proxy. https://esphome.io/projects/index.html
Flash firmware bluetooth proxy cho ESP32
Yêu cầu
- Mạch ESP32-C3 hoặc ESP32 bất kỳ có hỗ trợ bluetooth
- Cáp USB có type C hoặc microUSB có hỗ trợ truyền data để kết nối mạch vào máy tính
- Home Assistant ở version mới nhất (bản cài qua docker cũng được)
- Một tâm hồn thật đẹp để đảm bảo thành công ngay lần đầu tiên
Các bước thực hiện
- Truy cập trang Flash https://esphome.io/projects/index.html
- Giữ nút Boot hoặc Flash trên mạch ESP
- Bấm connect để tiến hành kết nối vào mạch và flash. Nhớ chọn "Xóa sạch"
- Sau khi flash xong đợi một lúc cho mạch khởi động, bấm next để kết nối vào wifi nhà bạn
- Trên giao diện máy web sẽ báo là kết nối xong
Cắm dây vào trong lúc đang giữ nút, đèn không sáng là vào chế độ flash thành công
Kết nối mạch với HASS
Kết nối mạch ESP32 với HASS
https://github.com/esphome/esphome Bạn thêm add on ESP Home để tiện quản lý các mạch ESP này cũng như nó sẽ tự động kết nối được vào HASS luôn
Cài đặt Bermuda BLE
Thông qua HACS bạn tiến hành cài đặt tiện ích có tên Bermuda BLE Trilateration giúp kết hợp các bluetooth proxy này lại và thực hiện tracking các thiết bị bluetooth trong khu vực.
Sau khi Tải về, bạn truy cập vào phần Add Integration và thêm tiện ích Bermuda vào. Cài đặt bấm next mấy bước là xong. Giờ tới phần cài đặt
Cấu hình Bermuda BLE Trilateration
Cấu hình thiết bị
Trong phần Select Devices, bạn click vào phần này chọn những thiết bị nào hiển thị tên rõ ràng để tiến hành track,
khi chọn xong nó sẽ hiển thị thiết bị này dưới dạng một device gồm các sensor cơ bản
Trong trường hợp danh sách không hiện thiết bị bạn muốn, thường mấy thiết bị Apple nó không hiển thị ra đâu mà nó sẽ Random MAC nên cần sử dụng cách làm dưới đây để lấy một đoạn mã số bí mật để tracking.
Tìm kiếm Bluetooth Mac Address
Sử dụng MacOS để tìm iOS/iPadOS/Watch OS Mac Adress
- Trên MacOS, hãy đảm bảo bạn đã đăng nhập bằng iCloud ID được liên kết với thiết bị của bạn.
- Khởi chạy ứng dụng Keychain Access .
- Ở thanh bên bên trái, hãy nhấp vào iCloud.
- Ở phía trên bên phải thanh tìm kiếm, nhập
bluetooth
. - Trên thiết bị Apple Watch của bạn, hãy đi tới Cài đặt > Giới thiệu, cuộn xuống để tìm địa chỉ Bluetooth, ở định dạng:
XX:XX:XX:XX:XX:XX
- Mở mỗi mục để tìm mục được liên kết với Apple Watch của bạn. Trường Tài khoản phải khớp với địa chỉ Bluetooth trên đồng hồ của bạn, ở định dạng:
Công khai: XX:XX:XX:XX:XX:XX
.
Nhấp vào vào Hiển thị mật khẩu. Nhập mật khẩu macOS của bạn hai lần và sao chép nội dung.
Dán nội dung vào biểu mẫu bên dưới và nhấp vào 'Giải mã' để chuyển đổi nội dung này thành IRK. Mình chỉ dịch lại nội dung và có đính kèm hướng dẫn gốc kèm công cụ để bạn tự thực hiện lấy mã IRK https://espresense.com/beacons/apple
Cấu hình IRK vào HASS
Vào Cài đặt > Thiết bị > Thêm tích hợp > Tìm Private BLE Device
Bạn nhập mã Private BLE Device này vào phần configured devices nó sẽ nhận thiết bị mới
Tìm địa chỉ MAC của các thiết bị Android hoặc các thiết bị bluetooth khác
Để quét địa chỉ mac của các thiết bị bluetooth xung quanh, bạn có thể sử dụng app nRF Connect
Sau khi có địa chỉ MAC bạn chỉ cần nhập vào phần Cấu hình thiết bị như ở bước trước là được
Tìm địa chỉ Mac thiết bị Android
[!tip] Với Android bạn chỉ cần cài app Home Assistant, bật phần cảm biến Beacon monitor lên là sẽ hiện luôn đoạn mã Transmitting ID
Với Android bạn sẽ cấu hình thiết bị này vào HASS thông qua ibeacon
Cấu hình khoảng cách tín hiệu
Về cấu hình nhận diện khoảng cách (Global Options). Mình sử dụng cấu hình như dưới đây, các bạn có thể tùy chỉnh các thông số cho tới khi nào vừa ý.
Cấu hình Global theo như dưới
Chúc các bạn thực hiện thành công!
Nếu thấy nội dung bài viết hữu ích, hãy chia sẻ cho bạn bè và người thân. Đừng quên để lại email để theo dõi Geek Playground. Chân thành cám ơn các bạn và hẹn gặp lại trong những nội dung kế tiếp ❤️