上一篇文章,介绍了了如何模拟设备上线,这回我们介绍下如何模拟设备向服务端发送RPC消息。
第一步:
在IOT控制台,点击产品后,点击左边消息通信,选择服务调用(RPC/Rvert-RPC)选项页,然后选择‘
[font=&]配置云端服务地址’,输入你的服务器的地址和端口以及目录,这里我是用80端口和ALIIOT目录,你可以自己定义自己偏好的端口和目录,界面如下:
第二步:
修改服务器配置,添加RPC对应的解析路径和文件,IOT RPC用的是POST方法上传给服务器的,所以我们也需要服务器用对应的POST方法解析,我这里用的是NGINX服务器和PHP来解析的,所以我的修改如下:
nginx的配置文件路径通常为:/etc/nginx/sites-available/default,在server中添加:
location /aliiot {
#root /usr/share/nginx/html;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
access_log /var/log/nginx/iot.log;
if ($request_method = POST) {
access_log /var/log/nginx/post.log;
proxy_pass $scheme://127.0.0.1/aliiot/aliiot.php;
# break;
}
}
这段配置的意思是,当有IOT 的RPC上报时,NGINX就转发到aliiot/aliiot.php这个文件。
本地修改配置保存后,上传到服务端,然后检查配置和重新加载nginx:
nginx -t
service nginx reload
第三步:
创建服务端接收目录和文件:因为我们已经在网页服务器的配置添加IOT相应的路径,所以要创建这个路径和文件,
我的WEB根目录是/usr/share/nginx/html/,所以我在这个目录下创建一个目录:aliiot,然后在这个目录下创建一个文件:
mkdir aliiot
touch aliiot.php
前面提到,当有设备上报RPC消息时,就会给我们配置的文件发送POST请求,所以我们在PHP文件里把这个请求写到另一个DEMO.php文件,这样在浏览器就可以查看我们上传的消息了。
<?php
$inputv = file_get_contents('php://input');
$phpv = "<html><meta charset='UTF-8'><title>阿里云IOT测试</title><p><center><head>小白学习IOT之PRC上报</head><body bgcolor='gray'>\r\n<?php\r\n".'echo "<hr><br>'.$inputv.'";'."\r\n?>\r\n</body></head></center></p></html>";
$fp = fopen("demo.php", "w");
fwrite($fp, $phpv);
fclose($fp);
?>
第四步:
修改模拟设备的RPC上报的消息,阿里云IOT的例子是上报HELLO,WORLD消息,我们改一下其他消息试试,在\examples\linux\ccp\demo.c文件main函数:
将
rpcReq.payload = (unsigned char *) "hello world";
rpcReq.payloadLen = strlen("hello world");
改为:
rpcReq.payload = (unsigned char *) "你好,世界。";
rpcReq.payloadLen = strlen(rpcReq.payload);
然后编译运行,
make,
./demo
第五步:
使用浏览器运行网址,查看结果:http://<你的URL>/aliiot/demo.php
为了方便大家学习,附件为文中提到NGINX配置文件,设备的DEMO.C文件和服务端的ALIIOT.PHP文件。
看大家都有录视频,因为声音不好听,就录了段TIMELAPSE,怀念一下逝去的童年。视频链接:
http://xunyun17.xyz/iottimelapse/lesson1.mp4
因为网站带宽不大,可能会很卡,大家可以下载下来看。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。