手把手学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值和要发送的消息名称以及消息内容,运行提交按钮后,可以得到是否发送成功的信息,然后到设备模拟终端,查看状态,可以看到已经接受到服务端发来的信息:
具体向关截图如下:
395_1939185177035471_f2b638bf11d8218.png

395_1939185177035471_108a67a2917e147.png

395_1939185177035471_d65a716fd9e722f.png

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


相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
4月前
|
传感器 物联网 网络架构
ENS、IoT设备、X86、ARM
ENS(Enterprise Name Service)是企业名称服务,是一种为物联网设备提供命名和寻址服务的技术。ENS通过为物联网设备分配唯一的名称和地址,使得物联网设备可以被网络中的其他设备和服务所识别和访问。 IoT设备(Internet of Things device)是连接到互联网的物理设备,可以收集和共享数据,用于监测、控制和优化各种业务流程和操作。IoT设备包括各种传感器、执行器、网关和路由器等。
40 2
|
2月前
|
网络协议 物联网 5G
K3S 系列文章 -5G IoT 网关设备 POD 访问报错 DNS 'i/o timeout' 分析与解决
K3S 系列文章 -5G IoT 网关设备 POD 访问报错 DNS 'i/o timeout' 分析与解决
|
5月前
|
API 开发工具 开发者
在钉钉中,服务端API 如何获取OA审批评论中的附件下载链接?
在钉钉中,服务端API 如何获取OA审批评论中的附件下载链接?
311 1
|
7月前
|
网络协议 物联网 大数据
|
7月前
|
安全 物联网 网络性能优化
|
7月前
|
网络协议 物联网 网络性能优化
|
7月前
|
安全 物联网 物联网安全
|
7月前
|
编解码 小程序 JavaScript
阿里云IoT小程序应用开发和组件实践
通过实验,了解阿里云IoT小程序的应用开发的方法,了解其内置的基础组件使用,以及基于Vue.js实现可复用的自定义组件的方法。
341 1
|
7月前
|
运维 安全 物联网
使用阿里云 IoT 安全中心保护智慧遥控器
在物联网领域中,我们的 TO B 智慧设备,在发货之后,出现了不少困扰我们的安全问题,比如会被恶意安装应用,访问非法网站等,增加厂家的运维成本。 同时设备上的一些技术机密也容易被好事之人破解,对厂商构成商业损失,直到我们发现了阿里云物联网的一款安全防护产品 -- IoT 安全中心。它主打的 ID² 和安全运营有效的解决了我们的痛点。
394 3
|
8月前
|
传感器 监控 物联网
阿里云IoT HaaS 510:快速实现物联网数据传输的利器
众所周知,物联网(IoT)是近年来日益热门的技术领域之一,它的广泛应用为人们的生活和工作带来了无限可能。在物联网应用中,数据的采集和传输是至关重要的一环。DTU是一种应用于物联网数据传输的终端设备,它可以将各类传感器、数据采集单元等通过串口RS232/485传输到DTU,再由DTU转发到4G网络上传至云端。阿里云IoT HaaS 510是一款开板式DTU产品,能够帮助企业快速搭建物联网平台,并实现数据的采集和传输,那么本文就来简单分享一下。
365 1
阿里云IoT HaaS 510:快速实现物联网数据传输的利器

热门文章

最新文章