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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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