概述
ThingsBoard是功能完整的开源物联网平台,由乌克兰团队开发,提供设备管理、资产管理、规则引擎、数据可视化、告警、多租户等端到端能力。支持MQTT、CoAP、HTTP、LwM2M等协议,内置多种图表、地图、控件组件,可快速构建物联网监控大屏与应用。采用Java/Spring技术栈,支持集群部署,适合中小规模IoT项目快速落地。提供社区版(Apache 2.0)与专业版(商业支持、高级功能)。
ThingsBoard与EMQX、Home Assistant的定位不同:EMQX侧重MQTT接入,ThingsBoard是完整平台;Home Assistant侧重智能家居,ThingsBoard更通用。ThingsBoard适合工业监控、智慧农业、能源管理、设备运维等B端场景,可对接Modbus、OPC-UA等工业协议(通过网关转换)。达希物联在物联网方案中,ThingsBoard可作为快速落地的平台选型,与物联网卡、EMQX等配合使用。
核心功能
设备与资产管理
设备、资产、租户、客户的多层级组织。设备支持属性、遥测、RPC。资产可关联设备,实现分组与权限管理。支持设备凭证、预配置、批量导入。
规则引擎与告警
可视化规则链:消息过滤、转换、告警、转发。支持告警规则、告警确认、告警通知。可转发至Kafka、RabbitMQ、HTTP等外部系统。与设备遥测、属性、事件联动。
仪表盘与多租户
拖拽式仪表盘,多种图表、地图、控件。支持实时数据、历史曲线、告警列表。多租户架构,支持SaaS、白标。租户可创建客户,客户可管理设备与资产。
应用场景
工业监控、智慧农业、能源管理、设备运维、智能楼宇。适合中小规模(数千至数万设备)IoT项目快速落地。与EMQX、Modbus网关等配合,可接入各类设备。社区活跃,文档完善,是开源物联网平台的热门选择。
实体模型里遥测与属性的差别
设备、资产与客户的三层关系
平台把接入进来的对象分成层次。租户是隔离边界,客户是租户下面的使用方,资产用来编组,设备才是上报遥测和接收调用的终端。资产可以关联设备,用来表达一座泵站包含哪些终端,资产本身不是一条连接会话。把网关和网关背后的子设备都建成互不关联的设备,后面就无法按现场结构授权,也无法在网关掉线时解释子设备为什么一起消失。
遥测是带时间的测点序列,适合温度、电量、位置这类会不断追加的值。属性分成客户端上报、服务端写入和共享给设备的配置,适合保存不按时间回放的当前设定,例如上报周期或安装地址。远程调用是平台要求设备执行一次动作并等待应答。三者混用会让存储和界面一起失真:每秒的温度若写成属性,历史曲线没有来源;很少改变的地址若写成遥测,查询被无意义的点撑大。
规则链承接遥测消息的条件
规则链适合处理已经进入平台的单条消息:按设备类型过滤、改字段、做阈值判断、生成告警,再转发到外部队列或接口。它用得住的条件,是消息速率和规则复杂度匹配这条链的处理能力,并且链上的外部调用有超时和失败出口。需要跨大量设备做窗口关联时,链会变得难以维护。这类计算放到专门的流处理里,规则链只接收其结论。
链要有明确的终点。消息回到根规则再进入同一条链,会形成环,处理器占用上升,业务却没有新状态。调试时查看单条消息走过的节点,确认告警节点只在条件满足时被点亮。多租户下先核对链和设备属于哪个租户。租户管理员看到的规则,不会自动作用到另一个租户的设备上。
属性误写入、租户串数据和别名绑错
高频遥测被写进属性,或一次性的调试开关被写进遥测,是建模时最常见的错位。保留策略通常只对遥测生效,属性却会留下过期开关。设备重连后读到旧的共享属性,把实验配置带回现场。共享属性的修改要带版本或时间,设备端要能拒绝明显过期的配置。
仪表盘通过实体别名决定看哪台设备或哪组资产。别名仍指向已删除的设备,或指向了另一客户名下的同名资产,面板会空白,或显示出不属于当前客户的数据。发布前用目标客户的账号实际打开一次。租户之间不要复用设备令牌,令牌被复制到另一租户时,数据会写进非预期的设备。设备若经Eclipse Mosquitto汇聚后再接入,主题到令牌的映射要固定,不能随显示名称变化。面板上的曲线只消费已经入库的遥测,读图时的桶宽和空档处理与数据可视化相同,能看见的设备范围仍由客户权限裁剪。
遥测保留时间若短于仪表盘的默认查询跨度,历史曲线会出现整段空白,规则链却仍在为新消息产生告警,排查时会误以为采集已经中断。保留时间应盖住面板要回看的时长,以及告警需要追溯的时长。设备配置里的接入方式一旦更换,已经烧录在设备上的访问令牌不会跟着迁移,旧令牌会全部认证失败。批量切换前,先用一台试验设备走通注册、上报和远程调用。资产与设备的关系方向也容易画反:方向记成资产属于设备时,按资产筛选会得到空列表,数据其实已经在设备上。