Tasmota SML MBus HeatMeter: delayed/wrong values after some time and sudden transfer stops #20460
-
Hi, first of all I want to thank the whole Tasmota team and all supporters who help others!!! But the Heat Meter drives me crazy. But now after deeper analysis I found out that the values displayed on device sometimes differ from the values I get via IR-Interface (HICHI with Tasmota). Tasmota is V12.3.0, don't remember whether I compiled by myown or found a precompiled image (and in the meantime my laptop changed :-)) I use the following script to retrieve the values.
It starts in DEBUG mode to prove that communication is ok, then switches to NON-DEBUG mode, executed a short period in minute interval and then switches to a longer interval. In DEBUG mode I directly see valid data like this:
This part of the byte response starts with 0c 06 (code for ENERGY) and value 00003052 (BCD reverse) = 3052kWh.
But now the real strange behavior:
at 2024-01-10T15:40:06 (note the precision 16 in code line for ENERGIE thus measure is transferred immediately) and display showed
at 15:52h. Produced energy is relatively constant 2kW, so it is impossible to consume 3kWh in 12min. I don't see issues in my script but on the other hand I cannot imagine that Heat Meter returns different data to display and IR interface... Unfortunately it seems impossible to see debug values and at the same time Tasmota UI & MQTT data transfer. Thanks a lot for every tip and sorry for the long post! Greetings |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 17 replies
-
no one with an idea? Here a very short summary: For me it seems to be a Tasmota bug. |
Beta Was this translation helpful? Give feedback.
-
first of all: @gemu2015 thanks a lot for your efforts. I learned a lot! Let me try to summarize what went wrong and what fixed the issue The issue mainly occurs when there is a longer time between 2 SmartMeter queries. So users of fast queryable devices perhaps never saw it because a delay of few seconds is usually ok. Reason is the serial buffer. In my case every line of byte stream has a maximum of 8 chars. Then I should set serial buffer to 8 to speed up the decoding by the script. After having set serial buffer to 8 I get proper values in SYSLOG and MQTT without delays. I proved this using this approach:
|
Beta Was this translation helpful? Give feedback.
-
Hello, I have a Sensus PolluWatt Duo II, data generally comes with the Sensus Script, but only the serial number is displayed correctly by the meter. Sensor53 d1 produces the following data. The Sensus has a power supply e5 is alone in a row, I think that there is something fundamentally wrong here. Thanks! |
Beta Was this translation helpful? Give feedback.
-
Hello, I've a simulary behavior. datas are read from smart meter, but values in WebGUI and MQTT are not updated. for instance Checksum: 09:50:10.292 : 10 00 04 61 b1 0a 00 00 02 23 9a 16 01 fd 17 10 04 90 28 05 00 00 00 e7 16 09:50:41.755 RSL: SENSOR = {"Time":"2025-02-03T09:50:41","WA":{"Zählernummer":64480508,"Energie":45.463,"Letzter Stichtag EnergieStichtag Energie":45.463,"Volumenstrom":0.000,"Max. Volumenstrom":0.294,"Leistung":0,"Max. Leistung":11572,"Vorlauftemperatur":43,"Rücklauftemperatur":15,"Betriebsdauer":5786,"Checksum":33}} script begin
;if ((upsecs==1) or (upsecs%2700==0)) { if upsecs==30 { ;if upsecs==55 {
#readmeter script ende00:00:00.250 CMD: Fall back to serial port, no SOF packet detected on USB port |
Beta Was this translation helpful? Give feedback.
i took the dump from your first post and send it to your script (using buffer size 8)
e.g. 0c065230 and it decodes immediately
to
there has to be more explanation in the docs especially with slow heat meters. on fast meters sending every second the delay is not a problem.
here is a rough explanation how the decoder works.
there are 2 operating modes.
block mode:
blocks of data are read e.g on demand of a request, like modbus,
or lines which end with LF like OBIS asci.
then depending on the decoder there is a pattern search inside this buffer or the line is compared from byte zero (OBIS asci)
shift mode:
each incoming byte is shifted into a serial buffer from right to left. the serial buf…