物模型是设备平台为产品定义的数据模型,用于描述产品的功能并基于物模型进行统一数据交互的协议规范。本文主要介绍物模型相关概念,方便您快速了解。
核心价值点
- 解放端侧人力,更专注端侧业务逻辑实现 / 能力打造:通过设备端只需要对通信协议进行统一的封装和抽象,即可通过统一标准的协议去描述设备属性,使设备端应用程序研发能更加注重业务逻辑的实现而非通信协议的制定。
- 易于实现多场景的设备控制,而无需入侵设备代码:接入大模型、米家等只需要进行云云对接,无需侵入设备代码。
- 易于监控与数据分析:物模型采用结构化的数据上报至云端,云端会记录属性的历史数据,变更数据一目了然,还能基于物模型定义快速生成可视化图表。
应用场景示例
应用场景 | 描述 / 实践案例 |
---|---|
数据埋点上报 | 通过事件上报设备的埋点信息,必须进行强校验才能保证上报数据格式准确。现有设备埋点与设备影子等接口均不具备校验能力,也不具备事件上报能力。 |
米家APP接入 | J4 通过接入物模型协议,快速完成小米IoT平台协议映射,仅花费25人/天。 |
设备的批量控制 | 物模型从产品层面定义了设备的通讯协议和模型,因此可以用于云端对设备的批量控制。 |
基于事件/属性变化的AppPush | 结合消息推送功能,可以通过物模型快速实现溢水推送、电池异常推送等AppPush或设备消息推送 |
功能说明
物模型是物理空间中的实体(如传感器、智能家居设备等)在云端的数字化表示,从属性、行为和事件三个维度,分别描述了该实体是什么、能做什么、可以对外提供哪些信息。定义了物模型的这三个维度,即完成了产品功能的定义。
功能类型 | 说明 | 场景示例 |
---|---|---|
模块 | 模块是多个能力的集合。单个模块既可以定义为同一类产品下具有不同功能的型号,也可以定义为同一设备下不同的硬件模块。 | 1. 例如,LED灯产品下有两种型号,其中一种具有 WIFI 接入功能,另一种具有蓝牙接入功能,用户可以在该产品物模型中定义两个模块,一个模块中包含 WIFI 相关的属性和方法,一个模块中包含蓝牙相关属性和方法。 2. 比如,同样是LED灯产品,某个型号同时具备 WIFI 和蓝牙接入功能,用户可以根据硬件功能分别定义 WIFI 和蓝牙两个模块,开发人员按照不同的模块进行开发,模块之间互不影响。 |
属性(Property) | 用于描述设备运行时具体信息和状态, 单一的功能操作可以定义为属性,属性支持被查询、控制、订阅。 | 例如灯的开关、环境监测设备所读取的当前环境温度、电风扇风力等级等。 |
事件(Event) | 主要用于设备向云端上报组合数据,事件可支持上报多个属性(以属性作为输出参数) | 某项任务完成后的通知信息、门锁被打开、设备发生故障时的温度\时间信息、设备告警时的运行状态等埋点。 |
行为(Action) | 也叫服务。主要用于向设备下发组合控制指令,行为调用中可设置输入和输出参数。输入参数是服务执行时的参数,输出参数是服务执行后的结果。相比于属性,行为可通过一条指令实现更复杂的业务逻辑。 | 开始扫地任务的同时设置多个参数、电饭煲的开始煮饭。 |
物模型TSL
设备平台通过定义一种物的描述JSON文件来描述产品的功能,称为TSL(Thing Specification Language),物模型TSL文件格式为JSON,相关字段说明请参见 物模型TSL字段说明。
常见问题
1. 与设备影子有什么区别?
设备影子后续不推荐使用。
- 具备 设备上行/下行消息 的数据格式校验能力。使用物模型通讯协议前,必须为产品定义物模型,在通讯时才能校验通过。一方面,可以有效避免因为数据格式错误导致的异常(例如:①上报了新的状态,但应用层UI 无法展示 / 显示异常,② 由于应用传递了错误参数,导致设备运行异常)另一方面,通过物模型定义才能使设备上报的数据能够被其他应用程序进行自动解析和处理,实现数据的读取、控制和监测。
- 具备 事件上报、行为(服务)调用的能力,设备影子则不具备。
- 具备 事件记录、行为调用 数据记录的能力,可以用于统计类似每个事件上报次数、行为的调用次数等,单纯依靠MQTT Broker 则不具备这个能力。
- 云端可以基于物模型对统一对一个产品下的一批设备进行批量设置、批量的行为调用,设备影子则不具备此能力。
创建时间:2023-05-09 16:54
最后编辑:陈勇琦 更新时间:2024-10-18 16:29
最后编辑:陈勇琦 更新时间:2024-10-18 16:29