SmartThings是一個智慧型裝置控制系統,它包括:SmartThings Cloud(雲平台)、SmartThings Hub(網關)、SmartThings Mobile(手機用戶端)以及各種關聯的裝置或服務。
假設我們有這樣一個控制情境:當大門開啟,則開啟客廳的電燈,並向主人發送一條簡訊。如何?這一控制呢。首先我們需要一個開關感應器,當大門被開啟的時候,感應器感應並將事件上報到平台,平台收到這一附隨報告之後,控制客廳電燈的開關開啟,同時通過簡訊服務發送一條簡訊息。
當然,諸如感應器、電燈開關這些裝置可能沒有網路介面,無法直接與平台通訊,這時就需要網關作為中轉站。網關負責將感應器的狀態改變抽象成一種事件,上報給雲平台,然後接收並執行雲平台下發的指令。網關並不是必須的,如果一個智慧型裝置具有網路介面並支援SmartThings的通訊協定,完全可以跳過網關直接與雲平台通訊。
SmartThings的應用邏輯是在雲平台中實現的,也就是說“如果...那麼...”這樣的控制邏輯不是在手機用戶端、網關、感應器上處理,而是在雲平台中根據預先設定的條件和邏輯實施控制的。為什麼這樣做呢。SmartThings認為,“裝置”與“智能”應該是分開的,也就是說作為感應器不要求它具有高智能,它只要負責檢測,而通訊部分交由網關完成。在雲平台中,各種感應器事件和裝置操作被抽象成標準的介面,例如Event.ContactSensor.opened表示開關感應器的開啟事件。SmartThings認為把控制邏輯放到雲平台的好處之一,是應用開發人員無需關注具體的硬體,也無需學習硬體相關的編程。我們來看看SmartThings官網上的一個具體例子:
def openedContactSensor(evt, settings) { def light = settings.switch1 if(evt == Event.ContactSensor.opened) { light.on() }}
這個例子實現了一個感應器與開關的關聯控制邏輯。SmartThings甚至推出了基於瀏覽器的開發環境,開發人員可以直接在瀏覽器上開發和發布應用。
雲平台不僅實現商務邏輯,對於終端使用者而言它還是一個市集,開發人員將物聯網應用發布到雲平台,終端使用者通過手機用戶端從平台下載他們需要的應用,再經過簡單配置就可以使用了。還看上面的例子,“當大門開啟,則開啟客廳的燈,並傳送簡訊”,當使用者下載了這個控制邏輯之後,只需要在手機用戶端中指定哪個是大門的感應器,哪個是客廳電燈的開關,以及自己的手機號碼,這個控制邏輯就生效了。此外,手機用戶端還協助使用者管理自己的網關、裝置,以及呈現各種裝置的狀態和事件等。
SmartThings的體系架構分為展現層、智能層、抽象層、串連層和能力層,通過這五個層次的劃分,建立了整合物聯網硬體廠商、物聯網應用開發商、互連網服務提供者以及終端使用者的完整生態鏈。物聯網產業正蓬勃發展,個人和企業都有機會在這個生態系統中找到屬於自己的位置。
SmartThings層次架構圖(引自官方網路)
參考資料: http://www.smartthings.com/#getting-started http://build.smartthings.com/smartapps-overview/ http://build.smartthings.com/the-cloud-first-approach/