Tunas Akara
Back to Blog

Unifying Multi-Protocol Devices (Modbus, BLE, MQTT) into One Backend

by Rayhan2026-06-206 min read
iotmodbusblemqttarchitecture

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

Loading diagram…

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.