手把手学IOT服务端API编程[13、发布消息到Topic]|MVP讲堂

手把手学IOT服务端API编程[13、发布消息到Topic]|MVP讲堂

作者:阿里云MVP洵云

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

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

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

下节链接:手把手学IOT服务端API编程[14、发消息给设备并同步返回响应]

上节介绍设备设备属性后,实际使用过程中,服务端通常会发一些指令或数据消息给设备,然后设备做出相应逻辑动作,服务端的API接口也提供了相应的功能,
这一节就来介绍一下发送消息的使用,这个接口需要提供三个参数,一个是产品的key值,一个是消息名称以及消息内容;
接下来我们看一下具体实现;


1、脚本实现:
我们按照接口的要求,在框架页面上,提供产品的key值和消息名称以及消息内容,这三个输入参数框给用户输入,
产品KEY:        <input type=”text” name=”pkey13″>
Topic名称:        <input type=”text” name=”topicname13″>
消息内容:        <input type=”text” name=”msgcontent13″>


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


通过查看 PubRequest.php文件,可以知道我们需要调用setProductKey和setTopicFullName以及setMessageContent三个函数,来给服务端传送产品key值和消息相关信息;这里消息的内容,根据网络惯例是转换成base64格式编码的,所以这里调用了php脚本里的转换函数:base64_encode,来将ascii字符串转换为base64格式;
$request->setProductKey($pkey); 
// /8HDXYtlB7aw/hello1/get
$request->setTopicFullName($topicname); 
$request->setMessageContent(base64_encode($msgcontent)); 


调用通用的网络查询操作后,最后对返回信息进行分析;首先显示常用的requestid和success这两个通用的信息:


echo ‘RequestId :’.$response->RequestId.'<br>’;
echo ‘Success :’.$response->Success.'<hr>’;


2、设备端模拟:
以前教程都是完全服务端的编程,由于本次教程是发送消息给设备,需要设备在线,所以还需要模拟一个设备的运行。这里使用官方提供的基于linux平台的sdk和相关的例子:
2.1 通过wget命令得到阿里iot的开发包。
wget xunyun17.xyz/iotmaster.tar
2.2 解压下载后的压缩包;
sudo tar xvf iotmaster.tar
2.3 编辑mqtt的例子文件,将相关的产品和设备以及消息信息修改己的信息:
vi iotkit-embedded-master/iotkit-embedded-master/sample/mqtt/mqtt-example.c
2.4 保存后,退出,重新编译这个代码:
cd iotkit-embedded-master/iotkit-embedded-master/
make clean
sudo make all
2.5 编译结束后,运行编译后的例子文件:
output/release/bin/mqtt-example


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

395_1939185177035471_9e0e86b14c1a1d3.png

395_1939185177035471_a8102af177cf8cd.png

395_1939185177035471_1c91b76e7b0ccd4.png

http://www.xunyun17.xyz/ioto/step13-PubRequest.mp4

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101271.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • selenium自动化测试报告_selenium自动化测试断言

    selenium自动化测试报告_selenium自动化测试断言自动化测试——selenium(完结篇)文章目录自动化测试——selenium(完结篇)一、元素操作方法二、浏览器操作方法三、获取元素信息操作四、鼠标操作(需要实例化鼠标对象)4.1鼠标右键及双击4.2鼠标拖拽4.3鼠标悬停【重点】五、键盘操作(不需要实例化对象)☆六、元素等待七、下拉框(需要实例化下拉框)八、弹出框九、滚动条十、切换frame表单☆10.1连续切换frame十一、多窗口的切换☆十二、截图操作十三、验证码前言:看这篇帖子,最好要在知道定位八大元素的基础之上才能够比较熟练

    2022年10月1日
    0
  • IC验证培训——SystemVerilog通用程序库(下)

    IC验证培训——SystemVerilog通用程序库(下)路桑的个人网址:路科验证-IC验证培训-数字芯片验证五、类方法还是包函数?我们最初的直觉是将svlib作为一组SystemVerilog类呈现给用户。我们假设由一个类来表示一个正则表达式,另一个类来表示一个文件名,等等。从库写作者的角度来看,以这种方式打包用户数据是非常有吸引力的,因为它允许我们将任意隐藏数据与每个对象相关联。 我们在编写面向用户的API时,上遇到了一个严…

    2025年9月3日
    5
  • python中for循环加速_如何提高python 中for循环的效率[通俗易懂]

    python中for循环加速_如何提高python 中for循环的效率[通俗易懂]对于某个城市的出租车数据,一天就有33210000条记录,如何将每辆车的数据单独拎出来放到一个专属的文件中呢?思路很简单:就是循环33210000条记录,将每辆车的数据搬运到它该去的文件中。但是对于3000多万条数据,一个一个循环太消耗时间,我花了2个小时才搬运了60万数据,算算3000万我需要花费100个小时,也就需要4-5天。并且还需要保证这五天全天开机,不能出现卡机的事故。因此,需要使用并行…

    2022年8月12日
    9
  • 罗技k580键盘蓝牙连接不上_ipad同时连接蓝牙键盘和耳机

    罗技k580键盘蓝牙连接不上_ipad同时连接蓝牙键盘和耳机K580蓝牙连接,失败解决。

    2022年8月31日
    6
  • python3 pickle_pickle文件是什么

    python3 pickle_pickle文件是什么Python3中pickle模块介绍

    2025年6月3日
    2
  • XAMPP安装Windows10

    XAMPP安装Windows10下载XAMPPhttps://sourceforge.net/projects/xampp/files/我下载的是XAMPP7.4.3之后直接双击安装,尽量不要装在C盘,一直点下一步就好了安装完成后会有这样的界面(XAMPP控制面板窗口)(Apache和MySQL之前有写安装教程)点击“Apache”的“Config”键选择“Apache(httpd.conf)”,打开配置文件找…

    2022年7月15日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号