# Install Single one-shot. No daemon, no systemd unit, no service to keep running. ## Prerequisites - OpenEVSE WiFi firmware already configured to publish to the broker (`mqtt_enabled:true`, `mqtt_connected:1` in `/status` JSON). - Broker reachable from the machine you're running this on. - `uv` installed and on `$PATH` (the script is a PEP-723 inline-deps script — `uv` resolves `paho-mqtt` and `pyyaml` on first run). ## 1. Verify OpenEVSE is publishing ```bash mosquitto_sub -h -u -P -t 'openevse/#' -W 5 -v ``` Expect a steady stream of `openevse/{power,voltage,amp,...}` plus retained `openevse/announce/`, `openevse/config`, etc. If nothing arrives, the EVSE isn't talking to the broker — fix that first via the OpenEVSE web UI at `http:///`. ## 2. Preview the discovery payloads (optional) ```bash ~/solar/openevse/bin/openevse-publish-discovery --dry-run --device-id a048 ``` Prints the 23 topics + JSON payloads it would publish without connecting. ## 3. Publish Broker creds default-load from `~/.config/powermon/powermon.yaml`: ```bash ~/solar/openevse/bin/openevse-publish-discovery ``` The tool reads the retained `openevse/announce/` payload to discover the device id automatically. Override broker / device id if needed: ```bash ~/solar/openevse/bin/openevse-publish-discovery \ --host 10.0.0.41 --user mqtt --password '...' \ --device-id a048 ``` Re-running is idempotent — the broker just overwrites the retained payloads in place. ## 4. Verify The 23 retained discovery configs: ```bash mosquitto_sub -h -u -P \ -t 'homeassistant/sensor/+/config' \ -t 'homeassistant/binary_sensor/+/config' \ -W 5 -F '[r=%r] %t' | grep openevse | sort -u ``` Expect 20 sensor + 3 binary_sensor entries, all `[r=1]`. In HA: **Settings → Devices & Services → MQTT** should show "OpenEVSE-a048" as a new device. If not, force a reload: ```bash mosquitto_pub -h -u -P \ -t 'homeassistant/status' -m 'online' ``` HA listens on this topic and re-scans retained discovery on receipt. ## Rollback ```bash ~/solar/openevse/bin/openevse-publish-discovery --purge ``` Publishes empty retained payloads to all 23 config topics; HA forgets the entities on next reload. The OpenEVSE-side `openevse/` topics are not touched (they're not ours to clear).