- Monty Home Device Hacking Guide là hướng dẫn mở rộng thiết bị Monty Home BLE, vốn ban đầu dùng cho giám sát compost, bằng Raspberry Pi để lấy, hiển thị và tự động hóa dữ liệu môi trường như nhiệt độ, độ ẩm, pin, v.v.
- Kho lưu trữ cung cấp 3 dự án dùng Python, BLE và Raspberry Pi, bao gồm điều khiển LED theo ngưỡng nhiệt độ, hiển thị OLED I2C và gửi cảnh báo qua IFTTT
- Các lệnh BLE gồm nhiệt độ
;QT\r\n, độ ẩm ;QH\r\n, pin ;QL\r\n, CO2 ;QC\r\n, TVOC ;QO\r\n, phiên bản firmware ;QV\r\n, khởi động lại ;CR\r\n, khôi phục cài đặt gốc ;CF\r\n, v.v.
- Môi trường chạy yêu cầu Raspberry Pi hỗ trợ BLE, thiết bị Monty Home BLE, Python 3, Bleak, Requests, Adafruit CircuitPython SSD1306, Pillow, v.v.
- Người dùng có thể thay đổi lệnh BLE trong script hoặc mở rộng điều kiện của
notification_handler để xử lý dữ liệu cảm biến khác, tích hợp dashboard, ghi log và thêm tự động hóa
Hướng dẫn mở rộng thiết bị Monty Home BLE
- Monty Home Device Hacking Guide là hướng dẫn từng bước để mở rộng chức năng của thiết bị Monty Home BLE bằng Raspberry Pi
- Thiết bị Monty Home ban đầu được thiết kế để giám sát compost và thu thập dữ liệu nhiệt độ, độ ẩm cùng các chỉ số môi trường khác
- Hướng dẫn này dành cho người dùng quan tâm đến thiết bị BLE, ứng dụng IoT và giám sát môi trường
- Nơi mua Monty Home được giới thiệu tại https://montycompost.co/
3 dự án đi kèm
-
Điều khiển LED theo nhiệt độ
- Dùng dữ liệu nhiệt độ từ thiết bị Monty Home để điều khiển LED trên Raspberry Pi
- Khi nhiệt độ vượt ngưỡng chỉ định, LED sẽ bật để hiển thị cảnh báo
- Các kỹ thuật được đề cập gồm điều khiển LED qua GPIO, truy vấn dữ liệu BLE và xử lý điều kiện bằng Python
- Phần cứng cần có là Raspberry Pi hỗ trợ BLE, LED và điện trở 330Ω
-
Hiển thị nhiệt độ và độ ẩm trên OLED I2C
- Hiển thị nhiệt độ và độ ẩm theo thời gian thực lấy từ thiết bị Monty Home lên màn hình OLED nối với Raspberry Pi
- Sử dụng màn hình SSD1306 OLED để hiển thị dữ liệu động, triển khai truy xuất dữ liệu BLE và cập nhật màn hình
- Phần cứng cần có là Raspberry Pi hỗ trợ BLE và màn hình SSD1306 OLED, có thể cấu hình 128x32 hoặc 128x64
-
Cảnh báo nhiệt độ qua IFTTT
- Khi nhiệt độ của thiết bị Monty Home vượt ngưỡng nhất định, Raspberry Pi sẽ gửi thông báo qua IFTTT
- Bao gồm tích hợp IFTTT cho tự động hóa IoT, yêu cầu HTTP dựa trên thư viện
requests, và kết hợp dữ liệu BLE với thông báo đám mây
- Phần cứng và tài khoản cần có là Raspberry Pi có Wi‑Fi và tài khoản IFTTT
Môi trường chạy và phụ thuộc
- Phần cứng cần Raspberry Pi Zero 2 hoặc mẫu Raspberry Pi khác hỗ trợ BLE, cùng thiết bị Monty Home BLE
- Tùy dự án có thể cần thêm các thành phần như LED, màn hình OLED hoặc tài khoản IFTTT
- Hệ điều hành có thể dùng Raspberry Pi OS Lite hoặc Raspberry Pi OS with Desktop
- Cần cài Python 3 và
pip
- Các thư viện Python được dùng gồm
- Bleak: giao tiếp BLE,
pip install bleak
- Requests: tích hợp IFTTT,
pip install requests
- Adafruit CircuitPython SSD1306: điều khiển OLED,
pip install adafruit-circuitpython-ssd1306
- Pillow: xử lý hình ảnh cho OLED,
pip install pillow
Các lệnh BLE của Monty Home
- Các lệnh BLE có thể được thay thế hoặc chỉnh sửa trong script Python để yêu cầu dữ liệu khác hoặc thực hiện hành động khác
| Lệnh |
Chức năng |
;QA\r\n |
Trả về chỉ mục của toàn bộ dữ liệu trong bộ nhớ flash |
;QP\r\n |
Trả về chỉ mục dữ liệu đang chờ trong bộ nhớ flash |
;QR\r\n |
Trả về bản ghi theo chỉ mục, nếu không có chỉ mục thì trả về NACK |
;QS\r\n |
Trả về trạng thái thiết bị |
;QL\r\n |
Trả về mức pin còn lại theo phần trăm |
;QT\r\n |
Trả về giá trị đo nhiệt độ từ cảm biến NTC |
;QH\r\n |
Trả về giá trị đo độ ẩm tương đối |
;QO\r\n |
Trả về giá trị đo TVOC gần nhất |
;QC\r\n |
Trả về giá trị đo CO2 gần nhất |
;QU\r\n |
Trả về ID duy nhất của thiết bị |
;QV\r\n |
Trả về phiên bản firmware của thiết bị |
;CR\r\n |
Khởi động lại thiết bị |
;CF\r\n |
Thực hiện khôi phục cài đặt gốc |
Cách chạy mã
- Mỗi dự án đi kèm một script Python để thiết lập kết nối BLE, gửi truy vấn và xử lý dữ liệu
- Trình tự chạy là di chuyển tới thư mục dự án trong terminal của Raspberry Pi rồi chạy script
cd /path/to/project
python3 project_script.py
project_script.py cần được thay bằng tên file thực tế, ví dụ project1_temperature_led.py
Điểm tùy biến
- Thay đổi lệnh BLE sẽ cho phép lấy các loại dữ liệu khác
- Ví dụ, để truy vấn độ ẩm thay vì nhiệt độ, thay lệnh như sau
command = ";QT\r\n"
command = ";QH\r\n"
- Thêm điều kiện vào hàm
notification_handler sẽ cho phép giải mã và hiển thị nhiều loại dữ liệu như nhiệt độ và độ ẩm
- Dữ liệu có thể được tích hợp vào nền tảng IoT hoặc dashboard để trực quan hóa theo thời gian thực, ghi log và tự động hóa bổ sung
Tài liệu tham khảo
1 bình luận
Ý kiến trên Hacker News
Nảy ra một ý tưởng. Tôi có một đống phân ủ lớn từ việc dọn chuồng ngựa, chủ yếu gồm dăm gỗ thấm nước tiểu và phân ngựa gần như đã phân hủy, có trộn thêm một ít đất
Mùa hè này tôi đã thử trồng khoai tây và cà rốt; khoai tây rất tốt, còn cà rốt thì không mấy khả quan, nhưng tôi cho là do tưới nước sai cách
Có vẻ nó vẫn chưa phân hủy hoàn toàn, nên nếu đo nhiệt độ thì có thể biết được nó đang hoạt động mạnh đến mức nào. Tôi cũng có một cảm biến nhiệt độ dựa trên ESP8266 từng dùng để theo dõi nhiệt độ môi trường trong một dự án lên men khác
Có lẽ chỉ cần bọc kín thermistor, đặt 8266 vào hộp IP67 rồi cắm lên đống phân ủ cùng với pin mặt trời là được. Nó đã có sẵn một trang web chạy trên miền
.local, nên chắc cũng không tốn nhiều côngCó khi cuối tuần này tôi sẽ thử thật
Phân nóng có nhiều hợp chất nitơ nên phân hủy nhanh trong đống ủ và sinh nhiều nhiệt trong quá trình đó. Nhà kính truyền thống từng dùng năng lượng từ phân đang mục để nuôi cây con và cành giâm vào mùa đông; phân gà, vịt và ngựa thuộc nhóm này
Phân lạnh có ít dinh dưỡng hơn và khi phân hủy cũng sinh ít nhiệt hơn, nên nguy cơ làm cháy cây thấp hơn. Các động vật nhai lại như bò, dê, cừu thuộc nhóm này vì chúng rút phần lớn nitơ trong thức ăn thực vật ra trong quá trình tiêu hóa. Lạc đà không bướu và alpaca không phải động vật nhai lại, nhưng phân của chúng ít dinh dưỡng nên có thể xem là phân lạnh
Không có ý chê sản phẩm, nhưng cá nhân tôi có lẽ không cần. Tuy vậy, tôi tò mò không biết họ đã xem xét quy mô ủ phân phải lớn đến mức nào để giám sát điện tử cải thiện được sản phẩm cuối cùng đủ để thu hồi vốn đầu tư chưa
Tôi có cảm giác quy mô phải khá lớn
Tôi thích cảm giác như cây nấm trong thiết kế gia dụng, và có lẽ họ nên đẩy mạnh hướng đó hơn
Trong các môi trường như vậy, insight dựa trên dữ liệu thực sự giúp tăng hiệu quả và giảm chi phí, chẳng hạn như tối ưu chu kỳ thông khí hoặc phát hiện điểm kém hiệu quả trước khi chi phí phình to. Có thể xem trang sản phẩm tại đây: (https://www.monty-pro.com)
Với hộ gia đình, trọng tâm không phải là tiết kiệm chi phí mà là cung cấp insight tiện lợi để người dùng ủ phân hằng ngày thu được kết quả tốt hơn từ công sức của mình. Mục tiêu là làm cho toàn bộ trải nghiệm ủ phân ở quy mô nhỏ phong phú hơn
collectd là một hệ thống giám sát mã nguồn mở, có thể ghi dữ liệu chẳng hạn vào file phẳng RRD hoặc SQLite, và có thể chuyển các chỉ số đã thu thập sang các ứng dụng giám sát, biểu đồ và phát hiện bất thường như Grafana hoặc InfluxDB
Nagios có tính năng "state flaping detection" để ngăn các cảnh báo không cần thiết
collectd-python-plugins có script dùng cảm biến i2c và Python để giám sát độ ẩm/nhiệt độ: https://github.com/dbrgn/collectd-python-plugins
Cũng có cảm biến độ ẩm đất LoRaWAN, nhưng cần pin hoặc cách sạc tại hiện trường
"Satellite images of plants' fluorescence can predict crop yields" (2024)
"Sensor-Free Soil Moisture Sensing Using LoRa Signals (2022)" https://dl.acm.org/doi/abs/10.1145/3534608 .. https://news.ycombinator.com/context?id=40234912
Tìm kiếm cảm biến độ ẩm đất mã nguồn mở: https://www.google.com/search?q=open+source+soil+moisture+se...
Tìm kiếm wiki về giám sát cây trồng: https://www.google.com/search?q=crop+monitoring+wikipedia ...
Nông nghiệp chính xác: https://en.wikipedia.org/wiki/Precision_agriculture
Nông nghiệp số: https://en.wikipedia.org/wiki/Digital_agriculture
Tìm kiếm hệ thống giám sát cây trồng trên GitHub: https://www.google.com/search?q=crop+monitoring+system+site%...
SIEM: https://en.wikipedia.org/wiki/Security_information_and_event...
Tôi tò mò không biết đang dùng cảm biến của nhà sản xuất và model nào. Tôi từng thử giám sát môi trường bằng cảm biến rất rẻ trong một dự án sở thích, và đã có trải nghiệm rất tệ về độ lặp lại của giá trị cảm biến cũng như khả năng chống nhiễu của cảm biến CO2
Trên HN cũng từng có thảo luận liên quan, nhờ đó tôi nhận ra và xác minh được rằng nhiễu là nguyên nhân của vấn đề
Tôi có vài ý tưởng dự án vượt ra ngoài mức làm trên breadboard ở nhà, và vì phần mềm lẫn hạ tầng đang trưởng thành hơn, giờ tôi muốn xây trên các linh kiện đáng tin cậy
Nếu bạn chia sẻ thêm ý tưởng dự án, chúng tôi có thể trao đổi sâu hơn trong phạm vi có thể hữu ích
Thật tốt khi thấy ngày càng có nhiều giải pháp giám sát ủ phân quy mô nhỏ toàn diện và có khả năng mở rộng hơn. Cộng đồng Gathering for Open Ag Tech cũng có thể quan tâm (https://forum.goatech.org/)
Cũng hay, nhưng tôi nghĩ để vận hành ủ phân nóng thì chỉ một cái nhiệt kế thôi cũng khá đơn giản rồi. Nếu đống phân ủ của tôi vượt 45°C, có thể khá chắc rằng có vi sinh vật ưa nhiệt và chúng đang hoạt động
Tuy nhiên hệ thống của chúng tôi tỏa sáng khi bạn muốn đi sâu hơn một chút. Ví dụ, nếu thêm dữ liệu về khí, mức độ ẩm và áp suất khí quyển, bạn có thể xử lý sự cố hoặc tối ưu hóa quá trình hiệu quả hơn. Có thể thấy hoạt động đang hiếu khí hay kỵ khí, độ ẩm có lệch quá nhiều về một phía hay không, v.v.
Khi cấu hình ủ hoặc vật liệu đầu vào trở nên phức tạp, hoặc quá trình bị dừng mà không rõ lý do, những insight như vậy sẽ hữu ích. Tất nhiên không phải ai cũng cần đủ loại tính năng; chỉ với một nhiệt kế đáng tin cậy và cảm nhận về ủ phân cũng có thể tạo ra phân ủ tốt và lành mạnh
Nó là một thùng nhựa đen hình Dalek, nên thể tích so với diện tích bề mặt quá lớn, và vị trí đặt cũng rất nhiều bóng râm
Tôi tò mò hơn về tính thực tiễn của các giá trị cảm biến thu được khi giám sát compost. Nhiệt độ và độ ẩm thì trực quan, nhưng chẳng hạn thành phần khí có gợi ý tỷ lệ carbon/nitơ không, hay là để kiểm tra xem đống ủ có đang chuyển sang trạng thái yếm khí không?
Tôi cũng thắc mắc liệu áp suất khí quyển có phải là một chỉ báo thay thế chung cho tốc độ phân hủy không
Ngoài ra cũng muốn biết liệu những điều học được trong quá trình giám sát có từng khiến bạn thực sự thay đổi thói quen ủ compost không
Khi xem cùng dữ liệu nhiệt độ, có thể biết khá rõ hoạt động đó là hiếu khí, tức một đống compost khỏe mạnh, hay là yếm khí, điều không mong muốn và có thể gây mùi. Ví dụ, nếu TVOC tăng vọt trong tình huống lượng oxy khả dụng giảm, khả năng cao là điều kiện yếm khí
Áp suất khí quyển được dùng trong ứng dụng companion Monty Mobile như một phần của việc phát hiện sự kiện đảo trộn đống ủ. Ứng dụng cũng phân tích cùng các dữ liệu khác xem những thay đổi điều kiện như mức độ ẩm hay tần suất đảo trộn ảnh hưởng thế nào đến quá trình phân hủy
Với hầu hết người dùng, chỉ cần một chỉ báo thay thế chung để nắm được đống ủ đang "hoạt động" hay "đình trệ" là đủ. Nhờ đó họ có thể điều chỉnh quá trình, chẳng hạn thêm vật liệu nâu, điều chỉnh độ ẩm hoặc tăng thông khí
Kết quả compost thay đổi rất nhiều tùy theo cấu hình như thùng quay, thùng ủ, trại nuôi giun, cũng như đầu vào như phân chuồng, rác thực phẩm, rác vườn. Dù vậy, dữ liệu 24 giờ của hệ thống chúng tôi giúp đơn giản hóa quá trình thay đổi hành vi
Vì nhận được phản hồi tức thì thay vì dựa vào cách "thử rồi chờ, rồi thử lại", điều này có thể tạo ra khác biệt lớn cho cả người mới lẫn người có kinh nghiệm
Với cá nhân tôi, Monty cũng là một công cụ học tập rất hữu ích. Khi dùng ứng dụng Monty Mobile, tôi quan tâm hơn đến đống compost của mình và cũng nhớ tốt hơn việc bổ sung vật liệu khi cần để điều chỉnh đống ủ. Tôi thực sự cảm thấy kết nối hơn với những gì đang diễn ra bên trong
Từ lâu tôi đã muốn làm một dự án tương tự. Kiểu như một cọc duy nhất cắm vào chậu cây có thể đo thành phần đất, mức dinh dưỡng, độ ẩm, tốc độ gió, cường độ ánh sáng, độ ẩm không khí, v.v., rồi đưa ra khuyến nghị chăm sóc cây và tối ưu hóa tăng trưởng
Cuối cùng thì tôi vẫn chưa làm. Không biết có khuyến nghị nào về việc mua cảm biến không
Việc tìm được cảm biến phù hợp trải qua rất nhiều thử-sai, đặc biệt vì điều kiện ủ compost quá khắc nghiệt. Nếu bạn bắt đầu lại dự án, tôi muốn cổ vũ hoặc cùng so sánh ghi chép với nhau
Có thể xem Monty Monitor tại đây: https://montycompost.co/products/im-perfect-monty-monitor
Không biết bạn đọc được suy nghĩ của tôi kiểu gì, nhưng thật tình cờ là tôi vừa mới đang tìm cặp nhiệt điện để giám sát compost