[IBM實習]Bluemix與車聯網應用-Geospatial Analytics

Reading time ~1 minute

將裝置搬上雲端後,除了可以分析裝置數據,更能結合地理資訊、天氣資訊、路況資訊等等…外在因素做進一步的應用與整合。本編介紹如何使用Bluemix微服務-Geospatial Analytics搭配iot做車輛進出區域的監控。這樣不只能做到“小孩娃娃車到家門口,家長就收到簡訊了~”,甚至能運用在計程車車隊管控、大樓安全管理、施工區域警示等等…

什麼是Geospatial Analytics服務

Geospatial Analytics是IBM Bluemix的一個地理區域監控服務,可以監控iot裝置在自訂區域內的進出情況。每當裝置在進/出Geospatial Analytics的監控區域時,都會發Command給iot裝置,Command訊息含進/出時間、裝置ID、裝置類型等等…iot裝置在收到此類訊息後,可以根據訊息內容再做相應的動作。相關的應用範例有很多,在此列出:Who & Where – Find out with Bluemix Geospatial AnalyticsSending Vehicle Data to the IBM Watson IoT PlatformMonitor mobile devices with the Geospatial Analytics service

車聯網

Geospatial Analytics服務、iot服務和Node-RED之間的運作關係

車聯網

如上圖,Geospatial Analytics啟動後,會一直不斷接收到iot服務的裝置的經緯度,當Geospatial Analytics發現iot裝置進出所監控區域時,會發出Alert訊息給該iot裝置。在這之中,Node-RED就像一個監控所有服務的機器人,掌握著Geospatial Analytics和iot服務的一舉一動。Node-RED用http node呼叫Geospatial Analytics API,控制Geospatial Analytics的監控區域,同時利用ibmiot node接收iot裝置收到的訊息,我們只要根據這些資料,在Node-RED撰寫程式邏輯,就能開發有趣的GIS物聯網應用!事不遲疑,馬上來將Geospatial Analytics引入我們的主網站吧!

用Node-RED啟動Geospatial Analytics API

(1) 加入geospecial服務

到我們Node-RED的應用程式概觀,新增Geospatial Analytics服務,引入後選擇重新編譯打包,打包過程要稍等一下。

車聯網
車聯網
車聯網

(2) 複製環境變數資訊至剪貼簿保存,待會兒會用到。

車聯網

(3) 請複製Geo Call json code,引入至Node-RED後會見到下方的Node flow。

車聯網

(4) 點擊中間的node: geospatial analytics http call,點擊Edit flow,就可以看到這個subflow內部是如何呼叫geospatial analytics了!

車聯網
車聯網

(5) 幫geospatial analytics,在iot服務建立應用程式金鑰。API金鑰就像iot給應用程式的帳號密碼,應用程式可以藉由這個金鑰取得iot內裝置的資料,概念圖如下面綠色線:

車聯網

有了iot資料後,geospatial analytics才能監控iot裝置進出監控區域的狀況,並發送Alert給iot裝置,如上面概念圖的藍色線。

知道原理後,就開始新增API金鑰吧!產生出來的API金鑰與token一定要記下來!別用丟了~

車聯網
車聯網

(6) 點擊Start geo node,把剛剛申請的金鑰資訊和組織都填入,我們在啟用geospatial analytics服務時,會把iot的設定一起傳送至該服務。function box內的payload參數存放著iot設定,在這裡稍稍介紹一下其中的參數:

  1. uri – iot服務(iot server)的hostname,可以至環境變數查看。
  2. mqtt_input_topics – geospatial analytics藉由訂閱這個topics,接收iot裝置的位置狀態。
  3. mqtt_notify_topic – geospatial analytics藉由這個topics,傳送進出通知給iot裝置。
  4. device_id_attr_name – 當iot裝置傳送狀態給geospatial analytics時,geospatial analytics要以哪個參數為device name。
  5. latitude_attr_name – 當iot裝置傳送狀態給geospatial analytics時,geospatial analytics要以哪個參數為緯度。
  6. longitude_attr_name – 當iot裝置傳送狀態給geospatial analytics時,geospatial analytics要以哪個參數為經度。
車聯網

(7) 叫出剛剛保存的環境變數,往下滾到Geospatial Analytics,模仿下圖更改網址、username和password。

車聯網

(8) 按右上角的Deploy,依照下圖啟動geospatial analytics! 要等幾分鐘!直到回傳OKOK

車聯網

呼叫Geospatial Analytics API

(1) 回到geospatial analytics http call的subflow,更新add region node的URL、username、password

車聯網

(2) 更新remove region node的URL、username、password

車聯網

(3) 更新status node的URL、username、password

車聯網

(4) 更新stop geo node的URL、username、password

車聯網

(5) 更新最後一個label,status node的URL、username、password

車聯網

(6) Deploy後,開啟主網站:http://{node-red host}/cartrack,我們能隨心所欲的在地圖上增減監控區域了!

車聯網

計算車子待在監控區域的時間

車聯網

當Geospatial Analytics偵測到iot裝置進出監控區域時,會傳送Alert給iot服務,Node-RED可藉由ibmiot node獲得iot接收到的Geospatial Analytics Alert,再做更進一步了應用,如接下來的例子:監控車子在監視區域進出的時間。

(1) 請複製geoAlert json code,引入至Node-RED後會見到下方的Node flow。

車聯網

(2) 點擊geoAlert node,再點擊Edit flow,就可以進入這個subflow內部了!

車聯網
車聯網

(3) 點擊ibmiot node: receive geoAlert from IoT,更新node如下圖。

車聯網

(4) Deploy後,畫好車子會經過的監控區域,按下Debug node,我們可以觀察到模擬車進出區域時,Geospatial Analytics傳給模擬車的geo Alert!

車聯網

(5) 拖拉兩條output至websocket flow的check device的input,如下。

車聯網

(6) Deploy後,進入主網站,我們會發現車子在進入區域時會顯示enter {區域名},離開區域時會顯示進出區域的時間差。

車聯網

相信這樣一連串的實作過程,已經讓各位對Geospatial Analytics有一定程度的瞭解了。大家可以順著本篇引入服務的方式,翻翻型錄中的其他服務,選擇更多更酷的微服務引入到自己的應用程式!


以上nodeflows可至這裏下載,內含Step-by-Step的車聯網PPT,歡迎大家取用!

[Javascript]非同步的救星Promise

本篇介紹Javascript的Asynchronous Coding,並說明Promise如何使用,和淺談Promise和Monad的關聯 Continue reading

[讀書心得]Rapid learner

Published on January 26, 2017