(上圖是在網路上找的)在我的想像中基於物聯網的智慧家庭,應是整合居家中的各個區塊,將家庭內的電子設備串聯起來,透過感測與控制使得房間變得有智慧。在智慧家庭主要有幾個重要的區塊,包括有居家環境感測器、安全防範感測器、家用電器控制器、智慧控制中心與雲端伺服器。
其中居家環境感測器、安全防範感測器及家用電器控制器所蒐集到的相關參數會流向智慧控制中心,在智慧控制中心經過分析處理後,若有需要會向家用電器控制器送出相關控制資訊,所有集中至智慧控制中心的資訊均會透過網路送到雲端伺服器進行分析、統計與儲存,若是有控制的需求,也可由雲端伺服器向智慧控制中心送出相關控制的資訊。
今天這一個範例要實作的是由感測器的節點、智慧控制中心與雲端伺服器間資料的傳遞。家庭物聯網是通過的全覆蓋的無線或有線網路(例如WiFi、藍牙、電力線網路等)來組建,以達到智慧家庭中物物相連的的目的。在先前寫的例子有使用藍牙來完成的(由手機透過藍牙控制設備的開與關、
由手機透過藍牙接收設備的類比資料、
簡單的物聯網架構完成、
智慧家庭中多項設備的連結偵測控制、
居家環境參數偵測、
物聯網的資料檢視與 WindowForm以藍牙控制智慧居家設備)
,有使用WiFi來完成的
(由手機透過藍牙控制設備的開與關、
WiFi版簡單的物聯網架構)
,有使用電力線網路來完成的
(智慧居家中電力線通信的應用與WindowForm以藍牙控制智慧居家設備)。由上面的文章可以看出缺少了使用一般有線網路的實作,所以今天的感測器的節點將以有線網路來加以連結。使用的感測器是心率感測器(Pulse SensorXD-58C)
使用的有線網卡是Arduino Ethernet Shield
在心率感測器Arduino端的程式碼是完全採用官方網站的範例程式碼,不然我可是搞不懂這個心率是怎麼計算出來的,呵呵呵
而在Arduino Uno與Arduino Ethernet Shield結合後,使用Ethernet Shield所提供的Ethernet server library在Arduino上建立了一個簡單的網站,當客戶端透過HTTP來連結時可透出感測器的相關數值(跟之前“WiFi版簡單的物聯網架構”相同的架構概念)
要測試是否有正常運作,只要用瀏覽器透過指定給Arduino的IP就可看到感測器偵測到的數值(我是設定一秒測一次),為了便於後續資料的擷取,我在出現的感測值前後加上@符號
完成感測器的節點功能後,接下來就是準備系統的智慧控制中心了。之前在我的許多文章中都是以行動裝置來擔任(Android作業系統,包括"由手機透過藍牙控制設備的開與關"、"由手機透過藍牙接收設備的類比資料""簡單的物聯網架構完成"、"智慧家庭中多項設備的連結偵測控制"、"居家環境參數偵測"、"由手機透過藍牙控制設備的開與關"與"WiFi版簡單的物聯網架構"等),只有“WindowForm以藍牙控制智慧居家設備”是使用Windows作業系統,所以這一個例子也是準備用WindowForm來完成。VB是我慣用的語言,所以使用VB.Net 2015來寫這個常駐程式
想法很單純,這個控制中心程式透過HTTP向各感測器抓取資訊,處理後再將相關的資料透過HTTP傳送到雲端伺服器存到SQL Server中。在這個例中只有一個感測器數值,理論上應該有從多個感測器節點抓取到的多個數值,不過這只是個範例就不用太在意了,呵呵
最後就是雲端伺服器的部分了,這一部分有兩個主要的部分,一個是接收資料寫入SQL Server中
一個是用來做為使用者界面 。在之前的範例中都以Google Chart來做圖,雖然方便,但若是系統沒有連上網際網路會造成沒辦法透出圖來,所以這次乖乖地用MS Chart來做圖
做好使用者界面,在本機執行都沒出現錯誤,但發佈到IIS後由外部網路進來,只要有使用Chart的頁面就會跑出錯誤,網路上查了一下解決方式,為了怕以後發生同樣問題時忘記怎麼修改,將改動Web.config檔的內容放在這裡
完成了,又一天的時間不見了,唉,為什麼每天都有這麼多的事需在忙呢!