(001)

BMS + Solar Monitor

Battery Management & Solar Performance Dashboard with App Sync

Role
Full-Stack Developer
Year
2025
Stack
ReactTypeScriptNode.jsMQTTTime-series storage
BMS + Solar Monitor — Battery Management & Solar Performance Dashboard with App Sync

(002)

Overview

A monitoring interface for a battery management system and its solar generation, paired with a companion mobile app for tracking installations remotely.

I built the layer between the hardware telemetry and the people reading it: ingesting a continuous stream of device data and turning it into something you can understand at a glance.

(003)

The Challenge

Hardware telemetry does not arrive the way application data does. It comes continuously, at rates that vary by metric, and with gaps whenever a device drops off.

That stream had to become a dashboard a non-engineer could read, on a phone, without the interface hammering the device or the reader having to interpret raw numbers.

(004)

What I Built

The monitoring surface covered:

  • Real-time battery state visualization — state of charge, voltage, current, temperature
  • Solar generation and yield charts
  • Historical trends with range-appropriate aggregation
  • Threshold alerting on out-of-range conditions
  • Mobile app synchronization for remote tracking
  • Device and connection status surfacing

Web and mobile both read from one processed source rather than each interpreting raw telemetry, so the two views can never disagree about the state of a system.

(005)

Data & Engineering

The sampling rate and the rendering rate are different problems. Telemetry arrives faster than a chart needs to repaint, so the interface reads from processed data at its own cadence instead of re-rendering on every message.

Long chart ranges needed downsampling — a month of readings at device resolution is more points than a phone can draw or a person can read. Selecting a range picks the aggregation with it.

Dropouts are normal, not exceptional. Reconnecting backfills the gap so a lost connection leaves a visible hole in the history rather than silently shifting the timeline.

(006)

Outcome

The result was a single monitoring surface for battery and solar performance, readable on desktop or phone, with history and alerting on top of the live view.

The work was mostly about the unglamorous parts of telemetry — sampling, aggregation, and reconnection — which is what determines whether a monitoring dashboard is trustworthy.