阿里云物联网平台设备端响应物模型属性更新

链路:

  1. 调用云端API
  2. 设备端监听并响应
  3. 查看结果

云端API SetDeviceProperty示例 :

一.OpenAPi 调用 云端API SetDeviceProperty ,将物模型属性更新请求信息发送到设备端

阿里云物联网平台设备端响应物模型属性更新

二. 设备端接收到请求信息

方法一 : 物模型开发

Node.js SDK示例:

device.onProps方法监听云端设置属性服务消息,并调用device.postProps响应物模型属性更新。

阿里云物联网平台设备端响应物模型属性更新

  // 监听云端设置属性服务消息
  device.onProps((cmd)=>{
    console.log("接收到消息--------->\n",cmd);
    // 物模型属性上报
    device.postProps(cmd.params);
  })


python SDK示例:SDK只需对on_thing_prop_changed进行响应处理,其他根据官方文档操作即可。

  1. 需要从云端控制台下载物模型文件,该文件需要集成到应用工程中,这样对应的topic才能正确的接收和发送消息
  2. 服务端发送设置属性消息后,SDK通过设置的回调函数on_thing_prop_changed通知用户,回调函数中params为包含属性名与值的字典对象,用户需要对接收到的新属性进行处理
  3. 通过thing_post_property上报属性
  4. 设备端的响应结果SDK通过on_thing_prop_post 通知用户

阿里云物联网平台设备端响应物模型属性更新

    def on_thing_prop_changed(self, params, userdata):
        print("接收到物模型属性更新消息_on_thing_prop_changed" + str(params))
        prop_data = params
        # 设备端响应
        rc, request_id = self.__linkkit.thing_post_property(prop_data)


方法二 : 自定义MQTT Topic通讯

Node.js SDK示例:

device.on方法监听云端设置属性服务消息,并调用device.publish以发布物模型属性数据消息方式响应物模型属性更新。

阿里云物联网平台设备端响应物模型属性更新

// 监听message事件
device.on('message', (topic, payload) => {
  console.log("监听消息topic----->",topic);
  console.log("监听消息payload--------->",payload.toString());
  
  //判断是否是云端设置属性服务消息
  if (topic.indexOf("property/set") != -1) {
      var  replace_payload = payload.toString().replace("thing.service.property.set","thing.event.property.post");
      console.log("响应物模型更新--------->");
      device.publish('/sys/yourProductKey/yourDeviceName/thing/event/property/post', replace_payload);
  }

}); 

Android SDK

  1. 通过IConnectNotifyListener监听服务端物模型属性更新请求
  2. 调用MqttPublishRequest处理设备端响应
  3. 设备端响应结果也是通过IConnectNotifyListener告知用户,需要订阅/sys/yourProductKey/yourDeviceName/thing/event/property/post_reply

阿里云物联网平台设备端响应物模型属性更新

/*
* SET:/sys/yourProductKey/yourDeviceName/thing/service/property/set
* POST:/sys/yourProductKey/yourDeviceName/thing/event/property/post
* */
if (topic.equals(SET)) {
        Log.i("TAG","设备端响应");
        String replace_payload = new String((byte[]) aMessage.data).replace("thing.service.property.set", "thing.event.property.post");
        CustomTopic.getPublish(POST, replace_payload, 1);
}




三. 查看结果

  1. 控制台日志服务 : 物模型check状态码200

阿里云物联网平台设备端响应物模型属性更新

2.设备物模型数据是否更新

阿里云物联网平台设备端响应物模型属性更新

上一篇:阿里云物联网平台M2M设备间通信


下一篇:物联网平台 - 云端API使用方式