小白学习IOT 第二课 模拟设备RRPC命令下发-问答-阿里云开发者社区-阿里云

开发者社区> 洵云> 正文

小白学习IOT 第二课 模拟设备RRPC命令下发

2017-06-14 19:31:47 4938 1
RPC通讯可以从设备向服务器端上报消息,也可以通过服务器下发命令给设备,这种通讯又叫RRPC,这次我们来介绍和实践一下RRPC的命令通讯;
通过服务端下发命令模拟设备指示灯的开关,来测试RRPC通信。
1.由于使用阿里云的PHP的SDK,首先下载PHP的sdk:
git clone https://github.com/aliyun/aliyun-openapi-php-sdk.git


2.编写用户界面的PHP文件,一个用来提供用户选择开灯还是关灯;

<html><meta charset='UTF-8'><title>小白学习IOT</title><p><center><head>RRPC命令下发</head><body bgcolor='gray'><hr>
<?php
echo "</p><br><p>指示灯控制:<br>";
$str = $_SERVER["QUERY_STRING"];
echo "<form action=\"led.php\">
选择类型:<br/>
<input type='radio' name='led' value='ON' ><img src='./ledon.jpg'/>
<input type='radio' name='led' value='OFF' checked><img src='./ledoff.jpg'/><br>
<input type='submit' value='运行'/>
</form>";
echo "</p></center>";
?>
</body></head></center></p></html>


3.再编写一个控制开灯和关灯的PHP文件,这里用到了PHP的SDK中的core和iot两个目录,文件代码如下,具体的意思为接收界面来的指示灯控制信息,然后配置好AK,SK,产品KEY,设备名称,把控制信息通过BASE64编码后发送给设备,最后收到设备的反馈信息,并显示在网页上。:

<html><meta charset='UTF-8'><title>小白学习IOT</title><p><center><head>RRPC命令下发</head><body bgcolor='gray'><hr>
<?php


echo "</p><br><p>指示灯控制:<br>";
$str = $_SERVER["QUERY_STRING"];


if($str =="led=ON"){
    echo "<img src='./ledon.jpg'/><br>";
    $led = "ON";
}
if($str =="led=OFF"){
    echo "<img src='./ledoff.jpg'/><br>";
    $led = "OFF";
}  
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/Config.php';
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/AcsRequest.php';
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/AcsResponse.php';
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/RpcAcsRequest.php';
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/IAcsClient.php';
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/DefaultAcsClient.php';
include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-core/Autoloader/Autoloader.php';


include_once 'aliyun-openapi-php-sdk/aliyun-php-sdk-iot /Request/V20160104/RevertRpcRequest.php';
$iClientProfile = DefaultProfile::getProfile("cn-shenzhen",
"你自己的AK", "你自己的SK");
$client = new DefaultAcsClient($iClientProfile);
$request = new Iot\Request\V20160530\RevertRpcRequest();
$request->setProductKey(产品KEY);
$request->setDeviceName("设备名称");//设备名称
$request->setTimeOut(5000); //超时时间,单位毫秒.如果超过这个时间设备没反应则返回"TIMEOUT"
$request->setRpcContent(base64_encode($led));
//推送给设备的数据.数据要求二进制数据做一次BASE64编码.(示例里面是"helloworld"编码后的值)
$response = $client->getAcsResponse($request);
//print_r("\r\n");
//print_r($response->RpcCode);
if(isset($response->RpcCode)){
if($response->RpcCode=='SUCCESS'){
    echo '操作成功.';
}else{
    echo '操作失败:'.$response->RpcCode;
}
}
echo "</p></center>";
?>
</body></head></center></p></html>




4.最后,还需要在模拟设备端运行示例程序才可以正常运行:
这是查看设备端,可以看到已经接收到ON的信息了;


附件为相关编码文件:




timelapse 地址:
http://xunyun17.xyz/iottimelapse/lesson2.mp4

取消 提交回答
全部回答(1)
  • 火星123
    2018-01-23 10:23:27
    Re小白学习IOT 第二课 模拟设备RRPC命令下发
    说得真好!
    0 0
相关问答

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 222929浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157033浏览量 回答数 145

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146738浏览量 回答数 22

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 126026浏览量 回答数 2

41

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135448浏览量 回答数 41

82

回答

OSS入门教程

belle.zhoux 2014-07-07 17:14:27 149239浏览量 回答数 82

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302551浏览量 回答数 249

97

回答

Redhat/CentOS一键安装web环境全攻略

xiaofanqie 2011-08-11 14:51:38 123173浏览量 回答数 97

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471174浏览量 回答数 24

13

回答

域名解析是正确的,但是网站打不开求助!

游客b4ezpaqg54gdq 2019-07-05 11:50:33 118782浏览量 回答数 13
+关注
21
文章
1655
问答
问答排行榜
最热
最新
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载