RV Tech · Monitoring

Alerting that survives its own outage

Why the telemetry chain is wired ahead of the disconnect, a heartbeat that alarms when it stops, and alerts that say what to go do.

There is a wiring decision underneath all of this that is easy to overlook. The Cerbo, the router and the Starlink are wired ahead of the coach disconnect, so they can stay powered with everything else in the coach switched off.

That is what makes the rest of it work at all. If the telemetry chain sat behind the disconnect, shutting the coach down would take the monitoring with it — and a system that goes quiet when you switch it off is indistinguishable from one that has failed. It also means the rig keeps reporting through storage and between trips, which is precisely when nobody is looking at it.

The obvious objection is the standing draw. In practice solar covers it — with the coach off, the array carries the day's usage, so the rig can sit for weeks reporting on itself without walking the bank down. That only holds while the panels see sky, which is the one thing to think about if it is ever stored under cover.

The hardest part of monitoring anything remote is that a broken system cannot report that it is broken. Traditional alerting fails in exactly the case you care about most.

So the RV sends a heartbeat every five minutes, and the alert fires when the heartbeats stop. Separately, monitors reach into the RV over the VPN from the other direction. Read together, they tell you which half failed: heartbeat dead but the RV still answering means the sender broke; both dark means the link did.

The same care goes into the small stuff. Sensors expire after five minutes, so "no data" is the offline signal — no separate ping needed. Offline detection keys on both the Cerbo's uptime and the battery state of charge, so a battery driver fault does not get misreported as the whole RV being gone. And if a sensor is ever renamed and simply does not exist, the system reports unknown and fires nothing at all, rather than waking someone at 2 a.m. for something no amount of driving to the RV can fix.

The Cerbo watches itself as well. It rebooted once from a hardware watchdog after sustained CPU saturation, so now there is a warning as load climbs — along with alerts for a full root filesystem, unexpected restarts, and a nudge when someone leaves a remote console tab open, since each one burns about a quarter of a CPU core indefinitely.

An alert should tell you what to go do, not just that a number moved.

Uptime Kuma dashboard filtered to the RV monitors, showing the dead-man heartbeat, router and Traccar position age, with an event log of a heartbeat failure and recovery
The watchdog, caught in the act. Read the event log on the right from the bottom up: the heartbeat was arriving normally, then "No heartbeat in the time window" — the alert firing — and 99 seconds later it is back, reporting "cerbo up 68668s, load 2.37, rv-mqtt ok". The heartbeat carries diagnostics rather than just a pulse, so the recovery message tells you what state the RV came back in. "Traccar position age — last position 8 s old" is the monitor that answers what none of the others can: the RV is reachable, but is it actually producing? The red row is an unrelated service; this is a working dashboard, not a staged one.