micw / tibber-pulse-reader

A tool to read data directly from tibber pulse and publish it locally
43 stars 7 forks source link

EMH ED300L: Unable to parse SML from response #6

Closed mslookup closed 1 year ago

mslookup commented 1 year ago

Hi, i was very thrilled to try out your tool. Unfortunately it seems to have some compatibility issues with my EMH ED300L Smart Meter device.

Live metering data is showing up fine in Tibber app. When I try to start your docker container, i keep getting the following error:

:: Spring Boot ::               (v2.5.14)

2023-03-31 06:10:58.702  INFO 1 --- [           main] de.wyraz.tibberpulse.TibberPulseReader   : Starting TibberPulseReader v1.0.0-SNAPSHOT using Java 17-ea on 24f0311f2579 with PID 1 (/tibber-pulse-reader.jar started by root in /)

2023-03-31 06:10:58.703  INFO 1 --- [           main] de.wyraz.tibberpulse.TibberPulseReader   : No active profile set, falling back to 1 default profile: "default"

2023-03-31 06:10:59.189  INFO 1 --- [           main] de.wyraz.tibberpulse.TibberPulseReader   : Started TibberPulseReader in 0.769 seconds (JVM running for 1.003)

2023-03-31 06:11:00.408  WARN 1 --- [           main] d.w.t.source.TibberPulseHttpReader       : Unable to parse SML from response

java.lang.RuntimeException: Expected a valid SML value but got unknown tl field: 01010110 (01010110)

at de.wyraz.sml.SMLMessageParser.unexpectedTlField(SMLMessageParser.java:373) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.readSMLValue(SMLMessageParser.java:368) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLListEntry(SMLMessageParser.java:154) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLList(SMLMessageParser.java:138) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLGetListResponse(SMLMessageParser.java:126) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLMessageBody(SMLMessageParser.java:87) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLMessages(SMLMessageParser.java:56) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parse(SMLMessageParser.java:31) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.sml.SMLDecoder.decode(SMLDecoder.java:62) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.source.TibberPulseHttpReader.fetch(TibberPulseHttpReader.java:86) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.source.TibberPulseHttpReader.run(TibberPulseHttpReader.java:51) ~[classes!/:1.0.0-SNAPSHOT]

at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:817) ~[spring-boot-2.5.14.jar!/:2.5.14]

at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:801) ~[spring-boot-2.5.14.jar!/:2.5.14]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:350) ~[spring-boot-2.5.14.jar!/:2.5.14]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1370) ~[spring-boot-2.5.14.jar!/:2.5.14]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1359) ~[spring-boot-2.5.14.jar!/:2.5.14]

at de.wyraz.tibberpulse.TibberPulseReader.main(TibberPulseReader.java:18) ~[classes!/:1.0.0-SNAPSHOT]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na]

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]

at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[tibber-pulse-reader.jar:1.0.0-SNAPSHOT]

at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[tibber-pulse-reader.jar:1.0.0-SNAPSHOT]

at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[tibber-pulse-reader.jar:1.0.0-SNAPSHOT]

at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) ~[tibber-pulse-reader.jar:1.0.0-SNAPSHOT]

2023-03-31 06:11:00.408  WARN 1 --- [   scheduling-1] d.w.t.source.TibberPulseHttpReader       : Unable to parse SML from response

java.lang.RuntimeException: Expected a valid SML value but got unknown tl field: 01010110 (01010110)

at de.wyraz.sml.SMLMessageParser.unexpectedTlField(SMLMessageParser.java:373) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.readSMLValue(SMLMessageParser.java:368) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLListEntry(SMLMessageParser.java:154) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLList(SMLMessageParser.java:138) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLGetListResponse(SMLMessageParser.java:126) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLMessageBody(SMLMessageParser.java:87) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLMessages(SMLMessageParser.java:56) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parse(SMLMessageParser.java:31) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.sml.SMLDecoder.decode(SMLDecoder.java:62) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.source.TibberPulseHttpReader.fetch(TibberPulseHttpReader.java:86) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.source.TibberPulseHttpReader.fetch(TibberPulseHttpReader.java:56) ~[classes!/:1.0.0-SNAPSHOT]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na]

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]

at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.20.jar!/:5.3.20]

at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.20.jar!/:5.3.20]

at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:95) ~[spring-context-5.3.20.jar!/:5.3.20]

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]

at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]

I attached the data.json file --> data.txt <<- (just renamed it to .txt for github upload) which I directly downloaded from the UI (/data.json?node_id=1) - maybe there is a possibility for a fix?

In addition, I read out the meter perfectly fine with a Hichi IR (Tasmota SML combination), Working SML config for it is:

>D 
>B  
=>sensor53 r  
>M 1  
+1,3,s,0,9600,EG
1,77070100100700FF@1,Gesamtleistung,W,power_sum,17
1,77070100240700FF@1,Leistung L1,W,power_l1,17
1,77070100380700FF@1,Leistung L2,W,power_l2,17
1,770701004C0700FF@1,Leistung L3,W,power_l3,17
1,77070100010800FF@1000,Zählerstand Verb.,kWh,kwh_in,20
1,77070100020800FF@1000,Zählerstand Einsp.,kWh,kwh_out,20
#

Thank you!

micw commented 1 year ago

Can you please run with log level debug and send me the SML output?

mslookup commented 1 year ago

Of course I can, sorry for not including it already in my first post...

:: Spring Boot ::               (v2.5.14)

2023-03-31 10:50:20.812  INFO 1 --- [           main] de.wyraz.tibberpulse.TibberPulseReader   : Starting TibberPulseReader v1.0.0-SNAPSHOT using Java 17-ea on 3969da0eb1d1 with PID 1 (/tibber-pulse-reader.jar started by root in /)

2023-03-31 10:50:20.813 DEBUG 1 --- [           main] de.wyraz.tibberpulse.TibberPulseReader   : Running with Spring Boot v2.5.14, Spring v5.3.20

2023-03-31 10:50:20.813  INFO 1 --- [           main] de.wyraz.tibberpulse.TibberPulseReader   : No active profile set, falling back to 1 default profile: "default"

2023-03-31 10:50:21.357  INFO 1 --- [           main] de.wyraz.tibberpulse.TibberPulseReader   : Started TibberPulseReader in 0.849 seconds (JVM running for 1.086)

2023-03-31 10:50:22.545 DEBUG 1 --- [           main] de.wyraz.tibberpulse.sml.SMLDecoder      : Parsing SML: 1b1b1b1b010101017607000c05de60f1620062007263010176010107000c0282cafb0b0901454d480000abd62a010163ea5f007607000c05de60f2620062007263070177010b0901454d480000abd62a070100620affff72620165028215f37e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff640102a001621e52ff5600034dd71f0177070100020800ff640102a001621e52ff560000116bbf0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116bbf0177070100010802ff0101621e52ff5600034dd71f0177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff55fffffdfe0177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff55ffffed5301770701004c0700ff0101621b52ff55000010ab0177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c01010163d727007607000c05de60f562006200726302017101638e9e001b1b1b1b1a004c66

2023-03-31 10:50:22.555 DEBUG 1 --- [   scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder      : Parsing SML: 1b1b1b1b010101017607000c05de60f1620062007263010176010107000c0282cafb0b0901454d480000abd62a010163ea5f007607000c05de60f2620062007263070177010b0901454d480000abd62a070100620affff72620165028215f37e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff640102a001621e52ff5600034dd71f0177070100020800ff640102a001621e52ff560000116bbf0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116bbf0177070100010802ff0101621e52ff5600034dd71f0177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff55fffffdfe0177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff55ffffed5301770701004c0700ff0101621b52ff55000010ab0177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c01010163d727007607000c05de60f562006200726302017101638e9e001b1b1b1b1a004c66

2023-03-31 10:50:22.558  WARN 1 --- [   scheduling-1] d.w.t.source.TibberPulseHttpReader       : Unable to parse SML from response

java.lang.RuntimeException: Expected a valid SML value but got unknown tl field: 01010110 (01010110)

at de.wyraz.sml.SMLMessageParser.unexpectedTlField(SMLMessageParser.java:373) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.readSMLValue(SMLMessageParser.java:368) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLListEntry(SMLMessageParser.java:154) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLList(SMLMessageParser.java:138) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLGetListResponse(SMLMessageParser.java:126) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLMessageBody(SMLMessageParser.java:87) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parseSMLMessages(SMLMessageParser.java:56) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.sml.SMLMessageParser.parse(SMLMessageParser.java:31) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.sml.SMLDecoder.decode(SMLDecoder.java:62) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.source.TibberPulseHttpReader.fetch(TibberPulseHttpReader.java:86) ~[classes!/:1.0.0-SNAPSHOT]

at de.wyraz.tibberpulse.source.TibberPulseHttpReader.fetch(TibberPulseHttpReader.java:56) ~[classes!/:1.0.0-SNAPSHOT]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[na:na]

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]

at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.20.jar!/:5.3.20]

at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.20.jar!/:5.3.20]

at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:95) ~[spring-context-5.3.20.jar!/:5.3.20]

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) ~[na:na]

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na]

at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]

Thank you very much, your work is greatly appreciated!

mslookup commented 1 year ago

Maybe relevant for debugging purposes: Here is the dump log of my Hichi IR Reader (The Tasmota based device i talked about above...).

micw commented 1 year ago

I started to implement the full ASN.1 spec required to decode any meter. Can you please send me some more examples?

The following part is enough:

Parsing SML: 1b1b1b1b010101017607000c05de60f1620062007263010176010107000c0282cafb0b0901454d480000abd62a010163ea5f007607000c05de60f2620062007263070177010b0901454d480000abd62a070100620affff72620165028215f37e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff640102a001621e52ff5600034dd71f0177070100020800ff640102a001621e52ff560000116bbf0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116bbf0177070100010802ff0101621e52ff5600034dd71f0177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff55fffffdfe0177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff55ffffed5301770701004c0700ff0101621b52ff55000010ab0177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c01010163d727007607000c05de60f562006200726302017101638e9e001b1b1b1b1a004c66
micw commented 1 year ago

I have re-implemented the parser now, please the latest (master) build.

mslookup commented 1 year ago

Running now for 5 minutes like a charm - very nice - thanks a lot! I will keep an eye on it, but I think this issue can be closed for now.

Just a small hint for you, may be helpful or not - just to let you know: https://github.com/devZer0/libsml-testing

If you need more info or testing data from my side, just give me a hint and I will try my very best to provide you with more debug data. 2023-04-01 16:51:16.113 DEBUG 1 --- [ scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder : Parsing SML: 1b1b1b1b010101017607000c05e22b05620062007263010176010107000c02830e570b0901454d480000abd62a010163e7f3007607000c05e22b06620062007263070177010b0901454d480000abd62a070100620affff726201650283bc0d7e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff6401028201621e52ff5600034f16710177070100020800ff6401028201621e52ff560000116e6f0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116e6f0177070100010802ff0101621e52ff5600034f16710177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff55000012320177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff550000030b01770701004c0700ff0101621b52ff5500000f140177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c010101632db6007607000c05e22b0962006200726302017101636ebe001b1b1b1b1a00c019

2023-04-01 16:51:16.116 DEBUG 1 --- [ scheduling-1] d.w.tibberpulse.sink.MeterDataHandler : Publishing meter data:

Meter 1EMH0011261482

1-0:1.8.0*255 / energyImportTotal = 5551473.7 WATT_HOUR

1-0:2.8.0*255 / energyExportTotal = 114238.3 WATT_HOUR

1-0:1.8.1*255 / energyImportTariff1 = 0.0 WATT_HOUR

1-0:2.8.1*255 / energyExportTariff1 = 114238.3 WATT_HOUR

1-0:1.8.2*255 / energyImportTariff2 = 5551473.7 WATT_HOUR

1-0:2.8.2*255 / energyExportTariff2 = 0.0 WATT_HOUR

1-0:16.7.0*255 / powerTotal = 465.8 WATT

1-0:36.7.0*255 / powerL1 = 0.0 WATT

1-0:56.7.0*255 / powerL2 = 77.9 WATT

1-0:76.7.0*255 / powerL3 = 386.0 WATT

2023-04-01 16:51:17.139 DEBUG 1 --- [ scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder : Parsing SML: 1b1b1b1b010101017607000c05e22b05620062007263010176010107000c02830e570b0901454d480000abd62a010163e7f3007607000c05e22b06620062007263070177010b0901454d480000abd62a070100620affff726201650283bc0d7e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff6401028201621e52ff5600034f16710177070100020800ff6401028201621e52ff560000116e6f0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116e6f0177070100010802ff0101621e52ff5600034f16710177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff55000012320177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff550000030b01770701004c0700ff0101621b52ff5500000f140177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c010101632db6007607000c05e22b0962006200726302017101636ebe001b1b1b1b1a00c019

2023-04-01 16:51:17.141 DEBUG 1 --- [ scheduling-1] d.w.tibberpulse.sink.MeterDataHandler : Publishing meter data:

Meter 1EMH0011261482

1-0:1.8.0*255 / energyImportTotal = 5551473.7 WATT_HOUR

1-0:2.8.0*255 / energyExportTotal = 114238.3 WATT_HOUR

1-0:1.8.1*255 / energyImportTariff1 = 0.0 WATT_HOUR

1-0:2.8.1*255 / energyExportTariff1 = 114238.3 WATT_HOUR

1-0:1.8.2*255 / energyImportTariff2 = 5551473.7 WATT_HOUR

1-0:2.8.2*255 / energyExportTariff2 = 0.0 WATT_HOUR

1-0:16.7.0*255 / powerTotal = 465.8 WATT

1-0:36.7.0*255 / powerL1 = 0.0 WATT

1-0:56.7.0*255 / powerL2 = 77.9 WATT

1-0:76.7.0*255 / powerL3 = 386.0 WATT

2023-04-01 16:51:18.065 DEBUG 1 --- [ scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder : Parsing SML: 1b1b1b1b010101017607000c05e22b05620062007263010176010107000c02830e570b0901454d480000abd62a010163e7f3007607000c05e22b06620062007263070177010b0901454d480000abd62a070100620affff726201650283bc0d7e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff6401028201621e52ff5600034f16710177070100020800ff6401028201621e52ff560000116e6f0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116e6f0177070100010802ff0101621e52ff5600034f16710177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff55000012320177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff550000030b01770701004c0700ff0101621b52ff5500000f140177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c010101632db6007607000c05e22b0962006200726302017101636ebe001b1b1b1b1a00c019

2023-04-01 16:51:18.066 DEBUG 1 --- [ scheduling-1] d.w.tibberpulse.sink.MeterDataHandler : Publishing meter data:

Meter 1EMH0011261482

1-0:1.8.0*255 / energyImportTotal = 5551473.7 WATT_HOUR

1-0:2.8.0*255 / energyExportTotal = 114238.3 WATT_HOUR

1-0:1.8.1*255 / energyImportTariff1 = 0.0 WATT_HOUR

1-0:2.8.1*255 / energyExportTariff1 = 114238.3 WATT_HOUR

1-0:1.8.2*255 / energyImportTariff2 = 5551473.7 WATT_HOUR

1-0:2.8.2*255 / energyExportTariff2 = 0.0 WATT_HOUR

1-0:16.7.0*255 / powerTotal = 465.8 WATT

1-0:36.7.0*255 / powerL1 = 0.0 WATT

1-0:56.7.0*255 / powerL2 = 77.9 WATT

1-0:76.7.0*255 / powerL3 = 386.0 WATT

2023-04-01 16:51:19.090 DEBUG 1 --- [ scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder : Parsing SML: 1b1b1b1b010101017607000c05e22b11620062007263010176010107000c02830e5b0b0901454d480000abd62a010163f374007607000c05e22b12620062007263070177010b0901454d480000abd62a070100620affff726201650283bc107e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff6401028201621e52ff5600034f16750177070100020800ff6401028201621e52ff560000116e6f0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116e6f0177070100010802ff0101621e52ff5600034f16750177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff550000121d0177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff550000030001770701004c0700ff0101621b52ff5500000f1d0177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c01010163679f007607000c05e22b156200620072630201710163d42d001b1b1b1b1a0042e0

2023-04-01 16:51:19.091 DEBUG 1 --- [ scheduling-1] d.w.tibberpulse.sink.MeterDataHandler : Publishing meter data:

Meter 1EMH0011261482

1-0:1.8.0*255 / energyImportTotal = 5551474.1 WATT_HOUR

1-0:2.8.0*255 / energyExportTotal = 114238.3 WATT_HOUR

1-0:1.8.1*255 / energyImportTariff1 = 0.0 WATT_HOUR

1-0:2.8.1*255 / energyExportTariff1 = 114238.3 WATT_HOUR

1-0:1.8.2*255 / energyImportTariff2 = 5551474.1 WATT_HOUR

1-0:2.8.2*255 / energyExportTariff2 = 0.0 WATT_HOUR

1-0:16.7.0*255 / powerTotal = 463.7 WATT

1-0:36.7.0*255 / powerL1 = 0.0 WATT

1-0:56.7.0*255 / powerL2 = 76.8 WATT

1-0:76.7.0*255 / powerL3 = 386.9 WATT

2023-04-01 16:51:20.106 DEBUG 1 --- [ scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder : Parsing SML: 1b1b1b1b010101017607000c05e22b11620062007263010176010107000c02830e5b0b0901454d480000abd62a010163f374007607000c05e22b12620062007263070177010b0901454d480000abd62a070100620affff726201650283bc107e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff6401028201621e52ff5600034f16750177070100020800ff6401028201621e52ff560000116e6f0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116e6f0177070100010802ff0101621e52ff5600034f16750177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff550000121d0177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff550000030001770701004c0700ff0101621b52ff5500000f1d0177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c01010163679f007607000c05e22b156200620072630201710163d42d001b1b1b1b1a0042e0

2023-04-01 16:51:20.108 DEBUG 1 --- [ scheduling-1] d.w.tibberpulse.sink.MeterDataHandler : Publishing meter data:

Meter 1EMH0011261482

1-0:1.8.0*255 / energyImportTotal = 5551474.1 WATT_HOUR

1-0:2.8.0*255 / energyExportTotal = 114238.3 WATT_HOUR

1-0:1.8.1*255 / energyImportTariff1 = 0.0 WATT_HOUR

1-0:2.8.1*255 / energyExportTariff1 = 114238.3 WATT_HOUR

1-0:1.8.2*255 / energyImportTariff2 = 5551474.1 WATT_HOUR

1-0:2.8.2*255 / energyExportTariff2 = 0.0 WATT_HOUR

1-0:16.7.0*255 / powerTotal = 463.7 WATT

1-0:36.7.0*255 / powerL1 = 0.0 WATT

1-0:56.7.0*255 / powerL2 = 76.8 WATT

1-0:76.7.0*255 / powerL3 = 386.9 WATT

2023-04-01 16:51:21.028 DEBUG 1 --- [ scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder : Parsing SML: 1b1b1b1b010101017607000c05e22b11620062007263010176010107000c02830e5b0b0901454d480000abd62a010163f374007607000c05e22b12620062007263070177010b0901454d480000abd62a070100620affff726201650283bc107e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff6401028201621e52ff5600034f16750177070100020800ff6401028201621e52ff560000116e6f0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116e6f0177070100010802ff0101621e52ff5600034f16750177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff550000121d0177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff550000030001770701004c0700ff0101621b52ff5500000f1d0177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c01010163679f007607000c05e22b156200620072630201710163d42d001b1b1b1b1a0042e0

2023-04-01 16:51:21.029 DEBUG 1 --- [ scheduling-1] d.w.tibberpulse.sink.MeterDataHandler : Publishing meter data:

Meter 1EMH0011261482

1-0:1.8.0*255 / energyImportTotal = 5551474.1 WATT_HOUR

1-0:2.8.0*255 / energyExportTotal = 114238.3 WATT_HOUR

1-0:1.8.1*255 / energyImportTariff1 = 0.0 WATT_HOUR

1-0:2.8.1*255 / energyExportTariff1 = 114238.3 WATT_HOUR

1-0:1.8.2*255 / energyImportTariff2 = 5551474.1 WATT_HOUR

1-0:2.8.2*255 / energyExportTariff2 = 0.0 WATT_HOUR

1-0:16.7.0*255 / powerTotal = 463.7 WATT

1-0:36.7.0*255 / powerL1 = 0.0 WATT

1-0:56.7.0*255 / powerL2 = 76.8 WATT

1-0:76.7.0*255 / powerL3 = 386.9 WATT

2023-04-01 16:51:22.055 DEBUG 1 --- [ scheduling-1] de.wyraz.tibberpulse.sml.SMLDecoder : Parsing SML: 1b1b1b1b010101017607000c05e22b1d620062007263010176010107000c02830e5f0b0901454d480000abd62a010163f0f1007607000c05e22b1e620062007263070177010b0901454d480000abd62a070100620affff726201650283bc147e77078181c78203ff0101010104454d480177070100000000ff010101010f31454d48303031313236313438320177070100000009ff010101010b0901454d480000abd62a0177070100010800ff6401028201621e52ff5600034f16790177070100020800ff6401028201621e52ff560000116e6f0177070100010801ff0101621e52ff5600000000000177070100020801ff0101621e52ff560000116e6f0177070100010802ff0101621e52ff5600034f16790177070100020802ff0101621e52ff5600000000000177070100100700ff0101621b52ff550000123e0177070100240700ff0101621b52ff55000000000177070100380700ff0101621b52ff550000030401770701004c0700ff0101621b52ff5500000f3a0177078181c78205ff010101018302c589dde68439c20d18cee93dbe78f31c5631ebd3c08854aca19472b39f1c2dd4179d445b05dfd68c3de8ca1a05bdc92c0101016364ba007607000c05e22b2162006200726302017101634ee0001b1b1b1b1a007a90

2023-04-01 16:51:22.056 DEBUG 1 --- [ scheduling-1] d.w.tibberpulse.sink.MeterDataHandler : Publishing meter data:

Meter 1EMH0011261482

1-0:1.8.0*255 / energyImportTotal = 5551474.5 WATT_HOUR

1-0:2.8.0*255 / energyExportTotal = 114238.3 WATT_HOUR

1-0:1.8.1*255 / energyImportTariff1 = 0.0 WATT_HOUR

1-0:2.8.1*255 / energyExportTariff1 = 114238.3 WATT_HOUR

1-0:1.8.2*255 / energyImportTariff2 = 5551474.5 WATT_HOUR

1-0:2.8.2*255 / energyExportTariff2 = 0.0 WATT_HOUR

1-0:16.7.0*255 / powerTotal = 467.0 WATT

1-0:36.7.0*255 / powerL1 = 0.0 WATT

1-0:56.7.0*255 / powerL2 = 77.2 WATT

1-0:76.7.0*255 / powerL3 = 389.8 WATT

micw commented 1 year ago

Just a small hint for you, may be helpful or not - just to let you know: https://github.com/devZer0/libsml-testing

Funny, I got the same hint on the "vzlogger" mailing list when I proposed to create a test library. Atthe moment I'm integrating this to my test suite.

Unfortunately they did not document if and how they mitigated the issues of the meters on implementations.

mslookup commented 1 year ago

Again a small feedback from my side: Everything works perfectly. For the last 2 days I was running the docker container 24/7 with a data transmission interval of 1 sec - 7 CRC errors successfully ignored, even survived 2 manual reboots of the Tibber Bridge by me during relocation of the Tibber Bridge without the need for a restart of the container.

Resource utilization is on avg 0.7% of a core and 3.6GB of RAM. Very handy tool. Thank you!