Why Your MQTT Dashboard Jumps Backward: Timestamps, Sequence Numbers and Replay
MQTT arrival order is not process order. Why the DUP flag misses the duplicates that hurt, Sparkplug's 8-bit seq wrap, and MQTT 5.0 fixes for stale state.
Articles
Field-oriented references for HMI/SCADA systems, industrial communication, alarms, tags, historians, and project delivery.
MQTT arrival order is not process order. Why the DUP flag misses the duplicates that hurt, Sparkplug's 8-bit seq wrap, and MQTT 5.0 fixes for stale state.
Shared subscriptions split an MQTT stream across workers — and will quietly halve your historian feed and scramble trend order if you point them wrong.
Estimate the real load behind site/# and contain it with MQTT 5.0: Retain Handling, shared subscriptions, Receive Maximum and SUBACK reason codes.
Duplicate client IDs, wildcard ACL rules nobody owns, retained commands that re-fire, and silent denied publishes. What MQTT guarantees at the SCADA edge.
Versioning MQTT telemetry payloads so historians, HMI clients, MES connectors and analytics survive a field change instead of breaking on one.
A staged plan for rotating MQTT broker, client and CA certificates without breaking publishers, store-and-forward queues or Sparkplug birth sequences.
Why an MQTT edge gateway loses data during a WAN outage, and how to buffer with source timestamps, sequence numbers and a replay policy that holds.
Practical notes for choosing MQTT QoS levels, retained messages, clean sessions, and duplicate handling in SCADA and industrial telemetry projects.
Using Last Will, birth messages and retained state so a SCADA screen shows offline, stale and healthy as three things — not one green icon that lies.
Laying out Sparkplug B group, edge node and device IDs — plus birth certificates, aliases and STATE — so a rename doesn't break every subscription.
How to think about OPC UA and MQTT in industrial systems without turning the comparison into a vendor argument.