esphome-p1
esphome-p1
What Is This Repository?
The mhendriks/esphome-p1 repository is not a firmware source code project, but a collection of ESPHome configuration files (YAML) for P1 smart meter devices.
Rather than implementing networking or application logic in C++, this repository provides the YAML configurations that ESPHome uses to generate firmware for ESP32-based P1 Dongles.
These configuration files define how the device should:
Connect to a DSMR (Dutch Smart Meter Requirements) smart meter
Communicate with Home Assistant
Configure Ethernet or Wi-Fi networking
Support OTA firmware updates
Enable MQTT or the native Home Assistant API
Configure UART parameters for reading DSMR telegrams
In other words, this repository serves as an ESPHome configuration repository, not an embedded networking stack implementation.
Which Product Does It Configure?
The repository is intended for the Smart-Stuff P1 Dongle family, including:
P1 Dongle
P1 Dongle Pro
Ethernet Dongle Pro
These products are ESP32-based gateways that connect to the P1 (DSMR) port of Dutch smart electricity meters and forward energy data to Home Assistant.
The repository supplies the ESPHome YAML files that are compiled into firmware for these devices.
What Does the Repository Contain?
Instead of application source code, the repository primarily contains configuration files such as:
ESPHome project configuration
ESP32 board definitions
UART settings for DSMR/P1 communication
Ethernet or Wi-Fi network configuration
Home Assistant API configuration
MQTT configuration (optional)
OTA update settings
Product-specific YAML files
The ESPHome build system converts these YAML files into executable firmware.
Does This Repository Use lwIP?
Yes.
However, the repository does not implement lwIP directly.
The networking architecture is:
YAML Configuration
│
▼
ESPHome
│
▼
ESP-IDF
│
▼
lwIP
│
▼
Ethernet Driver
The YAML files only describe the network configuration.
The actual TCP/IP stack is provided automatically by ESP-IDF, which uses lwIP as its networking stack.
Why Can We Conclude That It Uses lwIP?
ESPHome's Ethernet component includes lwIP headers such as:
#include <lwip/dns.h>
This demonstrates that the Ethernet implementation is built on top of the lwIP networking stack.
Additionally, when ESPHome is built using the ESP-IDF framework, the build system generates lwIP configuration options such as:
CONFIG_LWIP_MAX_SOCKETS
These configuration parameters are part of the ESP-IDF networking subsystem, further confirming that ESPHome relies on lwIP for TCP/IP networking.
Does This Repository Use W5500?
Based on the publicly available repository contents, there is no evidence that this project specifically uses the WIZnet W5500 Ethernet controller.
The repository clearly supports Ethernet-based devices, but the available YAML configurations do not explicitly identify the Ethernet hardware as:
W5500
LAN8720
ENC28J60
another Ethernet controller
Therefore, it is accurate to state:
The repository supports Ethernet networking, but it does not provide sufficient evidence to conclude that it is specifically designed for the W5500.
How Would a W5500-Based ESPHome System Differ?
If an ESPHome device were built around the W5500, the software architecture would typically be:
Application
│
▼
ESPHome
│
▼
ESP-IDF
│
▼
lwIP
│
▼
W5500 Ethernet Driver
│
▼
SPI
│
▼
W5500
An important distinction is that ESPHome does not use the WIZnet ioLibrary's hardware TCP/IP offload engine. Instead, it treats the W5500 as an Ethernet network interface while lwIP continues to provide the TCP/IP stack.
Therefore:
Standard ESP32 Ethernet → lwIP + Ethernet MAC/PHY driver
ESP32 + W5500 (ESPHome) → lwIP + W5500 Ethernet driver
In both cases, lwIP remains responsible for TCP/IP processing.
Comparison of Similar Projects on maker.wiznet.io
| Feature | mhendriks/esphome-p1 | Ethernet P1 Dongel Pro+ | DSMR P1 → AstraMeter CT002 | ESPHome SensoStar | ESPHome W5500 on ESP32 Boards |
|---|---|---|---|---|---|
| Primary Purpose | ESPHome configuration repository for P1 smart meters | Ethernet gateway for P1, water meters, S0 pulse, and Modbus devices | Converts DSMR P1 data into CT002-compatible data for battery energy storage systems | Connects heat meters to Home Assistant | Reference project for integrating W5500 with ESPHome |
| Target Device | DSMR/P1 smart meters | DSMR/P1 smart meters, water meters, S0 pulse counters, RS485/Modbus devices | DSMR 5 smart meters | Engelmann SensoStar heat meters | Generic ESP32 Ethernet boards |
| Platform | ESP32 family | ESP32-C3 / ESP32-S3 | ESP32-S3 | ESP32-S3 / ESP32-C6 | ESP32-C3 |
| WIZnet Hardware | Not explicitly specified | W5500 | W5500 | W5500 (Ethernet version) | W5500 |
| Configuration Method | ESPHome YAML | ESPHome YAML | ESPHome YAML with custom automation | ESPHome YAML with custom components | ESPHome YAML |
| Meter Interface | UART (DSMR/P1) | P1, S0, RS485/Modbus | UART (DSMR/P1) | M-Bus | Not meter-specific |
| Network Connectivity | Home Assistant API, MQTT, OTA | Home Assistant, MQTT, REST API, DSMR-API | MQTT, Home Assistant, UDP | Home Assistant API, MQTT | Home Assistant API |
| Ethernet Purpose | Transfers smart meter data over Ethernet | Multi-protocol energy gateway with wired Ethernet | Reliable Ethernet connection for energy storage control | Wired networking for heat meter monitoring | Demonstrates W5500 Ethernet integration with ESPHome |
| Wi-Fi Support | Yes (depending on configuration) | Yes (model dependent) | Yes | Yes | Optional |
| Uses lwIP | Yes | Yes | Yes | Yes | Yes |
| Uses W5500 Hardware TCP/IP Offload (ioLibrary) | No | No | No | No | No |
Similarity to esphome-p1 | Baseline | Very High | High | Medium | High (network architecture only) |
WIZnet Perspective
From a WIZnet standpoint, this repository should be viewed as an ESPHome configuration project rather than a WIZnet networking project.
Even if the Ethernet Dongle Pro hardware were to use a W5500 internally, the networking model would still be based on ESPHome → ESP-IDF → lwIP, rather than the WIZnet ioLibrary with hardware TCP/IP offloading commonly used in MCU-based W5500 reference designs.
As a result, this repository is better categorized as an ESPHome/lwIP Ethernet configuration project than as a native W5500 hardware TCP/IP offload implementation.
