核心优势功能

Orchidea LLoT

工业物联网平台(含 Forge)

数字孪生与工业互联网平台,面向智能制造、流程自动化与数字孪生提供一体化 IIoT 基础设施。

核心能力

  • 9 层架构:L1 控制平面 / L2 边缘网关 / L3 数据汇聚 / L4 消息骨干 / L5 IoT 平台 / L6 数据仓库 / L7 可视化 / L8 设计工作室 / L9 集成枢纽
  • Soft PLC:IEC 61131-3 编译器与运行时;边缘网关 + 双 MQTT 骨干(中心 Broker + 边缘 NanoMQ)
  • 设备管理 Device Hub、数字孪生 Twin Hub、SCADA-HMI 运维大屏、Flow Studio 编排
  • 冷热分层存储:热存储 InfluxDB + 冷存储 PostgreSQL 15 + TimescaleDB,海量历史秒级查询
  • Forge(ISA-88 锻造引擎):批控制配方模型 Procedure → UnitProcedure → Operation → Phase
  • 离线 / 气隙部署:make build-offline-bundle 生成离线包 + install.sh --offline
  • 多平台:x86_64 / ARM64 / ARMv7,Raspberry Pi 4/5、NVIDIA Jetson;make docker-multiarch 多架构镜像
  • 生产级 K8s:Helm Chart 17 模板 + HPA(2-10 副本) + PDB + TLS Ingress + NetworkPolicy;Terraform(AWS) 与原生 K8s 清单
  • 16 个 systemd 服务按依赖顺序自动编排;统一 Nginx 入口(/api/ 路径)

技术优势

  • 设备即插即用,主流工业协议统一接入
  • 边缘计算就近处理,断网可用、实时可控
  • 离线可部署,数据不出厂区、不出园区
  • 数字孪生开箱即建,车间一屏可视可控
应用场景 车间设备接入、SCADA 监控、数字孪生与流程自动化;端到端整体交付、可离线部署的生产级平台
数据流转 设备数据 → 协议接入 → 边缘处理 → 时序存储 → 孪生呈现
数据存储 时序库 · 设备档案

ORCHIDEA-IIoT Platform

ORCHIDEA-IIoT Logo

Industrial Internet of Things Platform
Unified, Scalable, Production-Ready IIoT Infrastructure


Table of Contents


2026-10 能力更新(v1.1.0)

  • 数字孪生场景库:config/twin-3d-scenes.json 提供 108 个行业场景,glTF 2.0,three.js / Cesium 渲染,按 ISA-95 层级树布局
  • GLB 资产管线:tools/model-pipeline/generate_glb.py 按设备类别参数化生成,model-manifest.json 登记 556 个模型,支持 assets/real/<path>.glb 真实资产覆盖
  • 行业模型:煤矿装备(采煤机/掘进机/输送机/液压支架/通风机)与矿冶(破碎机/球磨机/浮选机/磁选机/浓密机)
  • B2MML 事务模板:6 类事务、107 个行业、642 个企业-车间消息交换模板
  • 集成层:Model-Gateway / Protocol-Router / Sync-Engine / Sparkplug Bridge / AAS Service / RDF Writer

资产说明:当前模型库以参数化生成资产为主(realCount=0),真实设备资产可通过 assets/real/ 覆盖。

What is ORCHIDEA-IIoT?

ORCHIDEA-IIoT is a comprehensive, production-grade Industrial Internet of Things platform designed for smart manufacturing, process automation, and digital twin applications. It unifies 9 architectural layers into a cohesive, deployable system with unified configuration, monitoring, and management.

Key Features

  • Unified Gateway: Single Nginx entry point for all services via /api/ paths
  • Dual MQTT Backbone: Unified central broker plus lightweight edge broker
  • Digital Twin: Real-time device twin synchronization and semantic asset governance
  • Stream Processing: Event processing and rule orchestration for industrial flows
  • Soft PLC: IEC 61131-3 compliant control logic runtime
  • SCADA/HMI: Web-based visualization with real-time operator feedback
  • Flow Orchestration: Visual workflow design for integration and automation
  • Hot Storage: High-performance time-series metrics storage
  • Cold Storage: Relational and time-series hybrid persistence

Architecture Overview

                                    +-------------------+
                                    |   End Users /     |
                                    |   Edge Devices    |
                                    +--------+----------+
                                             |
                              +--------------v--------------+
                              |     Nginx Reverse Proxy     |
                              |     (Port 80 / 443)         |
                              |  /api/* routes to services  |
                              +--+--------+--------+--------+
                                 |        |        |
              +------------------+        |        +------------------+
              |                           |                           |
    +---------v---------+      +----------v-----------+    +--------v----------+
    | Unified Workspaces|      |  Integration Services |    | Messaging Backbone |
    | Ops / HMI / Flow  |      | Model-Gateway :8081   |    |  Central :1883     |
    | Device / Twin     |      | Protocol-Router :8082 |    |  Edge :11883       |
    | Stream / Control  |      | Sync-Engine :8083     |    +-------------------+
    +-------------------+      +----------------------+
              |                           |
    +---------v---------+      +----------v-----------+
    | Device + Twin Hub |      |  Stream Compute      |
    |  Device :8080     |      |  Analytics :18888    |
    |  Ditto :18080     |      +----------------------+
    +-------------------+               |
              |               +---------v---------+
    +---------v---------+     |  Data Warehouse   |
    |  Control Runtime  |     |  InfluxDB :8086   |
    |  Soft PLC         |     |  PostgreSQL :5432 |
    +-------------------+     +-------------------+

9-Layer Architecture

+==========================================================================+
|                         ORCHIDEA-IIoT 9-Layer Stack                      |
+==========================================================================+
| LAYER 9 | Integration Hub    | Model-Gateway, Protocol-Router, Sync-Eng |
|         | (:8081 :8082 :8083)| Internal microservices glue layer         |
+---------+--------------------+-------------------------------------------+
| LAYER 8 | Design Studio      | Orchidea Flow Studio (:1880)              |
|         |                    | Visual workflow design & low-code logic   |
+---------+--------------------+-------------------------------------------+
| LAYER 7 | Visualization      | Operations Center (:3000), HMI Console (:1881) |
|         |                    | Ops dashboard + SCADA-HMI                 |
+---------+--------------------+-------------------------------------------+
| LAYER 6 | Data Warehouse     | InfluxDB (:8086) Hot Storage              |
|         |                    | Time-series metrics & analytics           |
+---------+--------------------+-------------------------------------------+
| LAYER 5 | IoT Platform       | Device Hub (:8080), Twin Hub (:18080)    |
|         |                    | Device operations + digital twin          |
+---------+--------------------+-------------------------------------------+
| LAYER 4 | Messaging Backbone | Central Broker (:1883/18083), Edge Broker (:11883) |
|         |                    | Central + Lightweight MQTT brokers        |
+---------+--------------------+-------------------------------------------+
| LAYER 3 | Data Convergence   | PostgreSQL 15 + TimescaleDB (:5432)       |
|         |                    | Relational + hypertable time-series       |
+---------+--------------------+-------------------------------------------+
| LAYER 2 | Edge Gateway       | Edge Collector, Protocol-Router           |
|         |                    | Protocol adaptation & edge collection     |
+---------+--------------------+-------------------------------------------+
| LAYER 1 | Control Plane      | Soft PLC Runtime, IEC 61131-3 Compiler    |
|         |                    | Soft PLC + control logic compilation      |
+---------+--------------------+-------------------------------------------+

Service Dependency Chain

PostgreSQL 15
    |
    v
InfluxDB Hot Storage
    |
    v
Central Broker
    |
    v
NanoMQ Lightweight Broker
    |
    v
Device Operations Hub
    |
    v
Twin Governance Hub
    |
    v
Stream Intelligence Hub
    |
    v
Soft PLC Runtime
    |
    v
Edge Collection Runtime
    |
    v
Model-Gateway (8081)
    |
    v
Protocol-Router (8082)
    |
    v
Sync-Engine (8083)
    |
    v
Operations Center
    |
    v
HMI Console
    |
    v
Flow Studio
    |
    v
Nginx Reverse Proxy (80/443)

Directory Structure

orchidea-IIoT/
|
|-- 01-Control-Plane/          # Soft PLC + IEC 61131-3 compiler
|-- 02-Edge-Gateway/           # Edge collection, protocol adapters
|-- 03-Data-Convergence/       # PostgreSQL + TimescaleDB setup
|-- 04-Messaging-Backbone/     # Central and edge broker configs
|-- 05-IoT-Platform/           # Device operations and twin services
|-- 06-Data-Warehouse/         # InfluxDB hot storage setup
|-- 07-Visualization/          # Operations dashboard and HMI configs
|-- 08-Design-Studio/          # Flow studio assets and settings
|-- 09-Integration-Hub/        # Microservices (Java/Python/Go)
|
|-- config/
|   |-- nginx.conf              # Nginx reverse proxy config
|   |-- nginx-locations.conf    # API location blocks
|   |-- orchidea-env.sh        # Global environment variables
|   |-- init-all.sql            # Database initialization
|
|-- systemd/
|   |-- orchidea-pg15.service              # PostgreSQL 15
|   |-- orchidea-hot-storage.service       # InfluxDB
|   |-- orchidea-central-broker.service    # Central broker
|   |-- orchidea-lightweight-broker.service # NanoMQ
|   |-- orchidea-device-mgmt.service       # Device operations service
|   |-- orchidea-digital-twin.service      # Twin governance service
|   |-- orchidea-stream-compute.service    # Stream intelligence service
|   |-- orchidea-soft-plc.service          # Soft PLC runtime
|   |-- orchidea-edge-collector.service    # TB Gateway
|   |-- orchidea-model-gateway.service     # Java microservice
|   |-- orchidea-protocol-router.service   # Python microservice
|   |-- orchidea-sync-engine.service       # Go microservice
|   |-- orchidea-ops-dashboard.service     # Operations center
|   |-- orchidea-scada-hmi.service         # HMI console
|   |-- orchidea-flow-orchestrator.service # Flow studio
|   |-- orchidea-nginx.service             # Nginx proxy
|
|-- docs/
|   |-- api-reference.md          # REST API quick reference
|   |-- configuration-guide.md    # How to customize configs
|   |-- operations-manual.md    # Logs, backup, monitoring
|
|-- tests/
|   |-- integration/
|       |-- test_01_control_plane.sh       # IEC compiler test
|       |-- test_02_edge_collection.sh   # Modbus edge test
|       |-- test_03_digital_twin.sh      # Twin sync test
|       |-- test_04_stream_processing.sh # Stream processing test
|       |-- test_05_visualization.sh       # Dashboard / HMI test
|       |-- test_06_offline_retransmit.sh # SQLite retry test
|
|-- docker-compose.yml            # Optional containerized deploy
|-- install.sh                    # One-click build orchestrator
|-- README.md                     # This file
|-- SPEC.md                       # Platform specification

Quick Start

Prerequisites

# Required packages (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install -y build-essential git curl wget jq \
    postgresql-client redis-tools nodejs npm \
    nginx python3 python3-pip python3-venv \
    openjdk-17-jdk golang-go mosquitto-clients

# Create orchidea user
sudo useradd -r -s /bin/bash -d /opt/orchidea -m orchidea 2>/dev/null || true

Supported Platforms:

  • Linux: Debian/Ubuntu, RHEL/CentOS/Rocky, Alpine, Arch (x86_64, ARM64, ARMv7)
  • macOS: Development only (via Homebrew)
  • Windows: Development only (via WSL2 + Docker Desktop)

Offline / Air-Gapped: For environments without internet, run make build-offline-bundle on a connected machine, transfer the tar.gz, and run bash install.sh --offline on the target.

ARM64 / Edge Gateways: The platform supports ARM64 for edge deployments (Raspberry Pi 4/5, NVIDIA Jetson). Use make docker-multiarch to build multi-arch images.

1. Clone and Enter

cd orchidea-IIoT

2. Run the Build

chmod +x install.sh
sudo ./install.sh

This will build all 9 layers in order. To build a specific layer only:

sudo ./install.sh control-plane
sudo ./install.sh integration-hub

3. Start All Services

# Start in dependency order
sudo systemctl start orchidea-pg15
sudo systemctl start orchidea-hot-storage
sudo systemctl start orchidea-central-broker
sudo systemctl start orchidea-lightweight-broker
sudo systemctl start orchidea-device-mgmt
sudo systemctl start orchidea-digital-twin
sudo systemctl start orchidea-stream-compute
sudo systemctl start orchidea-soft-plc
sudo systemctl start orchidea-edge-collector
sudo systemctl start orchidea-model-gateway
sudo systemctl start orchidea-protocol-router
sudo systemctl start orchidea-sync-engine
sudo systemctl start orchidea-ops-dashboard
sudo systemctl start orchidea-scada-hmi
sudo systemctl start orchidea-flow-orchestrator
sudo systemctl start orchidea-nginx

Or start all at once:

sudo systemctl start orchidea-pg15 orchidea-hot-storage orchidea-central-broker \
    orchidea-lightweight-broker orchidea-device-mgmt orchidea-digital-twin \
    orchidea-stream-compute orchidea-soft-plc orchidea-edge-collector \
    orchidea-model-gateway orchidea-protocol-router orchidea-sync-engine \
    orchidea-ops-dashboard orchidea-scada-hmi orchidea-flow-orchestrator orchidea-nginx

4. Enable Auto-Start

sudo systemctl enable orchidea-pg15 orchidea-hot-storage orchidea-central-broker \
    orchidea-lightweight-broker orchidea-device-mgmt orchidea-digital-twin \
    orchidea-stream-compute orchidea-soft-plc orchidea-edge-collector \
    orchidea-model-gateway orchidea-protocol-router orchidea-sync-engine \
    orchidea-ops-dashboard orchidea-scada-hmi orchidea-flow-orchestrator orchidea-nginx

5. Access the Platform

ServiceURLInternal Port
Gateway (root)http://localhost/80
Device Managementhttp://localhost/api/device-mgmt/8080
Operations Dashboardhttp://localhost/api/dashboard/3000
SCADA-HMIhttp://localhost/api/scada/1881
Flow Orchestratorhttp://localhost/api/flow/1880
Digital Twinhttp://localhost/api/digital-twin/8080
Stream Processinghttp://localhost/api/stream-compute/8080
Soft PLChttp://localhost/api/plc/8080
Health Checkhttp://localhost/health80

6. Docker Compose Alternative

# Containerized deployment (development only)
docker-compose up -d

# View logs
docker-compose logs -f

# Scale specific services
docker-compose up -d --scale protocol-router=2

# Stop everything
docker-compose down -v

7. Kubernetes Deployment

# Build Helm dependencies
helm dependency build deploy/helm/orchidea-iiot/

# Deploy to Kubernetes (production values)
helm install orchidea deploy/helm/orchidea-iiot/ \
    -f deploy/helm/orchidea-iiot/values-production.yaml \
    --namespace orchidea \
    --create-namespace

# Check deployment status
kubectl get pods -n orchidea
kubectl get svc -n orchidea

# Port-forward for local access
kubectl port-forward svc/orchidea-nginx 8080:80 -n orchidea

Helm Chart features:

  • 17 Kubernetes templates (deployments, services, ingress, HPA)
  • Production values: HPA (2-10 replicas), PDB, TLS Ingress, NetworkPolicy
  • Terraform modules for AWS infrastructure provisioning
  • Native K8s manifests for namespace, configmap, secret, postgres

Service Port Reference

#ServicePortProtocolPurpose
1PostgreSQL 155432TCPRelational + time-series database
2InfluxDB8086HTTPTime-series hot storage
3Central Broker MQTT1883TCPCentral MQTT broker
4Central Broker Console18083HTTPBroker management UI
5Central Broker WebSocket8083WSMQTT over WebSocket
6Edge Broker11883TCPLightweight edge broker
7Device Operations8080HTTPDevice management platform
8Digital Twin18080HTTPDigital twin service
9Stream Intelligence8090HTTPStream processing engine
10Soft PLC Runtime8080HTTPSoft PLC runtime
11Operations Dashboard3000HTTPOperations dashboard
12HMI Console1881HTTPSCADA-HMI web server
13Flow Orchestrator1880HTTPFlow orchestration workspace
14Model Gateway8081HTTPJava integration service
15Protocol Router8082HTTPPython protocol service
16Sync Engine8083HTTPGo synchronization service
17Nginx80HTTPReverse proxy gateway
18Nginx443HTTPSSSL gateway (uncomment in config)

Credential Sources

All deployment credentials must be supplied by environment variables or secret managers.

ServiceUsername SourcePassword / Token SourceNotes
Device OperationsProvisioned out-of-bandProvisioned out-of-bandBootstrap separately before first login
EMQX DashboardORCHIDEA_EMQX_DASHBOARD_USERORCHIDEA_EMQX_DASHBOARD_PASSWORDSet before startup
GrafanaORCHIDEA_GRAFANA_ADMIN_USERORCHIDEA_GRAFANA_ADMIN_PASSWORDChange through secret rotation flow
PostgreSQLPGUSERORCHIDEA_PG_PASSWORDApplication user
InfluxDBINFLUXDB_ADMIN_USERORCHIDEA_INFLUXDB_PASSWORD / ORCHIDEA_INFLUXDB_TOKENInitial setup token
Internal Twin APIsProvisioned out-of-bandSecret managerDo not hardcode in repo

Security Note: Change all default passwords before production deployment!


Systemd Service Management

Check All Service Status

systemctl status orchidea-*

View Logs

# Follow logs for a specific service
sudo journalctl -u orchidea-device-mgmt -f

# View last 100 lines
sudo journalctl -u orchidea-pg15 -n 100

# View logs since last boot
sudo journalctl -u orchidea-nginx -b

Restart Individual Service

sudo systemctl restart orchidea-device-mgmt

Stop All Services

sudo systemctl stop orchidea-nginx orchidea-flow-orchestrator \
    orchidea-scada-hmi orchidea-ops-dashboard orchidea-sync-engine \
    orchidea-protocol-router orchidea-model-gateway orchidea-edge-collector \
    orchidea-soft-plc orchidea-stream-compute orchidea-digital-twin \
    orchidea-device-mgmt orchidea-lightweight-broker orchidea-central-broker \
    orchidea-hot-storage orchidea-pg15

Service Startup Sequence (via After= dependencies)

The systemd services are designed to start in order automatically:

# Start all with correct dependency ordering
sudo systemctl start orchidea-pg15
# Wait for each layer to stabilize, then:
sudo systemctl start orchidea-nginx  # Will pull in all dependencies

Brand Identity

ORCHIDEA-IIoT Logo
ORCHIDEA-IIoT Icon

  • Logo: ./orchidea-brand/logo.png
  • Icon: ./orchidea-brand/icon.png
  • Project Name: ORCHIDEA-IIoT
  • Tagline: Industrial Internet of Things Platform

The brand assets are automatically copied to /opt/orchidea/www/ during installation and served by Nginx at the gateway root path.


Documentation

Full documentation is available in the docs/ directory:

DocumentDescription
docs/api-reference.mdREST API endpoints for all services
docs/configuration-guide.mdHow to modify and customize configurations
docs/operations-manual.mdLogs, backup/restore, monitoring, troubleshooting

Integration Testing

Run the integration test suite:

cd tests/integration
chmod +x test_*.sh

# Run all tests
./test_01_control_plane.sh
./test_02_edge_collection.sh
./test_03_digital_twin.sh
./test_04_stream_processing.sh
./test_05_visualization.sh
./test_06_offline_retransmit.sh

License

ORCHIDEA-IIoT is released under the MIT.

Individual components retain their original licenses:

  • ThingsBoard: Apache 2.0
  • Eclipse Ditto: EPL 2.0
  • Apache StreamPipes: Apache 2.0
  • Grafana: AGPL 3.0
  • Node-RED: Apache 2.0
  • FUXA: GPL 3.0
  • EMQX: Apache 2.0
  • OpenPLC: GPL 3.0
  • InfluxDB: MIT
  • PostgreSQL: PostgreSQL License

Built with precision. Engineered for industry.

← 返回平台架构总览