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

简介: 本教程旨在介绍服务器端的API编程接口,基于php脚本的sdk,希望对物联网服务器端有编程需求的有所帮助。阿里云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

相关实践学习
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
目录
相关文章
|
3月前
|
API C++
socket编程之常用api介绍与socket、select、poll、epoll高并发服务器模型代码实现(1)
前言   本文旨在学习socket网络编程这一块的内容,epoll是重中之重,后续文章写reactor模型是建立在epoll之上的。
34 0
|
3月前
|
监控 安全 Linux
socket编程之常用api介绍与socket、select、poll、epoll高并发服务器模型代码实现(3)
高并发服务器模型-poll poll介绍   poll跟select类似, 监控多路IO, 但poll不能跨平台。其实poll就是把select三个文件描述符集合变成一个集合了。
35 0
|
7天前
|
存储 Java 关系型数据库
掌握Java 8 Stream API的艺术:详解流式编程(一)
掌握Java 8 Stream API的艺术:详解流式编程
37 1
|
24天前
|
算法 Linux API
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
28 0
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
|
1月前
|
Linux API C++
【Linux C/C++ 线程同步 】Linux API 读写锁的编程使用
【Linux C/C++ 线程同步 】Linux API 读写锁的编程使用
20 1
|
3月前
|
JSON Java API
Java 编程问题:十三、HTTP 客户端和 WebSocket API
Java 编程问题:十三、HTTP 客户端和 WebSocket API
|
10天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
17天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
29天前
|
安全 算法 API
产品经理必备知识——API接口
前言 在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。