Skip to content
PROJECT 02 / 11

Uplink

Node-RED edge data gateway with offline buffering and dynamic signal fetching.

→ 90–95% bandwidth reduction on a constrained uplink.

  • Node-RED
  • Edge
  • IoT
  • NDA

The on-site half of the Industrial Monitor stack. A small Node-RED runtime at each site or asset, packaged to run unattended on cheap industrial hardware, that does three jobs:

  1. Speaks the local protocols natively — Modbus TCP/RTU, OPC UA, MQTT, S7, BACnet, plain HTTP REST, plus a handful of less-common buses where the off-the-shelf nodes were too lossy or too chatty. Custom nodes filled those gaps.
  2. Filters what crosses the link. A signal-catalogue config drives what gets forwarded and when: change-detection thresholds, per-signal sample rate, hysteresis, dead-bands. Most of the bandwidth saving is here. The platform never sees redundant samples for signals that haven’t moved.
  3. Buffers across outages. SQLite ring buffer on disk, with store-and-forward over MQTT once the link comes back. A site can lose connectivity for hours and the time-series store behind it gets a clean catch-up rather than a gap.
┌─[ 00 SIGNALS ]───────────────────────────────────────┐
│ > 600+ tags from PLC, OPC UA, Modbus, MQTT           │
└─────────────────────────┬────────────────────────────┘
                          ▼
┌─[ 01 LOCAL ]─────────────────────────────────────────┐
│                                                      │
│   read ──> dedupe ──> dynamic-rate buffer            │
│                                                      │
└─────────────────────────┬────────────────────────────┘
                          ▼
┌─[ 02 SHIP ]──────────────────────────────────────────┐
│                                                      │
│   delta-only ──> compress ──> retry-safe TLS         │
│                                                      │
└─────────────────────────┬────────────────────────────┘
                          ▼
┌─[ 03 BANDWIDTH ]─────────────────────────────────────┐
│   raw      ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  100%                │
│   shipped  ▓▒░░░░░░░░░░░░░░░░░░    7%                │
│                                          93% saved   │
└──────────────────────────────────────────────────────┘
Same data, ~7% of the bytes — survives the link going dark for hours without dropping anything that matters.

What it gives up by design

The gateway is not a place for business logic. It enforces local-side safety alarms and nothing else. The judgement call here was: every operator has a different idea of “anomaly”, and re-deploying logic to fifty rolling assets is a worse problem than centralising the analysis on the spine. The gateway stays small, dumb, and reliable. The cleverness lives in the Industrial Monitor backend.

The bandwidth number

The 90–95% reduction is measured against a naïve full-stream approach where every PLC scan is forwarded as it arrives. Real comparison baselines vary; the figure holds for deployments where a constrained uplink — narrow, expensive, or both — is the reason the gateway exists in the first place.

Stack

  • Node-RED, with custom protocol nodes published to a private registry
  • SQLite for the on-disk buffer, with a back-pressure policy that drops derived data before raw samples
  • MQTT (EMQX or HiveMQ on the spine, Mosquitto on the edge)
  • Systemd-managed service with watchdog and signed update path

Status: production. Specifics under NDA — see the Industrial Monitor case study for the broader engagement context.

← back to work

esc
nav open esc close