P1 Smart meter DSMR

  • Build wireless P1 interface
  • Setup ESP with ESPEASY
  • Setup Domoticz

Smart meter P1 WiFi gateway

According the following schematic from Tasmota

Build a shield to adapt the P1 5V signal to inverted 3.3V (ESP)

Wired board

Below is also an interface as shield.

Setup ESP with ESPEASY

Setup the ESP with a device as P1 interface

Setup Domoticz

Harware settings
Atomatic generated devices

As shield

Shield for a Wemos D1 mini (Not tested yet)


Smart meter with optical interface

Python script voor uitlezen meter zie link

Smartmeter Landis+Gyr meter ZCF120ABd (K82W)

Serialsettings

  • Baud rate 300
  • Number of bits 7
  • Parity E
  • Number of stop bits 1
  • xonxoff=0 rtscts=0 timeout=20

Test connection

  • Open terminal (Linux) and give the following commands
  • stty -F /dev/ttyUSB0 300 -parodd cs7 -cstopb parenb -ixoff -crtscts -hupcl -ixon -opost -onlcr -isig -icanon -iexten -echo -echoe -echoctl -echoke
  • cat /dev/ttyUSB0
  • Open a second terminal and give the following commands
  • echo -n -e ‘\x2F\x3F\x21\x0D\x0A’ > /dev/ttyUSB0
  • At the first terminal you see meter identification
  • ——————————–
  • echo -n -e ‘\x2F\x3F\x21\x0D\x0A’ > /dev/ttyUSB0 && echo -n -e ‘\x06\x30\x30\x30\x0D\x0A’ > /dev/ttyUSB0 ( && commands must be given directly after each other)
  • At the first terminal you see metered data

F.F(00)
C.1.0(91120543)
0.0(K82W00………8)
C.1.1( )
1.8.1(019924.454kWh)

1.8.2(018264.464kWh)
2.8.1(000000.000kWh)

2.8.2(000000.000kWh)
1.8.0(038188.918kWh)

2.8.0(000000.000kWh)
15.8.0(038188.918kWh)

C.7.0(0009) 32.7(228V)
31.7(002.29*A)
C.5.0(0020)
!
l!

Node Red

[
    {
        "id": "3cea2fb7215510d3",
        "type": "tab",
        "label": "Flow 1",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "e6c39153.e8eab8",
        "type": "serial-port",
        "serialport": "/dev/ttyUSB0",
        "serialbaud": "300",
        "databits": "7",
        "parity": "even",
        "stopbits": "1",
        "waitfor": "",
        "dtr": "none",
        "rts": "none",
        "cts": "low",
        "dsr": "none",
        "newline": "200",
        "bin": "false",
        "out": "interbyte",
        "addchar": "",
        "responsetimeout": "10000"
    },
    {
        "id": "741a12ab7e85b435",
        "type": "inject",
        "z": "3cea2fb7215510d3",
        "name": "\"0x2F\", \"0x3F\", \"0x21\", \"0x0D\", \"0x0A\"",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "[\"0x2F\", \"0x3F\", \"0x21\", \"0x0D\", \"0x0A\"]",
        "payloadType": "bin",
        "x": 210,
        "y": 120,
        "wires": [
            [
                "155d22f0618d2958",
                "7e566ae9cb0d77d2"
            ]
        ]
    },
    {
        "id": "1f5815eb4435c35c",
        "type": "debug",
        "z": "3cea2fb7215510d3",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1010,
        "y": 120,
        "wires": []
    },
    {
        "id": "155d22f0618d2958",
        "type": "serial request",
        "z": "3cea2fb7215510d3",
        "name": "",
        "serial": "e6c39153.e8eab8",
        "x": 790,
        "y": 120,
        "wires": [
            [
                "1f5815eb4435c35c",
                "e924d0c028bd822e",
                "1a9a66177df84382"
            ]
        ]
    },
    {
        "id": "a75fcefd52880401",
        "type": "inject",
        "z": "3cea2fb7215510d3",
        "name": "\"0x06\", \"0x30\", \"0x30\", \"0x30\", \"0x0D\", \"0x0A\"",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "[\"0x06\", \"0x30\", \"0x30\", \"0x30\", \"0x0D\", \"0x0A\"]",
        "payloadType": "bin",
        "x": 230,
        "y": 180,
        "wires": [
            [
                "155d22f0618d2958",
                "7e566ae9cb0d77d2"
            ]
        ]
    },
    {
        "id": "7e566ae9cb0d77d2",
        "type": "debug",
        "z": "3cea2fb7215510d3",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 1030,
        "y": 180,
        "wires": []
    },
    {
        "id": "34c5890fa09b4a3c",
        "type": "inject",
        "z": "3cea2fb7215510d3",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "\u0002F.F(00) C.1.0(91120543) 0.0(K82W009112054308) C.1.1(        ) 1.8.1(019924.454*kWh) 1.8.2(018264.641*kWh) 2.8.1(000000.000*kWh) 2.8.2(000000.000*kWh) 1.8.0(038189.096*kWh) 2.8.0(000000.000*kWh) 15.8.0(038189.096*kWh) C.7.0(0009) 32.7(224*V) 31.7(002.04*A) C.5.0(0020) ! \u0003j! \u0003O",
        "payloadType": "str",
        "x": 130,
        "y": 320,
        "wires": [
            [
                "e924d0c028bd822e",
                "1a9a66177df84382"
            ]
        ]
    },
    {
        "id": "65baa532272277c3",
        "type": "debug",
        "z": "3cea2fb7215510d3",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1010,
        "y": 320,
        "wires": []
    },
    {
        "id": "e924d0c028bd822e",
        "type": "string",
        "z": "3cea2fb7215510d3",
        "name": "C1.8.1",
        "methods": [
            {
                "name": "left",
                "params": [
                    {
                        "type": "num",
                        "value": "79"
                    }
                ]
            },
            {
                "name": "right",
                "params": [
                    {
                        "type": "num",
                        "value": "10"
                    }
                ]
            }
        ],
        "prop": "payload",
        "propout": "payload",
        "object": "msg",
        "objectout": "msg",
        "x": 560,
        "y": 320,
        "wires": [
            [
                "65baa532272277c3"
            ]
        ]
    },
    {
        "id": "1a9a66177df84382",
        "type": "string",
        "z": "3cea2fb7215510d3",
        "name": "C1.8.2",
        "methods": [
            {
                "name": "left",
                "params": [
                    {
                        "type": "num",
                        "value": "101"
                    }
                ]
            },
            {
                "name": "right",
                "params": [
                    {
                        "type": "num",
                        "value": "10"
                    }
                ]
            }
        ],
        "prop": "payload",
        "propout": "payload",
        "object": "msg",
        "objectout": "msg",
        "x": 560,
        "y": 380,
        "wires": [
            [
                "fee68877ee4307a5"
            ]
        ]
    },
    {
        "id": "fee68877ee4307a5",
        "type": "debug",
        "z": "3cea2fb7215510d3",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 1010,
        "y": 380,
        "wires": []
    },
    {
        "id": "792ae134a3324714",
        "type": "comment",
        "z": "3cea2fb7215510d3",
        "name": "Additional nodes",
        "info": "node-red-node-serialport\nnode-red-contrib-string",
        "x": 600,
        "y": 40,
        "wires": []
    }
]

IEC 62056 

https://community.openhab.org/t/reading-power-consumption-of-the-electricity-meter-with-the-ir-interface/94996

Software http://www.smartmeterdashboard.nl/downloads

http://domoticx.com/p1-poort-slimme-meter-data-naar-node-red-mqtt/

https://www.npmjs.com/package/node-red-contrib-smartmeter

https://www.satec-global.com/sites/default/files/EM720-IEC-62056-21.pdf