p1meter.dev

Virtual Smart Meter P1 Simulator

SMART METER TYPE
DSMR 5.0 P1-READER
TARIFF
T1
T2
Electricity delivered T1
OBIS: 1-0:1.8.1
001234.759 kWh
1/7
1000 imp/kWh
P1
P1 PORT
S/N 4530303437
TYPE: ESMR 5.0
3x230/400V 0,25-5(100)A
4530303131031
50Hz EN 50470-3
S/N: 45303031
Fab. Year: 2023

Press the button to cycle through readings ↑

What is this?

In the Netherlands and Belgium, modern "Smart Meters" feature a physical P1 Port. This port outputs live electricity and gas usage data to devices like Home Assistant or custom energy displays.

p1meter.dev is a virtual version of that port. It provides a live stream of simulated data that mimics the standard DSMR 5.0 protocol. Use it to build and test your energy management software without needing to be near a physical meter.

How to Connect

Stream Endpoint
  • Hostp1meter.dev
  • Port8080
  • ProtocolTCP/IP Raw
  • StandardDSMR 5.0
Instant Preview

Run this in your terminal to see the raw data stream instantly:

terminal
$ nc p1meter.dev 8080

New data packet every 10 seconds.

Data Format (The "Telegram")

In the smart meter world, a Telegram is simply a text packet containing all current readings. The text below is exactly what your app will receive from our server.

DSMR 5.0 Telegram
raw output
/ISk5\2MT382-1000

1-3:0.2.8(50)
0-0:1.0.0(260520115655W)
0-0:96.1.1(4530303437303030303037363330383137)
1-0:1.8.1(001234.759*kWh)
1-0:1.8.2(002345.678*kWh)
1-0:2.8.1(000123.497*kWh)
1-0:2.8.2(000234.567*kWh)
0-0:96.14.0(0001)
1-0:1.7.0(000001.261*kW)
1-0:2.7.0(000000*kW)
0-0:96.7.21(0)
0-0:96.7.9(0)
1-0:32.32.0(0)
1-0:32.36.0(0)
0-1:24.1.0(003)
0-1:96.1.0(4730303339303031373434313430323137)
0-1:24.2.1(260520115655W)(000987.654*m3)
!2FB4

Developer Example (Node.js)

client.js
const net = require('net');

const client = new net.Socket();
client.connect(8080, 'p1meter.dev', () => {
  console.log('Connected to Smart Meter P1 Stream');
});

client.on('data', (data) => {
  // Raw telegram data (DSMR 5.0 format)
  console.log(data.toString());
});

client.on('close', () => {
  console.log('Connection closed');
});