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

简介: 在使用云端API SetDeviceProperty、iot studio设置设备属性、物联网平台控制台在线调试功能时,会出现物模型属性没有更新的情况。以上功能中都是在调用SetDeviceProperty接口去更新物模型属性。因为云端下发属性设置命令和设备收到并执行该命令是异步的,所以调用该接口时,返回的成功结果只表示云端下发属性设置的请求成功,不能保证设备端收到并执行了该请求。需设备端SDK成功响应云端设置设备属性值的请求,设备属性值才能真正设置成功。

链路:

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

云端API SetDeviceProperty示例 :

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

image.png

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

方法一 : 物模型开发

Node.js SDK示例:

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

image.png

// 监听云端设置属性服务消息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 通知用户

image.png

defon_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以发布物模型属性数据消息方式响应物模型属性更新。

image.png

// 监听message事件device.on('message', (topic, payload) => {
console.log("监听消息topic----->",topic);
console.log("监听消息payload--------->",payload.toString());
//判断是否是云端设置属性服务消息if (topic.indexOf("property/set") !=-1) {
varreplace_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

image.png

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




三. 查看结果

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

image.png

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

image.png

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
26天前
|
消息中间件 网络协议 物联网
MQTT常见问题之物联网设备端申请动态注册时MQTT服务不可用如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
1月前
|
自然语言处理
阿里云百炼大模型服务--企业知识检索问答指南
阿里云百炼提供的企业知识检索问答应用可以帮助大家实现让大模型瞬间“开挂”的技能。结合上传的知识数据,大模型识别解析学习文档内容,最终给出生成式回复。我们在通义千问-Turbo/Max大模型基础上,将文件上传、读取、切片、向量化等过程都开发好预置在应用中,实现开箱即用,更能满足您的日常需求。
|
6天前
|
监控 Serverless API
阿里云函数计算的工作原理与事件驱动模型密切相关
【4月更文挑战第17天】阿里云函数计算的工作原理与事件驱动模型密切相关
59 4
|
14天前
|
机器学习/深度学习 编解码 人工智能
阿里云百炼的模型怎么选择并体验
本模块为您提供大模型服务平台百炼中支持的模型类型,便于您快速根据自己的需求选择所需模型!
|
16天前
|
人工智能 自然语言处理 测试技术
“送云资源、用大模型” 阿里云启动云工开物“高校训练营”计划
“送云资源、用大模型” 阿里云启动云工开物“高校训练营”计划
30 1
|
16天前
|
云安全 人工智能 定位技术
交通运输部公路科学研究院携手阿里云共建交通行业大模型
交通运输部公路科学研究院携手阿里云共建交通行业大模型
20 0
|
1月前
|
监控 安全 数据挖掘
物联网平台中如何快速检测设备异常
物联网平台中如何快速检测设备异常
28 0
|
1月前
|
存储 监控 安全
Java基于物联网技术的智慧工地云管理平台源码 依托丰富的设备接口标准库,快速接入工地现场各类型设备
围绕施工安全、质量管理主线,通过物联感知设备全周期、全覆盖实时监测,将管理动作前置,实现从事后被动补救到事前主动预防的转变。例如塔吊运行监测,超重预警,升降机、高支模等机械设备危险监控等,通过安全关键指标设定,全面掌握现场安全情况,防患于未然。
147 5
|
1月前
|
人工智能 数据可视化 API
阿里云百炼大模型服务--流程编排接入快速上手指南
流程编排是一种面向开发者的可视化开发工具,支持LLM、API、脚本等类型节点,旨在简化接入大型语言模型(LLM)流程,同时提供应用流程的全生命周期管理,包括流程的编排、试验、部署等,为开发者提供自定义AI应用开发一站式服务。
阿里云百炼大模型服务--模型训练指南
模型训练是通过Fine-tuning训练模式提高模型效果的功能模块,作为重要的大模型效果优化方式,用户可以通过构建符合业务场景任务的训练集,调整参数训练模型,训练模型学习业务数据和业务逻辑,最终提高在业务场景中的模型效果。

相关产品

  • 物联网平台