手把手学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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
15天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
18天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
7月前
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
345 2
|
7月前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
192 0
|
6月前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
5月前
|
IDE API 定位技术
Python--API编程:IP地址翻译成实际的物理地址
Python--API编程:IP地址翻译成实际的物理地址
128 0
|
7月前
|
JavaScript API 开发者
RESTful API 设计的传奇征程:突破常规,拥抱最佳实践,铸就编程巅峰!
【8月更文挑战第7天】希望通过以上的探讨,能让您对 RESTful API 设计有更深入的理解和认识。
66 5
|
7月前
|
JSON API 数据库
神秘编程力量来袭!Rails 究竟隐藏着怎样的魔力,能构建出强大的 RESTful API?快来一探究竟!
【8月更文挑战第31天】《构建 RESTful API:使用 Rails 进行服务端开发》介绍了如何利用 Ruby on Rails 框架高效构建可扩展的 RESTful API。Rails 采用“约定优于配置”,简化开发流程,通过示例展示了路由定义、控制器设计及模型层交互等内容,帮助开发者快速搭建稳定可靠的服务端。无论小型项目还是大型应用,Rails 均能提供强大支持,提升开发效率。
60 0
|
8月前
|
分布式计算 运维 DataWorks
DataWorks产品使用合集之如何查看数据服务API发布后的服务端日志
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
8月前
|
开发框架 前端开发 应用服务中间件
部署基于.netcore5.0的ABP框架后台Api服务端,以及使用Nginx部署Vue+Element前端应用
部署基于.netcore5.0的ABP框架后台Api服务端,以及使用Nginx部署Vue+Element前端应用