Skip to content

Releases

LightningROD 0.6.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 18:37

FCON Data Source Implemented

Discussion and more information: https://github.com/SquidBytes/LightningROD/discussions/102

Changelog

Added

  • Group Edit on the Charging Sessions page can delete all selected sessions at once (#77)
  • Trips where the vehicle was switched on but not driven carry a "Vehicle on"
    badge, and a new Trip Display setting hides them (#79)
  • Charging and trip CSV exports include each record's ID, source and ingest time (#83)
  • Added FordConnect as a data source: connect a Ford vehicle through Ford's own API, no Home Assistant needed
  • Trips and charging sessions recorded by both Home Assistant and FordConnect are combined into one
  • Added a Data Repair operation that re-reads archived FordConnect data after a fix
  • Vehicles connected through FordConnect fill in their model, year, battery and nickname automatically

Changed

  • Stored credentials can now be encrypted by setting LR_SECRET_KEY

Fixed

  • Trips and sessions recorded by early versions are now included in Data Repair
  • Home Assistant trips no longer get an end time days in the past or appear twice (#99)
  • Battery and range readings from Home Assistant are no longer all stamped with the same old time (#99)

Install

Option A — Standalone (single container, SQLite):

docker pull ghcr.io/squidbytes/lightningrod-web:0.6.0
docker run -d \
  --name lightningrod \
  -p 8000:8000 \
  -v lightningrod-data:/data \
  ghcr.io/squidbytes/lightningrod-web:0.6.0

Option B — Two-container (bring-your-own PostgreSQL):

curl -LO https://github.com/SquidBytes/LightningROD/releases/download/v0.6.0/lightningrod-0.6.0-compose.tar.gz
tar xzf lightningrod-0.6.0-compose.tar.gz
cd lightningrod-0.6.0
cp .env.example .env    # edit POSTGRES_PASSWORD etc.
docker compose up -d

Image is multi-arch: linux/amd64 + linux/arm64 (Apple Silicon, Raspberry Pi 4/5).

Then open http://localhost:8000 and go to Settings → Home Assistant to connect your HA instance.

Documentation

Full documentation, setup guides, and feature reference:
https://docs.lightningrod.dev/

Full Changelog: v0.5.5...v0.6.0

LightningROD 0.5.5

Choose a tag to compare

@github-actions github-actions released this 24 Sep 22:13

Added

  • Charging sessions fill in EVSE voltage, amperage and rated power from the
    charging location's default stall, instead of leaving them blank until you
    edit the session
  • LightningROD now keeps a copy of every Home Assistant event it receives, so
    missing trip data can be repaired from its own records instead of Home
    Assistant's limited history
  • Data Repair operation that replays the stored event archive to fill missing
    trip fields and recover trips that were never ingested, with no Home
    Assistant connection needed
  • Settings options to turn the event archive off and choose how long archived
    events are kept
  • Data Repair previews let you untick items; Apply now works one page at a time
    and remembers what you skipped, with a button to bring skipped items back

Changed

  • Running from source now requires Python 3.14, the version the Docker image uses
  • Data Repair previews now show why each row was picked and every value the
    repair would change or delete, so you can check it before applying
  • Duplicate trip pairs are previewed side by side, with the distance ratio that
    matched them, and long previews are paged ten at a time

Fixed

  • Event archive replay no longer brings back duplicate trips that were already
    consolidated
  • The Docker container no longer downloads Python and rebuilds its packages every
    time it starts
  • Stopped blank charging sessions appearing when Home Assistant reports a charge
    log with no data
  • The duplicate trip preview now shows what the surviving trip keeps, not just
    what changes, so merged temperatures no longer look like they are discarded
  • Duplicate trip consolidation no longer offers to delete a real trip that
    merely ended at the same moment as another; a pair now has to match on start
    time, duration and energy as well as distance
  • Vehicle position is now recorded as soon as LightningROD reconnects to Home
    Assistant, instead of waiting until the car next moves
  • Battery history from Home Assistant now records range, state of charge,
    capacity, voltage, current and power — every one of those readings was
    arriving empty
  • Trip speed, acceleration and deceleration scores now appear on the driving
    score chart instead of always being blank
  • Charging sessions now record the ambient temperature it actually was at the
    time, rather than a stale reading that never changed
  • The Performance page no longer draws a charge curve out of empty battery
    readings; it shows the estimated curve until real charging data exists
  • Charging sessions now show the location name, type and network you approved
    in the review queue. Renaming a location in the vehicle no longer retags new
    sessions with the vehicle's name
  • Charging sessions from Home Assistant now record a location type, so the
    location-type filter and the CSV export column work for them

Install

Option A — Standalone (single container, SQLite):

docker pull ghcr.io/squidbytes/lightningrod-web:0.5.5
docker run -d \
  --name lightningrod \
  -p 8000:8000 \
  -v lightningrod-data:/data \
  ghcr.io/squidbytes/lightningrod-web:0.5.5

Option B — Two-container (bring-your-own PostgreSQL):

curl -LO https://github.com/SquidBytes/LightningROD/releases/download/v0.5.5/lightningrod-0.5.5-compose.tar.gz
tar xzf lightningrod-0.5.5-compose.tar.gz
cd lightningrod-0.5.5
cp .env.example .env    # edit POSTGRES_PASSWORD etc.
docker compose up -d

Image is multi-arch: linux/amd64 + linux/arm64 (Apple Silicon, Raspberry Pi 4/5).

Then open http://localhost:8000 and go to Settings → Home Assistant to connect your HA instance.

Documentation

Full documentation, setup guides, and feature reference:
https://squidbytes.github.io/LightningROD/

Full Changelog: v0.5.4...v0.5.5

LightningROD 0.5.4

Choose a tag to compare

@github-actions github-actions released this 31 Jul 19:38

Added

  • Export CSV button on the Trip History page that downloads the trips matching
    the current filters
  • Data Repair operation that fills missing trip start times, durations,
    odometer readings, efficiency, temperatures, and start/end locations from
    telemetry and GPS history already in the database — no Home Assistant
    connection needed
  • Settings option to hide short key-on trips from the trip list and driving
    analytics

Changed

  • Savings totals in the Cost Explorer comparison card now highlight the dollar
    amounts, with the comparison labels in smaller muted text

Fixed

  • Charging session CSV export only contained the first 25 sessions instead of
    every session matching the filters

Install

Option A — Standalone (single container, SQLite):

docker pull ghcr.io/squidbytes/lightningrod-web:0.5.4
docker run -d \
  --name lightningrod \
  -p 8000:8000 \
  -v lightningrod-data:/data \
  ghcr.io/squidbytes/lightningrod-web:0.5.4

Option B — Two-container (bring-your-own PostgreSQL):

curl -LO https://github.com/SquidBytes/LightningROD/releases/download/v0.5.4/lightningrod-0.5.4-compose.tar.gz
tar xzf lightningrod-0.5.4-compose.tar.gz
cd lightningrod-0.5.4
cp .env.example .env    # edit POSTGRES_PASSWORD etc.
docker compose up -d

Image is multi-arch: linux/amd64 + linux/arm64 (Apple Silicon, Raspberry Pi 4/5).

Then open http://localhost:8000 and go to Settings → Home Assistant to connect your HA instance.

Documentation

Full documentation, setup guides, and feature reference:
https://squidbytes.github.io/LightningROD/

Full Changelog: v0.5.3...v0.5.4

LightningROD 0.5.3

Choose a tag to compare

@github-actions github-actions released this 16 Jul 20:12

Added

  • Project website at lightningrod.dev — landing page,
    docs at docs.lightningrod.dev, demo at lightningrod.dev/demo

Fixed

  • Settings now shows the actual release version instead of "latest"
  • Battery capacity no longer divided by 1000 on installs where Home Assistant
    reports it in kWh; previously downscaled values are repaired automatically
  • Data Repair tab no longer claims Home Assistant is disconnected when the
    recorder simply has no trip history yet
  • Corrected the PostgreSQL backup and restore commands shown in the docs and
    the Data Repair tab

Install

Option A — Standalone (single container, SQLite):

docker pull ghcr.io/squidbytes/lightningrod-web:0.5.3
docker run -d \
  --name lightningrod \
  -p 8000:8000 \
  -v lightningrod-data:/data \
  ghcr.io/squidbytes/lightningrod-web:0.5.3

Option B — Two-container (bring-your-own PostgreSQL):

curl -LO https://github.com/SquidBytes/LightningROD/releases/download/v0.5.3/lightningrod-0.5.3-compose.tar.gz
tar xzf lightningrod-0.5.3-compose.tar.gz
cd lightningrod-0.5.3
cp .env.example .env    # edit POSTGRES_PASSWORD etc.
docker compose up -d

Image is multi-arch: linux/amd64 + linux/arm64 (Apple Silicon, Raspberry Pi 4/5).

Then open http://localhost:8000 and go to Settings → Home Assistant to connect your HA instance.

Documentation

Full documentation, setup guides, and feature reference:
https://squidbytes.github.io/LightningROD/

Full Changelog: v0.5.2...v0.5.3

LightningROD 0.5.2

Choose a tag to compare

@github-actions github-actions released this 10 Jul 22:28

Added

  • Export CSV button on the Charging Sessions page — downloads the sessions
    matching the current filters (dates, charge type, network, sort)
  • Delete Trip button in the trip detail drawer
  • Mile-for-mile gas comparison in Savings Scenarios — fuels the distance you
    actually drove at the ICE comparison vehicle's real MPG with monthly fuel
    price history, alongside the existing energy-equivalent comparison
  • Data Repair settings tab — census, dry-run preview, and one-click repair for
    historical trip data (duplicate trips, unit-corrupted distances,
    recorder-history re-enrichment), with restorable snapshots
  • One-click database backup download on the Data Repair tab for SQLite
    installs (PostgreSQL installs get pg_dump instructions in the guide)

Changed

  • Trip tables and detail views show a single calculated Efficiency — the old
    "Reported" figure was the HA integration computing the identical ratio, not
    a value from the vehicle
  • Dashboard network charts group networks beyond the top 7 into an "Other"
    bucket so many-network installs stay readable

Fixed

  • Edit button on charging stalls did nothing — the edit dialog never opened
    because its open handler was bound to an HTMX event that fires on the swap
    target rather than the button; editing stalls now works
  • Battery health and degradation compared Wh-scale capacity readings against
    the rated kWh capacity (health showed absurd percentages and ignored the
    user-set gross capacity); existing rows are repaired on upgrade
  • Trip driving-score radar renders a compact overall-score stat instead of a
    degenerate spike when per-category scores are unavailable
  • Range Regenerated card on Driving Analytics showed "No data available" —
    regen and driving score now also ingest from the always-enabled metrics
    sensor instead of relying solely on elveh trip attributes
  • CSV import duplicate detection crashed on SQLite installs (PostgreSQL-only
    SQL in the dedup query)
  • AC vs DC donut (and chart-metric switches) no longer render off-center
    after switching kWh/Sessions/Cost until the window was resized
  • Custom From/To date filters now work on the Costs, Battery, Charging
    Performance, Trip Sessions, and Driving Analytics pages (previously they
    silently reset the view to All-time; only Charging Sessions honored them)
  • Chart tooltips no longer show full-precision floats (battery temperature,
    efficiency moving average, range recovered, gas price trends)
  • Edit forms no longer show floating-point noise (15+ decimal places) in
    power, SOC, voltage, cost, and capacity fields
  • Group-edit bar: choosing a Network now reliably refreshes the Location
    dropdown (a previously opened drawer could send its stale network along)
  • Dashboard Charging Efficiency card now shows utilization for EVSE-mapped
    sessions even when no wall-metered energy exists (loss reads N/A with a
    hint instead of hiding the whole card)
  • Duplicate trip entries with incorrect distances for vehicles set to imperial
    display units on a metric Home Assistant install
  • Trip duration not populating on trip lists and detail views
  • Manual trip entry stored its duration 60× too short
  • Trip start time now recorded for trips ingested from Home Assistant

Install

Option A — Standalone (single container, SQLite):

docker pull ghcr.io/squidbytes/lightningrod-web:0.5.2
docker run -d \
  --name lightningrod \
  -p 8000:8000 \
  -v lightningrod-data:/data \
  ghcr.io/squidbytes/lightningrod-web:0.5.2

Option B — Two-container (bring-your-own PostgreSQL):

curl -LO https://github.com/SquidBytes/LightningROD/releases/download/v0.5.2/lightningrod-0.5.2-compose.tar.gz
tar xzf lightningrod-0.5.2-compose.tar.gz
cd lightningrod-0.5.2
cp .env.example .env    # edit POSTGRES_PASSWORD etc.
docker compose up -d

Image is multi-arch: linux/amd64 + linux/arm64 (Apple Silicon, Raspberry Pi 4/5).

Then open http://localhost:8000 and go to Settings → Home Assistant to connect your HA instance.

Documentation

Full documentation, setup guides, and feature reference:
https://squidbytes.github.io/LightningROD/

Full Changelog: v0.5.1...v0.5.2

LightningROD 0.4.0

Choose a tag to compare

@github-actions github-actions released this 25 May 18:30

Added

  • Cost Explorer card on the Costs page — interactive, view of prices and total spent. Replaces the old Actual/Estimated, Cost card & view.
    by Network, Savings vs Network, and Subscription Savings sections.
    • Multi-select network filter
    • Free-charging "what-if"
    • Reference-rate comparison (pick a network or enter a custom $/kWh)
    • Per-network ledger with Δ vs reference
    • Subscription "With / Without / Net saved" readout
  • #36 - Settings → Fuel tab — multi-ICE-vehicle table (mark one as default), gas price history, and a fuel price trend chart. Gas/ICE configuration relocated out of General.
  • Settings → Data Sources tab — register and configure HA-FordPass and HA gas-price sources
  • Battery page HV Pack Telemetry card — temperature, voltage, amperage, and power, each with a 7-day sparkline.
  • Battery page Battery Temperature Over Time chart with battery (solid) + outside-air (dashed) traces and charging-region overlays.
  • Trip drawer fields populated: odometer start/end, duration, and regen recovered (I hope)
  • Trip score column rendered as a color-banded radial-progress gauge.
  • Column-header sort on /driving/sessions (replaces the toolbar).
  • Demo Site and SQLite deployment option
  • Backend changes for data source abstraction
  • Backend changes for easier de-duplication (uuid5)

Changed

  • Docker deployments pull from GHCR images instead of needing to be built locally
    • Documentation updated
  • SQLite is the default for docker/docker-compose.standalone.yml
    • Docker compose still uses Postgres.
      • The DATABASE_URL in .env is now an optional override allowing for external database connection
  • Settings tabs restructured
    • General is now the default
    • Import CSV now labeled Import
      • Still working on fixes for CSV imports
    • Data Sources tab adjusted for future data source options
      • Large backend changes for data source adapters to make alternative vehicle support easier in the future
  • Gas prices and ICE fuel-economy / tank-capacity are stored in metric and converted for display
  • /battery charge curve defaults to the most recent session of any type.
    • AC charging sessions y-axis caps at 25 kW
    • DC reference curve hidden (when AC session selected, DC session remain the same)
  • uuid5 used for Trip ingestion to cut down on duplicates (hopefully)
  • Timezone dropdowns in Settings and CSV Import are now searchable with regional filters.
  • The three summary cards on the Costs page are folded into a Total spend and Cost ratios strip atop the Cost Explorer card.
  • The Savings Scenarios card now compares your all-in EV cost (energy plus subscription fees) against gas, with the energy-only figure shown beneath.

Fixed

  • #16 - Charging sessions correctly auto-inherit the network from a resolved location when the location has one.
  • Docker entrypoint auto-recovers v0.3.x databases stamped at squashed-away revisions.
    • Non-Docker upgraders: see db/migrations/README.md.
  • Datetimes correctly use configured timezone (converted to UTC on storage) and render based on configured settings.
  • Charge-curve session picker no longer scrolls the page back to the top — only the curve card swaps.
  • Free-charging what-if rebill now applies to every selected network, not just the last one ticked.

Removed

  • /battery standalone 12V Battery Voltage Trend chart, the Range summary card, and the 12V Battery summary card.
  • /driving/performance regen-as-percent-of-SOC card.

Install

Option A — Standalone (single container, SQLite):

docker pull ghcr.io/squidbytes/lightningrod-web:0.4.0
docker run -d \
  --name lightningrod \
  -p 8000:8000 \
  -v lightningrod-data:/data \
  ghcr.io/squidbytes/lightningrod-web:0.4.0

Option B — Two-container (bring-your-own PostgreSQL):

curl -LO https://github.com/SquidBytes/LightningROD/releases/download/v0.4.0/lightningrod-0.4.0-compose.tar.gz
tar xzf lightningrod-0.4.0-compose.tar.gz
cd lightningrod-0.4.0
cp .env.example .env    # edit POSTGRES_PASSWORD etc.
docker compose up -d

Image is multi-arch: linux/amd64 + linux/arm64 (Apple Silicon, Raspberry Pi 4/5).

Then open http://localhost:8000 and go to Settings → Home Assistant to connect your HA instance.

Documentation

Full documentation, setup guides, and feature reference:
https://squidbytes.github.io/LightningROD/

What's Changed

  • chore(ci): bump the actions-all group across 1 directory with 11 updates by @dependabot[bot] in #30
  • chore(deps): bump the docker-all group in /docker with 2 updates by @dependabot[bot] in #33

New Contributors

Full Changelog: v0.3.21...v0.4.0

LightningROD 0.3.21

Choose a tag to compare

@github-actions github-actions released this 26 Apr 03:14

Added

  • ha_fordpass adapter with FIELD_CONTRACTS — single ingestion entry point replacing scattered hass_processor / hass_client logic.
  • Unit-detection layer: resolves HA signal units at ingestion time via a pure to_metric() conversion function and UnknownSourceUnit sentinel.
  • ingest_schema_version column on ev_session, ev_trip_metrics, and related models.
  • /admin/data-sources page listing all HA signal sources with contract details, contract/detection coverage, and raw last-seen values.
  • Developer Tools toggle in Settings → General; Data Sources sidebar link is hidden unless developer mode is enabled.
  • gen_data_sources_doc.py generator and committed data-sources.md reference doc.
  • FieldContract module for observable-contract validation and display-layer assertions.
  • mypy static type checking added to the dev toolchain (CI-enforced).
  • Ruff ruleset expanded (I, B, UP) with pre-commit hook; codebase-wide type fixes applied.
  • Cross-source match-and-enrich tests for ev_trip_metrics dedup.
  • Thermal field wiring (elvehcharging/outsidetemp) for trip ingestion.
  • Pre-commit reference-checking script under scripts/.
  • /healthz liveness + readiness endpoint (returns 503 if the database is unreachable) and HEALTHCHECK directives on both Docker images so docker ps reports container health.
  • About card on Settings → General showing the running LightningROD version with links to release notes, documentation, and source.

Changed

  • hass_processor and hass_client migrated into ha_fordpass adapter; legacy _fordpass_* feature flags removed.
  • Action buttons on review location rows clustered per row (UX polish).
  • Approved-tab edit dialog hoisted to page-scope modal (reuses shared edit-loc-modal).
  • Docker artifacts moved into a dedicated docker/ subfolder.

Fixed

  • Review queue D-B3 filter dropped on POST-merge Pending branches (WR-01 regression).
  • tripRangeRegeneration field name corrected to tripRangeRegenerated.

Install

Option A — Standalone (embedded PostgreSQL, simplest):

docker pull ghcr.io/squidbytes/lightningrod:0.3.21-standalone
docker run -d \
  --name lightningrod \
  -p 8000:8000 \
  -v lightningrod-data:/var/lib/postgresql/data \
  ghcr.io/squidbytes/lightningrod:0.3.21-standalone

Option B — Two-container (bring-your-own PostgreSQL):

curl -LO https://github.com/SquidBytes/LightningROD/releases/download/v0.3.21/lightningrod-0.3.21-compose.tar.gz
tar xzf lightningrod-0.3.21-compose.tar.gz
cd lightningrod-0.3.21
cp .env.example .env    # edit POSTGRES_PASSWORD etc.
docker compose up -d

Both images are multi-arch: linux/amd64 + linux/arm64 (Apple Silicon, Raspberry Pi 4/5).

Then open http://localhost:8000 and go to Settings → Home Assistant to connect your HA instance.

Documentation

Full documentation, setup guides, and feature reference:
https://squidbytes.github.io/LightningROD/

What's Changed

New Contributors

Full Changelog: https://github.com/SquidBytes/LightningROD/commits/v0.3.21