P1 modules

Wireless modules

Compact ESP12F model

First wifi design: compact esp12f

This is the very first wireless version I’ve made. It’s designed to work as a simple serial-wireless bridge with esp-link from Jeelabs. The idea is to pass the P1 telegrams via the wireless network to a server somewhere else in the network. This can be mounted as a pseudo tty with socat or ser2net.

I’m using socat at this moment. Just install socat, add a system-service like below, and you’ve got a pseudo tty /dev/virtualcom0 which can be used in any other application like DSMR-reader:

$ cat /etc/systemd/system/socat.service 

ExecStart=/usr/bin/socat -U pty,link=/dev/virtualcom0,raw tcp:


I recently created a simple mqtt code, based on fliphess’s code. In the code was SoftwareSerial used. As I use hardware inverters in all my modules, there is no need to use SoftwareSerial and therefor I’ve modified the code to use Serial instead of SoftwareSerial. A compiled version can be downloaded below:

Flashing the ESP (both compact and Wemos model) can best be done via ESPHome-Flasher. This because this program automatically erases the memory of the ESP before uploading the firmware.

Wemos D1 model

Second wifi design: more approachable for others

Because the first compact model isn’t easy to flash without some wires and knowledge, I’ve decided to make an easier model, jet less compact. It’s the same as the compact, only easier to flash, as it has an USB header of the Wemos itself. This wireless model is also for those who haven’t got DSMR 5, this model can be powered from the USB port .

WARNING!!! Before using this module, make sure to check the jumper underneath the Wemos. As default, I place the jumper half on the pins (so on one pin and not both).

Jumper closed
Jumper closed means that the power from the P1 (via this jumper) is connected to the board. When using DSMR 5 and power from the P1 port, the jumper should be closed (on both pins).

Jumper open
Jumper open means that the power pin (1) from the P1 port is disconnected to the board. Therefor you have to power it via the USB port. When powering via USB port, the jumper should be open.

Photo from the jumper underneath the Wemos

The reason is that I’m not sure what happens when there’s put external power on the P1 port. The data lines are galvanic isolated. Yet I couldn’t find anything about this for the power supply. Adding a diode could solve this, yet the power drop from the diode could make the ESP unstable, as the onboard 5v -> 3v3 converter itself needs at least 1.2 volt.

Like the compact version, the Wemos can run too on the MQTT firmware!

Ethernet modules


First design: usr-tcp232-t

This is the very first model I’ve designed and made. The idea was/is very simple. Get the power and signal out the P1 port, invert the data and put it into the USR-TCP232-T2 ethernet module. Read the full story here. Unfortunately there is a minor design fault: The P1 header should be on the other side, same as the ethernet port. But it worked like a charm. The USR comes default with a fixed ip-address instead of DHCP (which I prefer). Every module I sold, I had to change the ip (which isn’t hard, only takes at least 10 minutes each time). Thats why after a short time I tried another model: the Eport-E20, which is smaller, compacter and comes default with DHCP as network setting.

Eport E20 v1

Eport E20 v1 (no external power)

Model v2.0. This model is with the Eport E20 instead of the USR-TCP232-T2. The whole build and design story can be read here. This module is much smaller/compacter and easier to get on AliExpress. The USR’s where harder to get, unless you paid double the regular price. That ain’t gonna happen of course 😁

Eport E20 v2.x

Eport E20 v2.2 (with usb power)

Eport E20 version v2.1 and v2.2. I noticed that there was a lot of request from DSMR 2/3/4 users/owners. Those ports aren’t capable of supplying enough juice on the P1 port and needed external power. So I decided to make some modifications to the design and made model v2.1. Meanwhile I also learned about another single channel logic inverter, which I really liked to try. And that’s where model v2.2 was created. Both models v2.x are the same in functionality and looks. The only difference is the inverter.