Erlang/OTP · Million-Device · Shadow · Ontology · gen_statem
┌──────────────────────────────────────────────────────────────────┐
│ EDGE: iotStudio (Python+Vue) │
│ DeviceAccess(9) → UnifiedPipeline → StreamEngine(15) → Alert(6) │
└──────────────────────────┬───────────────────────────────────────┘
│ MQTT / HTTP
┌──────────────────────────▼───────────────────────────────────────┐
│ SECURITY auth · role · ACL/CLP · Hooks · JWT │
├──────────────────────────────────────────────────────────────────┤
│ ACTION Shadow(gen_statem) · Bridge · MQTT · Rule Engine │
│ init → auth → online → {normal, alarm, offline} │
├──────────────────────────────────────────────────────────────────┤
│ LOGIC Ontology Engine · Model Registry · 3 ETS Tables │
│ load_model → compile → spawn → evaluate → reason │
├──────────────────────────────────────────────────────────────────┤
│ DATA Parse(23 Classes) · PG(:7432) │
│ TDengine(_{ProductId}, devaddr NCHAR(50)) │
│ EMQX(:1883) · Mnesia/ETS │
└──────────────────────────────────────────────────────────────────┘
Model → Ontology → Device Access → TimeSeries → Rules → Dashboard
1 2 3 4 5 6
Modbus 40300 → MQTT(dgiot/{site}/{gw}/{dev}/{pt}/data) → Shadow PID
→ evaluate(Rules) → state transition → Parse + TDengine INSERT
| Layer | Function | Key Technology |
|---|---|---|
| Data | 23 Parse classes, TDengine, Mnesia/ETS | JSONB, SuperTable/SubTable, _{ProductId} |
| Logic | load_model, spawn_instance, registry, rules, reasoner | 3 ETS tables, gen_statem compile |
| Action | Shadow 1:1 device process, Bridge, MQTT | gen_statem OTP, ont_push_point |
| Security | auth, role tree, ACL(object), CLP(class), Hooks | JWT, Parse ACL |
Full Ontology Doc · Storage Architecture · Station Simulation
One-click deploy with Docker (recommended for evaluation):
git clone https://github.com/dgiot/dgiot.git
cd dgiot
docker compose up -dBuild from source — the bootstrap script installs Erlang/OTP 24.3 and build tools automatically (Ubuntu / Debian / CentOS / openEuler / macOS):
git clone https://github.com/dgiot/dgiot.git
cd dgiot
bash scripts/bootstrap.sh
make- DGIOT vs. Palantir — positioning: the brain and the limbs, complementary by design
- Open-Source Palantir Landscape — reality-checked survey of "open-source Palantir" projects
- Pragmatic Enhancement Architecture — Kafka + TimescaleDB + rules + BI in four phases (中文版: zh/pragmatic-enhancement-architecture.md)
Apache 2.0
