evcc: meters-only dry-run reading the VX3 via open3e/MQTT #105

Merged
k.renner merged 1 commits from feat/evcc-meters-dry-run into master 2026-07-03 20:40:03 +00:00
Owner

Deploys evcc as a monitoring-only instance (no charger/loadpoint yet) to validate the Vitocharge VX3 -> open3e -> MQTT energy pipeline and get familiar with evcc before a wallbox exists.

What it does

  • Plain Deployment (house style, like gatus): grid/PV/battery custom MQTT meters + battery SoC, reading the VX3 open3e datapoints (grid 1603, PV 1690, battery power 1836, SoC 1664).
  • Config via a sops-encrypted Secret; Traefik ingress on evcc.renner.uno / evcc.k.renner.uno; 1Gi ceph-block PVC for evcc state; own Flux Kustomization; per-namespace CiliumNetworkPolicy.
  • Adds a scoped Mosquitto user evcc (read-only on open3e/#) plus the reciprocal home-assistant-ns ingress rule so evcc reaches mosquitto:1883 via ClusterIP.

Review / deploy notes

  • Applying this restarts the Mosquitto pod once (brief MQTT blip for HA/open3e) because the broker command/env changes.
  • Grid uses the VX3-relayed PCC value (1603); the house treats the SML meter as grid truth. If the ActivePower sign is flipped, add scale: -1 to the grid meter. Can be repointed to sml2mqtt/# later.
  • evcc is expected to run with meters and zero loadpoints; if it refuses to start without a loadpoint, that is the one thing to watch.
  • No sponsor token configured (not needed for meters/dashboard).
Deploys evcc as a monitoring-only instance (no charger/loadpoint yet) to validate the Vitocharge VX3 -> open3e -> MQTT energy pipeline and get familiar with evcc before a wallbox exists. ## What it does - Plain Deployment (house style, like gatus): grid/PV/battery custom MQTT meters + battery SoC, reading the VX3 open3e datapoints (grid 1603, PV 1690, battery power 1836, SoC 1664). - Config via a sops-encrypted Secret; Traefik ingress on evcc.renner.uno / evcc.k.renner.uno; 1Gi ceph-block PVC for evcc state; own Flux Kustomization; per-namespace CiliumNetworkPolicy. - Adds a scoped Mosquitto user `evcc` (read-only on open3e/#) plus the reciprocal home-assistant-ns ingress rule so evcc reaches mosquitto:1883 via ClusterIP. ## Review / deploy notes - Applying this restarts the Mosquitto pod once (brief MQTT blip for HA/open3e) because the broker command/env changes. - Grid uses the VX3-relayed PCC value (1603); the house treats the SML meter as grid truth. If the ActivePower sign is flipped, add `scale: -1` to the grid meter. Can be repointed to sml2mqtt/# later. - evcc is expected to run with meters and zero loadpoints; if it refuses to start without a loadpoint, that is the one thing to watch. - No sponsor token configured (not needed for meters/dashboard).
k.renner added 1 commit 2026-07-03 20:38:30 +00:00
Deploys evcc (evcc.io) as a monitoring-only instance — no charger or
loadpoint yet — to validate the Vitocharge VX3 -> open3e -> MQTT energy
pipeline and get familiar with evcc ahead of a future wallbox.

evcc runs as a plain Deployment (house style, like gatus) with:
  - grid/PV/battery custom MQTT meters + battery SoC, reading the VX3
    open3e datapoints (grid 1603, PV 1690, battery power 1836, SoC 1664)
  - config delivered via a sops-encrypted Secret (mqtt password inline)
  - Traefik ingress on evcc.renner.uno / evcc.k.renner.uno
  - a 1Gi ceph-block PVC for evcc's SQLite state
  - a dedicated Flux Kustomization (clusters/homelab/evcc.yaml)
  - a per-namespace CiliumNetworkPolicy (evcc-ns.yaml)

MQTT: adds a scoped broker user `evcc` (read-only on open3e/#) to the
Mosquitto deployment, plus the reciprocal home-assistant-ns ingress rule
so evcc can reach mosquitto:1883 via ClusterIP. The password is a shared
sops value (evcc namespace + home-assistant namespace).

Note: applying this restarts the Mosquitto pod once (brief MQTT blip for
HA/open3e), because the broker's env/command changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
k.renner merged commit bb9c8f1e2f into master 2026-07-03 20:40:03 +00:00
Sign in to join this conversation.