一些 开源物联网(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: always
image: "postgres:16"
ports:
- "5432"
environment:
POSTGRES_DB: thingsboard
POSTGRES_PASSWORD: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
thingsboard-ce:
restart: always
image: "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-node
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/thingsboard
depends_on:
- postgres
volumes:
postgres-data:
name: tb-postgres-data
driver: 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-pg14
container_name: timescaledb
environment:
POSTGRES_USER: thingsboard
POSTGRES_PASSWORD: 1234
POSTGRES_DB: thingsboard
ports:
- "5432:5432"
volumes:
- ./timescaledb-data:/var/lib/postgresql/data
restart: unless-stopped
tb-redis:
image: redis:7-alpine
container_name: tb-redis
ports:
- "6379:6379"
restart: unless-stopped
thingsboard:
image: thingsboard/tb-node:4.0.1.1
container_name: thingsboard
depends_on:
- timescaledb
- tb-redis
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://timescaledb:5432/thingsboard
SPRING_DATASOURCE_USERNAME: thingsboard
SPRING_DATASOURCE_PASSWORD: 1234
# TB_QUEUE_TYPE: redis
# TB_QUEUE_REDIS_HOST: tb-redis
# TB_QUEUE_REDIS_PORT: 6379
ports:
- "8081:8080"
- "1883:1883"
- "8883:8883"
restart: unless-stopped