Skip to content

Roadmap: future enhancements for wallmonitor #1

Description

@zebraengine

Tracking list of enhancement ideas for the monitor. Split items into their own issues as they get picked up.

Data lifecycle

  • Retention / pruning jobOptional retention: trim old raw JSON, keep every column forever #20 (v0.4.0): --retain-raw-days N blanks the raw JSON on samples older than N days in a daily chunked pass, every extracted column kept forever; --compact VACUUMs once. Off by default — with compressed backups (below) measured at ~12× on a real database, keeping everything is the recommended default.
  • Backup helperfeat: one-shot verified, compressed database backup into any directory #26: wallmonitor --backup DIR takes a verified (integrity-checked) online snapshot while running, compresses it (1.4 GB → 111 MB gzip in ~20 s), places it atomically, and rotates by date in the filename. Destination is any directory the user chooses; nothing is scheduled unless the installer's opt-in --backup-dir is given.
  • CSV/JSON export — download endpoints for sessions and telemetry ranges, for spreadsheet analysis.

Features

  • Charge-cost estimates — configurable utility rate (including time-of-use) → cost per session / per day on the Energy tab.
  • Neutral-current chart / phase-imbalance visibilitycurrentN_a is recorded but not charted.
  • Alert-code decoding — map Wall Connector alert names/codes to human-readable explanations (community-sourced, same unofficial-label caveat as EVSE states).
  • Local-only notifications for actionable eventsLocal-only actionable notifications: predicted derate, device alerts, drift tesla-wall-connector#27: predicted derate with a suggested charge-current cap, device alerts, drift/inspect-wiring, charger unreachable; delivered via browser notifications from an open dashboard tab (SSE-fed, no push service) and an optional LAN webhook (WM_NOTIFY_URL).
  • ntfy-formatted webhook + deploy recipentfy webhook format + self-hosted ntfy deploy recipe tesla-wall-connector#29: --notify-format ntfy posts warnings directly to a self-hosted ntfy topic (title/priority/tags headers, predicted derate at urgent), with deploy/ntfy/docker-compose.yml for running ntfy alongside the monitor. Field-verified on a real install: instant phone pop-ups with message content staying on the LAN (iOS instant delivery uses the documented content-free upstream wake-up ping; strict-local mode remains the shipped default).

Thermal model

Local control & sensing (ESP32 nodes)

Small LAN-only ESP32 nodes (e.g. M5Stack AtomS3 Lite) extend the monitor from observing the thermal story to instrumenting and acting on it. Everything below stays on the local network by design.

  • Closed-loop derate response — BLE charge-current cap. Shipped: contrib/derate_amp_control.py + backtest_derate_amp_control.py, see docs/amp-control.md. Original design notes kept below for the record. The derate forecast (feat: calibrate the idle-offset model per install from its own sensor history #27) already computes a suggested safe current; today it only notifies. A garage ESP32 running esphome-tesla-ble, paired as a charging-only BLE key (CHARGING_MANAGER role — the vehicle itself rejects everything but charging commands), lets a small contrib/ daemon apply that cap mid-charge. Design settled: cap on predicted derate; restore on the observed charge-completion event (MQTT charging-state transition or the wirebox current dropping to zero — projections go stale the moment the cap changes the charge time); re-assert the correct current at next session start as the safety net for unplug-and-drive. Guard rails: hysteresis around the trip threshold, restore-on-crash, never raise above the user's own limit, dry-run mode like the TeslaMate bridge (#38).
  • Structure heat-soak sensor node. The drift watch's biggest confounder is multi-day heat soak of the building/cable — invisible to any single air reading. One ESP32 with an air sensor (BME280/SHT30) plus a strap-on probe (DS18B20) against the wall/conduit near the connector posts both to the existing /api/ambient ingest under distinct source tags. Air-vs-structure divergence measures heat soak directly, turning the rise-vs-ambient scatter's "residual environment effect" from inference into data — and could eventually enter the thermal model as an explicit environment term.
  • Garage door state → events + alert. A reed switch on the door feeds open/close transitions into the events stream. Two uses: correlate door state with fitted cool-down τ (a passively vented space cools very differently with the door open), and a local-only ntfy nudge when the door is left open past a configurable duration. Cheapest possible sensor, disproportionate explanatory power for the thermal history.
  • (Speculative) Active cooling loop. The AtomS3 Lite carries an IR transmitter; paired with a fan/AC unit it could close the loop from the other side — derate forecast triggers cooling instead of (or before) throttling the charge. Parked until there's powered ventilation to command.

Setup & device identity

Session page

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions