---
title: "esphome-p1"
url: "https://maker.wiznet.io/jaden/projects/esphome-p1/"
markdown_url: "https://maker.wiznet.io/jaden/projects/esphome-p1/md"
type: "UCC: User Created Content"
author: "Martijn Hendriks"
author_url: "https://github.com/mhendriks/esphome-p1"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Martijn Hendriks"
original_url: "https://github.com/mhendriks/esphome-p1"
published: "2026-07-30"
language: "en"
likes: 0
views: 189
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# esphome-p1

> esphome-p1

Original author: Martijn Hendriks (source: https://github.com/mhendriks/esphome-p1)

## Article

### 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.

![](https://maker.wiznet.io/upload/ckeditor5/1043329957%5F1785744952%2Epng)

---

### Which Product Does It Configure?

The repository is intended for the **Smart-Stuff P1 Dongle family**, including:

P1 Dongle

P1 Dongle Pro

![](https://maker.wiznet.io/upload/ckeditor5/1043329957%5F1785744603%2Epng)

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:

```plaintext
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:

```cpp
#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:

```plaintext
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:

```plaintext
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+**](https://maker.wiznet.io/matthew/resellers/ethernet%2Dp1%2Ddongel%2Dpro%2Dslimme%2Dmeter%2Dlezer/) | [**DSMR P1 → AstraMeter CT002**](https://maker.wiznet.io/Sunny_/projects/esphome%2D%2Ddsmr%2Dp1%2D%2Dastrameter%2Dct002%2Dmarstek/) | [**ESPHome SensoStar**](https://maker.wiznet.io/Sunny_/projects/esphome%2Dsensostar/) | [**ESPHome W5500 on ESP32 Boards**](https://maker.wiznet.io/Benjamin/projects/esphome%2Dw5500%2Dethernet%2Don%2Desp32%2Dboards%2D1/) |
| --- | --- | --- | --- | --- | --- |
| **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.

---

Source: https://maker.wiznet.io/jaden/projects/esphome-p1/
