How Does OpenEEBUS Implement Heat Pump EEBUS Communication Using the ESP32-S3 and W5500?
How Does OpenEEBUS Implement Heat Pump EEBUS Communication Using the ESP32-S3 and W5500?
Overview
OpenEEBUS by NIBE는 heat pump, Home Energy Management System(HEMS), Energy Gateway와 같은 장치가 표준화된 방식으로 에너지 정보를 교환하도록 지원하는 C 기반 EEBUS library입니다. 2026년 7월 병합된 PR #35에서는 ESP32-S3와 W5500 SPI Ethernet 환경에서도 SHIP의 mDNS advertisement와 device discovery가 동작하도록 FreeRTOS network interface 처리 방식이 개선되었습니다.
이 구조에서 W5500은 ESP32-S3에 유선 Ethernet data path를 제공합니다. OpenEEBUS는 그 위에서 mDNS/DNS-SD를 이용해 EEBUS 장치를 찾고, TLS WebSocket 기반 SHIP connection을 형성한 뒤 SPINE message를 교환합니다. 다만 공개 코드에서 W5500의 hardware socket이나 Hardwired TCP/IP offload를 직접 사용하는 근거는 확인되지 않았으며, 이 사례의 핵심은 ESP-IDF Ethernet interface를 통한 OpenEEBUS 연결입니다.
OpenEEBUS는 Apache 2.0으로 공개된 C library이며, home automation과 smart-grid 장치 간 상호운용을 위해 SHIP과 SPINE을 구현합니다. 현재 LPC, LPP, MPC, MGCP use case를 지원하지만 active development 단계여서 일부 기능에는 제한이 있습니다.
EEBUS란?
EEBUS는 Heat Pump, EV Charger, Battery, Solar Inverter, HEMS(Home Energy Management System) 등 다양한 에너지 장치가 제조사에 관계없이 서로 통신하고 협력할 수 있도록 만든 국제 표준 통신 규격입니다. 목표는 모든 에너지 장치가 하나의 공통 언어를 사용해 전력 소비, 발전량, 충전 상태, 제어 명령 등을 교환하도록 하는 것입니다.
OpenEEBUS란?
OpenEEBUS는 NIBE Group이 공개한 오픈소스 C 라이브러리로, EEBUS 표준을 실제 제품에서 사용할 수 있도록 구현한 프로젝트입니다.
Developer
NIBE Group
NIBE Group은 스웨덴 Markaryd에서 시작해 70년 이상 성장해 온 글로벌 에너지 기술 기업입니다. 건물의 indoor climate comfort를 위한 친환경·고효율 에너지 솔루션을 개발·제조·공급하며, intelligent heating과 control에 사용되는 component 및 system도 제공하고 있습니다. NIBE Group의 주요 사업 영역에는 heat pump와 climate control solution이 포함되므로, OpenEEBUS는 단순한 protocol demonstration이 아니라 heat pump와 HEMS를 연결하기 위한 실제 산업 요구와 밀접하게 연관된 open-source project로 볼 수 있습니다.
Features
1. W5500 Ethernet에서 동작하는 SHIP mDNS discovery
기존 FreeRTOS 구현은 다음 interface만 조회했습니다.
esp_netif_get_handle_from_ifkey("WIFI_STA_DEF")따라서 Wi-Fi station interface가 없는 Ethernet-only ESP32 board에서는 NULL이 반환됐고, OpenEEBUS가 자신의 SHIP service를 광고하거나 다른 EEBUS 장치를 검색하지 못했습니다.
PR #35는 interface를 다음 순서로 확인하도록 수정했습니다.
WIFI_STA_DEF
→ ETH_DEF
→ 첫 번째 활성 상태의 registered netif여기서 ETH_DEF는 ESP-IDF의 W5500 및 일부 Ethernet driver가 등록하는 기본 interface key입니다. 이를 통해 W5500 SPI Ethernet 장치도 OpenEEBUS의 SHIP discovery 과정에 참여할 수 있습니다.
2. ESPHome과 mDNS daemon 공유
ESPHome API server와 같은 다른 component가 이미 mdns_init()를 호출한 경우, 다시 호출하면 ESP_ERR_INVALID_STATE가 반환될 수 있습니다.
기존 구현은 이를 fatal error로 처리해 SHIP mDNS service 시작을 중단했습니다. 수정된 코드는 해당 상태를 기존 mDNS daemon이 이미 실행 중인 상황으로 해석하고 daemon을 재사용합니다.
이 변경은 여러 framework component가 동일 ESP-IDF mDNS service를 공유하는 실제 제품형 firmware 구성에서 중요합니다.
3. _ship._tcp service advertisement와 discovery
수정 사항은 ESP32-S3, W5500 SPI Ethernet PoE, ESPHome 환경에서 테스트됐습니다.
테스트 결과:
_ship._tcpservice가 정상적으로 광고됨- Remote SHIP service가 검색됨
- Ethernet-only interface에서도 EEBUS discovery가 동작함
이는 단순 compile support가 아니라 실제 SHIP discovery path가 검증됐다는 점에서 의미가 있습니다.
4. Heat pump용 EEBUS entity와 use case 예제
examples/heat_pump/hpsrv.c는 heat pump를 단일 network socket으로만 취급하지 않고 SPINE의 device, entity, feature 구조로 모델링합니다.
예제에서 구성되는 주요 entity는 다음과 같습니다.
HeatPumpApplianceInverterGridConnectionPoint
또한 다음 EEBUS use case가 연결됩니다.
| Use Case | 역할 |
|---|---|
| LPC | Limitation of Power Consumption |
| LPP | Limitation of Power Production |
| MPC | Monitoring of Power Consumption |
| MGCP | Monitoring of Grid Connection Point |
예를 들어 heat pump entity에는 LPC와 MPC가 연결되며, inverter entity에는 LPP가 연결됩니다. 이를 통해 전력 제한 명령과 측정 데이터를 EEBUS 표준 구조로 표현할 수 있습니다.
5. TLS certificate와 remote SKI 기반 connection 관리
examples/heat_pump/main.c는 실행할 때 다음 값을 입력받습니다.
heat_pump
<server_port>
<remote_ski>
<certificate_file>
<private_key_file>프로그램은 TlsCertificateLoadX509KeyPair()로 certificate와 private key를 로드하고, HpsrvRegisterRemoteSki()를 통해 연결을 허용할 remote device의 SKI를 등록합니다.
SKI는 SHIP 환경에서 certificate를 기반으로 상대 장치를 식별하고 신뢰 관계를 관리하기 위한 식별 정보입니다. 따라서 이 예제는 단순 평문 TCP client/server보다 제품 환경에 가까운 device trust model을 보여줍니다.
System Architecture
OpenEEBUS의 heat pump 예제와 PR #35를 결합하면 전체 구조는 다음과 같이 정리할 수 있습니다.
이때 역할은 다음과 같습니다.
- ESP32 : 프로그램(OpenEEBUS)을 실행하는 CPU
- W5500 : 유선 LAN 연결 담당
- OpenEEBUS : EEBUS 프로토콜 처리
- 히트펌프 : EEBUS로 제어되는 대상
즉,
ESP32에서 OpenEEBUS가 실행되고, W5500을 통해 히트펌프와 EEBUS 통신을 하는 구조입니다.
Role and Application of the WIZnet Chip
| 항목 | 이 프로젝트에서의 역할 |
|---|---|
| WIZnet 모델명 | W5500 |
| MCU와의 연결 | ESP32-S3와 SPI Ethernet interface로 연결 |
| 네트워크 역할 | ESP-IDF의 ETH_DEF interface를 통해 유선 LAN data path 제공 |
| 사용 protocol | W5500 위의 IP network에서 mDNS/DNS-SD, TLS, WebSocket, SHIP, SPINE 사용 |
| 데이터 경로상의 위치 | ESP32-S3/OpenEEBUS stack과 HEMS 또는 Energy Gateway 사이 |
| 구조적 의미 | Wi-Fi가 없는 Ethernet-only board에서도 SHIP advertisement와 discovery를 가능하게 함 |
W5500은 이 시스템에서 heat pump data를 직접 해석하지 않습니다. LPC, MPC와 같은 EEBUS 의미 구조는 ESP32-S3에서 실행되는 OpenEEBUS가 처리합니다.
왜 W5500이 적합한가?
Heat pump와 HEMS는 일반적으로 건물 내 고정 위치에서 장시간 운용됩니다. 이런 장치에서는 Ethernet cable을 사용할 수 있다면 Wi-Fi credentials, 무선 음영 지역, AP 변경과 같은 운영 변수를 줄일 수 있습니다.
특히 PR #35는 W5500이 연결돼 있다는 사실만 보여준 것이 아니라, OpenEEBUS의 SHIP discovery가 실제 ETH_DEF interface를 찾아 사용하도록 upstream code를 수정했습니다. 즉, W5500이 EEBUS stack에서 실질적인 network path로 검증된 사례입니다.
Developer Reuse Points
| Reusable Point | What Developers Can Learn | Source Evidence |
|---|---|---|
| Ethernet-aware netif selection | ESP32 firmware에서 Wi-Fi만 가정하지 않고 WIFI_STA_DEF, ETH_DEF, active netif fallback 순으로 network interface를 선택하는 방법 | src/ship/mdns/ship_mdns_freertos.c, PR #35 |
| Shared mDNS daemon handling | ESPHome 등 다른 component가 mDNS를 이미 초기화한 경우 ESP_ERR_INVALID_STATE를 fatal error로 처리하지 않고 기존 daemon을 재사용하는 방법 | PR #35 |
| SHIP service discovery | _ship._tcp를 광고하고 remote EEBUS service를 탐색하는 mDNS/DNS-SD 구조 | src/ship/mdns |
| Heat pump SPINE modeling | Heat pump, inverter, grid connection point를 entity로 나누고 LPC, LPP, MPC, MGCP use case를 연결하는 구조 | examples/heat_pump/hpsrv.c |
| Certificate-based device trust | X.509 certificate와 private key를 로드하고 remote SKI를 등록해 SHIP peer를 관리하는 방법 | examples/heat_pump/main.c |
| Measurement update API | Power, energy, current, voltage, frequency 데이터를 EEBUS use case에 반영하는 application API 설계 | HpsrvSetPowerTotal(), HpsrvSetEnergyConsumed(), HpsrvSetVoltagePerPhase() 등 |
| Cross-platform build structure | CMake와 분리된 src/common, src/ship, src/spine, src/use_case 계층을 이용한 portable protocol library 구성 | Repository structure |
가장 직접적으로 재사용할 수 있는 코드
W5500 또는 RMII Ethernet을 사용하는 ESP32 개발자에게 가장 직접적인 reference는 다음 파일입니다.
src/ship/mdns/ship_mdns_freertos.cHeat pump EEBUS device를 구현하려는 개발자에게는 다음 파일이 출발점이 됩니다.
examples/heat_pump/main.c
examples/heat_pump/hpsrv.c
examples/heat_pump/cs_lpc_listener.c
examples/heat_pump/cs_lpp_listener.c다만 example의 device brand, model, serial number와 measurement 값은 demonstration용 구성이므로 실제 제품에서는 장치 정보와 hardware control logic을 제품에 맞게 교체해야 합니다.
Related Existing Contents & Expansion Value
Smart Home Energy Management Controller with the Waveshare ESP32-S3-POE-ETH
- Link: https://maker.wiznet.io/viktor/projects/smart-home-energy-management-controller-with-the-waveshare-esp32-s3-poe-eth/
- Similarity Point:
이 프로젝트는 ESP32-S3와 W5500 기반 Ethernet Controller에서 OpenEEBUS를 활용하여 Home Energy Management System(HEMS)을 구현한 사례입니다. OpenEEBUS를 통해 Heat Pump, PV Inverter, Home Battery, EV Charger(Wallbox) 등 다양한 에너지 장치와 EEBUS 기반 통신을 수행하며, SHIP와 SPINE 프로토콜을 이용해 장치 간 상호운용성을 제공합니다. - Difference:
OpenEEBUS 글은 library 내부 구조와 PR #35의 Ethernet discovery 수정에 집중합니다. 기존 Maker 글은 Fronius inverter, heat pump, wallbox, water meter와 §14a demand response를 하나의 ESPHome controller에 통합한 전체 application을 다룹니다. - Connection Value:
두 글을 연결하면 “OpenEEBUS 내부에서 W5500 discovery가 어떻게 동작하는가”부터 “이를 실제 HEMS firmware에서 어떻게 사용하는가”까지 이어지는 완성도 높은 기술 흐름을 제공할 수 있습니다.
ControlHeatPump
- Link: https://maker.wiznet.io/rena/projects/controlheatpump/
- Similarity Point:
W5500을 이용한 heat pump monitoring 및 control이라는 application 영역이 같습니다. - Difference:
ControlHeatPump는 개별 heat pump의 상태 감시, 기상 정보 활용 및 외부 monitoring service 전송에 초점을 둡니다. OpenEEBUS는 제조사가 다른 HEMS, Energy Gateway, heat pump 사이의 표준화된 energy message exchange에 초점을 둡니다. - Connection Value:
기존 heat pump controller에 EEBUS communication layer를 추가하는 후속 설계 방향을 제시할 수 있습니다.
Market & Application Value
적용 가능한 분야
OpenEEBUS와 W5500의 조합은 다음 장치에 적용 가능성이 있습니다.
- EEBUS-compatible heat pump controller
- Home Energy Management System
- Residential Energy Gateway
- EV charger 및 wallbox controller
- Solar inverter 및 battery gateway
- Grid demand-response controller
- Building energy management edge device
- 기존 HVAC equipment용 EEBUS retrofit gateway
B2B와 B2C 적합성
이 기술은 소비자가 직접 조작하는 단순 smart-home accessory보다 B2B 및 B2B2C energy equipment에 더 적합합니다.
주요 이유는 다음과 같습니다.
- EEBUS는 device interoperability를 위한 protocol stack입니다.
- Certificate, SKI 및 device trust 관리가 필요합니다.
- Heat pump와 HEMS 사이에서 power limit 및 grid measurement를 교환합니다.
- 제품별 hardware control 및 safety logic을 별도로 구현해야 합니다.
제품화 관점
OpenEEBUS는 Apache 2.0 license와 C 기반 구조를 제공하므로 embedded product에 통합할 수 있는 기반을 갖추고 있습니다. 또한 CMake 및 cross-build 구조가 준비돼 있어 여러 target으로 이식하기 위한 출발점이 됩니다.
그러나 저장소는 active development 상태이며 multiple remote SHIP node와 approve/deny procedure 등 일부 기능이 제한돼 있습니다. 따라서 제품화 전에는 다음 검증이 필요합니다.
- 실제 EEBUS certification requirement
- 여러 remote device와의 connection behavior
- 장시간 network recovery
- certificate provisioning 및 renewal
- memory와 task stack usage
- W5500 link down/up recovery
- firmware update와 configuration management
- heat pump safety controller와 communication layer의 분리
시장 규모, 양산 일정, 인증 취득 여부 및 상용 NIBE 제품 적용 범위는 현재 공개 자료에서 확인되지 않습니다.
External Indicators
2026년 8월 3일 확인 기준입니다.
| 항목 | 확인 결과 |
|---|---|
| GitHub Fork | 11 |
| GitHub Issues | 0으로 표시 |
| GitHub Pull Requests | GitHub 페이지에서 1개로 표시 |
| GitHub Release | 공식 Release 없음 |
| PR #35 | 2026년 7월 3일, 3 commits가 main에 병합 |
| Latest reviewed source commit | 첨부 저장소 기준 df6f5cf94d47d1873a88fb4d1d2c295842a638a0, 2026년 7월 29일 |
| GitHub Star | 공개 페이지의 rendering 결과에서 숫자를 신뢰성 있게 확인하지 못함 |
| YouTube 지표 | 관련 공식 영상이 입력 자료에 없어 확인되지 않음 |
| Community activity | code review, external contributor PR, ESPHome 기반 실장 테스트가 확인됨 |
GitHub repository 화면에는 Fork 11, Issues 0, Pull requests 1이 표시되며, Releases page에는 공식 release가 없다고 나옵니다.
PR #35에서는 외부 contributor가 문제와 test environment를 구체적으로 제시했고, maintainer review와 coding-style 수정 후 merge가 이뤄졌습니다. 이는 단순 issue 제기가 아니라 실제 배포 환경에서 발견된 Ethernet compatibility 문제가 upstream에 반영된 사례입니다.
WIZnet Strategic Value
이 사례의 가장 큰 의미는 W5500이 EEBUS application에서 단순한 “Ethernet 연결 부품”에 머물지 않고, 실제 SHIP device discovery와 connection path의 일부로 upstream open-source code에서 다뤄졌다는 점입니다.
특히 PR #35에는 다음 근거가 모두 포함됩니다.
- W5500의 ESP-IDF interface key인
ETH_DEF - ESP32-S3 + W5500 SPI Ethernet PoE test environment
- ESPHome과의 mDNS daemon 공유 문제
_ship._tcpannouncement 검증- Remote SHIP service discovery 검증
따라서 WIZnet Maker 생태계에서는 다음과 같은 연속적인 콘텐츠 구성이 가능합니다.
W5500 Ethernet Hardware Integration
→ ESP-IDF ETH_DEF Interface
→ OpenEEBUS SHIP Discovery
→ SPINE Heat Pump Use Cases
→ HEMS / §14a Energy Controller이 흐름은 단순 board bring-up article보다 고객 설득력이 높습니다. 개발자는 W5500을 어디에 연결하는지만 보는 것이 아니라, 해당 network interface 위에서 실제 energy protocol과 product application이 어떻게 구성되는지 확인할 수 있기 때문입니다.
추가적으로 다음 reference project를 제공하면 가치가 더욱 커질 수 있습니다.
- W5500-EVB-Pico 또는 W55RP20 기반 EEBUS feasibility study
- ESP32-S3 + W5500용 OpenEEBUS minimal example
_ship._tcppacket capture 및 Wireshark 분석- SHIP certificate/SKI provisioning guide
- W5500 link recovery와 SHIP reconnection test
- EEBUS heat pump simulator와 HEMS simulator
- LPC power limit command end-to-end demonstration
이 항목들은 현재 프로젝트에 이미 구현된 기능이라는 의미가 아니라, 공개 코드와 WIZnet platform을 연결해 발전시킬 수 있는 후속 방향입니다.
Summary
OpenEEBUS by NIBE는 SHIP과 SPINE을 C로 구현해 heat pump, HEMS 및 Energy Gateway가 표준 EEBUS message를 교환할 수 있도록 하는 open-source library입니다. 특히 PR #35는 ESP32-S3와 W5500 SPI Ethernet 환경에서 기존 Wi-Fi 중심 netif 처리 문제를 수정하고, _ship._tcp advertisement와 remote SHIP discovery가 실제로 동작함을 검증했습니다.
W5500은 이 구조에서 ESP32-S3와 wired Ethernet LAN 사이의 network path를 제공합니다. 그 위에서 OpenEEBUS가 mDNS discovery, TLS WebSocket connection, certificate/SKI trust 및 SPINE use case message를 처리합니다. 다만 W5500 hardware TCP/IP offload 사용, board pin map, 성능 수치 및 완성된 heat pump control logic은 현재 공개 자료로 확인되지 않습니다.
이 프로젝트는 W5500이 HTTP나 MQTT 장치뿐 아니라 EEBUS 기반 smart-energy communication에도 적용될 수 있음을 보여주는 구체적인 개발 reference입니다. 기존 Maker Site의 ESP32-S3 + W5500 HEMS 사례와 연결하면, Ethernet hardware부터 SHIP discovery, SPINE data model, heat pump energy management까지 이어지는 실용적인 기술 콘텐츠 체계를 구성할 수 있습니다.
FAQ
1. OpenEEBUS는 heat pump를 직접 제어하는 firmware인가?
OpenEEBUS는 compressor, pump, valve 또는 relay를 직접 구동하는 hardware control firmware가 아닙니다. Heat pump와 HEMS가 LPC, MPC 같은 표준 EEBUS message를 교환하도록 만드는 communication 및 data-model layer입니다.
2. W5500은 이 프로젝트에서 어떤 역할을 하는가?
W5500은 ESP32-S3가 wired Ethernet LAN에 연결되는 network interface를 제공합니다. OpenEEBUS는 이 Ethernet path 위에서 _ship._tcp mDNS discovery, TLS WebSocket SHIP connection 및 SPINE message exchange를 수행합니다.
3. PR #35가 없으면 어떤 문제가 발생했는가?
기존 FreeRTOS mDNS 구현은 WIFI_STA_DEF만 찾았습니다. 따라서 W5500을 사용하는 Ethernet-only ESP32 board에서는 netif를 찾지 못해 SHIP announcement와 remote service discovery가 시작되지 않았습니다.
4. 이 사례는 W5500 TOE 활용 사례인가?
공개 자료만으로는 그렇게 판단할 수 없습니다. W5500과 ETH_DEF 사용은 확인되지만, OpenEEBUS가 W5500 hardware socket 또는 ioLibrary socket API를 직접 사용하는 근거는 확인되지 않았습니다.
5. 개발자가 가장 먼저 참고해야 할 부분은 무엇인가?
W5500 Ethernet compatibility가 목적이라면 src/ship/mdns/ship_mdns_freertos.c를 먼저 확인하는 것이 좋습니다. Heat pump device model과 energy use case가 목적이라면 examples/heat_pump/main.c와 examples/heat_pump/hpsrv.c가 핵심 reference입니다.
References
| Source | Link | Checked Date | Notes |
|---|---|---|---|
| OpenEEBUS by NIBE repository | https://github.com/NIBEGroup/openeebus | 2026-08-03 | Apache 2.0 C library, SHIP/SPINE implementation |
| OpenEEBUS README | https://github.com/NIBEGroup/openeebus/blob/main/README.md | 2026-08-03 | Supported use cases와 limitations 확인 |
| PR #35 | https://github.com/NIBEGroup/openeebus/pull/35 | 2026-08-03 | W5500/ETH_DEF, shared mDNS daemon, ESP32-S3 test 근거 |
| PR #35 main commit | Commit 8bafb37 | 2026-08-03 | Ethernet netif 및 mDNS initialization 수정 |
| Reviewed repository HEAD | Commit df6f5cf94d47d1873a88fb4d1d2c295842a638a0 | 2026-08-03 | 첨부 source 기준 2026-07-29 commit |
| GitHub Releases | https://github.com/NIBEGroup/openeebus/releases | 2026-08-03 | 공식 Release 없음 |
| Smart Home Energy Management Controller | https://maker.wiznet.io/viktor/projects/smart-home-energy-management-controller-with-the-waveshare-esp32-s3-poe-eth/ | 2026-08-03 | ESP32-S3, W5500, OpenEEBUS, heat pump HEMS 사례 |
| ControlHeatPump | https://maker.wiznet.io/rena/projects/controlheatpump/ | 2026-08-03 | W5500 heat pump monitoring/control 관련 사례 |
| Ethernet Retrofit for Heating & Home Monitoring | https://maker.wiznet.io/sophia/projects/ethernet-retrofit-for-heating-home-monitoring/ | 2026-08-03 | W5100 기반 heating monitoring 비교 사례 |
