一些 开源物联网(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