曾妍
(四川信息職業技術學院 四川 廣元 628017)
基于物聯網的照明控制系統是以ZigBee、單片機、傳感器、C#和PHP程序設計為主要技術手段,包括照明控制單元、ZigBee無線傳輸層(含網關)、PC展示及控制層3個層次的現場控制單元、CC2430無線傳輸網絡、ARM網關硬件單元、ARM網關客戶端軟件、基于C#的服務端軟件、基于PHP[1]的展示軟件等6個子系統,用于實現一套模擬城市照明控制系統。
基于PHP的展示軟件所需實現的功能是用網頁的方式對基于物聯網的照明控制系統進行展示,包括對網關主持、終端節點注冊,遠程開關燈控制,以及網關和終端節點的報表、實時數據展示,讓用戶更加清楚的了解該系統。
PHP即Hypertext Preprocessor(超文本預處理器)的縮寫,是基于服務器端運行的腳本程序語言,用于實現數據庫和網頁之間的數據交互。圖1展示一個完整的PHP系統的構成,以及客戶通過瀏覽器訪問PHP網站系統的過程。
控制系統的環境溫度、濕度、亮度、電壓、電流dev_endpoint表用于存儲終端節點的注冊信息,其中有節點名稱、物理地址、網絡地址、所屬網關、部署時間、部署位置等。dev_gateway表用于存儲網關設備的注冊信息,其中有網關名稱、網關地址、接入端口、部署時間、部署位置等。kongzhi表用于存儲遠程控制時下發的開燈,關燈指令。當服務器采集到表中的信息后向網關逐級下發指令,最后達到開關燈效果。zhuce表中的信息記錄的是用戶注冊新賬號時所填寫的個人基本信息,如:賬戶、密碼、email、性別,從而用戶可以通過注冊過的賬戶和密碼在登陸界面進行登陸,再進入操作窗體界面。
本項目中,數據庫[2]共設計有 5張表,分別是data、dev_endpoint、dev_gateway、kongzhi、zhuce。 data 表用于存儲 照 明
本系統包括登陸模塊、設備注冊模塊、遠程控制模塊、數據報表模塊、實時數據模塊、基本信息模塊[3]。其中,登陸模塊[4]用于實現用戶管理,注冊管理功能;設備注冊模塊用于注冊系統的網關和終端節點;遠程控制模塊用于對路燈的遠程開關燈進行控制;數據報表模塊用于表示系統的數據;實時數據模塊用于展示節點上傳的實時數據;基本信息模塊簡單介紹了整個系統。
在設計模塊軟件代碼前首先要連接服務器,連接服務器的主要代碼為:
$db_host='127.0.0.1'; //服務器地址
$db_user='root'; //數據庫用戶名
$db_pw=''; //數據庫密碼
$db_name='denglu'; //數據庫名稱
//$dbcharset='GBK'; //MySQL編碼格式
$conn =mysql_connect ($db_host, $db_user,$db_pw) or die("系統維護中");
mysql_query("set character set GBK");
mysql_query("set names GBK");
@mysql_select_db($db_name,$conn) or die("數據庫訪問錯誤".mysql_error());
?>
3.2.1 用戶注冊
注冊新用戶,需向數據庫寫入賬戶、密碼、確認密碼、email、性別等信息。在運行時,首先連接服務器,然后向數據庫zhuce表中寫入注冊的新信息,在用戶注冊后將跳轉到登陸界面。新用戶注冊的代碼設計分靜態代碼的設計和動態代碼的設計。新用戶注冊的代碼設計分靜態代碼的設計和動態代碼的設計。主要靜態代碼如下:
function Check()//驗證表單數據有效性的函數
{
if(document.send.username.value=="") {
window.alert('請輸入用戶名!');
return false;
}
if(document.send.username.value.length<4) {
window.alert('用戶名長度必須大于 4!');
return false;
}
if(document.send.password.value=="") {
alert('請輸入密碼!');
return false;
}
if(document.send.password.value.length<6) {
alert('密碼長度必須大于 6!');
return false;
}
if(document.send.email.value==""){
alert('請輸入 Email!');
return false;
}
if(document.send.email.value.indexOf("@")==-1){
alert('請輸入有效的 email地址!');
return false;
}
return true;
}
主要動態代碼如下:
include"conn.php";
//print_r($_POST);
?>
$username=@$_POST[username];
$password=@$_POST[password];
$cpassword=@$_POST[cpassword];
$email=@$_POST[email];
$sex=@$_POST[sex];
$sql="insert into zhuce set username='$username',password='$password',
cpassword='$cpassword',email='$email',sex='$sex'";mysql_query($sql);
echo"<---->";
//echo$sql
//echo mysql_error();
?>
3.2.2 用戶登陸
登陸窗體的功能是設置限權管理,登陸成功后,對各個模塊進行操作。
新用戶在注冊以后,在登陸界面輸入已經注冊過的賬戶和密碼,如果輸入的賬戶和密碼有誤,則系統會提醒“賬戶或密碼有誤,請重新登陸”,如果輸入成功則跳轉到窗體操作界面。登陸時的代碼設計首先連接服務器,然后查詢數據庫中的zhuce表是否與登陸的賬戶和密碼一致,如果登陸的賬戶和密碼已經注冊并輸入正確,則跳轉到系統操作窗體,否則跳轉到重新登陸的界面。
3.3.1 網關設備注冊
網關設備注冊[5]時需要添加網關的網關名稱、網關地址、接入端口、部署時間、部署位置。將添加的新網關設備數據下發到MySQL數據庫中,進而對照明控制系統逐級添加。
3.3.2 終端節點注冊
終端節點注冊時需要添加節點的節點名稱、物理地址、網絡地址、所屬網關、部署時間、部署位置。將添加的新節點數據下發到MySQL數據庫中,進而對照明控制系統逐級添加。
遠程控制模塊的設計是寫入物理地址和網絡地址后,對其下發開燈和關燈的指令。
3.5.1 網關設備報表
網關設備報表展示的是照明控制系統的網關設備,把MySQL數據庫中的網關設備進行展示,本設計可以展示最近的5次網關設備。
3.5.2 終端節點報表
終端節點報表展示的是照明控制系統的終端節點,把MySQL數據庫中的終端節點進行展示,此設計可以展示最近的5次終端節點。
實時數據顯示的是當前照明控制系統所處的狀態,分別展示了燈的狀態,系統所處環境的溫度、濕度、亮度、電壓、電流。
用戶在進入系統網頁操作窗體前,首先要進行用戶的注冊和登陸,當用戶登陸成功后進入界面如圖2所示。

圖2 網頁設備注冊操作界面Fig.2 Webpage equipment registration interface
在此界面可以進行網關設備注冊,填寫完網關設備注冊的基本信息后點擊“添加網關”按鈕,數據庫就可以獲得添加的網關信息,再進行發送到服務器。
在網頁中添加網關之后將把新增網關信息存儲到數據庫dev_gateway表中,服務器將直接讀取數據庫。圖3展示了添加新的網關后的數據庫dev_gateway表界面。

圖3 數據庫的dev_gateway表Fig.3 Database dev_gateway table
點擊“終端節點注冊”后將彈出相應界面。在此界面可以進行終端節點注冊,填寫完終端節點注冊的基本信息后點擊“添加節點”按鈕,數據庫就可以獲得添加的終端節點的信息,在發送到服務器。在網頁中添加終端節點之后將把新增終端節點信息存儲到數據庫dev_endpoint表中,服務器將直接讀取數據庫。圖4展示了添加新的網關后的數據庫dev_endpoint表界面。

圖4 數據庫的dev_endpoint表Fig.4 Database dev_endpoint table
在網頁中點擊“遠程控制”按鈕,就打開了相應的界面。此界面可以獲取照明系統的物理地址和網絡地址,并對其系統進行開燈關燈操作。在網頁中遠程控制輸入物理地址和網絡地址,并點擊“開燈”或“關燈”按鈕后,將把操作了的信息記錄到數據庫kongzhi表中,服務器讀取到表中的信息,將逐級下發指令,最后到終端節點。圖5展示了遠程控制界面的記錄。

圖5 數據庫的kongzhi表Fig.5 Database kongzhi table
點擊“數據報表”按鈕,也就默認打開了網關設備報表的界面,將彈出相應的界面。
在以上界面中點擊“終端節點報表”將彈出對應的界面。
在網頁中點擊“實時數據”的按鈕后,會彈出照明控制系統的燈的開關狀態,以及環境的溫度、濕度、亮度、電壓、電流的界面。在MySQL數據庫中data表中的信息是采集服務器的信息,在網頁中實時數據的界面也展示了data表中的信息,在數據庫中的data表是提供網頁的讀取。
在進行新用戶注冊后,把個人信息將存儲到MySQL數據庫zhuce表中,然后校驗登陸的賬戶和密碼是否和zhuce表中的數據一致,若一致,則登陸成功,否則需重新登陸。
圖6清晰地展示了數據庫有注冊新用戶的界面。

圖6 數據庫的zhuce表Fig.6 Database zhuce table
設計中,主要是以PHP展示軟件為核心對基于物聯網的照明控制系統進行了簡單的設計與闡述。確定設計方案前必須做好需求分析。設計時,使用動態代碼和靜態代碼要合理,如果使用不當就不能實現設計所要的目的。
[1]潘凱華,鄒天思.PHP開發實戰寶典[M].北京:清華大學出版社,2010.
[2]薩師煊,王珊.數據庫系統設計[M].3版.北京:高等教育出版社,2004.
[3]龐春輝.基于Web企業管理系統的設計[M].大連:大連理工大學出版社,2008.
[4]陳湘揚,陳國益.PHP5+MySQL網頁系統開發設計[M].北京:電子工業出版社,2007.
[5]曾順.精通CSS+DIV網頁樣式與布局[M].北京:人民郵電出版社,2009.
[6]W.Jason Gilmore.PHP與MySQL5程序設計[M].北京:人民郵電出版社,2007.