Nền tảng Internet of Things (IoT) dựa trên ESPHome
(esphome.io)- ESPHome là một nền tảng biến các board như ESP32, ESP8266, BK72xx, RP2040 thành thiết bị nhà thông minh, cho phép cấu hình thiết bị bằng YAML thay vì C++
- Hỗ trợ điều khiển cục bộ và cập nhật qua mạng không dây, giúp giảm phụ thuộc vào cloud; có thể kết hợp cảm biến, màn hình và các component để tạo nhiều loại thiết bị khác nhau
- Phạm vi đối tượng rộng, từ người dùng DIY đến các đơn vị tích hợp chuyên nghiệp và nhà sản xuất tạo ra sản phẩm được chứng nhận Made for ESPHome
- Môi trường hỗ trợ bao gồm Espressif ESP32·ESP8266, Raspberry Pi RP2040, Nordic Semiconductor nRF52, Realtek RTL87xx, Beken BK72xx, cùng nền tảng host cho một số component
- Khi bắt đầu, lộ trình qua Home Assistant là dễ nhất; người dùng nâng cao có thể bắt đầu từ hướng dẫn dòng lệnh hoặc các dự án đã được cấu hình sẵn
Thiết bị nhà thông minh cục bộ được cấu hình bằng YAML
- ESPHome biến ESP32, ESP8266, BK72xx, RP2040 và các board được hỗ trợ khác thành thiết bị nhà thông minh
- Thay vì mã C++ phức tạp, thiết bị được cấu hình bằng tệp cấu hình YAML
-
Tính năng chính
- Cấu hình không cần lập trình: sử dụng cấu hình YAML đơn giản, không cần C++ phức tạp
- Cập nhật qua mạng không dây: có thể cập nhật mà không cần tiếp cận thiết bị về mặt vật lý
- Thiết kế mô-đun: hỗ trợ hàng trăm loại cảm biến, màn hình và các component khác
- Điều khiển cục bộ: hoạt động cục bộ mà không phụ thuộc vào cloud
-
Tài nguyên liên quan
Đối tượng sử dụng và cách bắt đầu
-
Ai sử dụng
- Người dùng DIY: tạo cảm biến, công tắc và màn hình phù hợp với nhu cầu cụ thể
- Người chơi nhà thông minh: mở rộng hệ thống tự động hóa gia đình bằng các thiết bị tùy biến giá rẻ
- Đơn vị tích hợp chuyên nghiệp: triển khai thiết bị thông minh điều khiển cục bộ cho khách hàng
- Nhà sản xuất: tạo sản phẩm được chứng nhận Made for ESPHome với firmware được chuẩn hóa
-
Vi điều khiển và môi trường thực thi được hỗ trợ
- Espressif ESP32·ESP8266: hỗ trợ các vi điều khiển ESP32·ESP8266 được dùng trong nhiều dự án IoT
- RP2040: hỗ trợ vi điều khiển RP2040 của Raspberry Pi
- Chip khác: hỗ trợ Nordic Semiconductor nRF52, Realtek RTL87xx, Beken BK72xx
- Nền tảng host trên desktop: có thể chạy nhiều component ESPHome ngay trên máy tính desktop
-
Cách bắt đầu
- Bắt đầu thông qua ứng dụng Home Assistant là lộ trình dễ nhất: Home Assistant Guide
- Người dùng nâng cao thích làm việc bằng dòng lệnh có thể dùng hướng dẫn riêng: Command Line Guide
- Với các trường hợp sử dụng phổ biến, có thể bắt đầu từ các dự án đã được cấu hình sẵn: Browse Projects
1 bình luận
Ý kiến trên Hacker News
Tôi là một trong những người dẫn dắt ESPHome. Có câu hỏi gì thì cứ cho tôi biết
Thứ Bảy tuần trước, chúng tôi đã công bố rằng ESPHome nay đã thuộc sở hữu của Open Home Foundation
Open Home Foundation là tổ chức nhằm bảo vệ quyền riêng tư, quyền lựa chọn và tính bền vững cho nhà thông minh và tất cả những người sống trong đó: https://www.openhomefoundation.org/blog/announcing-the-open-...
Có thể biến một vi điều khiển giá rẻ thành trợ lý giọng nói, proxy Bluetooth hoặc media player ngay trong trình duyệt
Tôi từng đào khá sâu vào Espressif SDK để gần như tự triển khai một công tắc không dây có cảm biến nhiệt độ và MQTT, nhưng ngay khi phát hiện ra ESPHome thì mọi công việc trước đó đều trở nên không cần thiết
Tất cả chức năng tôi viết đều đã có sẵn, lại còn kèm thêm rất nhiều chức năng khác
Có vẻ Espressif có một số thiết bị hỗ trợ Zigbee, nên tôi tò mò liệu sau này có con đường nào để tự tạo thiết bị Zigbee hay không
Tuy vậy, điều tôi muốn có không rõ có nằm trong phạm vi ESPHome hay có thể triển khai gọn gàng không: cho phép chạy vòng lặp phản hồi nhanh và các thuật toán onboard phức tạp hơn ngay trong thiết bị
Ví dụ, tôi muốn cảm biến ánh sáng điều khiển bóng đèn, liên tục điều chỉnh độ sáng bằng những thay đổi rất nhỏ gần như không nhận ra, và dùng thứ như bộ lọc Kalman để duy trì độ sáng cùng nhiệt độ màu ổn định theo từng thời điểm trong ngày
Tôi cũng muốn liên tục điều khiển máy lọc không khí, thông gió, sưởi, tạo ẩm, hút ẩm và làm mát để tối ưu môi trường và mức dùng điện. Thông gió làm giảm CO2/TVOC nhưng lại đưa PM2.5 và nhiệt độ bên ngoài vào, còn sưởi/làm mát, thông gió và độ ẩm thì đan xen phức tạp với nhau
Máy sưởi phụ đắt hơn nhiều so với hệ thống sưởi chính nhưng cần thiết vào những ngày rất lạnh; khi không có ai ở nhà thì mức ưu tiên cũng khác, nên lúc có người ở tôi muốn độ ẩm đủ dễ chịu, còn khi vắng nhà thì muốn giảm độ ẩm tối đa
Điều thứ hai là tôi mong có thể dùng ESPHome để tạo không chỉ thiết bị Wi-Fi mà cả thiết bị Zigbee
Xem log qua Wi-Fi đơn giản đến mức khó tin
Tôi đã làm một bộ thu/phát hồng ngoại mini để điều khiển hệ thống âm thanh bằng điều khiển TV; cấu hình rất dễ và tích hợp Home Assistant cũng rất tốt
Tôi đang chạy hơn 20 thiết bị bằng ESPHome, khoảng ba phần tư trong số đó nằm trong mạng Home Assistant, còn khoảng 6 thiết bị thì chạy độc lập và để ESPHome giao tiếp với các thứ khác qua MQTT
Tôi đang theo dõi một trạm thời tiết Trung Quốc giá rẻ đã thay ruột bằng ESP32, giám sát bồn nước mưa, độ ẩm đất trong nhà kính, nhiệt độ/độ ẩm ở nhiều vị trí trong nhà, chất lượng không khí trong bếp và phòng trẻ em, v.v.
ESPHome thật sự là một dự án bị đánh giá thấp. Theo đúng nghĩa đen, chỉ cần 5 phút, phần cứng 10 đô la, không cần lập trình, là bạn có thể tự làm thiết bị IoT trong nhà và lấy dữ liệu thời gian thực ở bất cứ đâu trong khu đất của mình
Việc có phần cứng trong tầm tay mỗi khi nảy ra ý tưởng mang lại cảm giác tự do rất lớn
Chúng ổn định đến bất ngờ, và các mô-đun như bộ điều khiển vòi phun có thể được lập trình để chạy độc lập, nên chỉ cần có điện là vẫn chạy
Tôi chỉ phát hiện thẻ microSD của Home Assistant bị hỏng sau vài tháng, vì hệ thống thủy canh của tôi vẫn tiếp tục hoạt động bình thường
Việc tốn thời gian nhất là đấu dây vào bộ chuyển đổi DC/DC để điều khiển rơ-le bên trong hộp Sockitbox chống nước
Có sẵn bo breakout đầu nối dây quanh đó cũng rất hữu ích: https://www.amazon.com/whiteeeen-Development-Expansion-ESP-W...
CloudFree cũng là nơi tốt để mua các linh kiện IoT thương mại có thể lập trình lại bằng ESPHome: https://cloudfree.shop/
Trước đây tôi từng dùng ESPHome với Wittycloud ESP8266 giá 3 đô la để lấy dữ liệu phân tích điện mặt trời rồi xem mức tiêu thụ trong Home Assistant
Nhưng ngoài adapter USB ra thì tôi vẫn chưa tìm được cách cấp nguồn nào thật gọn. Với cảm biến ngoài trời, có phương án dùng pin gọn gàng thì tốt
Có vẻ như đó là các chip khá cao cấp
Nếu muốn tiết kiệm hơn, ESP8266 có thể xuống tới 4 đô la, thật sự đáng kinh ngạc
Ví dụ như trường hợp có người vào căn nhà tôi đang cho thuê mà không để lại dấu hiệu đột nhập
Tài liệu có nhiều lựa chọn, nhưng tôi không biết nên dùng phát hiện chuyển động/hiện diện hay cảm biến hiện diện nhị phân. Tôi muốn biết cảm biến nào tốt hơn và hiệu quả về chi phí hơn
Điểm tuyệt nhất của ESPHome là cộng đồng mạnh mẽ và năng động
Với bộ theo dõi chất lượng không khí phần cứng nguồn mở [1] mà chúng tôi tạo ra, một thành viên cộng đồng đã phát triển một bản tích hợp ESPHome tinh vi [2]
Bản tích hợp đó có tất cả tính năng có trong firmware nguồn mở mặc định, và đôi khi còn triển khai tính năng mới nhanh hơn chúng tôi
Theo một nghĩa nào đó, sự cạnh tranh nguồn mở như vậy đã giúp và tạo động lực để phiên bản phần mềm của chúng tôi trở nên tốt hơn
[1] https://www.airgradient.com/
[2] https://github.com/MallocArray/airgradient_esphome
Có tài liệu liên quan là một bộ sưu tập cấu hình thiết bị ESPHome cho phần cứng thương mại: https://devices.esphome.io/
Cũng có một bộ sưu tập cấu hình Tasmota cho các thiết bị mà trong nhiều trường hợp cũng có thể chạy ESPHome: https://templates.blakadder.com/
Hơi lạc đề một chút, nhưng tôi thích ESPHome và đã dùng nó cho vài cảm biến nhiệt độ IoT trong nhà
Tuy nhiên, phần luôn vướng ở WAF, tức mức độ được vợ chấp nhận, là làm sao nhét và giấu mớ ESP32, cảm biến, dây nhợ rối rắm vào một hộp cho đẹp mắt
Tôi tò mò mọi người dùng gì để che các linh kiện điện tử
Sản phẩm của Apollo được làm khá kín đáo: https://apolloautomation.com/products/sensor-stand?pr_prod_s...
Với cảm biến nhiệt độ, tôi thường chọn hàng làm sẵn được firmware này hỗ trợ: https://github.com/pvvx/ATC_MiThermometer
Thêm nữa là có thể chạy bằng pin hơn 1 năm
Nếu dùng bát thủy tinh hoặc đồ nhựa trong suốt, linh kiện không bị bẩn mà vẫn có thể nhìn thấy bên trong
Khi gắn lên tường, chỉ cần bắt vít bo mạch vào mặt trong của nắp, rồi cố định nắp đó lên tường. Như vậy chỉ cần tháo hộp khỏi nắp là có thể tiếp cận dễ dàng
Nhược điểm là nếu đặt ở nơi dễ thấy thì có thể trông xấu
Thường tìm trên Thingiverse một thiết kế có sẵn tương đối phù hợp. Nếu dùng linh kiện phổ biến thì khả năng tìm được mẫu khớp chính xác cũng cao
Tôi có một câu hỏi tìm mãi vẫn chưa ra câu trả lời
Tôi có một hệ thống báo động bể tự hoại, khi công tắc phao phát hiện bể đã đầy 3/4 thì báo động âm thanh và hình ảnh sẽ bật
Có một cặp tiếp điểm khô NO sẽ đóng khi báo động kêu
Tôi thắc mắc nên giám sát việc tiếp điểm này đang đóng hay mở như thế nào. Có vẻ làm bằng chân GPIO là được, nhưng tìm kiếm mãi vẫn không thấy câu trả lời dùng được
Tôi đang nghĩ có lẽ sẽ bỏ cuộc và dùng relay đóng gói RIB01BDC [0] để bật Raspberry Pi, rồi khi tiếp điểm bể tự hoại đóng thì gửi email
[0] https://www.functionaldevices.com/product/rib01bdc/
Cho vi điều khiển đọc chân GPIO định kỳ; nếu mức cao thì tiếp điểm đang mở và báo động không kêu, còn nếu mức thấp thì tiếp điểm đã đóng và báo động đang kêu
Cấu hình GPIO/tiếp điểm/điện trở/VCC đóng vai trò như một mạch kéo lên để kéo một phía của mạch lên mức logic cao, và điện trở giới hạn dòng chạy khi tiếp điểm đóng
Nếu vi điều khiển hỗ trợ cấu hình pull-up nội bộ cho chân GPIO, bạn cũng có thể nối trực tiếp chân đó vào tiếp điểm mà không cần phần cứng bổ sung
Ngược lại, nếu có cấu hình pull-down nội bộ, bạn có thể đảo lại bằng cách nối VCC vào tiếp điểm và nối trực tiếp GPIO vào phía còn lại. Cần xem tài liệu của vi điều khiển để biết các tính năng khả dụng và giới hạn dòng
Tùy vào thông tin bạn muốn có khi giám sát bể tự hoại, đây cũng có thể là một lựa chọn hữu ích
Tôi đã làm một đồng hồ chấm công đi làm/tan làm bằng ESPHome và M5StickC
Khi bấm vào/ra, Home Assistant gửi thời gian lên Google Sheet, và nó hoạt động rất ổn định
Một điểm thú vị là ESP32 hỗ trợ cảm ứng điện dung trên một số chân, nên có thể biến bề mặt dẫn điện thành nút nhà thông minh hoặc thiết bị nhập liệu
ESPHome cũng hỗ trợ tốt: https://esphome.io/components/binary_sensor/esp32_touch.html
Có một dự án nhỏ tôi định làm
Tôi muốn tra cứu thời gian xe buýt đến ở trạm gần nhà qua API giao thông địa phương, rồi hiển thị thời gian của 3 tuyến xe buýt chính trên một màn hình lớn hoặc 3 màn hình nhỏ cho từng tuyến
Không cần độ phân giải cao, nhưng tôi muốn nó đủ lớn và sáng để cả nhà có thể nhìn lướt từ xa. Ví dụ như dùng bộ hiển thị 7 đoạn để hiển thị 3 chữ số số xe buýt và 4 chữ số số phút còn lại đến khi xe đến
Cần có khả năng cập nhật qua Wi-Fi, và gắn với thiết bị tiêu thụ điện thấp như Arduino/Raspberry Pi cũng được. Nếu chạy được bằng pin AA thì càng tốt
Phần đầu thì tôi biết làm, nhưng phần thứ hai thì hoàn toàn không biết, và cũng chưa từng hàn mạch. Mong có ai biết chỉ hướng giúp
Có thể kết hợp những thứ như component display để vẽ lên lưới pixel https://esphome.io/components/display/, trình render văn bản, driver LED định địa chỉ https://esphome.io/components/light/neopixelbus, nền tảng addressable_light để tạo ma trận hiển thị trên đó https://esphome.io/components/display/addressable_light, các panel LED 8x32 giá rẻ https://www.google.com/search?q=8x32+ws2812b
Nếu cần thêm không gian, có thể làm nhiều cái hoặc ghép các panel lại với nhau
Tất nhiên không cần phát minh lại bánh xe; cũng có thể làm theo hướng dẫn kiểu này: https://community.home-assistant.io/t/led-matrix-with-esphom...
Đặc biệt nếu đi theo hướng tái sử dụng phần cứng có sẵn như Ulanzi thì không cần hàn nhiều; điều cốt lõi là kết nối dữ liệu đúng và cấp nguồn đúng
Có thể lập trình ESP32 bằng Arduino, và vẫn dùng các thư viện quen thuộc cùng cách xử lý Wi-Fi như cũ
Adafruit có bán ma trận RGB, và cũng bán cả board ESP32 có thể điều khiển trực tiếp loại này, nên về cơ bản gần như cắm vào là chạy, hầu như không cần kiến thức phần cứng
Nếu muốn tự làm nhưng cần hướng dẫn, hãy xem dự án này, nơi họ đã tài liệu hóa cả phần cứng lẫn phần mềm cho một thiết bị hiển thị văn bản kết nối Wi-Fi khá giống thứ bạn muốn: https://github.com/BlueAndi/esp-rgb-led-matrix
Cá nhân tôi không dùng, nhưng thấy đây là một ý tưởng thật sự tuyệt vời
Trước đây tôi từng làm board cảm biến và tự viết firmware, giờ phải xem liệu có thể cấu hình ESPHome dễ dàng để chạy trên board đó không
Tuy nhiên trong các tính năng đã có trong firmware của tôi, thứ nhất thiết phải có là cập nhật OTA kiểu pull
Hiện tại, chỉ cần tôi sao chép firmware vào một thư mục thì mọi cảm biến trong nhà sẽ tự động cập nhật lên firmware đó thông qua máy chủ HTTP
Với ESPHome, phải đẩy cập nhật riêng cho từng cảm biến, nên nếu có vài chục cái thì khá phiền
Tự viết firmware giao tiếp với một backend đơn giản có vẻ dễ và nhanh hơn
Tôi cũng tò mò code cho thiết bị ESP32 được nhét vào như thế nào. Nếu muốn OTA trên thiết bị flash 4MB thì thực tế giới hạn chương trình chỉ khoảng 1MB
Ngay cả một chương trình đơn giản chỉ gọi GPIO, ADC, UART, Wi-Fi, HTTPS, máy chủ HTTPS, interrupt, FreeRTOS, MQTT, NVS, thông tin chip, log, OTA và các hàm thư viện chuẩn cũng đã vượt giới hạn 1MB. Chỉ riêng một
scanfđã tốn 30KBNếu tắt toàn bộ log rồi biên dịch thì có thể giảm xuống khoảng chương trình 800KB, nhưng dù chưa có logic chương trình, nó đã khá sát giới hạn
Lần tới khi cần thiết bị giám sát từ xa, tôi sẽ xem lại
Nếu có thiết bị không muốn cập nhật, tôi tạm thêm một từ khóa ngoài dự kiến vào file YAML để việc biên dịch và cập nhật thất bại
Tôi có khá nhiều thiết bị ESP gắn đầu dò nhiệt độ khắp nhà, và đang định chuyển sang ESPHome để giảm lượng code phải bảo trì
Đặc biệt là ban đầu có thể flash từ trình duyệt, sau đó cập nhật qua mạng không dây