Data Plane — The Physical World Interface

Purpose

The Data Plane is the platform’s interface to the physical world. It handles device enrollment and lifecycle management, telemetry ingestion and analytics, OTA software distribution, and data availability for all upstream services. Every robot, PDA, sensor, or IoT device that participates in the platform is registered and monitored here.

Services

Service

Responsibility

Detail

DeviceAdmin

Device enrollment, alerts, and OTA status

Enrolls IoT devices, surfaces ThingsBoard alerts, provides OTA update visibility

ThingIO

Data processing, analytics, and dashboards

Wraps StreamPipes for telemetry processing, custom dashboards, and visual widgets

OTAForge

OTA artifact management and policy-driven rollouts

Wraps hawkBit for artifact publishing, distribution sets, policy-driven rollout automation, proxied DDI, CI/CD access keys for artifact publishing

Interaction Model

                                ┌───────────────┐
  CI/CD (Jenkins) ──AK/SK─────►│   OTAForge    │──► hawkBit
  (artifact publishing only)    │               │
                                │ Artifact mgmt │     DDI proxy
  Policy Service ──policies───►│ Policy engine  │◄──────────── Devices
                                │ DDI proxy     │   (Hara polls OTAForge,
                                └───────┬───────┘    not hawkBit directly)
                                        │ OTA status
                                        ▼
  Devices ──MQTT──► ThingsBoard ──► ┌──────────────┐
                         │          │  DeviceAdmin  │ ◄── Identity Plane
                         │ alerts   │ (enrollment,  │     (DotID auth)
                         └─────────►│  alerts, OTA  │
                                    │  status)      │
  Provisioning ◄── delegates ──────│               │
  Service                           └──────────────┘
                         │
              Kafka      │
           (Cluster A)   │ cross-cluster replication
                         ▼
                    ┌──────────────┐
  Applications ───►│   ThingIO    │ ◄── Equator (spatial overlay)
  (WES, CJ)        │ (processing, │
  embed via         │  APIs + SDK) │ Kafka (Cluster B)
  React SDK         └──────────────┘
  • DeviceAdmin is the unified device management interface — enrollment, alerts, and OTA status. Delegates provisioning to the Provisioning Service. Developers never interact with ThingsBoard or hawkBit directly.

  • ThingIO is the data processing and visualization layer — analytics pipelines and visual widgets built on StreamPipes. Applications register dashboards via APIs and embed them using the React SDK.

  • OTAForge is the OTA artifact layer — CI/CD access keys for artifact publishing, policy-driven rollout automation, and proxied DDI endpoint. Rollouts are auto-created by policy evaluation, not manually.

  • Kafka runs as two separate MSK clusters: Cluster A (ThingsBoard telemetry) and Cluster B (StreamPipes analytics).

  • All services authenticate via DotID. Resources are scoped to accounts.

Data Ownership

Data

Owner

Consumers

Device registry (ID, type, firmware, lease)

DeviceAdmin

All planes

Device alerts (battery, connectivity, threshold)

DeviceAdmin

Applications, Operators

OTA update status (version, pending, history)

OTAForge (via DeviceAdmin view)

Applications, Operators

Raw telemetry (position, battery, sensor readings)

ThingsBoard (internal)

ThingIO, DeviceAdmin alerts

Processed analytics (patterns, anomalies, coverage)

ThingIO

Applications, Intelligence Plane

Dashboards, widgets, pipelines

ThingIO

Applications

Artifacts, distribution sets, rollouts

OTAForge

DeviceAdmin (status view), Devices

IoT Technology Layer

The Data Plane services wrap three open-source IoT platforms. See the IoT Layer for technology details.

Service

Wraps

Relationship

DeviceAdmin

ThingsBoard CE

Device CRUD, alert subscription, credential management

ThingIO

Apache StreamPipes

Data pipelines, dashboard engine, widget rendering

OTAForge

Eclipse hawkBit

Artifact storage, rollout engine, proxied DDI endpoint