用盡了全力,把Socket傳向ESP8266之後,終於可以百分百設定連上家中AP
再也不用擔心北美的客戶因為配不上線而退貨
地球也恢復往日的平靜,同樣的森林、同樣的天空、同樣偶爾飄過的烏雲,還有同樣的地球人
看著這個還不會動的專案,PHP愈看愈想笑,PHP終於忍不住了
哈哈哈! 你們這群阿呆! 少了我和MySQL,你們是想把資料存在哪裡?
Android和ESP8266四眼相望 是啊!沒有資料庫要怎麼送SCI的人類行為探討
啍! 配角少來這裡搶戲! RD腦回應了
Android、ESP8266、PHP和MySQL同一時間鞠躬哈腰像個太監似的異口同聲說
RD大人好,我們這就下去洗洗睡了
接下來我們安裝xampp這個懶人包,然後設定環境變數讓Windows命令列可以執行PHP指令,因為使用WIN10,所以會長的如下圖
然後在CMD下輸入php subscribes.php,這樣就把PHP檔在後台開起來了啊!
哦哦哦! 原來是這樣! 搞得我也想做RD啊! PM腦說
啍! 你還是多看一點線上課程吧 RD腦插腰背對PM腦說
接下來燈座與PHP + MySQL的交互流程會是這樣
1、先丟初始值上去,也就是名字(上一章我們叫room)
2、再丟BLE掃瞄到的數據
什麼! 這麼簡單! PM腦說
是的,就是這麼簡單 RD腦推了推眼鏡接著說
在PHP裡面要有判斷式
1、如果燈座沒註冊過就用Insert,如果註冊過就用Update
2、BLE送上來的資料要存在哪兒
所以PHP寫法如下
<?php
//
subscribe.php
require("/phpMQTT.php"); //同個資料夾下,要有phpMQTT.php這個檔案
$host = "127.0.0.1";
$port = 1883;
$username = "";
$password = "";
$mqtt = new phpMQTT($host, $port, "ClientID".rand());
if(!$mqtt->connect(true,NULL,$username,$password)){
exit(1);
}
//currently subscribed topics
$topics_update_BLE['hello/update_BLE_data'] =
array("qos"=>0, "function"=>"procmsg");
$topics_add_data['hello/add_data'] = array("qos"=>0,
"function"=>"procmsg1");
$mqtt->subscribe($topics_update_BLE,0);
$mqtt->subscribe($topics_add_data,0);
while($mqtt->proc()){
}
$mqtt->close();
function procmsg($topic_update_BLE,$msg){
$NewString = explode('\\', $msg,5);
//echo "you got it: $msg";
mysql_connect("localhost","root","") or
die("connect error!");
mysql_select_db('ktwhost_sco-oc') or die("db error");
mysql_query("insert into
Log_PeripheralWithCentral(PeripheralID,CentralID,RSSI,Distance) values
('$NewString[1]','$NewString[2]','$NewString[3]','$NewString[4]')");
echo 'Update_BLE_data success ';
}
function procmsg1($topic_add_data,$msg){ //一開始的註冊
$date_now = date("Y-m-d H:i:s");
$NewString = explode('\\', $msg,6);
//echo "you got it: $msg";
mysql_connect("localhost","root","") or
die("connect error!");
mysql_select_db('Simple Care') or die("db error");
$query = mysql_query("SELECT *FROM `Data_Central`WHERE 1 AND
`CentralID` = '$NewString[1]'");//找找看這個ID有沒有註冊過
$nums=mysql_num_rows($query); //判斷去資料庫撈的是否為空值
if($nums>0)//這裡的時間不對,有BUG,找時間修改
{//不是空值就UPDATE
mysql_query("UPDATE data_central SET CentralName
='$NewString[2]',GPS_N ='$NewString[3]',GPS_E ='$NewString[4]',DatetimeEdit
='$date_now' WHERE CentralID = '$NewString[1]'");
echo "UPDATA DATA success";
}
else//是空值就新插入
{
mysql_query("insert into
data_central(CentralID,CentralName,GPS_N,GPS_E,DatetimeCreate) values
('$NewString[1]','$NewString[2]','$NewString[3]','$NewString[4]','$date_now')");
echo "INSERT DATA success";
}
}
?>
在MySQL的地方,我們設計了2張表格
1、Log_PeripheralWithCentral
– 這是BLE掃瞄上傳的數據
2、Data_Central
– 這是一開始使用者設定的數據
在Log_PeripheralWithCentral會有一堆的數據,BLE我們設定每4秒掃瞄一次
假設這個家裡只設定一位長輩,在1分鐘內一個燈座就有15筆資料
使用三角定位法,代表15x3 = 1分鐘內有45筆資料
1小時有2700筆資料,一個人一天就有64800筆資料
所以PM腦才說可以用這個數據來挖礦,順便做做AI,還可以送SCI
所以在Log_PeripheralWithCentral 會長這樣
而在Data_Central會長成這個樣子
(為了呈現給讀者看資料庫長什麼樣子,使用了Sokit軟體測試,故第26列與27列的值,是隨便設定的,不是實際燈座上傳的值)
這樣只要燈座連線家裡的AP,就可以送掃瞄的數據啦! PM腦開心的說
RD腦回:沒錯! 你終於有所成長了 PM腦!
本體: BLE送上的數據有PeripheralID、CentralID、RSSI與Distance,而Distance是用三角定位法算出來的,後面的章節將會說明
我建議使用CodelobsterIDE
回覆刪除Ches拔的學習筆記: 第三章:Php Mysql + Mqtt >>>>> Download Now
回覆刪除>>>>> Download Full
Ches拔的學習筆記: 第三章:Php Mysql + Mqtt >>>>> Download LINK
>>>>> Download Now
Ches拔的學習筆記: 第三章:Php Mysql + Mqtt >>>>> Download Full
>>>>> Download LINK