Optional: Powering the ESP8266 using your DSMR5+ meter
53 |
54 | When using a 6 pin cable you can use the power source provided by the meter.
55 |
56 | | P1 pin | ESP32 Pin |
57 | | ---- | ---- |
58 | | 1 - 5v out | 5v or Vin |
59 | | 2 - RTS | 3.3v |
60 | | 3 - GND | GND |
61 | | 4 - | |
62 | | 5 - RXD (data) | RX02 (gpio16) |
63 | | 6 - GND | GND |
64 |
65 |
66 |
67 |
68 | ### Data Sent
69 |
70 | All metrics are send to their own MQTT topic.
71 | The software generates all the topic through the Serial monitor when starting up
72 | Example topics are:
73 |
74 | ```
75 | sensors/power/p1meter/consumption_low_tarif
76 | sensors/power/p1meter/consumption_high_tarif
77 | sensors/power/p1meter/actual_received
78 | sensors/power/p1meter/instant_power_usage_l1
79 | sensors/power/p1meter/instant_power_usage_l2
80 | sensors/power/p1meter/instant_power_usage_l3
81 | sensors/power/p1meter/instant_power_current_l1
82 | sensors/power/p1meter/instant_power_current_l2
83 | sensors/power/p1meter/instant_power_current_l3
84 | sensors/power/p1meter/instant_voltage_l1
85 | sensors/power/p1meter/instant_voltage_l2
86 | sensors/power/p1meter/instant_voltage_l3
87 | sensors/power/p1meter/actual_tarif_group
88 | sensors/power/p1meter/short_power_outages
89 | sensors/power/p1meter/long_power_outages
90 | sensors/power/p1meter/short_power_drops
91 | sensors/power/p1meter/short_power_peaks
92 | ```
93 |
94 | But all the metrics you need are easily added using the `setupDataReadout()` method. With the DEBUG mode it is easy to see all the topics you add/create by the serial monitor. To see what your telegram is outputting in the Netherlands see: https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_a727fce1f1.pdf for the dutch codes pag. 19 -23
95 |
96 | ### Home Assistant Configuration
97 |
98 | Use this [example](https://raw.githubusercontent.com/daniel-jong/esp8266_p1meter/master/assets/p1_sensors.yaml) for home assistant's `sensor.yaml`
99 |
100 | ## Known limitations and issues
101 | My ESP32 can use the 5v from the `ISKRA AM550` but you first need to power it on via USB else it will bootloop. After it's booted and connected with the 5v port on the P1 connection you can unplug the ESP32 and it will stay on.
102 |
103 | ## Thanks to
104 | I want to Thank [JHockx](https://github.com/jhockx/esp8266_p1meter) because he told me he was working on a project reading out his P1 Meter. It sounded like a fun project but I had somewhat different hardware laying around so I started working with that.
105 |
106 | I also want to thank all the people he mentions in his project:
107 | - https://github.com/fliphess/esp8266_p1meter
108 | - https://github.com/jantenhove/P1-Meter-ESP8266
109 | - https://github.com/neographikal/P1-Meter-ESP8266-MQTT
110 | - http://gejanssen.com/howto/Slimme-meter-uitlezen/
111 | - https://github.com/rroethof/p1reader/
112 | - http://romix.macuser.nl/software.html
113 | - http://blog.regout.info/category/slimmeter/
114 | - http://domoticx.com/p1-poort-slimme-meter-hardware/
115 |
116 | In addition, I'd like thank and refer to the following projects which served as a source of information:
117 | - [https://github.com/daniel-jong/esp8266_p1meter](https://github.com/daniel-jong/esp8266_p1meter)
118 | - [https://github.com/WhoSayIn/esp8266_dsmr2mqtt](https://github.com/WhoSayIn/esp8266_dsmr2mqtt)
119 | - [https://github.com/jhockx/esp8266_p1meter](https://github.com/jhockx/esp8266_p1meter)
120 |
121 | Other sources:
122 | - [DSMR 5.0 documentation](https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_a727fce1f1.pdf)
123 |
--------------------------------------------------------------------------------
/assets/esp8266_p1meter_bb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bartwo/esp32_p1meter/72978155fe456e12b688c7297ed03563fcab9777/assets/esp8266_p1meter_bb.png
--------------------------------------------------------------------------------
/assets/esp8266_p1meter_bb_PoweredByMeter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bartwo/esp32_p1meter/72978155fe456e12b688c7297ed03563fcab9777/assets/esp8266_p1meter_bb_PoweredByMeter.png
--------------------------------------------------------------------------------
/assets/p1_sensors.yaml:
--------------------------------------------------------------------------------
1 | # Sensors for esp32_p1meter to be used in Home Assistant
2 |
3 | - platform: mqtt
4 | name: P1 Consumption Low Tariff
5 | unit_of_measurement: "kWh"
6 | state_topic: "sensors/power/p1meter/consumption_low_tarif"
7 | value_template: "{{ value|float / 1000 }}"
8 |
9 | - platform: mqtt
10 | name: P1 Consumption High Tariff
11 | unit_of_measurement: "kWh"
12 | state_topic: "sensors/power/p1meter/consumption_high_tarif"
13 | value_template: "{{ value|float / 1000 }}"
14 |
15 | - platform: mqtt
16 | name: P1 Return Delivery High Tariff
17 | unit_of_measurement: "kWh"
18 | state_topic: "sensors/power/p1meter/returndelivery_high_tarif"
19 | value_template: "{{ value|float / 1000 }}"
20 |
21 | - platform: mqtt
22 | name: P1 Return Delivery Low Tariff
23 | unit_of_measurement: "kWh"
24 | state_topic: "sensors/power/p1meter/returndelivery_low_tarif"
25 | value_template: "{{ value|float / 1000 }}"
26 |
27 | - platform: mqtt
28 | name: P1 Actual Power Consumption
29 | unit_of_measurement: "kW"
30 | state_topic: "sensors/power/p1meter/actual_consumption"
31 | value_template: "{{ value|float / 1000 }}"
32 |
33 | - platform: mqtt
34 | name: P1 Actual Return Delivery
35 | unit_of_measurement: "kW"
36 | state_topic: "sensors/power/p1meter/actual_received"
37 | value_template: "{{ value|float / 1000 }}"
38 |
39 | - platform: mqtt
40 | name: P1 L1 Instant Power Usage
41 | unit_of_measurement: "kW"
42 | state_topic: "sensors/power/p1meter/instant_power_usage_l1"
43 | value_template: "{{ value|float / 1000 }}"
44 |
45 | - platform: mqtt
46 | name: P1 L2 Instant Power Usage
47 | unit_of_measurement: "kW"
48 | state_topic: "sensors/power/p1meter/instant_power_usage_l2"
49 | value_template: "{{ value|float / 1000 }}"
50 |
51 | - platform: mqtt
52 | name: P1 L3 Instant Power Usage
53 | unit_of_measurement: "kW"
54 | state_topic: "sensors/power/p1meter/instant_power_usage_l3"
55 | value_template: "{{ value|float / 1000 }}"
56 |
57 | - platform: mqtt
58 | name: P1 L1 Instant Power Return
59 | unit_of_measurement: "kW"
60 | state_topic: "sensors/power/p1meter/instant_power_return_l1"
61 | value_template: "{{ value|float / 1000 }}"
62 |
63 | - platform: mqtt
64 | name: P1 L2 Instant Power Return
65 | unit_of_measurement: "kW"
66 | state_topic: "sensors/power/p1meter/instant_power_return_l2"
67 | value_template: "{{ value|float / 1000 }}"
68 |
69 | - platform: mqtt
70 | name: P1 L3 Instant Power Return
71 | unit_of_measurement: "kW"
72 | state_topic: "sensors/power/p1meter/instant_power_return_l3"
73 | value_template: "{{ value|float / 1000 }}"
74 |
75 | - platform: mqtt
76 | name: P1 L1 Instant Power Current
77 | unit_of_measurement: "A"
78 | state_topic: "sensors/power/p1meter/instant_power_current_l1"
79 | value_template: "{{ value|float / 1000 }}"
80 |
81 | - platform: mqtt
82 | name: P1 L2 Instant Power Current
83 | unit_of_measurement: "A"
84 | state_topic: "sensors/power/p1meter/instant_power_current_l2"
85 | value_template: "{{ value|float / 1000 }}"
86 |
87 | - platform: mqtt
88 | name: P1 L3 Instant Power Current
89 | unit_of_measurement: "A"
90 | state_topic: "sensors/power/p1meter/instant_power_current_l3"
91 | value_template: "{{ value|float / 1000 }}"
92 |
93 | - platform: mqtt
94 | name: P1 L1 Voltage
95 | unit_of_measurement: "V"
96 | state_topic: "sensors/power/p1meter/instant_voltage_l1"
97 | value_template: "{{ value|float / 1000 }}"
98 |
99 | - platform: mqtt
100 | name: P1 L2 Voltage
101 | unit_of_measurement: "V"
102 | state_topic: "sensors/power/p1meter/instant_voltage_l2"
103 | value_template: "{{ value|float / 1000 }}"
104 |
105 | - platform: mqtt
106 | name: P1 L3 Voltage
107 | unit_of_measurement: "V"
108 | state_topic: "sensors/power/p1meter/instant_voltage_l3"
109 | value_template: "{{ value|float / 1000 }}"
110 |
111 | - platform: mqtt
112 | name: P1 Gas Usage
113 | unit_of_measurement: "m3"
114 | state_topic: "sensors/power/p1meter/gas_meter_m3"
115 | value_template: "{{ value|float / 1000 }}"
116 |
117 | - platform: mqtt
118 | name: P1 Actual Tariff Group
119 | state_topic: "sensors/power/p1meter/actual_tarif_group"
120 |
121 |
--------------------------------------------------------------------------------
/esp32_p1meter.ino:
--------------------------------------------------------------------------------
1 | #include