|
TuyaOS
|
DP 点是涂鸦 IoT 平台对功能点的定义。开发者可以在涂鸦 IoT 平台创建产品,并根据开发者的需求,定义产品功能和功能点的特征,每一个功能点,就是一个 DP 点。产品的 DP 点的集合,是产品的业务模型,也被称为产品的 Schema。当设备在涂鸦 IoT 平台激活的时候,通过激活时候所携带的产品创建所得的 PID 信息,可以获得产品的 Schema 信息。TuyaOS 会根据 Schema 信息创建设备的能力列表,并在后续的日常运行过程中根据设备的能力,处理 DP 的上报和下发。
DP 点支持布尔型(bool)、数值型(value)、字符串型(string)、枚举型(enum)、故障型(bitmap),RAW 型数据,像定义 C 变量一样简单。其中布尔型(bool)、数值型(value)、字符串型(string)、枚举型(enum)、故障型(bitmap)又被称为 obj 型。使用 DP 点的时候应注意:
dp,复杂功能请用 RAW 型数据实现;obj 型 DP 上报的时候,会对上报的数值进行过滤,相同则不予上报;obj 型 DP,可以通过带 force 的接口上报,或者将 DP 点定义为统计类型(stat)DP下发和上报支持蓝牙、局域网和涂鸦MQTT三个通道,三个通道同时处理会造成DP处理逻辑复杂化,并造成流量、功耗的增加,因此DP处理的通道存在一定的逻辑策略。
| 通道 | 策略 |
|---|---|
MQTT | 上报:当MQTT通道在线的时候,永远会通过MQTT上报下发:当 MQTT通道在线,且LAN不在线,会通过MQTT通道下发;LAN在线,不会通过MQTT通道下发 |
LAN | 上报:当LAN通道在线的时候,永远会通过LAN上报下发:当 LAN通道在线,只会通过LAN通道下发 |
BLE | 上报:仅当MQTT和LAN都不在线的情况,会通过BLE上报下发:仅当 MQTT和LAN都不在线的情况,会通过BLE下发 |
TuyaOS 在初始化的时候,会需要开发者提供 TY_IOT_CBS_S,其中包括三个回调函数,用于处理 TuyaOS 里接受到的DP相关的命令,具体用途如下。开发者根据自己的实际功能需要,实现相应的回调,并在设备初始化的时候注册到 TuyaOS 。
| 回调名称 | 功能描述 |
|---|---|
dev_obj_dp_cb | 结构化DP接受处理回调,结构化DP即DP有明确的类型定义 |
dev_raw_dp_cb | raw型DP接受处理回调,raw型DP即二进制数据流 |
dev_dp_query_cb | DP查询回调,用于查询设备实际的DP的值 |
通过向设备下发 DP 点可以对设备进行控制, TuyaOS 可以支持从蓝牙、局域网、涂鸦云 MQTT 三条通道来的 DP 信息,在 TuyaOS 里对收到的 DP 校验处理,然后调用相应的回调接口,告知应用层收到相应的DP命令,交于应用层对DP命令进行处理,处理流程如下图所示。

设备产生的状态、数据,以及 DP 下发操作执行结果可以上报,通过 TuyaOS 提供的 DP 上报接口,并在 TuyaOS 内部对上报的 DP 进行校验和流控,然后通过对应通道进行上报。

上报 DP 点,针对不同类型的DP点,行为不同:
T_OBJ_REPT:该接口会对需要上报的 DP 进行重复性校验,即如果 DP 点的值和上次上报的值一样,不会进行上报。该接口会对上报的数据进行缓存。此接口上报是异步上报,即上报发起即返回,不关心上报的结果。T_RAW_REPT:该接口不会对需要上报的 DP 进行重复性校验,即如果 DP 点的值和上次上报的值一样,也依然会进行上报。该接口不会对上报的数据进行缓存,因为数据量一般会比较大。此接口上报是同步上报,即上报成功或者超时时间到了之后才会进行返回。T_STAT_REPT:该接口不会对需要上报的 DP 进行重复性校验,即如果 DP 点的值和上次上报的值一样,也依然会进行上报。该接口会对上报的数据进行缓存,但仅缓存最后一次上报的结果,因此在实现统计类型的DP上报的时候,需要考虑上报失败的时候缓存数据。此接口上报是同步上报,即上报成功或者超时时间到了之后才会进行返回。如果是查询上报,即通过dev_dp_query_cb产生的上报行为,需要将is_query设置为TRUE。