主要是为了 记录 物联网的基础通讯流程
1 arduino 相关
硬件准备Arduino UNO一块
ESP12E Shield一块
将 8266 开发板 插入 arduino uno
void setup()
{
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop()
{
delay(1000);
Serial.print("cmd=upload&device_name=arduino&data=");
Serial.print(random(1000));//send a random number
Serial.println("&uid=doit_demo&key=a4b4c7cbc8685cc5309d60647cae546b");
}
注意烧写的时候 两个开关全部OFF ,不然烧写不上去
运行的时候 全部 ON
这一段代码 是子弹 ,那么目标呢 ?
目标就是 serial
2 esp8266 开发板
不要问我为什么要用 esp8266 因为穷 !!!
开发板获取serial里面的内容 然后向外发送
模块上电,在配置模式下模块WiFi信号:“DoitWiFi_Config”。密码为:“12345678”。
用手机在浏览器输入WiFi扩展板地址:192.168.4.1打开配置页面。
选择sta client tcp 这三项 ,不上图了, 自己看 ,有个下拉框框 ,会自动选一个 你当时环境下的ap路由,记得改成你要用的ap路由
配置 平台基于TCP通讯,服务器IP: www.mengfeifei.com 端口:9390
问题出现了 :我php用的是 url,你这ip+端口 如何整
3 apache 服务器配置
我的做法是 开启apache 的一个新端口, 对应上php的目录
还记得把php名字改成 index.php ,我就是这么做的
我用的是 ubuntu 14.04
修改/etc/apache2# cat ports.conf
NameVirtualHost *:80
Listen 80
NameVirtualHost *:9390
Listen 9390
以及 /etc/apache2/sites-enabled/000-default
<VirtualHost *:9390>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/baiduyun/Baidu-Push-Server-SDK-Php-3.0.1/demo
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/baiduyun/Baidu-Push-Server-SDK-Php-3.0.1/demo/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
记得 端口号 要一致 我就错了一次
然后
/etc/init.d/apache2 restart
4 开始调试
插上了 电
怎么看啊 , 我用的是 笨方法
cat /var/log/apache2/access.log
哈哈 看 log记录
112.26.198.112 - - [31/Dec/2015:16:44:45 +0800] "cmd=upload&device_name=arduino&data=606&uid=doit_demo&key=a4b4c7cbc8685cc5309d60647cae546b" 200 93 "-" "-"
112.26.198.112 - - [31/Dec/2015:16:44:50 +0800] "cmd=upload&device_name=arduino&data=167&uid=doit_demo&key=a4b4c7cbc8685cc5309d60647cae546b" 200 93 "-" "-"
过一会 之后 我的手机就不停的收到 百度云的推动了 (百度云要自己配置好,包括php服务器端和 手机客户端)
附上服务器端 php代码
<?php
/**
* *************************************************************************
*
* Copyright (c) 2014 Baidu.com, Inc. All Rights Reserved
*
* ************************************************************************
*/
/**
*
* @file hello.php
* @encoding UTF-8
*
*
* @date 2015骞?鏈?0鏃?
*
*/
// header('Access-Control-Allow-Origin: *')
require_once '../sdk.php';
header('Access-Control-Allow-Origin: *');
// 鍒涘缓SDK瀵硅薄.
$sdk = new PushSDK();
$channelId = '4577444210869810647';
echo $_GET['a'], "<BR>";
echo $_GET['b'], "<BR>";
echo $_GET['cmd'], "<BR>";
//echo $_GET['device_name'], "<BR>";
//echo $_GET['data], "<BR>";
//echo $_GET['uid'], "<BR>";
//echo $_GET['key'], "<BR>";o $_GET['b'], "<BR>";
//$str = file_get_contents("php://input");
//$arr=array();
//parse_str($str,$arr);
//echo 'name:'.$arr['a']."<br/>".'age:'.$arr['b'];
// message content.
$message = array (
// 娑堟伅鐨勬爣棰?
'title' => 'Hi!Doctor ' . $_GET['a'],
// 娑堟伅鍐呭
'description' => $_GET['b'] . "hello, this message from LCFC push service."
);
// 璁剧疆娑堟伅绫诲瀷涓?閫氱煡绫诲瀷.
$opts = array (
'msg_type' => 1
);
// 鍚戠洰鏍囪澶囧彂閫佷竴鏉℃秷鎭?
$rs = $sdk -> pushMsgToSingleDevice($channelId, $message, $opts);
// 鍒ゆ柇杩斿洖鍊?褰撳彂閫佸け璐ユ椂, $rs鐨勭粨鏋滀负false, 鍙互閫氳繃getError鏉ヨ幏寰楅敊璇俊鎭?
if($rs === false){
print_r($sdk->getLastErrorCode());
print_r($sdk->getLastErrorMsg());
}else{
// 灏嗘墦鍗板嚭娑堟伅鐨刬d,鍙戦€佹椂闂寸瓑鐩稿叧淇℃伅.
print_r($rs);
}
echo "done!";
至此为止 ,arduino 只要一上电 我的手机就收到百度云推送了
_______________________________________________________________
一定要注意端口哦 公司的端口有可能上不去