手把手学IOT服务端API编程[14、发消息给设备并同步返回响应]|MVP讲堂

简介: 本教程旨在介绍服务器端的API编程接口,基于php脚本的sdk,希望对物联网服务器端有编程需求的有所帮助。阿里云MVP手把手教你!有演示视频,千万别错过!

作者:阿里云MVP洵云

10节回顾:手把手学IOT服务端API编程[10、保存设备属性]|MVP讲堂

11节回顾:手把手学IOT服务端API编程[11、查询设备属性列表]

12节回顾:手把手学IOT服务端API编程[12、删除设备属性]


上节介绍从服务端给设备发送消息后,实际使用过程中,服务端通常希望发送消息的设备能给服务端一个反馈,以便确认设备确实收到了服务端的命令或数据,这种逻辑机制在阿里IOT的套件中叫做RRPC,服务端的API接口也提供了相应的功能,
这一节就来介绍一下如何使用RRPC的功能,这个接口同样需要提供三个参数,一个是产品的key值,一个是设备名称以及消息内容;
接下来我们看一下具体实现;


1、脚本实现:
我们按照接口的要求,在框架页面上,提供产品的key值和设备名称以及消息内容,这三个输入参数框给用户输入,


产品KEY:        <input type="text" name="pkey14">
设备名称:        <input type="text" name="devname14">
消息内容:        <input type="text" name="msgcontent14">


而在实际的实现代码中,我们只需要使用get函数提取这个变量就可以了:
$pkey = $_GET["pkey14"];
$devname = $_GET["devname14"];
$msgcontent = $_GET["msgcontent14"];
接着引用查询设备列表的接口:
$request = new Iot\RRpcRequest();


通过查看RRpcRequest.php文件,可以知道我们需要调用setProductKey和setDeviceName以及setRequestBase64Byte,setTimeout四个函数,来给服务端传送RRPC的信息;这四个参数里,前两个是配置产品key和设备名称,第三个参数是配置base64格式的消息内容,第四个参数是配置服务端接受到设备发来信息的超时时间,意思是在多久时间之内,如果服务端收不到设备的反馈确认,则认为超时,单位为毫秒.这里配置为3000及3秒钟.
$request->setProductKey($pkey); 
// /8HDXYtlB7aw/hello1/get
$request->setDeviceName($devname); 
$request->setRequestBase64Byte(base64_encode($msgcontent)); 
$request->setTimeout(3000); 


调用通用的网络查询操作后,最后对返回信息进行分析;返回的信息中,和以前不同,新增加了三个名称分别为:
MessageId PayloadBase64Byte RrpcCode 
这里依次介绍:
MessageId : 发送消息的id,全网唯一,18位数字,用于后续消息管理.
PayloadBase64Byte : 设备端的状态字符串,通常为 : "rrpc client has received message!",意思为设备端已经正常接收到服务端发送的字符串;
RrpcCode : 这个RRPC过程的结果状态,一般为'success',表示发送成功;


最后将这个五个信息依次显示在网页上:


echo 'MessageId :'.$response->MessageId.'<br>';
echo 'PayloadBase64Byte :'.base64_decode($response->PayloadBase64Byte).'<br>';
echo 'RrpcCode :'.$response->RrpcCode.'<br>';
echo 'RequestId :'.$response->RequestId.'<br>';
echo 'Success :'.$response->Success.'<hr>';


2、设备端模拟:
和上一节给设备发送信息类似,这一节也需要设备的模拟,下载开发包的命令和上节类似,这里只介绍修改RRPC例子的部分:
2.1 修改mqtt_rrpc-example.c文件,改为己产品和设备信息:
vi iotkit-embedded-master/iotkit-embedded-master/sample/mqtt/mqtt_rrpc-example.c
2.2 修改后,保存退出,重新编译源码;
cd iotkit-embedded-master/iotkit-embedded-master/
make clean
sudo make all
2.3 编译结束后,运行编译后的例子文件:
output/release/bin/mqtt_rrpc-example


        
3、实际测试:
先运行模拟设备,然后打开浏览器,转到我们框架脚本页面,这里输入我们从控制台得到的产品key值和要发送的消息名称以及消息内容,运行提交按钮后,可以得到是否发送成功的信息,然后到设备模拟终端,查看状态,可以看到已经接受到服务端发来的信息:
具体向关截图如下:



http://www.xunyun17.xyz/ioto/step14-RRpcRequest.mp4


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
机器学习/深度学习 人工智能 缓存
电商 API 接口:开启全平台商品信息同步新时代
在数字化浪潮下,电商平台激增,消费者跨平台购物成为常态。然而,商品信息分散导致数据不一致、库存混乱等问题。电商 API 接口应运而生,通过标准化数据交换,实现多平台商品信息实时同步,提升运营效率、降低成本、增强用户体验,成为企业数字化转型的关键引擎。
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
965 2
|
存储 JSON 监控
淘宝/天猫:通过商品详情API实现多店铺商品信息批量同步,确保价格、库存实时更新
在电商运营中,管理多个淘宝或天猫店铺的商品信息(如价格、库存)耗时易错。本文介绍如何通过淘宝/天猫开放平台的商品详情API,实现自动化批量同步,确保信息实时更新。内容涵盖API调用、多店铺数据处理、实时更新策略及注意事项,助您高效管理多店铺商品信息。
1040 0
|
人工智能 JSON 监控
电商 API 赋能,多平台促销活动精准同步
在电商多平台促销中,手动管理易导致价格混乱、库存超卖等问题。电商 API 通过自动化实现促销活动的精准同步,提升效率、减少错误,助力企业高效运营,实现销售增长与成本节约,是电商数字化转型的关键工具。
|
供应链 安全 API
淘宝API一键同步库存,销量翻倍轻松实现!
在电商竞争激烈的当下,库存管理是提升销量的关键。淘宝开放平台提供API接口,支持一键同步库存,实现线上线下数据实时更新,避免缺货或超卖。本文详解操作步骤,并附Python示例代码,助你轻松掌握自动化库存管理,提升转化率,实现销量翻倍。
|
JSON 人工智能 自然语言处理
根据标题利用API实现电商多平台同步:省时省力生成文章
在电商运营中,多平台同步产品信息、库存和订单数据至关重要。手动操作耗时易错,而通过API实现自动化同步,不仅能提升效率,还可结合内容生成工具自动创建产品文章。本文详解如何利用API完成数据同步与内容生成,帮助商家节省时间、减少错误、优化成本,提升运营效率。
|
分布式计算 运维 DataWorks
DataWorks产品使用合集之如何查看数据服务API发布后的服务端日志
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
JSON 安全 API
实战指南:使用PHP构建高性能API接口服务端
构建RESTful API的简要指南:使用PHP和Laravel,先安装Laravel并配置数据库,接着在`api.php`中定义资源路由,创建`PostController`处理CRUD操作,定义`Post`模型与数据库交互。使用Postman测试API功能,如创建文章。别忘了关注安全性、错误处理和性能优化。
762 2
|
开发框架 前端开发 应用服务中间件
部署基于.netcore5.0的ABP框架后台Api服务端,以及使用Nginx部署Vue+Element前端应用
部署基于.netcore5.0的ABP框架后台Api服务端,以及使用Nginx部署Vue+Element前端应用
|
前端开发 小程序 API
【微信小程序】使用 Promise、async 和 await 将异步API 改写为同步
【微信小程序】使用 Promise、async 和 await 将异步API 改写为同步
811 0