2P by GN⁺ | ★ favorite | 댓글 1개
  • ESPHome은 ESP32, ESP8266, BK72xx, RP2040 같은 보드를 스마트홈 기기로 바꾸는 플랫폼으로, C++ 대신 YAML 설정으로 기기를 구성함
  • 로컬 제어와 무선 업데이트를 지원해 클라우드 의존을 줄이고, 센서·디스플레이·컴포넌트를 조합해 다양한 기기를 만들 수 있음
  • DIY 사용자부터 전문 통합업체, Made for ESPHome 인증 제품을 만드는 제조사까지 대상 범위가 넓음
  • 지원 환경은 Espressif ESP32·ESP8266, Raspberry Pi RP2040, Nordic Semiconductor nRF52, Realtek RTL87xx, Beken BK72xx와 일부 컴포넌트용 host 플랫폼까지 포함됨
  • 처음 시작할 때는 Home Assistant 경로가 가장 쉽고, 고급 사용자는 명령줄 가이드나 사전 구성된 프로젝트에서 출발할 수 있음

YAML로 구성하는 로컬 스마트홈 기기

  • ESPHome은 ESP32, ESP8266, BK72xx, RP2040 및 기타 지원 보드를 스마트홈 기기로 전환함
  • 복잡한 C++ 코드 대신 YAML 설정 파일로 기기를 구성하는 방식임
  • 주요 기능

    • 코딩 없는 설정: 복잡한 C++ 없이 간단한 YAML 설정을 사용함
    • 무선 업데이트: 기기에 물리적으로 접근하지 않고 업데이트 가능함
    • 모듈형 설계: 수백 가지 센서, 디스플레이, 기타 컴포넌트를 지원함
    • 로컬 제어: 클라우드 의존 없이 로컬에서 동작함
  • 관련 리소스

사용자 범위와 시작 경로

  • 누가 사용하는가

    • DIY 사용자: 특정 요구에 맞춘 센서, 스위치, 디스플레이를 제작함
    • 스마트홈 취미 사용자: 저렴한 커스텀 기기로 홈 자동화 시스템을 확장함
    • 전문 통합업체: 고객용 로컬 제어 스마트 기기를 배포함
    • 제조사: 표준화된 펌웨어로 Made for ESPHome 인증 제품을 제작함
  • 지원 마이크로컨트롤러와 실행 환경

    • Espressif ESP32·ESP8266: 많은 IoT 프로젝트에 쓰이는 ESP32·ESP8266 마이크로컨트롤러를 지원함
    • RP2040: Raspberry Pi의 RP2040 마이크로컨트롤러를 지원함
    • 기타 칩: Nordic Semiconductor nRF52, Realtek RTL87xx, Beken BK72xx를 지원함
    • 데스크톱 host 플랫폼: 많은 ESPHome 컴포넌트를 데스크톱 컴퓨터에서도 실행할 수 있음
  • 시작 방법

    • Home Assistant 앱을 통한 시작이 가장 쉬운 경로임: Home Assistant Guide
    • 명령줄 작업을 선호하는 고급 사용자는 별도 가이드를 사용할 수 있음: Command Line Guide
    • 일반적인 사용 사례는 사전 구성된 프로젝트에서 시작 가능함: Browse Projects

댓글과 토론

Hacker News 의견들
  • ESPHome를 이끄는 사람 중 하나임. 질문 있으면 알려주면 됨
    지난 토요일 ESPHome가 이제 Open Home Foundation 소유가 됐다고 발표했음
    Open Home Foundation은 스마트홈과 그 안에 사는 모든 사람을 위해 프라이버시, 선택권, 지속가능성을 지키려는 단체임: https://www.openhomefoundation.org/blog/announcing-the-open-...

    • ESPHome를 써보고 싶은 사람은 설정 한 줄도 쓰지 않고도 준비된 프로젝트를 설치해서 바로 시도할 수 있음: https://esphome.io/projects/
      저렴한 마이크로컨트롤러를 브라우저에서 바로 음성 비서, 블루투스 프록시, 미디어 플레이어로 바꿀 수 있음
    • 질문은 없고 칭찬만 있음. ESPHome는 정말 훌륭하고, 기능을 볼 때마다 놀랐음
      Espressif SDK를 깊게 파서 온도 센서와 MQTT가 붙은 무선 스위치를 거의 다 구현했는데, ESPHome를 발견하자마자 그동안 한 작업이 전부 필요 없어짐
      내가 작성한 기능은 이미 다 있었고, 거기에 훨씬 많은 기능까지 붙어 있었음
    • ESPHome는 훌륭하지만 Wi-Fi 사물인터넷에서 벗어나고 싶음. 큰 이유는 설정을 많이 하지 않아도 완전히 오프라인으로 동작하는 자가 복구 메시 네트워크가 마음에 들기 때문임
      Espressif에 Zigbee 기능이 있는 기기들이 좀 있는 것 같은데, 앞으로 직접 Zigbee 기기를 만들 수 있는 길이 생길지 궁금함
    • ESPHome 프로젝트는 이례적으로 유능하고 사용자 중심적이며, 작동이 너무 잘 돼서 거의 기묘할 정도임
      다만 내가 원하는 건 ESPHome 범위에 들어가는지, 깔끔하게 구현 가능한지도 잘 모르겠지만, 장치 안에서 빠른 피드백 루프와 더 복잡한 온보드 알고리즘을 돌릴 수 있게 되는 것임
      예를 들어 조도 센서가 전구를 제어하면서, 거의 느껴지지 않을 정도의 작은 변화로 계속 밝기를 조절하고, 칼만 필터 같은 것을 써서 시간대에 맞춘 일정한 조도와 색온도를 유지하고 싶음
      공기청정기, 환기, 난방, 가습, 제습, 냉방도 계속 제어해서 환경과 전력 사용을 최적화하고 싶음. 환기는 CO2/TVOC를 낮추지만 PM2.5와 외부 온도를 들여오고, 냉난방·환기·습도는 복잡하게 얽혀 있음
      보조 난방기는 기본 난방보다 훨씬 비싸지만 아주 추운 날에는 필요하고, 집에 없을 때는 중요도가 달라져서 재실 중에는 살 만한 습도를, 부재 중에는 습도 최소화를 원함
      두 번째로는 ESPHome로 Wi-Fi뿐 아니라 Zigbee 장치도 만들 수 있으면 좋겠음
    • ESPHome 덕분에 플래싱, 컴파일, 로그, OTA 업데이트가 모두 쉬워졌음. 원래는 늘 성가신 작업이었는데 이제는 간단함
      Wi-Fi로 로그를 보는 게 이렇게 단순해도 되나 싶을 정도임
      TV 리모컨으로 오디오 시스템을 제어하려고 미니 적외선 수신기/송신기를 만들었는데 설정이 매우 쉬웠고 Home Assistant 연동도 훌륭함
  • ESPHome로 20개 넘는 장치를 돌리고 있고, 그중 4분의 3 정도는 Home Assistant 네트워크에 들어가 있으며, 6개 정도는 독립적으로 ESPHome가 MQTT로 다른 것들과 통신하게 해둠
    내부를 ESP32로 갈아넣은 저렴한 중국산 기상 관측기, 빗물 탱크 모니터링, 온실 토양 수분, 집 안 여러 위치의 온습도, 주방과 아이들 방의 공기질 등을 보고 있음
    ESPHome는 정말 과소평가된 프로젝트임. 말 그대로 5분, 10달러짜리 하드웨어, 프로그래밍 없이 집 안 사물인터넷 장치를 직접 만들고 부지 어디든 실시간 데이터를 얻을 수 있음

    • 나도 비슷하고, 너무 싸서 전자부품 상자에 각종 ESP32 변형 보드를 십여 개 넣어두고 있음
      아이디어가 떠오를 때 손 닿는 곳에 하드웨어가 있다는 게 엄청난 자유로움임
      의외로 안정적이고, 스프링클러 컨트롤러 같은 모듈은 독립 동작하도록 프로그래밍할 수 있어서 전원만 있으면 계속 돌아감
      Home Assistant의 microSD 카드가 망가진 걸 몇 달 뒤에야 알았는데, 내 수경재배 장비가 계속 정상 동작했기 때문임
      가장 시간을 많이 먹은 건 방수 Sockitbox 안에서 릴레이를 구동하려고 DC/DC 컨버터에 배선하는 일이었음
      선 단자 브레이크아웃 보드도 주변에 두면 매우 유용함: https://www.amazon.com/whiteeeen-Development-Expansion-ESP-W...
      CloudFree도 ESPHome로 다시 프로그래밍 가능한 기성 사물인터넷 부품을 구하기 좋음: https://cloudfree.shop/
    • 그 장치들에 쓴 하드웨어, 케이스, 전원, 작업 과정을 더 자세히 공유해줘야 함
    • 전원은 어떻게 공급하는지 궁금함
      예전에 3달러짜리 Wittycloud ESP8266으로 태양광 분석 데이터를 긁어 Home Assistant에서 소비량을 보려고 ESPHome를 썼음
      하지만 USB 어댑터 말고는 아직 우아한 전원 공급 방법을 못 찾았음. 야외 센서에는 깔끔한 배터리 방식이 있으면 좋겠음
    • 전반적으로 동의하지만 10달러 하드웨어라는 부분은 빼고 싶음
      꽤 고급 칩을 쓰는 것 같음
      더 아끼려면 ESP8266은 4달러까지도 가능하고, 정말 놀라운 수준임
    • 보안 용도에 괜찮은 부품을 추천해줄 수 있는지 궁금함
      예를 들어 임대 중인 내 집에 누군가 침입 흔적 없이 들어오는 경우임
      문서에는 여러 선택지가 있는데, 움직임/재실 감지로 가야 할지 이진 재실 감지기로 가야 할지 모르겠음. 어떤 센서가 더 낫고 비용 효율적인지 궁금함
  • ESPHome에서 가장 좋은 점은 강하고 적극적인 커뮤니티
    우리가 만든 오픈소스 하드웨어 공기질 모니터 [1]에 대해, 커뮤니티 구성원이 정교한 ESPHome 통합 [2]을 개발했음
    그 통합에는 기본 오픈소스 펌웨어에 들어간 모든 기능이 있고, 때로는 새 기능 구현도 우리보다 빨랐음
    어떤 의미에서는 이런 오픈소스 경쟁이 우리 소프트웨어 버전을 더 좋게 만들도록 도와주고 동기를 줬음
    [1] https://www.airgradient.com/
    [2] https://github.com/MallocArray/airgradient_esphome

  • 관련 자료로, 상용 하드웨어용 ESPHome 장치 설정 모음이 있음: https://devices.esphome.io/
    ESPHome도 실행 가능한 경우가 많은 장치들의 Tasmota 설정 모음도 있음: https://templates.blakadder.com/

  • 약간 딴얘기지만 ESPHome를 좋아하고 집 안 IoT 기반 온도 센서 몇 개에 써왔음
    그런데 WAF, 즉 아내 수용성에서 항상 걸리는 부분은 ESP32, 센서, 전선이 뒤엉킨 걸 보기 좋게 컨테이너에 넣어 숨기는 일임
    전자 부품을 감추는 데 다들 뭘 쓰는지 궁금함

    • 3D 프린터가 있으면 내 기준의 WAF를 통과하는 물건을 만들 수 있음
      Apollo 제품은 꽤 덜 튀게 잘 만듦: https://apolloautomation.com/products/sensor-stand?pr_prod_s...
    • 독립형으로 필요한 물건은 먼저 기존 기성품이 있는지 확인함. 보통 직접 만드는 것보다 더 비용 효율적이고 보기에도 좋음
      온도 센서는 보통 이 펌웨어가 지원하는 기성품을 고름: https://github.com/pvvx/ATC_MiThermometer
      덤으로 배터리로 1년 이상 동작 가능함
    • Tupperware 용기를 추천할 수 있음. 모양과 크기가 다양하고 매우 저렴함
      유리 그릇이나 투명 플라스틱 제품을 쓰면 부품이 더러워지지 않으면서 안쪽을 볼 수도 있음
      벽에 설치할 때는 보드를 뚜껑 안쪽에 나사로 고정하고, 그 뚜껑을 벽에 고정하면 됨. 그러면 용기를 뚜껑에서 빼기만 해도 쉽게 접근 가능함
      단점은 눈에 잘 띄는 곳에 두면 못생겨 보일 수 있다는 것임
    • 프로젝트용 인클로저는 3D 프린터로 출력함
      보통 Thingiverse에서 대충 맞는 기존 설계를 찾음. 흔한 부품을 쓰면 정확히 맞는 모델도 찾을 가능성이 높음
    • 여기서는 M5Stack이 정답임
  • 검색해도 답을 못 찾은 질문이 있음
    정화조 알람 시스템이 있고, 플로트 스위치가 탱크가 3/4 찼다고 감지하면 소리와 시각 알람이 켜짐
    알람이 울릴 때 닫히는 NO 무전압 접점 한 쌍이 있음
    이 접점이 닫혔는지 열렸는지 어떻게 모니터링해야 하는지 궁금함. GPIO 핀으로 하면 될 것 같지만 검색해도 쓸 만한 답을 못 찾았음
    포기하고 RIB01BDC [0] 패키지 릴레이로 Raspberry Pi를 켠 뒤, 정화조 접점이 닫히면 이메일을 보내게 할까 생각 중임
    [0] https://www.functionaldevices.com/product/rib01bdc/

    • 어떤 마이크로컨트롤러를 쓰는지 가정하지 않는다면, 접점 하나를 접지에 연결하고, GPIO 핀·다른 접점·10k 저항 또는 100k 저항·VCC를 함께 직렬로 연결하면 됨
      마이크로컨트롤러가 GPIO 핀을 주기적으로 읽게 하면, 높음이면 접점이 열려 있고 알람이 안 울리는 상태이며, 낮음이면 접점이 닫혀 알람이 울리는 상태임
      GPIO/접점/저항/VCC 구성은 회로 한쪽을 높은 논리 레벨로 끌어올리는 풀업 회로 역할을 하고, 저항은 접점이 닫힐 때 흐르는 전류를 제한함
      마이크로컨트롤러가 GPIO 핀 내부 풀업 설정을 지원한다면 추가 하드웨어 없이 핀을 접점에 직접 연결할 수도 있음
      반대로 내부 풀다운 설정이 있으면 VCC를 접점에 연결하고 GPIO를 다른 쪽에 직접 연결하는 식으로 뒤집을 수 있음. 사용 가능한 기능과 전류 제한은 마이크로컨트롤러 문서를 봐야 함
    • 배수 집수정의 수위를 감시하는 데 초음파 센서와 ESPHome를 쓰고 있음
      정화조 모니터링에서 원하는 정보에 따라 이것도 유용한 선택지가 될 수 있음
  • ESPHome와 M5StickC로 출퇴근 기록 시계를 만들었음
    출근/퇴근을 찍으면 Home Assistant가 시간을 Google Sheet로 보내고, 매우 안정적으로 동작함

  • 재미있는 점 하나로, ESP32는 일부 핀에서 정전식 터치 감지를 지원해서 전도성 표면을 스마트홈 버튼이나 입력 장치로 바꿀 수 있음
    ESPHome에서도 잘 지원됨: https://esphome.io/components/binary_sensor/esp32_touch.html

  • 작업해보려던 작은 프로젝트가 있음
    집 근처 정류장의 버스 도착 시간을 지역 교통 API로 조회하고, 주요 버스 3개의 시간을 큰 화면 하나나 버스별 작은 화면 3개에 표시하고 싶음
    고해상도일 필요는 없지만 멀리서도 가족이 한눈에 볼 수 있을 만큼 크고 밝았으면 좋겠음. 예를 들어 7세그먼트 표시기로 버스 번호 3자리와 도착까지 남은 분 4자리를 보여주는 식임
    Wi-Fi로 업데이트 가능해야 하고, Arduino/Raspberry Pi 같은 저전력 장치가 붙어도 괜찮음. AA 배터리로 돌릴 수 있으면 더 좋음
    첫 번째는 할 줄 알지만 두 번째는 전혀 모르고, 납땜도 해본 적이 없음. 아는 사람이 방향을 잡아주면 좋겠음

    • ESPHome는 여러 구성요소를 겹쳐 조립하기 좋은 프레임워크라 출발점으로 좋음
      픽셀 격자에 그리는 display 컴포넌트 https://esphome.io/components/display/, 텍스트 렌더러, 주소 지정 가능 LED 드라이버 https://esphome.io/components/light/neopixelbus 위에 표시 행렬을 만드는 addressable_light 플랫폼 https://esphome.io/components/display/addressable_light, 저렴한 8x32 LED 패널 https://www.google.com/search?q=8x32+ws2812b 같은 것들을 조합하면 됨
      공간이 더 필요하면 여러 개를 만들거나 패널을 이어붙일 수 있음
      물론 바퀴를 다시 만들 필요 없이 이런 가이드를 따라가도 됨: https://community.home-assistant.io/t/led-matrix-with-esphom...
      특히 Ulanzi 같은 기존 하드웨어를 재활용하는 방향이면 납땜은 많이 필요하지 않고, 올바른 데이터 연결과 전원 공급이 핵심임
    • Arduino에 이미 익숙한 것 같다면 그냥 그걸 프레임워크로 쓰면 됨
      ESP32를 Arduino로 프로그래밍할 수 있고, 익숙한 라이브러리와 Wi-Fi 처리도 그대로 쓸 수 있음
      Adafruit에서 RGB 행렬을 살 수 있고, 이를 직접 구동할 수 있는 ESP32 보드도 팔기 때문에 사실상 꽂으면 동작하는 수준이라 하드웨어 지식이 거의 필요 없음
      직접 만들고 싶지만 안내가 필요하다면, 원하는 것과 비슷한 Wi-Fi 연결 텍스트 표시 장치를 하드웨어와 소프트웨어 모두 문서화한 이 프로젝트를 보면 됨: https://github.com/BlueAndi/esp-rgb-led-matrix
  • 개인적으로 쓰지는 않지만 정말 훌륭한 아이디어로 보임
    예전에 센서 보드를 만들고 직접 펌웨어를 작성했는데, ESPHome를 쉽게 설정해서 그 보드에서 돌릴 수 있는지 봐야겠음
    다만 내 펌웨어에 이미 있는 기능 중 꼭 필요한 건 풀 방식 OTA 업데이트
    지금은 펌웨어를 폴더에 복사해두면 집 안의 모든 센서가 HTTP 서버를 통해 자동으로 그 펌웨어로 업데이트함
    ESPHome에서는 센서마다 업데이트를 따로 밀어 넣어야 해서, 수십 개가 있으면 번거로움

    • 나도 거의 같은 걸 했지만, 마지막으로 봤을 때 여러 센서가 붙은 새 보드용 커스텀 펌웨어를 만드는 데 도움이 되는 자료는 ESPHome 코드 읽기 말고는 거의 없었음
      단순한 백엔드와 통신하는 펌웨어를 직접 쓰는 편이 더 쉽고 빨라 보였음
      ESP32 장치용 코드가 어떻게 들어가는지도 궁금함. 4MB 플래시 장치에서 OTA를 원한다면 사실상 프로그램 한도는 1MB 정도임
      GPIO, ADC, UART, Wi-Fi, HTTPS, HTTPS 서버, 인터럽트, FreeRTOS, MQTT, NVS, 칩 정보, 로그, OTA, 표준 라이브러리 함수만 호출하는 간단한 프로그램도 이미 1MB 한도를 넘김. scanf 하나만 해도 30KB를 씀
      로그를 전부 끄고 컴파일하면 대략 800KB 프로그램까지 줄일 수 있지만, 프로그램 로직이 없는데도 한도에 꽤 가까움
      다음에 원격 모니터링 장치가 필요해지면 다시 살펴볼 생각임
    • 웹 인터페이스에 update all 버튼이 있어서 그만큼 편함
      업데이트하고 싶지 않은 장치가 있으면 YAML 파일에 예상치 못한 키워드를 잠깐 넣어 컴파일과 업데이트가 실패하게 해둠
    • 이걸 쓰면 버그와 수정 필요성이 줄어들 수도 있음
      집 곳곳에 온도 프로브가 붙은 ESP 장치가 꽤 있는데, 유지보수할 코드가 줄어들도록 ESPHome로 옮기려던 중임
    • 한번 써볼 만함. ESPHome는 매우 편리함
      특히 처음에는 브라우저에서 플래싱하고 이후에는 무선으로 업데이트할 수 있다는 점이 좋음
    • 이 기능은 다음 릴리스에 들어올 예정임