设备影子
SDK提供的设备影子主要保存接入设备的在线状态与配置信息,配置信息包括云端的期望配置与接入设备的实际配置。
接入设备认证
边缘节点上线时会通过代理应用获取H3C物联网平台添加的接入设备信息,之后不管节点在线还是离线,都能与SDK应用进行交互,处理SDK应用发送的接入设备上下线请求。
接入设备上线
接入设备上线,需要通过SDK应用向边缘节点的代理应用发送topic请求消息,代理应用接收到请求消息后,会响应topic消息以告知SDK应用接入设备的上线请求结果。
接入设备上线请求
主题:{srcApp}/request/oasis/online
消息:
{
"deviceInfo":[
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx"
}
],
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
接入设备上线响应
主题:oasis/response/{destApp}/online
消息:
{
"deviceInfo":[
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx",
"state":"online"
}
],
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
接入设备下线
接入设备下线,需要通过SDK应用向边缘节点的代理应用发送topic请求消息,代理应用接收到请求消息后,会响应topic消息以告知SDK应用接入设备的下线请求结果。
接入设备下线请求
主题:{srcApp}/request/oasis/offline
消息:
{
"deviceInfo":[
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx"
}
],
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
接入设备下线响应
主题:oasis/response/{destApp}/offline
消息:
{
"deviceInfo":[
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx",
"state":"offline"
}
],
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
接入设备在线保活
接入设备在线时,需要通过SDK应用向边缘节点的代理应用发送topic保活消息,代理应用接收到请求消息后,会响应topic消息以告知SDK应用接入设备的保活请求结果。
接入设备在线保活请求
主题:{srcApp}/request/oasis/keepalive
消息:
{
"deviceInfo":[
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx"
}
],
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
接入设备在线保活响应
主题:oasis/response/{destApp}/keepalive
消息:
{
"deviceInfo":[
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx",
"state":"online"
}
],
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
参数说明
参数名称 | 类型 | 说明 |
---|---|---|
deviceInfo | Array | 接入设备列表信息 |
productKey | String | 接入设备产品类型标识 |
deviceID | String | 接入设备标识 |
state | String | 设备状态更新响应 在线:online 离线:offline 禁用:disabled 未发现:not-found |
token | String | 消息ID,符合UUID定义规范 |
timestamp | String | 消息时间戳,符合ISO8601时间格式 |
接入设备配置
更新接入设备的期望配置
接入设备上线成功后,边缘节点的代理应用会主动发送topic消息,将节点存储的云端期望配置及时更新到接入设备上。
更新接入设备的期望配置通知消息
主题:oasis/notify/{destApp}/updateShadow
消息:
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx",
"state":{
"desired":{
"attribute1":"xxxxxxxxxx"
}
},
"metadata":{
"desired":{
"attribute1":{
"timestamp":1579181557363
}
}
},
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
当边缘节点上线时,代理应用会获取云端的接入设备期望配置信息并保存;当云端通过在线的边缘节点更新接入设备的配置信息时,代理应用也会更新存储的接入设备配置信息。当代理应用发现存储的在线接入设备的期望配置信息发生变化时,也会发送上述Topic消息,以更新接入设备的期望配置信息。
接入设备的实际配置上报请求
当SDK应用收到更新期望配置的通知消息或者接入设备的实际配置信息发生变化时,SDK应用需要发送topic消息告知代理应用更新接入设备的实际配置信息,代理应用接收到更新接入设备的实际配置消息后,会响应topic消息以告知SDK应用存储的设备影子更新结果。
主题:{srcApp}/request/oasis/updateShadow
消息:
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx",
"state":{
"reported":{
"attribute1":"xxxxxxxxxx"
}
},
"metadata":{
"reported":{
"attribute1":{
"timestamp":1579181557363
}
}
},
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"timestamp":"2020-01-01T00:00:00Z"
}
接入设备的实际配置上报响应
当接入设备的实际配置信息发生变化时,SDK应用需要发送topic消息告知代理应用更新接入设备的实际配置信息,代理应用接收到更新接入设备的实际配置消息后,会响应topic消息以告知SDK应用存储的设备影子更新结果。
主题:oasis/response/{destApp}/updateShadow
消息:
{
"productKey":"xxxxxxxxxx",
"deviceID":"xxxxxxxxxx",
"statusCode":200,
"statusStr":"OK",
"timestamp":"2020-01-01T00:00:00Z",
"token":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"version":1
}
参数说明
参数名称 | 类型 | 说明 |
---|---|---|
productKey | String | 接入设备产品类型标识 |
deviceID | String | 接入设备标识 |
statusCode | String | 状态码 |
statusStr | String | 状态字符串 |
timestamp | String | 时间戳 · 标识消息的时间戳符合ISO8601时间格式 · 元数据时间戳精确到毫秒 |
token | String | 消息ID,符合UUID定义规范 |
version | Number | 设备影子版本号 |
state | Object | 设备属性值集合 |
reported | Object | 接入设备属性上报值集合 |
desired | Object | 接入设备属性期望值集合 |
metadata | Object | 接入设备属性元数据集合 |
attribute1 | String | 接入设备属性名称 |
API接口
函数名 | 说明 |
---|---|
SHADOW_Init | 设备影子存储内容初始化 |
SHADOW_Connect_Req | 接入设备连接状态修改请求 |
SHADOW_Connect_Rsp | 接入设备连接状态修改响应 |
SHADOW_Set_Req | 接入设备更新影子实际配置请求 |
SHADOW_Set_Rsp | 接入设备更新影子实际配置响应 |
SHADOW_Update | 节点代理应用更新接入设备期望配置消息通知 |
SHADOW_Destroy | 设备影子存储内容释放 |