A fix merged into ESPHome's development branch on 17 October 2026 at 00:55 UTC removes a source of bad energy statistics for anyone who reads a French electricity meter with the teleinfo component. Until now, a value that could not be parsed as a number was published as 0. It is now logged as a warning and skipped. The change is pull request #20960 by FredM67, merged by bdraco, and it is headed for ESPHome 2026.11.

How one zero inflated the energy total

Teleinfo (TIC) is the serial output of French meters such as Linky. Every group in a frame has a checksum, but it is only a 6-bit sum, so about one corrupted group in 64 still passes it. If the damaged value was no longer a number, the old code fell back to 0 and published that.

The zero did real damage. Most teleinfo sensors are energy indexes such as EAST, BASE or HCHP, and the component's presets give them state_class: total_increasing. Home Assistant reads a drop to 0 on such a sensor as a meter reset. When the next real reading arrived, it added the whole index to the long-term statistics again. Users had been working around this with lambda filters that drop zeros or large jumps.

After the fix, a real 0 sent by the meter is still published. Only values that are not numbers are dropped. The pull request also adds the component's first host tests, and one of them fails on the old code.

A precision limit, now documented

The documentation change that came with it (esphome.io #7763, merged on 17 October at 21:47 UTC) adds a second warning. ESPHome sensor values are 32-bit floats, which hold every whole number exactly only up to 16,777,216. Energy indexes arrive in Wh, and many meters have already counted past that, about 16.8 MWh. Above it, the sensor moves in 2 Wh steps, and above 33,554,432 Wh (about 33.6 MWh) in 4 Wh steps. A multiply filter to kWh does not help, because the value is already rounded when the filter runs.

The author saw this on a Linky at 33.26 MWh. Every EAST value that reached Home Assistant was even, while the per-tariff EASF0x indexes, at a few MWh each, still moved by 1 Wh.

If you need every watt-hour, for example to calculate power from the index, the documentation suggests reading the tag with a teleinfo text sensor, which keeps the exact digits, and converting it in Home Assistant, which uses 64-bit floats. Its example is a template sensor with device_class: energy, state_class: total_increasing and an availability check that only lets numbers through.

What changes for you

Once you are on a release with the fix, the zero-dropping lambda filters on teleinfo energy sensors are no longer needed, and they do no harm until then. The fix does not repair statistics that past fake resets have already inflated. Those still have to be corrected in Home Assistant.