Skip to content

fix(charging): prevent smallint overflow in energy calculation and recalc migration on battery-side DC readings - #5617

Open
JakobLichterfeld wants to merge 1 commit into
mainfrom
fix/smallint-overflow-energy-calculation
Open

fix(charging): prevent smallint overflow in energy calculation and recalc migration on battery-side DC readings#5617
JakobLichterfeld wants to merge 1 commit into
mainfrom
fix/smallint-overflow-energy-calculation

Conversation

@JakobLichterfeld

@JakobLichterfeld JakobLichterfeld commented Aug 15, 2026

Copy link
Copy Markdown
Member

charger_actual_current and charger_voltage are smallint columns, and PostgreSQL multiplies two smallints into a smallint. Vehicles that write battery-side DC readings into these fields produce products above 32,767 (e.g. 155 A × 230 V), which crashed the recalc migration (#5592) at boot and — latently since the columns were narrowed in 2020 — the energy calculation at charging completion. Cast the first factor to integer in the migration, determine_phases/1, and the charge-details determine_phases variable; in calculate_energy_used/1 reordering the factors makes the chain float from the first product on.

The released migration is edited in place on purpose: installations where it crashed never recorded it and will run the corrected version, installations where it succeeded computed identical values and skip it.

…calc migration on battery-side DC readings

charger_actual_current and charger_voltage are smallint columns, and PostgreSQL multiplies two smallints into a smallint. Vehicles that write battery-side DC readings into these fields produce products above 32,767 (e.g. 155 A × 230 V), which crashed the recalc migration at boot and — latently since the columns were narrowed in 2020 — the energy calculation at charging completion. Cast the first factor to integer in the migration, determine_phases/1, and the charge-details determine_phases variable; in calculate_energy_used/1 reordering the factors makes the chain float from the first product on.

The released migration is edited in place on purpose: installations where it crashed never recorded it and will run the corrected version, installations where it succeeded computed identical values and skip it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@netlify

netlify Bot commented Aug 15, 2026

Copy link
Copy Markdown

Deploy Preview for teslamate ready!

Name Link
🔨 Latest commit 8fbe09d
🔍 Latest deploy log https://app.netlify.com/projects/teslamate/deploys/6a80607332aa9a0008998018
😎 Deploy Preview https://deploy-preview-5617--teslamate.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@JakobLichterfeld JakobLichterfeld added this to the v4.2.0 milestone Aug 15, 2026
@JakobLichterfeld JakobLichterfeld added elixir Pull requests that update Elixir code area:dashboard Related to a Grafana dashboard area:teslamate Related to TeslaMate core kind:bug Something isn't working labels Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:dashboard Related to a Grafana dashboard area:teslamate Related to TeslaMate core elixir Pull requests that update Elixir code kind:bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant