On the Road · Tech

Building an RV That Monitors Itself

Every Victron owner has the VRM app, and it is good at telling you what your system is doing. What it did not do was surface the slow-degradation modes I wanted to catch — the ones that need several sensors compared against each other. This is a running log of closing that gap, one story at a time.

680 AhLithium bank
920 WSolar array
2Travel uplinks
5 minHeartbeat interval

Read the stories Equipment list

How it is wired

The coach is a 2018.5 Winnebago View 24J — a diesel Class C on the Mercedes-Benz Sprinter chassis. It runs a Victron Cerbo GX as its brain: a MultiPlus inverter/charger, a 680 Ah lithium bank in two packs, a SmartSolar MPPT, a battery shunt, and an Onan generator with automatic start. Standard enough.

The part that is not standard is a small publisher script running on the Cerbo itself, pushing telemetry over MQTT into Home Assistant back at the house. That gives Home Assistant a pile of readings VRM never shows you: per-pack cell spread, the weakest cell in each pack, each pack's requested charge voltage limit, the Cerbo's own CPU load and free disk, GPS fix validity, even how many remote console sessions are open.

Home Assistant then does the math on top. That math is where most of the value turned out to be.

One problem at a time

Each of these started as something breaking, going quiet, or just not being visible from the driver's seat. Newest first.

The battery numbers, on the radio

The Victron numbers on the Xite head unit, with a BAT button to flip between them and the navigation. Nothing in the radio's firmware touched.

Read the story →

The Lithium Upgrade

Going from 456 Ah to 680 Ah, why integration beat capacity, and five things worth knowing before you parallel two packs.

Read the story →

The fault that started all of this

An inverter that tripped on every compressor start, a corroded lug hiding in a cable run, and how the cable became a sensor.

Read the story →

The failure that hides from every alarm

A burned SAE connector on the roof that never blew a fuse, and the health sensor built so it cannot happen quietly again.

Read the story →

Two uplinks, and knowing which one is lying

Starlink queried straight from the dish, why one ping target is not proof of a cell link, and data usage shown as tank gauges.

Read the story →

Hands-free arrival, and uploads that cannot touch Starlink

A geofence that runs on the Cerbo, a dashcam archive that can only leave over home Wi-Fi, and the backstop for the ugly case.

Read the story →

Where it has been

Drives as real tracks coloured by speed, positions buffered through dead zones, and the tracker setting that hid a parked RV for three days.

Read the story →

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.

Read the story →

Everything in the rig

The full parts list, because "what are you running?" is the question that always comes up first.

The coach2018.5 Winnebago View 24J

ItemDetail
CoachWinnebago View, 24J floorplan, 2018.5
ChassisMercedes-Benz Sprinter — diesel Class C
Why it mattersA short Sprinter roof is why the array is three small strings rather than two big ones, and the diesel genset shares the coach's own fuel tank

Power conversionVictron, all of it

ComponentModelRole
Inverter / chargerMultiPlus 12/3000/120-50, 120 V3000 VA inverter (2400 W continuous at 25 °C), 120 A charger, 50 A transfer switch
System controllerCerbo GXRuns Venus OS and Node-RED; the brain of the whole system
Solar controllerSmartSolar MPPT 100/50Single controller for all three strings
Battery monitorBMV-712 SmartShunt in the battery negative; coulomb-counted bank state of charge, which needs periodic synchronisation
DC-DC chargerOrion-Tr Smart 12/12-30Charges the house bank from the alternator while driving

Battery bank680 Ah · 8.7 kWh at 12 V

ComponentDetailSpec
Lithium packs2 × SFK 340ELR LiFePO4, paralleled, each BMS on its own USB link680 Ah
Pack cabling1/0 throughout, roughly 3 ft per pack run—
DisconnectsAnderson SB175, one per pack175 A
USB hubCoolGear industrial 7-port — carries both packs and the Bluetooth adapter; the GPS keeps the Cerbo's second port—
Chassis battery maintainerTRIK-L-START, diode-modified for lithium — keeps the chassis starting battery topped up from the house bank—
Measured path resistanceTypical per-pack cells-to-shunt path after the 2026 rebuild. A per-branch fit, so shared segments count twice over — not the parallel equivalent of the bank~3 mΩ

That last row used to be 7.4 mΩ. Fixing it is the story in the section above, and the full upgrade — fitment, charge profile, and what to know before paralleling two packs — is written up in The Lithium Upgrade.

Solar920 W in three 2-panel strings

StringPanelsNameplate
A2 × Newpowa Pro 200 W 9BB400 W
B2 × Zamp Obsidian 100 W200 W
C2 × Newpowa 160 W320 W

All three strings are natively MC4, adapted to the roof's Zamp SAE cap. Worth knowing: Zamp SAE is reverse polarity to the usual SAE convention — never assume an adapter is wired the way you expect. String C is the one whose connector burned through.

Generator and shore

ComponentDetail
GeneratorCummins Onan QD3200 Quiet Diesel, with automatic start and stop driven by the Cerbo on state-of-charge thresholds. It draws from the coach's own diesel tank, so autostart spends driving range — and the pickup stops around a quarter tank so it cannot strand you
Run detectionWired into a Cerbo digital input, so "is it actually running" is measured rather than assumed
Transfer switchSecond digital input; separate AC current limits for shore and generator
Victron GX generator panel reading Stopping, auto-started on state of charge condition, with autostart enabled
Caught mid-cycle: "Auto-started · SOC condition". Nobody pressed anything — the bank fell to its threshold, the generator ran, and it is shutting down again on its own. The inverter beside it is in Sustain, holding the bank rather than cycling it.
Victron GX generator settings showing a 15 minute minimum run time and quiet hours enabled from 21:00 to 08:00
The settings behind it. Quiet hours run 21:00 to 08:00 — the part your campground neighbours care about, and the reason automatic starting is tolerable at all in a shared site. The 15-minute minimum run time matters for the generator's own sake: short starts are how you wet-stack a diesel.

Connectivity

ComponentModelRole
RouterMikroTik hAP ac (RB962UiGS-5HacT2HnT)Router, switch, dual-band access point, firewall, and the VPN endpoint
SatelliteStarlink MiniRoam plan, 100 GB/month — the metered link
CellularUSB-tethered Android phoneUnlimited, and therefore the preferred link
Cell boosterWilson RV cellular boosterAmplifies the signal reaching the phone — the difference between a usable cellular link and none at all in marginal sites
Home uplink5 GHz radio in client modeJoins the house network automatically on arrival
TunnelWireGuard, site to siteRemote administration rides this; no inbound management services are published to the internet

Cameras and sensors

ComponentModelNotes
DashcamBlackVue DR900S-1CHLive view in Home Assistant; footage archives over home Wi-Fi only
Cameras ×2Blink Outdoor, with sync moduleBattery-powered, on the RV's own 2.4 GHz network. Integrated into Home Assistant, so exterior motion and snapshots land alongside the rest of the RV's telemetry rather than in a separate app
Temperature ×4RuuviTag, BluetoothInside, outside, freezer, and inverter bay
GPSu-blox 7 USB receiverFeeds the map, the tracking server, and the arrive-home geofence
PropaneCerbo built-in tank inputOne of four inputs; three are still free

Not here yet: fresh, grey and black tank levels. Still the factory panel only.

Software

ComponentRuns whereJob
Venus OSCerbo GXVictron's own platform — everything else is built on top of it
Node-REDCerbo GXRelays the arrive/leave decision to the router
Custom collectorsCerbo GXTelemetry publisher, Starlink dish reader, GPS poster, geofence, heartbeat
Home AssistantAt the houseEvery derived sensor, dashboard and alert on this page
TraccarAt the houseDrive tracks, with offline buffering through dead zones
Uptime KumaAt the houseThe heartbeat watchdog and the reach-in monitors
Dash feedCerbo GXServes the battery, solar, shore and alert numbers to the radio over the coach WiFi
Battery screenXite head unitShows those numbers on the radio; lives on the navigation card, see The Dash

The honest gaps

Water tanks

Fresh, grey and black still exist only on the factory monitor panel. There is no history, no alert, and nothing that could catch a black tank filling faster than usual — the early signature of a leaking toilet valve. Three of the Cerbo's four tank inputs are free and propane already proves the path works, so the open question is what kind of sender the coach actually uses. That is the next project.

The GPS receiver also dropped its fix for three days without anyone noticing, which is its own small lesson: it now publishes an explicit "no fix" rather than simply going quiet, so the difference between a dead receiver and a dead RV is visible at a glance.

More to come as things break and get fixed. Questions, or want detail on any of it? Get in touch.

Built with Claude Code.