P1 Smart Meter - stodev-com-br/Tasmota GitHub Wiki

Kaifa MA105C Energy Meter

In this example the Kaifa MA105C meter is used and might work with other meters as well.

Schematics

The transistor makes sure that the RxD signal is converted and inverted to 3.3v

Tasmota Configuration

In the Configuration -> Configure Module page, select module **Generic (18)**

From the web console set the serial delimiter to 10 (newline). This makes Tasmota publish each line of the telegram separately to mqtt.

SerialDelimiter 10

SerialSend

Example output

Below an example of the telegram message published (per line) to mqtt. From here your HA system can process the data required for your needs.

16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"/KFM5KAIFA-METER"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":""}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-3:0.2.8(42)"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-0:1.0.0(190104170020W)"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-0:96.1.1(4530303235303030303639363432393136)"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:1.8.1(002342.060*kWh)"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:1.8.2(002566.728*kWh)"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:2.8.1(000000.000*kWh)"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:2.8.2(000000.000*kWh)"}
16:59:39 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-0:96.14.0(0002)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:1.7.0(00.428*kW)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:2.7.0(00.000*kW)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-0:96.7.21(00000)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-0:96.7.9(00000)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:99.97.0(1)(0-0:96.7.19)(000101000001W)(2147483647*s)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:32.32.0(00000)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:32.36.0(00000)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-0:96.13.1()"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-0:96.13.0()"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:31.7.0(002*A)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:21.7.0(00.453*kW)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"1-0:22.7.0(00.000*kW)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-1:24.1.0(003)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-1:96.1.0(4730303332353631323736373836373136)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"0-1:24.2.1(190104160000W)(02949.209*m3)"}
16:59:40 MQT: tele/wemos-9/RESULT = {"SerialReceived":"!EE58"}

Description of each line

see also DSMR 5.0 - P1 Companion Standard

Header information - {"SerialReceived":"/KFM5KAIFA-METER"}
Empty line - {"SerialReceived":""}
Version information for P1 output - {"SerialReceived":"1-3:0.2.8(42)"}
Date-time stamp of the P1 message - {"SerialReceived":"0-0:1.0.0(181227093413W)"}
Equipment identifier - {"SerialReceived":"0-0:96.1.1(4530303235303030303639363432393136)"}
electricityUsedTariff1 >> Meter Reading electricity delivered to client (Tariff 1) in 0,001 kWh - {"SerialReceived":"1-0:1.8.1(002293.192*kWh)"}
electricityUsedTariff2 >> Meter Reading electricity delivered to client (Tariff 2) in 0,001 kWh - {"SerialReceived":"1-0:1.8.2(002523.640*kWh)"}
Meter Reading electricity delivered by client (Tariff 1) in 0,001 kWh - {"SerialReceived":"1-0:2.8.1(000000.000*kWh)"}
Meter Reading electricity delivered by client (Tariff 2) in 0,001 kWh - {"SerialReceived":"1-0:2.8.2(000000.000*kWh)"}
electricityActiveTariff >> Tariff indicator electricity. The tariff indicator can also be used to switch tariff dependent loads e.g boilers. This is the responsibility of the P1 user - {"SerialReceived":"0-0:96.14.0(0002)"}
Actual electricity power delivered (+P) in 1 Watt resolution - {"SerialReceived":"1-0:1.7.0(00.474*kW)"}
Actual electricity power received (-P) in 1 Watt resolution - {"SerialReceived":"1-0:2.7.0(00.000*kW)"}
Number of power failures in any phase - {"SerialReceived":"0-0:96.7.21(00000)"}
Number of long power failures in any phase - {"SerialReceived":"0-0:96.7.9(00000)"}
Power Failure Event Log (long power failures) - {"SerialReceived":"1-0:99.97.0(1)(0-0:96.7.19)(000101000001W)(2147483647*s)"}
Number of voltage sags in phase L1 - {"SerialReceived":"1-0:32.32.0(00000)"}
Number of voltage swells in phase L1 - {"SerialReceived":"1-0:32.36.0(00000)"}
Text message max 1024 characters. - {"SerialReceived":"0-0:96.13.1()"}
Text message max 1024 characters. - {"SerialReceived":"0-0:96.13.0()"}
Instantaneous current L1 in A resolution - {"SerialReceived":"1-0:31.7.0(002*A)"}
Instantaneous active power L1 (+P) in W resolution - {"SerialReceived":"1-0:21.7.0(00.474*kW)"}
Instantaneous active power L1 (-P) in W resolution - {"SerialReceived":"1-0:22.7.0(00.000*kW)"}
Device-Type - {"SerialReceived":"0-1:24.1.0(003)"}
Equipment identifier (Gas) - {"SerialReceived":"0-1:96.1.0(4730303332353631323736373836373136)"}
GasMeterReadingFiveMinutes >> Last 5-minute value (temperature converted), gas delivered to client in m3, including decimal values and capture time - {"SerialReceived":"0-1:24.2.1(181227090000W)(02910.491*m3)"}
{"SerialReceived":"!5E3E"}

Additional info