本文目的,使用微信公众号控制ESP8266的LED开和关。进一步使用微信当遥控器(避免写APP或者IOS或者小程序),控制一切设备。给两个关键的总教程参考。
目前整体测试效果
打开微信,关注自己的公众号
功能结构图
1.申请认证公众号&开通设备功能1.1公众号申请: https://mp.weixin.qq.com
个人订阅号
功能有限,不能有设备管理模块功能,本教程系列使用的是订阅号,做一个测试足够了。
企业服务号
注册必须要有公司信息,法人等组织代码,个人用不了。 某宝上可以买个临时用下测试。
可以拥有设备管理功能,简单来说可以生产100个设备(例如大气传感器),每个用户可以对应自己的设备
必须报备后才能使用80端口网页服务功能,其实报备也很快,但是嫌麻烦没使用。
找个外国的服务器,没有报备的限制。
本教程使用的外网服务器
https://my.vultr.com
自己买一个。
这里教程是centos6系统镜像
和微信服务器交互,我们需要80或443端口,服务器端口默认需要开启,才能被外界访问。
第一层,登陆网页服务器管理界面添加安全组
第二层 ,系统本身的防火墙开启端口(测试阶段粗暴地关了防火墙)
阿里云如何添加安全组开放端口
本教程的外网服务器如何开启端口
centos6系统下,搭建Web服务器(apache + php + mysql)
教程
安装yum install httpd
启动service httpd start
暂停service httpd stop
重启service httpd restart
检查开机启动情况chkconfig --list httpd
默认情况下是全部关闭的,尽量设置开机启动,以防主机意外关机
设置开机启动命令chkconfig httpd on
再次检查启动情况,看到2,3,4,5为启动
关闭开机启动命令chkconfig httpd off
到此Apache安装完成,在自己浏览器中输入主机IP和端口号能正常打开
(不能打开重启下服务器)
Apache的默认网站根目录
/var/www/html
配置文件路径
/etc/httpd/conf/httpd.conf
yum install phpyum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpcyum install php-mysql
以上命令为安装php及其支持的组件
测试是否安装成功
在这个文件夹下,创建一个info.php文件
vi /var/www/html/info.php
(不喜欢vi命令编辑的,可以把文件拖到windos上修改,后再复制过去)
<html><body><h1>It‘s work!</h1><?php echo ‘HELLO WORLD‘; phpinfo();?></body></html>
重启Apache服务器
在浏览器地址栏访问:http://自己的服务器IP/info.php
首先查看主机是否已经安装
rpm -qa|grep mysql
注意:可能检查中安装有php-mysql XXXXX 和 mysql-libXXXX,这是刚刚第二步安装的php的组件,不必理会
已经安装的话就执行删除命令
rmp -e mysql
然后继续安装
使用命令
yum list | grep mysql
来查看yum上提供的mysql数据库可下载的版本
安装命令
yum install -y mysql-server mysql mysql-devel
等待一段时间安装成功
接下来是对mysql的配置(注意:命令中是”mysqld”,不是mysql)
初始化:
service mysqld start
重启:
service mysqld restart
配置开机自动启动:
chkconfig mysqld on
为mysql的root账户设置密码:
mysqladmin -u root password ‘*********‘
改密码后要重启Mysql服务器
登录命令
mysql -u root -p
教程 https://blog.csdn.net/qq_25371579/article/details/78476186
需要在httpd.conf中添加以下代码,修改后重启Apache服务
把这个文件拖到windons上,修改
添加
LoadModule php5_module modules/libphp5.soAddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps
然后文件重新复制回去,修改后重启Apache服务
从官网上下载下来(注意版本号,看是否支持本机的MySql和PHP),直接放在网站根目录下,在浏览器中输入相应的地址就可以访问,登陆后即可管理
测试,在网页里输入自己的服务器的IP,自动跳转php测试样例
至此网页服务器搭建完毕
1下载SDK
链接:https://pan.baidu.com/s/1YKzOOqNxUyGiso4SlyAc5g
提取码:tn4x
2 将SDK放在服务器下
注意路径,后面配置微信公众号需要用到,不能出错。
/var/www/html/WeChat
5-1 个人申请订阅号做的测试
公众号申请: https://mp.weixin.qq.com
订阅号是不用交钱的,就目前我们控制LED订阅号是足够了的
订阅号公众号设置
公众号申请好之后登陆,然后进行开发者设置。
说明:
服务器路径一定要填写对,是微信SDK文件下的的index.php
/var/www/html/WeChat
对应填写 : 服务器IP+/WeChat/index.php
不是/var/www/html/下面的index.php(安装网页服务器的测试网页)
根据实际的sdk路径填写地址。
看上图填写完成之后就点击提交,不出意外就显示提交成功。成功后如上图
打开微信,关注自己的公众号
现有功能是
核心代码解析
核心代码解
这里推荐使用PHPStorm,可以有智能提示,可以追踪函数实现等。当然你用其他工具也可以。
[kenrobot_code]<?php require(‘wechat/Wechat.php‘); class TestWechat extends Wechat { /** * 收到文本消息时触发,回复收到的文本消息内容 * * @return void */ protected function onText() { $this->responseText(‘收到了文字消息:‘ . $this->getRequest(‘content‘)); } } $wechat = new TestWechat(array( ‘token‘ => ‘weixin‘, ‘aeskey‘ => ‘xxx‘, ‘appid‘ => ‘xxx‘, ‘debug‘ => true )); $wechat->run();[/kenrobot_code]
这个是库里面自带的例子,功能就是你给你的公众号发个内容,他在前面加上 收到了文字消息:
我们重点看看onText函数。这个函数里面有两个函数。
$this->responseText(参数是字符串)这个就是给你回复。$this->getRequest(‘content‘))这个就是解析你发送来的文字消息返回值是字符串。
原教程给的是通过把微信发来的消息保存成txt文件,然后ESP8266不断请求这个txt文件,获取内容判断然后做出开关灯命令。
原教程
作为一个测试足够了,但是后期多用户访问时候,如下问题:
1 涉及身份识别和产品用户绑定问题.
大白要查询和控制自己的安防开关,首先服务器要知道是大白发来的请求,其次还要根据产品唯一ID找到大白绑定的设备。不能把小明的触感器数据发过去。
企业申请的服务号具备这个功能。,例如
https://iot.weixin.qq.com/wiki/new/index.html?page=5-5
●用户用微信配置设备联网&绑定方案一(推荐):设备上张贴“每种型号唯一的二维码”,用户扫码后通过Airkiss配网并绑定设备(http://iot.weixin.qq.com/wiki/new/index.html?page=4-6)方案二:设备上张贴“每个产品唯一的二维码”+用户扫码后绑定设备+进入公众号再通过Airkiss配网●空调遥控器方案一:厂家利用微信提供的标准控制模板,链入公众号菜单方案二:厂家自己开发的H5控制页面,链入公众号菜单●空调售后服务方案:厂家开发H5页面,链入公众号菜单