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。