Back to selected work

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.