阿里云
发表主题 回复主题
  • 425阅读
  • 1回复

手把手学IOT服务端API编程[15、发布广播消息][step by step ALI-IOT-SERVER-API]

级别: 论坛版主
发帖
1966
云币
4134
上节介绍从服务端给设备发送RRPC消息后,实际使用过程中,如果设备众多,服务端通常希望发送一条消息通知所有的设备,而不是一个一个设备发送消息,这种消息也叫做发送广播消息,服务端的API接口也提供了相应的功能,
这一节就来介绍一下如何使用发送广播消息这个功能,这个接口同样需要提供三个参数,一个是产品的key值,一个是消息名称以及消息内容;
接下来我们看一下具体实现;


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


而在实际的实现代码中,我们只需要使用get函数提取这个变量就可以了:
$pkey = $_GET["pkey15"];
$topicname = $_GET["topicname15"];
$msgcontent = $_GET["msgcontent15"];


接着引用查询设备列表的接口:
$request = new Iot\PubBroadcastRequest();


通过查看PubBroadcastRequest文件,可以知道我们需要调用setProductKey和setTopicFullName以及setMessageContent 三个函数,来从服务端传送广播信息;这三个参数的意思分别是配置产品key,配置消息名称和配置消息内容.


$request->setProductKey($pkey);


$request->setTopicFullName($topicname);
$request->setMessageContent(base64_encode($msgcontent));


调用通用的网络查询操作后,将操作的返回结果显示在网页上:




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


2、设备端模拟:
和上一节给设备发送信息类似,这一节也需要设备的模拟,下载开发包的命令和上节类似,这里只介绍修改发送消息例子的部分:
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值和要发送的广播消息名称以及消息内容,运行提交按钮后,可以得到是否发送成功的信息,然后到设备模拟终端,查看状态,可以看到已经接受到服务端发来的广播信息:
具体向关截图如下:



附件:
step15.rar (5 K) 下载次数:1

timelapse:
http://www.xunyun17.xyz/ioto/step15-PubBroadcastRequest.mp4



级别: 新人
发帖
1
云币
6
只看该作者 沙发  发表于: 07-24
Re手把手学IOT服务端API编程15、发布广播消息step by step ALI-IOT-SERVER-API
楼主:
   问一个设备事件上报的问题
    /sys/xxxx/${deviceName}/thing/event/${tsl.event.identifer}/post  发布  设备事件上报

这个tsl.event.identifer  是什么,感觉是 警告,错误。。。。但是取值是什么,文档在哪个位置说明?
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个