Case study 02 / Connected systems
Making RV-C telemetry usable in a connected mobile application
Michael traced unfamiliar vehicle messages from protocol documentation to responsive application state, then verified the displayed values against connected hardware.
- RV-C / CAN
- AngularJS
- Ionic
- Capacitor
- Hardware verification
Problem
An Ionic and Capacitor mobile application surfaced state from connected RV equipment, including batteries, inverters, generators, awnings, leveling, braking, and emissions systems.
Xantrex multi-battery systems needed pack-level identification and individual state-of-charge values. At the same time, high-frequency telemetry updates were introducing visible UI lag.
Constraints
The application consumed data from real RV hardware through an existing gateway. Correct behavior depended on interpreting RV-C/CAN messages, identifying the transmitting device, and mapping protocol fields into application state without confusing multiple battery packs.
- Work within an established AngularJS, Ionic, and Capacitor application.
- Interpret compact hexadecimal payloads using protocol documentation.
- Keep pack identity attached to the correct state-of-charge value.
- Reduce update pressure without making the displayed state misleading.
Investigation and decisions
Michael used an RV-C CAN adapter to inspect messages, translated hexadecimal payloads into binary fields, interpreted protocol documentation, and identified transmitting devices and system states.
He used device identifiers to preserve battery-pack identity and chose 500-millisecond processing windows to batch incoming telemetry before updating the interface.
Solution
Michael implemented Xantrex multi-battery handling, device-based pack selection, and a radial state-of-charge experience. He also grouped high-frequency messages into 500-millisecond processing windows before applying updates to the UI.
Verification and result
Displayed values were checked against connected hardware. The completed feature distinguished individual battery packs, and batching the telemetry updates addressed the observed UI lag.
Responsibility boundary
Michael's work consumed data delivered through the existing gateway. He did not implement the Bluetooth Low Energy stack or the underlying GATT layer; his scope covered message interpretation, application state, interface behavior, and hardware-based verification after the data reached the application.