Smart Meter ISKRA AM550 and P1 Wifi ESMR5 from Esp8266thingies

  • Platform information:
    • Hardware: Thinkpad Edge E130
    • OS: Linux Mint 20.2 Mate
    • Java Runtime Environment: Zulu 11
    • openHAB version: 3.1.0
    • MQTT Mosquitto
    • Mater meter: Netherlands, Type ISKRA AM550
  • Issue of the topic: How to mage the readings of the smart meter
    Question: did someone manage to use the P1 Wifi ESM5 from esp8266thingies.nl?

I have flashed this module with the Tasmota software as advised on their website [Tasmota P1 firmware181231.bin] See: (http://www.esp8266thingies.nl/wp/wp-content/uploads/2019/01/Tasmota-P1-firmware181231.bin_.zip).
The ISKRA Am550 sends about every 2 seconds the info. I found no way to reduce the time to 1 minute or even higher. However the output to openHAB could be reduced in a rule in my opinion.

I can see the results in the web interface of this module via the browser firefox 92.0.
I can not connect the module via the homeassistent binding in MQTT binding. The module is discovered, but only the On/Off part. I managed to generate a general MQTT thing. And I see results. I only can not determine if it is a string or something else. I also cannot find the result in Mosquitto via mosquitto_sub.

Used settings
.items
String P1 “test [%s]” {channel=“mqtt:topic:mosquitto:slimmemeter2:p1” } // this has changed, but I see results in the item P1
Number P1_P “Actueel vermogen [%s]”
Number P1_GAS “Gasmeter: [%.1f]”
Number P1_T1 “kWh Teller 1: [%s]”
Number P1_T2 “kWh Teller 2: [%s]”
Number P1_I “Stroom: [%.2f A]”

4- add the P1 values to the *.sitemap file (example below)
Text item=P1_T1 label=“kWh Teller 1: [%.1f kWh]”
Text item=P1_T2 label=“kWh Teller 2: [%.1f kWh]”
Text item=P1_P label=“Actuele vermogen: [%.3f kW]”
Text item=P1_I label=“Actuele stroom: [%.1f A]”
Text item=P1_GAS label=“Gasmeter: [%.1f m3]”

5- add P1 channel to *.things file
// P1 - slimmemeter2
Thing topic slimmemeter2 “Slimmemeter2” @ “Hal” {
Channels:
Type string : p1 “kWh Teller 1” [ stateTopic=“tele/P1/RESULT”, transformationPattern=“JSONPATH:SerialReceived” ]
}
6- add rule to the *.rules file (example below)

I used the following rule:
rule “P1 P_gewijzigd 20210915 RvL. Voor origineel *.backup”

when
Item P1 received update
then
logInfo(“Rule Smartmeter” , " “+P1.state.toString)
if (P1.state == NULL || P1.state == “”) return;
val rawString = P1.state.toString
logInfo(“Rule Smartmeter”, “rawString” + rawString)
//P1_I 1-0:31.7.0(002A)
val rawString3 = transform(“REGEX”, ".
([0-9]{3}).A.*”, rawString)
if ( rawString3 != NULL && rawString3 !== null && rawString3 != “”) {
P1_I.postUpdate(rawString3)
}
logInfo(“Rule Smartmeter” , "P1_I = "+rawstring3)

    //P1_T1         1-0:1.8.1(000013.000*kWh) (Totaal geleverd tarief 1 (nacht))
    rawString3 = transform("REGEX", ".*1.8.1.([0-9]{6}.[0-9]{3}).kWh.*", rawString)
    if ( rawString3 != NULL && rawString3 !== null && rawString3 != "") {
            P1_T1.postUpdate(rawString3)
            }
    //P1_T2         1-0:1.8.2(000084.000*kWh) (Totaal verbruik tarief 2 (dag))
    rawString3 = transform("REGEX", ".*1.8.2.([0-9]{6}.[0-9]{3}).kWh.*", rawString)
    if ( rawString3 != NULL && rawString3 !== null && rawString3 != "") {
            P1_T2.postUpdate(rawString3)
            }
    //P1_GAS        0-1:24.2.1(191222151005W)(02728.449*m3)
    rawString3 = transform("REGEX", ".*[0-9]{12}.*([0-9]{5}.[0-9]{3}).m3.*", rawString)
    if ( rawString3 != NULL && rawString3 !== null && rawString3 != "") {
            P1_GAS.postUpdate(rawString3)
            }
    // P1_P                 1-0:21.7.0(00.523*kW)
    rawString3 = transform("REGEX", ".*21.7.0.([0-9]{2}.[0-9]{3}).kW.*", rawString)
    if ( rawString3 != NULL && rawString3 !== null && rawString3 != "") {
            P1_P.postUpdate(rawString3)
            }

end

The logInfo of rawstring is as follows:
2021-09-16 10:56:13.828 [INFO ] [ab.core.model.script.Rule Smartmeter] - rawString/ISK5M550E-10131-3:0.2.8(50)0-0:1.0.0(210916105613S)0-0:96.1.1(4530303533303037363137333536363230)1-0:1.8.1(000140.609kWh)1-0:1.8.2(000152.112kWh)1-0:2.8.1(000054.239kWh)1-0:2.8.2(000140.159kWh)0-0:96.14.0(0002)1-0:1.7.0(00.000kW)1-0:2.7.0(01.525kW)0-0:96.7.21(00007)0-0:96.7.9(00003)1-0:99.97.0(1)(0-0:96.7.19)(200312190838W)(0000000290s)1-0:32.32.0(00004)1-0:32.36.0(00001)0-0:96.13.0()1-0:32.7.0(235.2V)1-0:31.7.0(006A)1-0:21.7.0(00.000kW)1-0:22.7.0(01.529*kW)

In openhab.log I see the following errors:
2021-09-16 10:56:13.830 [WARN ] [b.core.model.script.actions.BusEvent] - Cannot convert ‘/ISK5M550E-10131-3:0.2.8(50)0-0:1.0.0(210916105613S)0-0:96.1.1(4530303533303037363137333536363230)1-0:1.8.1(000140.609kWh)1-0:1.8.2(000152.112kWh)1-0:2.8.1(000054.239kWh)1-0:2.8.2(000140.159kWh)0-0:96.14.0(0002)1-0:1.7.0(00.000kW)1-0:2.7.0(01.525kW)0-0:96.7.21(00007)0-0:96.7.9(00003)1-0:99.97.0(1)(0-0:96.7.19)(200312190838W)(0000000290s)1-0:32.32.0(00004)1-0:32.36.0(00001)0-0:96.13.0()1-0:32.7.0(235.2V)1-0:31.7.0(006A)1-0:21.7.0(00.000kW)1-0:22.7.0(01.529*kW)’ to a state type which item ‘P1_I’ accepts: [DecimalType, QuantityType, UnDefType].
2021-09-16 10:56:13.831 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID ‘smart_p1-1’ failed: The name ‘rawstring3’ cannot be resolved to an item or type; line 15, column 41, length 10 in smart_p1

The rule is an old one I found, thinking that the format has not changed. I’m not sure about that.

So has some one managed to get this working in openHAB?

BTW I’m not a programmer. I just try to use openHAB as my home automation.

I hope, that there are people in the community, who have tried to get this working and succeeded.

Problem solved. You need to install RegEx Tranformation located under Settings → Add-ons → Tranformations