wallmonitor
A local-only companion for the Tesla Wall Connector Gen 3 that grew well beyond reading data off the charger: it records everything the device reports, turns that history into a thermal model fitted to your install, forecasts derates before they happen (with the charge-current cap that avoids them), watches for connector degradation with honest statistics, and pushes actionable warnings to your browser or phone.
Everything stays on your machine and your LAN: the only network traffic is HTTP GETs to the charger's local API, storage is a local SQLite file, and the web UI serves no external assets (no CDNs, fonts, or analytics).
Try it in 30 seconds
No hardware needed — demo mode runs a built-in charger simulator:
uvx wallmonitor --demo
Then open http://127.0.0.1:8480.
Against your real Wall Connector (find its IP in your router, or use the
TeslaWallConnector_XXXXXX.local hostname; add --split-phase on a North
American split-phase install):
uvx wallmonitor --host 192.168.1.50 --split-phase
All history lands in a single wallmonitor.db SQLite file — back up that
one file and you have everything. For every option, and for running it as a
systemd service on an always-on box, see Running wallmonitor.
At a glance
- Full-fidelity recording — every response stored with its complete raw JSON
- Live dashboard (SSE) with rolling charts, an active-alert banner, and a live derate-forecast chart: measured handle temperature against the model's projected plateau and the trip threshold, projection drawn forward so the predicted trip intercept is visible on the chart
- Session review: energy, peak/average power, per-phase telemetry, drillable charts
- Event timeline with range presets, category filters, and paging
- Alert decoding and EVSE-state labels, each marked verified vs community-reported
- Wi-Fi health history and connectivity events
- Thermal derate forecast — a per-install fitted model predicts alert 40 live and suggests the highest current that avoids the 50% foldback
- Automatic derate prevention — an optional daemon caps the vehicle's charge current through a least-privilege BLE pairing when the forecast firms up, and restores it once the risk clears
- Degradation watch — ambient-corrected heat-rise trend with confidence intervals and a verified-baseline anchor, so "getting worse" is a statistical claim, not a vibe
- Actionable notifications, local-only — browser push and LAN webhook/self-hosted ntfy for phones, with a systemd + Docker deploy recipe
- Resilience: seamless restarts, downtime recorded as explicit gap events, sensor-glitch quarantine
Works out of the box — everything else is additive
The core needs nothing but the charger. Integrations are optional, degrade
gracefully when absent, and the absence paths are covered by the test suite:
without an ambient sensor the charger doubles as its own thermometer, with
no webhook configured notifications are a tested no-op, and TeslaMate /
ntfy / ESP32-BLE each plug into a generic interface (POST /api/ambient, a
plain LAN webhook, a REST call) rather than being wired into the core.
Documentation
| Page | What's in it |
|---|---|
| Running wallmonitor | Every option, systemd service install, tests |
| What gets recorded | Recording fidelity, sessions, events, alert/EVSE label verification, resilience |
| Thermal model | The derate forecast and the degradation watch, in full detail |
| Amp control | Automatic derate prevention over BLE: design, guards, backtesting |
| Ambient sensing | Garage sensors (Ecowitt or any JSON poster), placement, contamination checks, the TeslaMate car bridge |
| Notifications | Browser push and self-hosted ntfy phone alerts |
| Measured charging efficiency | What three cross-referenced meters say about wall-to-battery efficiency |
Tests
uv run pytest
The suite runs the full pipeline against the simulator — polling, session detection, alert lifecycle, the web API, and the thermal model end to end.
License
MIT. Built on the
tesla-wall-connector
library (MIT, by Einar Bragi Hauksson).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wallmonitor-0.1.0.tar.gz.
File metadata
- Download URL: wallmonitor-0.1.0.tar.gz
- Upload date:
- Size: 78.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3e0d3e1eb31d020c50553c64728f97d4862758ad7d17e50231c9ef072e37a3c
|
|
| MD5 |
4b25a9dc0eadda28ef3fc8e0682c7916
|
|
| BLAKE2b-256 |
1714c1b4e314d63ea2b9562fc94ff40ce9119264fb290af664f29dfcc7f72426
|
Provenance
The following attestation bundles were made for wallmonitor-0.1.0.tar.gz:
Publisher:
publish.yml on zebraengine/wallmonitor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wallmonitor-0.1.0.tar.gz -
Subject digest:
e3e0d3e1eb31d020c50553c64728f97d4862758ad7d17e50231c9ef072e37a3c - Sigstore transparency entry: 2523460482
- Sigstore integration time:
-
Permalink:
zebraengine/wallmonitor@122c893938e585a3e3145940a0295d57464ef2b1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/zebraengine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@122c893938e585a3e3145940a0295d57464ef2b1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file wallmonitor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: wallmonitor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 83.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71c58ee7ccfdea8c4c5e83ab4b8bcbe58622eab7d94cf519625a79a90e5b9ce3
|
|
| MD5 |
5560f56fe39b83279978ade90c869acd
|
|
| BLAKE2b-256 |
0ed551cfe9a26d9d1835e469a372d504575121853c9d23ffbf5594da98fd68cc
|
Provenance
The following attestation bundles were made for wallmonitor-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on zebraengine/wallmonitor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wallmonitor-0.1.0-py3-none-any.whl -
Subject digest:
71c58ee7ccfdea8c4c5e83ab4b8bcbe58622eab7d94cf519625a79a90e5b9ce3 - Sigstore transparency entry: 2523460537
- Sigstore integration time:
-
Permalink:
zebraengine/wallmonitor@122c893938e585a3e3145940a0295d57464ef2b1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/zebraengine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@122c893938e585a3e3145940a0295d57464ef2b1 -
Trigger Event:
push
-
Statement type: