2 điểm bởi GN⁺ 2024-04-24 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2024-04-24
Ý 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-...

    • Ai muốn dùng thử ESPHome có thể cài ngay các dự án đã chuẩn bị sẵn mà không cần viết một dòng cấu hình nào: https://esphome.io/projects/
      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 không có câu hỏi, chỉ có lời khen. ESPHome thật sự tuyệt vời, và mỗi lần nhìn thấy các tính năng của nó tôi đều ngạc nhiên
      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
    • ESPHome rất tuyệt, nhưng tôi muốn thoát khỏi IoT dùng Wi-Fi. Lý do lớn là tôi thích mạng mesh tự phục hồi có thể hoạt động hoàn toàn offline mà không cần cấu hình nhiều
      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
    • Dự án ESPHome có năng lực một cách hiếm thấy, lấy người dùng làm trung tâm, và hoạt động tốt đến mức gần như kỳ lạ
      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
    • Nhờ ESPHome, flashing, biên dịch, xem log và cập nhật OTA đều trở nên dễ dàng. Trước đây những việc này luôn phiền phức, giờ thì đơn giản
      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

    • Tôi cũng tương tự, và vì quá rẻ nên tôi để sẵn hơn chục bo mạch ESP32 đủ biến thể trong hộp linh kiện điện tử
      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/
    • Bạn nên chia sẻ chi tiết hơn về phần cứng, vỏ, nguồn điện và quy trình thực hiện đã dùng cho các thiết bị đó
    • Tôi tò mò bạn cấp nguồn cho chúng như thế nào
      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
    • Nhìn chung tôi đồng ý, nhưng muốn bỏ phần phần cứng 10 đô la
      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
    • Tôi muốn hỏi có thể giới thiệu linh kiện nào phù hợp cho mục đích an ninh không
      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ử

    • Nếu có máy in 3D, bạn có thể làm ra những món vượt qua WAF theo tiêu chuẩn của tôi
      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 những thứ cần dùng độc lập, trước tiên tôi kiểm tra xem có sản phẩm làm sẵn nào không. Thường chúng hiệu quả về chi phí hơn tự làm và nhìn cũng đẹp hơn
      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
    • Có thể khuyên dùng hộp Tupperware. Chúng có nhiều hình dạng và kích cỡ, lại rất rẻ
      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
    • Tôi in 3D vỏ hộp cho dự án
      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
    • Ở đây thì M5Stack là đáp án đúng
  • 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/

    • Nếu không giả định bạn dùng vi điều khiển nào, thì chỉ cần nối một tiếp điểm xuống đất, rồi nối chân GPIO, tiếp điểm còn lại, điện trở 10k hoặc 100k, và VCC nối tiếp với nhau
      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ôi đang dùng cảm biến siêu âm và ESPHome để giám sát mực nước trong hố thu nước thải
      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

    • ESPHome là một framework tốt để bắt đầu vì nó phù hợp để lắp ghép nhiều thành phần với nhau
      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
    • Nếu có vẻ bạn đã quen với Arduino rồi thì cứ dùng nó làm framework là được
      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ôi cũng đã làm gần như vậy, nhưng lần cuối tôi xem thì gần như không có tài liệu nào giúp tạo firmware tùy chỉnh cho một board mới có nhiều cảm biến, ngoài việc đọc code của ESPHome
      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 30KB
      Nế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
    • Giao diện web có nút update all, nên tiện đến mức đó
      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
    • Dùng cái này có thể giảm số lỗi và nhu cầu sửa chữa
      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ì
    • Rất đáng thử một lần. ESPHome rất tiện
      Đặ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
    • Tính năng này dự kiến sẽ có trong bản phát hành tiếp theo