• 沒有找到結果。

AMFPHP 安裝與測試

第四章 系統實做

4.3 軟體設計與實作

4.3.1 系統安裝與架設

4.3.1.4 AMFPHP 安裝與測試

AMFPHP 是目前 PHP/FLASH REMOTING 函式庫中,最常使用的,除了 是自由軟體,容易取得,安裝也很容易。但近年開發有點停滯,目前版本 停在 1.9。下載解壓縮後,將 amfphp 放置 web server 目錄下,再修改 gateway.php 內容。

進入 amfphp/下,如果出現下列畫面,既表示設定完成。

圖 19 amfphp 安裝測試完成圖 4.3.2 智慧控制伺服器

伺服器利用 C 程式語言撰寫,只負責控制的行為,亦是負責數據變化 的收集(連接 e-DAM9050 資料控制器)或觸發(如有控制動作執行),而 不提供人機介面。

程式流程如下:

程式初始

寫入資料庫

讀取設備資料 讀取設備資料錯誤

寫入資料庫失敗

圖 20 控制伺服器程式設計流程圖 重點程式節錄如下:

程式初始:

定義通訊字串結構:依據規格書(如圖下),將 ModBus/TCP 封包 傳遞的規格定義在程式中,區分為傳送與

00 00 00 00 00 06 01 04 04 7F FF 7F FF

Byte 12: Low byte of second address Byte 11: High byte of second address Byte 10: Low byte of first address Byte 9: Hight byte of first address Byte 7: ModBus function code Byte 6: Unit indentifier-1 (always 1)

Byte 5: Length field-number of bytes following Byte 4: Length field

Byte 3: Protocol indentifier-0 Byte 2: Protocol indentifier-0 Byte 1: Transaction indentifier-0 Byte 0: Transaction indentifier-0

Byte 8: Byte count (each register need two byte)

Response Command

Command Head Command Body

Request:

Char buffer[14];

Buffer[0]=0x00; //Common Head Buffer[1]=0x00;

Buffer[2]=0x00;

Buffer[3]=0x00;

Buffer[4]=0x00;

Buffer[5]=0x06;

Buffer[6]=0x01;

Buffer[7]=0x0F; //Common Body Buffer[8]=0x00;

Buffer[9]=0x10;

Buffer[10]=0x00;

Buffer[11]=0x01;

Buffer[12]=0x01;

Buffer[13]=0x01;

Response:

Buffer[0]=0x00; //Common Head Buffer[1]=0x00;

Buffer[2]=0x00;

Buffer[3]=0x00;

Buffer[4]=0x00;

Buffer[5]=0x06;

Buffer[6]=0x01;

Buffer[7]=0x02; //Common Body Buffer[8]=0x00;

Buffer[9]=0x00;

Buffer[10]=0x00;

Socket 通道建立與連結:

sockfd = socket(PF_INET, SOCK_STREAM, 0);

connect(sockfd, (struct sockaddr*) &dest, sizeof(dest)) 寫入資料庫:

If(insertToMySQL){

Char sql[1024]={0};

sprint(sql,”insert into `eDAM9050`(`Time`,`DI`,`DO`) VALUES (NULL, %d,

%d)”)

if(mysql_query(mysql, sql)){

printf(“\nFailed, sql=%s\n”,sql);

} }

4.3.3 使用者圖形介面設計

為了考量使用者容易操作及使用,我們使用 Adobe Actionscript 3.0 為開發工具。並以監測門窗感測器(磁簧開關 DI)及控制電力開

圖 21 使用者介面程式設計流程圖 重點程式節錄如下:

相關圖片載入及增加至舞台中。

lightOnBmpD = new light_on(0,0);

lightOffBmpD = new light_off(0,0);

powerOnBmpD = new btnPowerOn(0,0);

powerOffBmpD = new btnPowerOff(0,0);

controlLightBmp[0] = new Bitmap();

controlLightBmp[0].bitmapData = lightOffBmpD;

controlLightBmp[0].x = 100;

controlLightBmp[0].y = 130;

addChild(controlLightBmp[0]);

按鈕進行監控:

按鈕進行監控,當按下時,寫入適當值。

btnLight[0].addEventListener(MouseEvent.CLICK, mouseDownHandle0);

public function mouseDownHandle0(e:MouseEvent):void {

if (! onStatu[0]) {

tmpDO = 1;

controlLightBmp[0].bitmapData = lightOnBmpD;

btnLight[0].label = "OFF 關";

onStatu[0] = true;

updateLightStatus(tmpDO);

} else {

tmpDO = 1;

controlLightBmp[0].bitmapData = lightOffBmpD;

btnLight[0].label = "ON 開";

onStatu[0] = false;

updateLightStatus(tmpDO);

}

更新資料庫:

將讀取之值,寫入資料庫中。

public function updateLightStatus(tmpDO:int) {

updateDO = tmpDO * 65536;

trace(updateDO.toString());

connection.call("edam9050.setStatus", responderSet, updateDO);

}

顯示目前狀態(讀取資料庫):

public function onResult(Result:Object):void {

var lightData:Array = Result.serverInfo.initialData;

tmpDI = lightData[0][2];

tmpDO = lightData[0][3];

tmpTime = lightData[0][1].toString();

msg_Time.text = tmpTime;

trace("DO: "+tmpDO.toString(2));

for (x=0; x<3; x++) {

if (tmpDO & Math.pow(2,x)) {

controlLightBmp[x].bitmapData = lightOnBmpD;

btnLight[x].label = "OFF 關";

onStatu[x] = true;

} else {

controlLightBmp[x].bitmapData = lightOffBmpD;

btnLight[x].label = "ON 開";

onStatu[x] = false;

} }

{

if (tmpDO & Math.pow(2,x)) {

controlLightBmp[x].bitmapData = powerOnBmpD;

btnLight[x].label = "OFF 關";

onStatu[x] = true;

} else {

controlLightBmp[x].bitmapData = powerOffBmpD;

btnLight[x].label = "ON 開";

Ostube 主要提供影片、音樂、圖片檔案之管理。類似近年熱門的 YouTube 影片分享網站,隨時將手機或攝影機拍下的影片上傳,分享與管 理。

完整建置步驟如附件二,首頁畫面如圖 21。

圖 22 家庭多媒體伺服器 ostube 首頁 4.3.5 系統整合

操控介面與功能決定一個系統的成敗,為了整合智慧家庭中的各項 管理介面,讓家中成員,輕鬆與快速找到相關網站,本研究搭配

myfav.es 網站,所提供的管理介面,如圖 22,讓成員不管是上網,或 是控制家中設備,享受影音多媒體,透過該介面迅速進入所需服務中。

圖 22 智慧家庭管理介面

4.4 結果與討論

本實驗利用自由軟體特性完成研究中所架設系統及應用服務。包含 Ubuntu 作業系統,Apache 2 網站伺服器,PHP 網頁動態語言,MySQL 關聯 式資料庫,Ostube 影音多媒體服務。也利用 GCC Compiler 編譯器,製作 自行開發的智慧控制伺服器。

隨著網際網路的蓬勃發展,應用於自動控制與監控系統也以越來越成 熟。本研究將工業應用已成熟及穩定的分式模組資料蒐集器,架設於家庭 中,收集感測器所需資訊。在設計初期就考量其分散式特性,可輕鬆調整 或維護系統。

建置家庭多媒體服務(影音伺服器),主要提供居家主人收藏之多體 影音檔案,在現今科技的時代,傳統的 CD,DVD 保存的影片,音樂,相片 等檔案,可同時存入電腦中,方便於播放及查詢欣賞。

遠端監控主要是使用者利用 Flash 所製做的圖形介面,透過 Web Server HTTP 協定,及 Amfphp 閘道器,與智慧控制伺服器溝通,進行讀取最新狀 態與寫入等功能。管裡介面如圖

圖 23 智慧家庭電器控制介面

在完成以上自動化與資訊化的建制時,仍然保留傳統電氣迴路與控制 面板。讓不熟悉新科技的家中老少,能繼續使用傳統控制方式,或當另一 組備援系統。

4.5 未來研究方向

智慧建築已是未來發展趨勢,本研究僅是初步成果,上有許多功能未 完成,整理下列內容以供參考,未來如果經費與時間許可,可繼續朝此方 向研究。

*增加硬體感測器的結合,更方便的得到所需資訊。例如結合 RFID、

Zigbee、藍牙等相關技術,適時提供更人性化的服務。

*增強智慧控制伺服器功能,撰寫模組化結構,可依需求增加或刪除 相關服務,讓伺服器便於擴充及增加功能。

*遠端遙控方面,希望設計不要安裝軟體,透過瀏覽器就能進行遙控。

例如使用 Html5,Javascript 等新技術,就可不限於任何平台,均可進行 遙控。

4. 智慧家庭發展的內容,會以多媒體娛樂為主,配合週邊產品,大幅 提昇智慧家庭生活品質。

最後,智慧家庭不必然是全部的東西都需要智慧化,而是以實際的需 求來考量。本文中所介紹的實例,也可以作為傳統家庭,要進行智慧化時 的參考依據。

參考文獻 科技與管理學術研討會論文集,pp339-347

[6]陳立元 范逸之 廖錦棋,Visual Basic 2005 與自動化系統監控,文魁

技術學院,2010/05

[11]鳥哥,鳥哥的 Linux 私房菜,http://linux.vbird.org/

[12]李蔚澤,Ubuntu 9.10 Linux 全方位學習,碁峰出版社,九十八 [13]宓哲民,顏見明,劉春山,人機介面圖形監控,全華科技,九十八 [14]龍仁光,PLC 與網路監控,高立圖書,九十四

[15]湯秉翰,Linux 系統建置與實務,博碩文化股份有限公司,民國九十 八

[16]林新德,Flash +PHP 資料庫網站開發設計,博碩文化股份有限公司,

民國九十九

[17]王郁茹,DIGITIME,寬頻與無線 2010/06,智慧家庭未來趨勢 [18]劉家瑜,電電時代 2009/9,注入 ICT 居家生活變得更聰明 [19]維基百科,http://www.wikipedia.org

[20]LabVIEW 網站,http://zone.ni.com/devzone/cda/tut/p/id/5980 [21]台灣大學,台大智活,http://insight.ntu.edu.tw/

[22]交通大學,健康樂活城,http:// www.ecocity.org.tw/

[23]博文科技,http://www.inlog.com.tw

[24]自由軟體與資訊公民聯網,http://fsoss.fcu.org.tw/

[25] 黃重憲,淺談雲端運算,臺灣大學電機資訊學院資訊工程系電子報,

第 0008 期,2009/3/20 發行

[26] 行政院主計處,97 年電腦應用概況報告

附件一:

安裝 Ubuntu 作業系統

Windows 視窗的普及與易於操作,讓 Linux 作業系統安裝也變得更容 易與更簡單了。其中 Ubuntu 系統的安裝僅需七個步驟,分別說明如下:

安裝作業系統前,需準備好系統開機光碟片。當然也可透過網路其他不同 媒體安裝,但以光碟開機安裝最為普及。

放入 Ubuntu 作業系統光碟片,並設定開機讀取 CD-ROM,開機後就會出現 下列畫面。

選擇中文語言

選擇安裝 Ubuntu

進入歡迎畫面

選擇時區

選擇鍵盤配置

選擇安裝硬碟位置,一般可將系統與資料分開存放,可分割兩個磁區。以 便系統故障,資料還繼續保存,僅需重新安裝系統即可。

設定使用者名稱及密碼

開始安裝系統

附件二:

Ostube 2.6 多媒體影音伺服器安裝:

1.下載 osTube 2.6 軟體,解壓縮至 Web 網站目錄中,例如:/var/www

#tar zxvf ostube_community_edit_2.6.tar.gz 2.設定 ostube 資料夾權限

#chown –R www-data:www-data /var/www/ostube2

3.再瀏覽器中,網址輸入:http://127.0.0.1/ostube2/,既可進行安裝動 作。

4. 先檢查主機中是否安裝相關軟體。

如有缺少,可直接透過 ubuntu 系統指令安裝。

#apt-get install php5-gd

#apt-get install mplayer

#apt-get install mencoder

#apt-get install ruby

#apt-get install flvtool2 5. 輸入資料庫名稱及管理密碼。

6. 設定管理者密碼。

7.伺服器安裝完成

8. 移除 install 資料夾

9. 進入首頁

10. 登入後台管理介面,更改相關設定。

II.修改相關設定

在 Ubuntu 系統中,/var/www/cgi-bin/預設是沒有啟動,所以需修改。

編輯/etc/apache2/sites-available/default scriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory “/usr/lib/cgi-bin">

AllowOverride None

更改為下列內容:

scriptAlias /cgi-bin/ /var/www/cgi-bin/

AllowOverride None 重新開啟 Apache

#sudo /etc/init.d/apache2 restart

修改 ostube2 目錄中 cgi-bin 裡的 uu_default_config.pm

#sudo vi /var/www/ostube2/cgi-bin/uu_default_config.pm

upload_dir=>$ENV{`DOCUMENT_ROOT'}. `/ostube2/media/tmp/', redirect_url=>'http://'. $ENV{`SERVER_NAME'}.

`/ostube2/upload.php',

path_to_uplaod=>'http://'. $ENV{`SERVER_NAME'}.

`/ostube2/uploads/',

#cp * /var/www/cgi-bin 下

完成 ostube 多媒體影音伺服器安裝。