Yelink协议
Yelink协议是针对物联网开发领域设计的一种数据交换规范,数据格式是JSON,用于设备端和物联网平台的双向通信,更便捷地实现和规范了设备端和物联网平台之间的业务数据交互。
以下为您介绍Yelink协议下,设备数据上下行原理。
设备上报属性或事件
透传格式(透传/自定义)数据
- 流程说明
i. 设备通过透传格式数据的Topic,上报透传数据。
ii. 物联网平台通过数据解析脚本先对设备上报的数据进行解析。调用脚本中的rawDataToProtocol
方法,将设备上报的数据转换为物联网平台标准数据格式(Yelink JSON格式)。
iii. 调用数据解析脚本中的protocolToRawData
方法,对结果数据进行格式转换,将数据解析为设备可以接收的数据格式。
iv. 推送解析后的返回结果数据给设备
Topic说明
- 请求Topic:/sys/${productId}/${devName}/thing/dtu/up_raw
- 响应Topic:/sys/${productId}/${devName} /thing/dtu/up_raw_reply
数据格式
请求数据为设备上报的原始报文。通过MQTT协议透传的数据为16进制格式。
平台响应的Yelink JSON格式
{ "id":"123", "code":200, "data":{} }
非透传格式(Yelink JSON)数据
- 流程说明
- 设备使用非透传格式数据的Topic,上报数据。
- 物联网平台进行业务处理。
- 联网平台返回处理结果。
Topic说明
- 设备属性上报请求Topic:/sys/${productId}/${devName}/thing/event/property/post
- 设备属性上报响应Topic: /sys/${productId}/${devName}/thing/event/property/post_reply
- 设备事件上报请求Topic: /sys/${productId}/${devName}/thing/event/${tsl.event.identifer} /post
- 设备事件上报响应Topic: /sys/${productId}/${devName}/thing/event/${tsl.event.identifer} /post_reply
数据格式
设备属性上报请求数据格式:
{ "id": "123", "version": "1.0", "params": { "Power": "on", "WF": 23.6 }, "method": "thing.event.property.post" }
请求参数说明
- 流程说明
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。 |
version | String | 协议版本号,目前协议版本号唯一取值为1.0。 |
method | String | 请求方法。取值:thing.event.property.post。 |
params | Object | 请求参数。如以上示例中,设备上报了的两个属性Power和WF和具体属性信息。 |
- 设备事件上报请求数据格式
{
"id": "123",
"version": "1.0",
"params": {
"Power": "on",
"WF": 23.6
},
"method": "thing.event.{tsl.event.identifier}.post"
}
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。 |
version | String | 协议版本号,目前协议版本号唯一取值为1.0。 |
method | String | 请求参数。取值:thing.event.{tsl.event.identifier}.post。 |
params | Object | 上报事件的参数。 |
- 设备上报属性或事件响应数据格式
{
"id": "123",
"code": 200,
"data": {}
}
响应参数说明
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号,String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。 |
code | Integer | 结果状态码。 |
data | String | 请求成功时,返回的数据。 |
调用设备服务或设置属性
异步服务调用或属性设置
- 流程说明
设置属性或调用服务
物联网平台对您提交的参数进行校验。
物联网平台采用异步调用方式下发数据给设备,并返回调用操作结果。若没有报错,则结果中携带下发给设备的消息ID。
说明 对于透传格式(透传/自定义)数据,则会调用数据解析脚本中的
protocolToRawData
方法,对数据进行数据格式转换后,再将转换后的数据下发给设备。设备收到数据后,进行业务处理。
说明
- 如果是透传格式(透传/自定义)数据,则使用透传格式数据的Topic。
- 如果是非透传格式(Yelink JSON)数据,则使用非透传格式数据的Topic
设备完成业务处理后,返回处理结果给物联网平台。
物联网平台收到处理结果的后续操作:
- 如果是透传格式(透传/自定义)数据,将调用数据解析脚本中的
rawDataToProtocol
方法,对设备返回的结果进行数据格式转换。
- 如果是透传格式(透传/自定义)数据,将调用数据解析脚本中的
同步服务调用
- 设置属性或调用服务
- 物联网平台对您提交的参数进行校验。
使用同步调用方式,调用RRPC的Topic,下发数据给设备,物联网平台同步等待设备返回结果
说明 对于透传格式(透传/自定义)数据,则会先调用数据解析脚本中的
protocolToRawData
方法,对数据进行数据格式转换后,再将格式转换后的数据下发给设备。设备完成处理业务后,返回处理结果。若超时,则返回超时的错误信息。