Unifying Multi-Protocol Devices (Modbus, BLE, MQTT) into One Backend
Unifying Multi-Protocol Devices (Modbus, BLE, MQTT) into One Backend
When devices speak different protocols, the dashboard should never know. The way to get there is a layered design: per-protocol adapters at the edge, a normalization layer in the middle, and one common data model that everything downstream reads. I used exactly this to connect 8+ device categories across Modbus, MQTT, BLE, and WebSocket into single dashboards.
The layered shape
Each adapter knows the quirks of its protocol and nothing else. The normalization layer knows the canonical model and nothing about wires.
Adapters: isolate the protocol mess
Each protocol has its own awkwardness, and the adapter is where it stays contained:
- Modbus — poll devices on a schedule, read holding/input registers, and map raw register values to meaningful readings (scale, offset, data type).
- BLE — handle short-range wireless through a gateway that bridges devices to the backend; deal with connect/disconnect churn there.
- MQTT — subscribe to topics and parse incoming payloads into events.
The rule: protocol-specific code lives only in its adapter. Nothing downstream
should contain an if (protocol === ...).
The common data model is the contract
Every adapter emits the same shape — something like device ID, metric name, value, unit, and timestamp. Once telemetry is in that canonical form, storage, dashboards, alerts, and APIs all work against one model. Adding a new protocol later means writing one new adapter, not touching the dashboard.
Why this pays off
A normalized model is what makes the rest cheap. A new device category, a new report, a new alert rule — none of them care how the data arrived. The hard part (protocol differences) is solved once, at the edge, and never leaks inward.
The takeaway
Put protocol-specific code in adapters, normalize to one common model, and let everything downstream depend only on that model. That single decision is what turns a pile of incompatible devices into one coherent system.
This is one piece of a larger system. See the complete guide to IoT backends, the case study, or the IoT backend development service if you want one built.