Skip to content
Architecture · IoT

IoT platform architecture: telemetry, storage and alerts

An IoT platform handles device connectivity, collection, queues, time-series storage, real-time alerts, device status and dashboards, beyond an admin interface.

An IoT project needs more than live readings. As a fleet grows, uploads must remain reliable, disconnected devices must recover, alerts must arrive on time and historical data must remain trustworthy. Start with the acquisition path.

A typical data path

  1. Device / gateway
  2. MQTT / HTTP telemetry
  3. Ingestion service
  4. Message queue
  5. Rules / alerting service
  6. Time-series + relational storage
  7. Dashboard / mobile app / client portal

Device onboarding starts with identity and protocols

Give each device a unique ID, credential, model, firmware version and customer assignment. Authenticate at ingestion so unauthorized devices cannot write data.

Choose MQTT or HTTP for the reporting pattern

MQTT often suits frequent telemetry and persistent connections; HTTP can suit occasional reports or simpler gateways. Define a consistent payload, timestamps and retry behavior for either approach.

Use queues to absorb bursts and separate services

Devices can upload in bursts. Writing directly to the database can overload it. Queues separate ingestion, parsing, storage and alerting to improve resilience.

Plan time-series storage for historical trends

Continuous readings such as temperature, pressure, battery level and operating state need a time-based storage strategy. Define sampling rates, retention, aggregation and query indexes before implementation.

Design alerts for timeliness and false positives

An alert needs more than a threshold: consider repeated abnormal readings, offline duration, recovery notifications, escalation and notification deduplication.

Show each role the right level of detail

Operations staff need device health, customers need operating status and managers need trends. Align access permissions and detail levels with each business role.

Engineering judgment · context matters

Resolve device identity, ordering and offline behavior before designing dashboards

A chart is easy to produce. Establishing which device generated a reading, whether it is duplicated or late, and whether a command actually ran is harder. Unclear identity and message semantics become increasingly expensive as data volume grows.

Decision What to establish Implementation requirement
Uplink telemetry device_id、message_id、device_time、receive_time、schema_versionDeduplicate by message ID and retain both device and platform timestamps
Offline buffering Capacity, eviction rules, replay order and reconnect throttling Simulate a 24-hour disconnection and check missing and out-of-order data
Downlink commands Command ID, expiry, receipt acknowledgment, execution result and error code Sent by the platform does not mean executed by the device

Acceptance should include duplicated reports, clock drift, device restarts, gateway outages, throttling and command timeouts. Check for false alerts, recoverable data gaps and clear failure states for operators, rather than testing only online devices.

Illustrative scenario: from device telemetry to an actionable work order

This scenario explains an engineering approach. It is not a verified client delivery or evidence of business results. Actual project scope depends on the information reviewed.

IoT projects often begin with charts on a large screen. Business value depends on detecting, acknowledging, assigning and resolving exceptions. Unstable networks, inconsistent protocols and clock drift can undermine trust even when many devices appear connected.

Business workflow and product scope

Start with a small set of important devices. Define online status, operating parameters, alert severity and ownership. Separate the overview screen, engineer alert workspace, device trends, work orders and read-only customer portal. Discovery, action and investigation need different views.

Technical approach

An edge gateway adapts protocols, buffers offline data and validates readings. MQTT messages include device ID, event time, sequence and quality flags. Ingestion authenticates messages and queues them; consumers deduplicate by device and sequence. Store readings in time-series storage and device records, rules, alerts and work orders in a relational database. Precompute aggregates and separate hot and cold data.

Difficult design decisions

Store device time, platform receipt time and persistence time separately to identify clock drift and network delay. Alert rules need duration, recovery criteria, suppression windows and maintenance mode. Define handling for disconnections, duplicates, ordering and replay. Mark poor-quality data explicitly rather than drawing a misleading continuous line.

User experience

Alert cards should show the device, location, value, threshold, duration, related trend and operating guidance. Engineers can acknowledge, reassign, comment or open a work order. Group alerts with the same cause and retain the resolution timeline. Prioritize acknowledgment and photos on mobile; keep complex rule configuration in the admin interface.

Validation and acceptance

Use simulators and recorded data to test outages, replay, ordering and alert bursts before piloting a few devices. Agree measures such as data completeness, clock deviation, duplicates, alert accuracy, acknowledgment and recovery time, and nuisance alerts. Evaluate whether exceptions lead to accountable action with evidence, rather than simply counting connected points.

Growing fleets need governance as well as connectivity

Direct JSON inserts may work for ten devices. More devices, faster reporting and varied firmware introduce ordering, duplicates, replay, schema changes and alert storms. Define device identity, topics, schema versions and time semantics before selecting transport and storage.

Manage device credentials throughout their lifecycle

Use a unique identity and credential for each device; separate production and test credentials. Provide activation, rotation, deactivation and customer transfer workflows. Check publish authorization as well as connection authentication. A compromised credential should be revocable without reconfiguring the entire fleet.

Expect duplicate and out-of-order messages

MQTT QoS does not replace business idempotency. Reconnects can duplicate messages; offline buffering delivers old readings late. Include device time, gateway receipt time, sequence and protocol version. Deduplicate by device and sequence, define late-data handling, and track command IDs, expiry, acknowledgments and timeouts separately from transport success.

Use hot and cold storage to manage costs

Recent high-frequency data supports live views and alerts; time-series storage or partitioned hot tables may suit it. Downsample or archive long-term history. Keep devices, customers, rules and work orders in relational storage. One large table makes querying and retention policies harder to manage.

Alerts need suppression, grouping and recovery

A temperature exceeding a limit for a minute should not create sixty alerts. Define duration, recovery thresholds, quiet windows, device groups and escalation. Check gateway or network faults before opening a ticket for every offline device. Retain triggering data, rule version, acknowledgment, handling and recovery time for review.

Implementing interfaces and data models

Establish a trusted device identity before accepting telemetry

Device records should include device_id, model, firmware, tenant, status and credential version. Restrict MQTT topics by device. Use rotating tokens or device certificates for HTTP. Avoid one permanent key shared by all devices. Support individual revocation for retirement, transfer or compromise.

Keep device and platform receipt timestamps

A payload should include device_id, sequence, event_time, received_at, schema_version and metrics. Sequences reveal duplicates and gaps; paired timestamps help identify clock drift and delay. Select decoders by schema_version and retain raw messages briefly for replay after protocol or parser changes.

Handle ordering, replay and historical storage separately

Partition queues by device_id and reorder within an agreed time window. Store later arrivals in history without casually repeating business actions. Keep recent readings at useful resolution, then downsample and archive. Retain device records, rules and tenant relationships in relational storage.

Treat alerting as a state machine

Define duration, hysteresis, suppression and recovery. States may include pending, firing, acknowledged and resolved. Otherwise readings near a threshold cause repeated notifications. Record command_id, send time, acknowledgment and timeout for control commands. Distinguish sent from executed in the interface.

Confirm these points before implementation

  • Does each device have its own identity and credential?
  • How frequently does it report data?
  • Are offline and anomaly alerts required?
  • How long should historical data be retained?
Need to turn an architecture into a working system?

Describe your devices, current tools and data flow. We can help identify which part to validate first.

Briefly describe your needs