1 简介
也是最近要用到的项目,所以总结学习一下。
中文教程,不过主要偏使用。
系统架构图:
可以看出也是典型的IOT系统架构。但是支持多种数据传输,MQTT,HTTP,CoAP等等。此外,内部消息做了Queue,也有Rule Engine这些东西。总体来说完成度还是很高的。
以下是 ThingsBoard 与其他一些开源物联网系统的列表比较(来自豆包):
平台名称 | 开发语言 | 设备管理 | 数据可视化 | 安全性 | 社区支持 | 规则引擎 | 应用场景 | 可扩展性 |
---|---|---|---|---|---|---|---|---|
ThingsBoard | Java | 支持设备注册、状态监控、远程控制等全面功能 | 支持,有强大的仪表板定制能力2 | 高1 | 高,有庞大活跃社区,在线文档和教程广泛 | 强大,可通过可视化规则链创建复杂自动化工作流 | 工业自动化、智慧城市、环境监测等 | 基于微服务架构,支持水平扩展,可通过插件和 API 扩展2 |
OpenRemote | Java | 支持多种设备和协议,对不常见协议支持有优势 | 支持,界面直观简单,便于配置和管理 | 中 | 活跃,可提供一定支持和持续开发 | 有,但相比 ThingsBoard 功能较弱,创建复杂自动化场景能力稍差 | 智能家庭、建筑自动化、工业物联网等 | 架构可处理大规模部署,具有可扩展性 |
Kaa IoT Platform | Java | 支持管理无限数量连接设备,可建立跨设备互操作性 | 支持,可执行实时设备监控等 | 高1 | 中,有一定社区支持1 | 有,可执行远程设备准备和配置等 | 智能家庭、智慧城市、工业物联网、医疗、农业等1 | 可扩展,能应对不同规模项目需求 |
DeviceHive | 无明确指定 | 支持多种协议和设备,有广泛集成选项和强大管理功能 | 支持,可与大数据工具无缝对接2 | 企业版增强,开源版中 | 活跃,可提供一定支持 | 有,可满足一些基本自动化需求 | 多种物联网场景,强调数据处理和集成2 | 可扩展,以应对不同规模数据和设备管理 |
Thingspeak | 无明确指定 | 支持设备数据收集,但设备管理功能全面性不如 ThingsBoard | 支持数据展示,有一定可视化能力 | 中 | 有社区支持,但活跃度不如 ThingsBoard 社区 | 相对较弱,主要围绕数据收集和展示进行简单规则设置 | 主要用于数据收集和展示,如物联网数据记录、简单分析等 | 扩展性相对较弱,主要围绕数据相关功能扩展 |
ioBroker | 无明确指定 | 支持大量设备和协议,兼容性强,尤其对小众智能家居设备 | 支持,通过不同模块连接实现设备间复杂交互可视化 | 中 | 活跃,有丰富插件和库 | 强大,通过大量模块可实现不同设备间复杂交互 | 智能家居自动化,侧重家庭环境设备控制和交互 | 通过插件和模块扩展,有一定扩展性 |
Home Assistant | Python | 专注于家庭设备控制,支持多种智能家居设备 | 支持,界面简洁,注重家庭设备直观展示和便捷控制 | 中 | 活跃,社区专注于智能家居领域 | 有,可实现家庭自动化场景,如根据传感器状态控制设备等 | 智能家居,主要用于家庭自动化控制和设备集成 | 通过插件和自定义配置扩展,可满足不同家庭智能化需求 |
一个thingsboard传输的流程:
[ 现场传感器设备 ]
┌───────────────────────────────┐
│ 模拟/RS485/Modbus-TCP 传感器 │
└────────────────┬──────────────┘
│(采集)
▼
┌──────────────────┐
│ 边缘计算设备 │
│(Node-RED网关) │
│ - Modbus采集 │
│ - 数据清洗/编码 │
│ - MQTT 上报数据 │
└──────────────────┘
│
MQTT 上报 v1/devices/me/telemetry
▼
┌────────────────────┐
│ ThingsBoard 云端 │
│ - 设备管理 │
│ - 规则引擎 │
│ - 告警触发 │
│ - 时序数据存储 │
│ - 可视化 Dashboard │
└────────────────────┘
│
┌────────────┬──────┴────────────┬───────────────┐
▼ ▼ ▼
[ Node-RED 通知 ] [ 第三方平台 API ] [ 运维人员手机 App ]
企业微信/钉钉 微信/短信等平台 Android/iOS推送
2 基本安装运行
我这边是安装在本机的wsl
2.1 Docker安装运行
基本上参考官方配置就行:Installing ThingsBoard using Docker (Linux or Mac OS) | ThingsBoard Community Edition
不过有四点要注意:
1 机器配置
Java要求的配置真的比C/C++高很多,基本上最低要4G的内存,我自己的云只有2G,所以基本上就是一运行就死机的状态。要找配置高一点的机器,最好16G。
2 文件权限。如果不是用的root,这个实际上是创建在自己账号下。在运行docker时,sudo又是用的root下路径。所以最好使用root的运行。。。
mkdir -p ~/.mytb-data && sudo chown -R 799:799 ~/.mytb-data
mkdir -p ~/.mytb-logs && sudo chown -R 799:799 ~/.mytb-logs
否则有报错
3 拉取docker的问题。这个也是墙的原因,在wsl下尤其坑爹。可以参考:用Docker来辅助开发_47.88.58.234-CSDN博客
4 运行命令
官方的是
docker compose up -d && docker compose logs -f mytb
实际我用的是
sudo docker-compose up -d && sudo docker-compose logs -f mytb
也不是啥大问题,就是版本和权限的问题。查一下很快就能解决。
之后就没啥问题了。
2.2 手动安装
TODO
2.3 关闭
如果是docker compose运行的。直接
docker-compose down
如果不是,则用:
sudo systemctl stop thingsboard
sudo systemctl disable thingsboard
3 基本验证
默认是直接登录http://127.0.0.1:8080/
就可以看到页面。
这里要注意,它默认是有两个登录账号。
1 系统管理员。sysadmin@thingsboard.org,密码sysadmin
2 租户。tenant@thingsboard.org,密码tenant
在测试设备时,要使用租户的账号。用系统管理员是看不到设备的。(原因未知,后面再探索)
在这里取到访问令牌A1_TEST_TOKEN。就可以构建传输指令了。
curl -v -X POST \
http://localhost:8080/api/v1/A1_TEST_TOKEN/telemetry \
-H "Content-Type: application/json" \
-d '{"temperature": 26.0, "humidity": 62}'
之后就是发送
在系统上马上就能看到了。
4 参考
ThingsBoard开源物联网平台之Web组态系统,实在太漂亮了,TB才是开源IoT平台中的一股清流
基于 Thingsboard 定制开发,国产化企业级、低代码 AIoT 物联网平台