微信硬體平臺 (1) 總說明
微信硬體平臺
本文目的,使用微信公眾號控制ESP8266的LED開和關。進一步使用微信當遙控器(避免寫APP或者IOS或者小程式),控制一切裝置。給兩個關鍵的總教程參考。
目前整體測試效果
開啟微信,關注自己的公眾號
功能結構圖
1 公眾號註冊
1.申請認證公眾號&開通裝置功能 1.1公眾號申請: https://mp.weixin.qq.com
個人訂閱號
功能有限,不能有裝置管理模組功能,本教程系列使用的是訂閱號,做一個測試足夠了。
企業服務號
註冊必須要有公司資訊,法人等組織程式碼,個人用不了。 某寶上可以買個臨時用下測試。
可以擁有裝置管理功能,簡單來說可以生產100個裝置(例如大氣感測器),每個使用者可以對應自己的裝置
2 自己的伺服器搭建
2-1伺服器搭建
第一種方案 阿里雲伺服器搭建
必須報備後才能使用80埠網頁服務功能,其實報備也很快,但是嫌麻煩沒使用。
第二種方案
找個外國的伺服器,沒有報備的限制。
本教程使用的外網伺服器
自己買一個。
這裡教程是centos6系統映象
2-2 開放伺服器埠
和微信伺服器互動,我們需要80或443埠,伺服器埠預設需要開啟,才能被外界訪問。
第一層,登陸網頁伺服器管理介面新增安全組
第二層 ,系統本身的防火牆開啟埠(測試階段粗暴地關了防火牆)
阿里雲如何新增安全組開放埠
本教程的外網伺服器如何開啟埠
3 搭建Web伺服器(apache + php + mysql)
centos6系統下,搭建Web伺服器(apache + php + mysql)
安裝apache
安裝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
安裝php
yum install php yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc yum 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
安裝mysql
安裝
首先檢視主機是否已經安裝
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
配置Apache使其支援PHP
教程 https://blog.csdn.net/qq_25371579/article/details/78476186
需要在httpd.conf中新增以下程式碼,修改後重啟Apache服務
把這個檔案拖到windons上,修改
新增
LoadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
然後檔案重新複製回去,修改後重啟Apache服務
裝MySql圖形管理介面phpMyAdmin
從官網上下載下來(注意版本號,看是否支援本機的MySql和PHP),直接放在網站根目錄下,在瀏覽器中輸入相應的地址就可以訪問,登陸後即可管理
測試,在網頁裡輸入自己的伺服器的IP,自動跳轉php測試樣例
至此網頁伺服器搭建完畢
4 配置微信SDK
1下載SDK
連結:https://pan.baidu.com/s/1YKzOOqNxUyGiso4SlyAc5g
提取碼:tn4x
2 將SDK放在伺服器下
注意路徑,後面配置微信公眾號需要用到,不能出錯。
/var/www/html/WeChat
5 配置微信公眾號
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路徑填寫地址。
看上圖填寫完成之後就點選提交,不出意外就顯示提交成功。成功後如上圖
6 測試
開啟微信,關注自己的公眾號
現有功能是
7 微信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'))這個就是解析你傳送來的文字訊息返回值是字串。
8 微信控制LED 對接硬體ESP8266
原教程給的是通過把微信發來的訊息儲存成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頁面,鏈入公眾號選單