ESPHome's pylontech component, which reads Pylontech home storage batteries over their console port, has so far reported each battery as a whole: voltage, current, state of charge, temperatures, and the voltages of its lowest and highest cell. From ESPHome 2026.11 it can also report the voltage and temperature of every cell. The pull request by functionpointer, opened on 6 June 2026, was merged into the development branch by bdraco on 17 October at 19:28 UTC, with the documentation (esphome.io #6746) following at 19:35 UTC. It replaces two earlier attempts, #14576 and #14259, and credits MichaelEFlip for most of the original code and ritschys for the idea.
How it works
The hardware setup does not change. The ESP talks to the battery's RS232 console port through a level converter such as a MAX3232, and with several batteries it connects to the master's console. CAN and RS485 links to the inverter stay untouched.
On every update the component sends the pwr command and parses the summary for every battery. With cells configured, it follows each pwr reply with one bat N command per battery that has cells listed, so the cell sensors update at the same interval as the battery sensors. The pack ignores a command sent straight after its own reply, so each bat N goes out 20 ms later. A bat reply that never finishes is abandoned at the next update, and a late one is not mistaken for the pwr reply.
Cells are numbered 0 to 14, and each needs at least one of voltage or temperature:
sensor:
- platform: pylontech
battery: 1
cells:
- cell: 0
voltage:
name: "Battery 1 Cell 0 Voltage"
temperature:
name: "Battery 1 Cell 0 Temperature"
A cell listed twice for the same battery, or an empty cells list, fails validation.
Turning it off at runtime
Every battery with cells adds one more command to each update. The new pylontech.set_cell_polling action stops or resumes those commands without reflashing, for example from a template switch in Home Assistant. Cell polling is on at boot, and the action does nothing when no cells are configured.
The cost is small and only paid by those who use it. The cell code is compiled in only for configurations with cells. Each battery with cells takes 60 bytes for its 15-cell record, and each listed cell sensor adds 12 bytes. The author ran the host tests and marked ESP32 with ESP-IDF, ESP8266 and RP2040 as tested.
The lowest and highest cell voltages could already reveal an unbalanced pack. Per-cell sensors add which cell is drifting and how it behaves over time, on a Home Assistant graph or in an automation.