一些 開源物聯網(IoT)平臺,它們廣泛應用于設備管理、數據采集、遠程監控和邊緣計算等場景:
🌟 主流開源物聯網平臺
平臺 | 描述 | 技術棧 | 許可證 |
---|---|---|---|
ThingsBoard | 功能豐富,支持設備管理、遙測數據收集、規則引擎、告警等 | Java, Spring, Akka, Cassandra / PostgreSQL | Apache 2.0 |
EMQX | 高性能 MQTT 消息服務器,支持百萬級連接 | Erlang/OTP | Apache 2.0 |
Kaa IoT | 模塊化設計,支持設備管理、數據分析、設備集群 | Java, Spring | Apache 2.0 |
Mainflux | 現代、可擴展的平臺,支持 MQTT, HTTP, CoAP | Go, NATS, PostgreSQL, Redis | Apache 2.0 |
Thingspeak | 適合快速原型和數據可視化(尤其是科研和教育) | MATLAB, PHP | GPLv3 |
OpenHAB | 專注智能家居物聯網的集成與自動化 | Java, OSGi | EPL-1.0 |
Node-RED | 可視化編程工具,適合邊緣節點和輕量級 IoT 集成 | Node.js | Apache 2.0 |
🚀 選擇建議
應用場景 | 推薦平臺 |
---|---|
工業物聯網、大規模部署 | ThingsBoard / Kaa / Mainflux |
消息中間件、高并發 | EMQX |
智能家居 | OpenHAB / Home Assistant |
教育、科研、快速實驗 | Thingspeak / Node-RED |
🌐 關鍵特性對比
特性 | ThingsBoard | EMQX | Kaa | Mainflux | Node-RED |
---|---|---|---|---|---|
設備管理 | ? | ? | ? | ? | ?? (需集成) |
數據持久化 | ? | ?? (需外部DB) | ? | ? | ?? (外部集成) |
可視化儀表盤 | ? | ? | ?? (部分) | ?? (需開發) | ? |
高并發消息 | ?? | ? | ?? | ? | ?? |
多協議支持 | MQTT, CoAP, HTTP | MQTT, WebSocket | MQTT, CoAP, HTTP | MQTT, CoAP, HTTP | MQTT, HTTP, WebSocket |
規則引擎 | ? | ?? (簡單規則) | ?? | ?? | ?? (需編排) |
ThingsBoard 部署
好的!下面是一個基于 TimescaleDB 和 ThingsBoard 的 docker-compose.yml
示例文件,適合在支持 x86_64 架構的筆記本或服務器上運行。這個示例包含了:
- ThingsBoard 物聯網平臺(連接 postgresql)
services:postgres:restart: alwaysimage: "postgres:16"ports:- "5432"environment:POSTGRES_DB: thingsboardPOSTGRES_PASSWORD: postgresvolumes:- postgres-data:/var/lib/postgresql/datathingsboard-ce:restart: alwaysimage: "thingsboard/tb-node:4.0.1.1"ports:- "8080:8080"- "7070:7070"- "1883:1883"- "8883:8883"- "5683-5688:5683-5688/udp"logging:driver: "json-file"options:max-size: "100m"max-file: "10"environment:TB_SERVICE_ID: tb-ce-nodeSPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboarddepends_on:- postgresvolumes:postgres-data:name: tb-postgres-datadriver: local
說明
-
thingsboard
- 使用 ThingsBoard 官方 PostgreSQL 版本鏡像(默認連接 PostgreSQL)
- 環境變量配置數據庫連接信息
- 映射 8080 端口用于 Web 訪問
- 依賴 timescaledb 服務,保證先啟動數據庫
使用步驟
- 將上面內容保存為
docker-compose.yml
文件。 - 修改密碼環境變量
your_password
為你自己的安全密碼。 - 在目錄終端執行:
docker-compose up -d
-
等待容器啟動,瀏覽器訪問
http://localhost:8080
即可看到 ThingsBoard 界面。 -
第一次運行前,需要先初始化數據庫,
docker compose run --rm -e INSTALL_TB=true -e LOAD_DEMO=true thingsboard-ce
- demo默認登陸用戶名和密碼
- System Administrator: sysadmin@thingsboard.org / sysadmin
- Tenant Administrator: tenant@thingsboard.org / tenant
- Customer User: customer@thingsboard.org / customer
后續可以寫更復雜的配置(比如加密、備份、日志管理)
如果出現錯誤,使用下面的命令查看
docker logs timescaledb | grep -i "error"
示例 docker-compose 配置
-
timescaledb 版本
- 使用官方 TimescaleDB 鏡像(基于 PostgreSQL 14)
- 創建數據庫
thingsboard
,用戶密碼都設為thingsboard
和your_password
(你可以修改) - 端口映射到宿主機的 5432
- 數據卷持久化數據庫數據
version: '3.8'services:timescaledb:image: timescale/timescaledb:2.11.0-pg14container_name: timescaledbenvironment:POSTGRES_USER: thingsboardPOSTGRES_PASSWORD: 1234POSTGRES_DB: thingsboardports:- "5432:5432"volumes:- ./timescaledb-data:/var/lib/postgresql/datarestart: unless-stoppedtb-redis:image: redis:7-alpinecontainer_name: tb-redisports:- "6379:6379"restart: unless-stoppedthingsboard:image: thingsboard/tb-node:4.0.1.1container_name: thingsboarddepends_on:- timescaledb- tb-redisenvironment:SPRING_DATASOURCE_URL: jdbc:postgresql://timescaledb:5432/thingsboardSPRING_DATASOURCE_USERNAME: thingsboardSPRING_DATASOURCE_PASSWORD: 1234# TB_QUEUE_TYPE: redis
# TB_QUEUE_REDIS_HOST: tb-redis
# TB_QUEUE_REDIS_PORT: 6379ports:- "8081:8080"- "1883:1883"- "8883:8883"restart: unless-stopped