Hmm, the last peak was on 25/05/2026. Yeah, I’ll take a look. I sent in a screenshot via Beta Feedback two weeks ago. Has there been any feedback on that? I don’t think so.
But to get to the bottom of this… It happens fairly often: is it that consumption data that, for whatever reason, wasn’t transmitted in a timely manner is simply “caught up” later? So the consumption did take place, just spread out and earlier, but wasn’t transmitted that way. Is this “offset” used to bring things back up to date? I hope that makes sense. Is that right?
At least the figures seem to add up. I keep seeing this mentioned here, but I’ve never understood how it comes about, or whether it all adds up in the end. I think the values are being backfilled here.
So far, I’ve only read about this in connection with Shelly meters or other meters that aren’t officially supported.
Apparently, a reset or something similar causes the meter to be read again, and the total consumption stored in its memory is transmitted in the process.
It would be better the other way round.
So use the newer, faster EM540 as the grid sensor and the EM24 for PV.
I thought I’d read something about it being fixed at the VRM level too, but I can’t find it right now.
These spikes occur when the energy meter, which normally only ever increments, briefly returns a “0”: 5001, 5002, 0, 5002 → bam, 5002 kWh in an hour.
(Of course, this can also happen with any other outlier value — but 0 is responsible in 99% of cases here )
How have you connected the EM? If you’re using Node-RED, you must NOT initialise the Node-RED meter with defaults, otherwise every time Node-RED restarts, a “zero” gets into the system.
It’s also a good idea to use a filter that blocks any 0 coming from the Shelly or MQTT.
Thanks, that explains a lot. So a meter replacement would mean that although there’s a spike, the VRM data continues correctly. I’ve always wondered what happens when you replace the meter. Thanks again.
Although my explanation doesn’t quite add up: there’s no spike, since the new one carries on from 1.
Exactly. A lower counter reading always has no effect — there are devices that start at 0 when they “boot”, and for those, it’s necessary.
Only jumping back to a previous value after a 0 then results in a “false-positive-spike”.
Not at all, see above. There are devices where it’s important to reduce delta tracking when a lower value comes in. There are even counters that have just one register and go “up and down”, depending on whether power was fed in or drawn — so you have to do this in both directions if you want to separate the readings.
The analysis takes all of that into account — ensuring that a forever-forward-incremental counter doesn’t produce an incorrect value is the counter’s job, not the reader’s.
Transmission errors are essentially ruled out with TCP. It’s either a bug in the sender or in the receiving script. With MQTT transmission, retained values can also cause grey hairs for a long time, since they can crop up from time to time when the recipient reconnects, even if the sender stopped publishing retained messages ages ago, but the broker is still holding on to retained values for a topic that are three months old.
You might also want to take a look at this thread, where I posted about my problem with it.
This one is only about Virtual Devices (AC load) in NodeRed, though.
It includes both links with information and explanations/solutions.
It’s worth bearing in mind, anyway, even though the latest beta, ~27, has now added OS-level “filtering” for these events for the second time.
For the non-NodeRed things, I hope the changes in ~21 and ~27 are enough for you, since unfortunately you have no control over those yourselves.
I have a Modbus meter and a smart meter with an optical reader that sometimes report wildly inaccurate readings.
I’ve since filtered those out. But if meter readings are stored somewhere and not reset or discarded on the same day, I can imagine that could lead to peaks like that.