bluemix node red-part iii
Post on 16-Apr-2017
1.503 Views
Preview:
TRANSCRIPT
© 2016 IBM Corporation
使用 IBM Bluemix Node-RED 打造智慧物聯網應用 (Part III)
Joseph Chang
Cloud Architect - Bluemix
IBM Cloud, Taiwan
Take me to BluemixClick Here
新增第八章 建立 R package 及使用 Node-Red 呼叫 R
© 2016 IBM Corporation2
第七章 資料儲存第八章 dashDB-R
第九章 Watson 感知元件
使用 IBM Bluemix Node-RED 打造智慧物聯網應用 (Part III)
© 2016 IBM Corporation3
第一章 入門篇 -- 溫度感測與通知第二章 排程器與網頁爬蟲第三章 用 Node-RED 寫 HTML 及組合 REST
API
使用 IBM Bluemix Node-RED 打造智慧物聯網應用 (Part I)
第四章 在 Node-RED 中撰寫 Javascript 程式第五章 擴充 Node-RED 工具盒第六章 元件型態 DIY
使用 IBM Bluemix Node-RED 打造智慧物聯網應用 (Part II)
第十章 啟用安全設定第十一章 MQTT & IBM IOT
第十二章 用 Node-RED 做為行動後台
使用 IBM Bluemix Node-RED 打造智慧物聯網應用 (Part IV)
© 2016 IBM Corporation4
-- Store data with Cloudant (NoSQL)-- Data Warehousing & Analytic with dashDB (SQL)
第七章 資料儲存
© 2016 IBM Corporation
Insert & Query database with Node-RED
5
在 Node-RED 中 ,讀寫 DB 也是輕鬆容易的事
© 2016 IBM Corporation
配置資料庫服務
6
請在 Node-RED 的 Server先開好所要的 DB, 在此我們用 Cloudant 與 dashDB 為例
© 2016 IBM Corporation
節點說明 – Prepare JSON data
在 Node-RED 中 , JSON 格式的資料 , 可以不用再轉換格式 , 直接 insert 到DashDB ,Cloudant 及 DB2 當中
JSON data 過msg.payload 傳給 DB 元件 , 就可將資料寫入 DB
7
© 2016 IBM Corporation
Dash DB
8
© 2016 IBM Corporation
節點說明 – SENSOR_DB(dashDB Insert)
9
Bind 在 Node-RED server 的 Cloudant服務 ,會出現在DB 元件的 service 選項中
填入 Table 欄內容 ,資料就可以寫入指定的 DB 中 由 service icon (左下圖 ) 點選可進入 DashDB 管理畫面
(右下圖 )
© 2016 IBM Corporation
DashDB 管理畫面及 資料 Insert
10
點選左上圖的 Add Table, 以建立資料表格 參照左下圖以標準 DDL 語法建立” SENSOR_DB” 資料表格檢式建好的 Table 結構 (右下圖 )
© 2016 IBM Corporation
節點說明 – SENSOR_DB (dashDB Insert)
11
資料成功 Insert
透過 debug 可檢視準備寫入的內容
© 2016 IBM Corporation
節點說明 – SENSOR_DB(DashDB Query)
12
透過msg.payload 傳遞查詢條件 , 這個值會覆寫下個節點的 Query
Bind 在 Node-RED 上的 DashDB 可直接選取
由 DB 讀出的資料 , 以JSON 格式顯示
© 2016 IBM Corporation
Cloudant
13
© 2016 IBM Corporation
節點說明 – SENSOR_DB(Cloudant Insert)
14
• Bind 在 Node-RED 上的 Cloudant DB 可直接選取• 填寫在 Database 名
稱 , 如不存在 , Cloudant 會自動建立
• Operation 欄選 insert
© 2016 IBM Corporation
節點說明 – SENSOR_DB (Cloudant Insert)
15
點選 Cloudant 圖示 , 以開啟管理界面
Node-RED 宣告的 DB 自動建立
資料成功 Insert
© 2016 IBM Corporation
節點說明 – SENSOR_DB (Cloudant Query)
16
如要在 Cloudant 的 Non-Primary Key 欄位做查詢 , 請先建立 Search Index
• 先建立一組 design Document
• 填寫 index name• Search Index Function 的語法是依照 Lucene Query
Parser Syntax 請參考 https://docs.cloudant.com/search.html
© 2016 IBM Corporation
節點說明 – SENSOR_DB (Cloudant Query)
17
• 建完 Index 之後 , 可點選 Search 頁面做測試• Query 條件需包含欄位名稱及欄位值 , 以 : 分隔 , 值的部份可用
wildcard character
© 2016 IBM Corporation
節點說明 – SENSOR_DB (Cloudant Query)
18
請照前頁的設定值 , 設定 Cloudant in node 的內容
Query 條件的設法同前頁所述
查詢結果以JSON 陣列顯示
© 2016 IBM Corporation
Warehousing by Cloudant and dashDB
19
從 Cloudant 選單中的Warehousing 功能 ,可以建立另外一組與 dashDB 間的資料抄寫通道 , 讀者可自己測試看看 !!
© 2016 IBM Corporation
第七章 結束
20
© 2016 IBM Corporation21
-- R-studio in DashDB-- Create R pakage-- Execute R in Node-RED
第八章 dashDB-R
© 2016 IBM Corporation
Execute R in dashDB using Node-RED
22
© 2016 IBM Corporation
開啟 dasb DB資料庫服務
23
點選 dashDB 開啟管理畫面
如果尚未建立 dashDB 服務 , 請點選 ADD A SERVICE OR API 以建立 dashDB 服務
© 2016 IBM Corporation
開啟 dashDB 中的 R-Studio
24
1. 點選 RScripts
2. 點選 Studio
© 2016 IBM Corporation
Login ID/Pass
25
如果需要 ID/pass 可從 Connection Information 取得
© 2016 IBM Corporation
R – Studio Web UI
26
開啟 R-Studio 之後 , 可將網址加入瀏覽器 書籤 以方便之後開啟
© 2016 IBM Corporation
建立 HelloWorld package
27
1. 點選 New Project…
2. 點選 New Directory 3. 點選 R Package
我們希望在 Node-RED 中呼叫自已寫的程式 , 因此需要自已建立 Package
© 2016 IBM Corporation
建立 HelloWorld package (continue…)
28
4. 點選 New Directory
為 package 取名
按 create project
© 2016 IBM Corporation
檢視左上視窗 hello.R 程式碼
29
© 2016 IBM Corporation
(optional) 做些小修改 , 讓程式多傳個參數
30
© 2016 IBM Corporation
Build Package
31
點選 Build and Reload 以編譯 Package
點選 Save Selected 以儲存 並繼續編譯
© 2016 IBM Corporation
編譯結果
32
右上視窗顯示Build 執行記錄 ,
左下視窗出現 library(helloword)表示 package 已成功編譯並載入
© 2016 IBM Corporation
測試執行
33
在 Console 鍵入 hello(“joseph”)結果如預期顯示
© 2016 IBM Corporation
檢視 helloworld package 檔案結構
34
從右下方的視窗可檢視 package 的組成結構
© 2016 IBM Corporation
檢視 helloworld package
35
從右下視窗 packages tab 可檢視 helloworld package 被加入到User Library 當中
© 2016 IBM Corporation
用 REST API 呼叫 R function
dashDB 提供了 一組特殊的 REST API, 可用於呼叫 R function, 範例如下
36
Method: POSTURI: https://<dashDB URL>:8443/console/blushiftservices/BluShiftHttp.do
Body: "cmd=RScriptRunScript&command=library(helloworld)\n"+ "res = hello(\"Joseph\")\n"+"&fileName="+"&profileName=BLUDB"+"&userid="+dash880699;
Headers:"content-type": "application/x-www-form-urlencoded”
© 2016 IBM Corporation
用 REST API 呼叫 R function ( 續 )
Response 格式如下
37
Response: {"message":"","cmd":"RScriptRunScript","errorMessageCode":"","items":"{\"RModelOutput\":\"[1] \\\"Hello, world! Joseph\\\"\\n\",\"filename\":[],\"workingDirectory\":\"\\\/opt\\\/ibm\\\/dsserver\\\/Config\\\/RModels\\\/qAo5M0WRbiqchiTY6ja73oQ\\\/1463239583055\",\"RModelError\":\"Loading required package: RODBC\\nLoading required package: ibmdbR\\nLoading required package: methods\\nLoading required package: MASS\\nLoading required package: grDevices\\nLoading required package: graphics\\nLoading required package: stats\\nLoading required package: utils\\nLoading required package: Matrix\\nLoading required package: arules\\n\\nAttaching package: \\u2018arules\\u2019\\n\\nThe following objects are masked from \\u2018package:base\\u2019:\\n\\n %in%, write\\n\\nLoading required package: rpart\\nLoading required package: rpart.plot\\nLoading required package: ggplot2\\nmv: cannot stat `\\\/mnt\\\/blumeta0\\\/home\\\/dash110600\\\/\\\/.qAo5M0WRbiqchiTY6ja73oQ\\\/1463239583055\\\/ou ....
© 2016 IBM Corporation
Call R function with Node-RED
38
© 2016 IBM Corporation
Prepare R Script
39
呼叫 R function
換成自已的 dashdb schema id
© 2016 IBM Corporation
Login in to DashDB
40
網址同 R-Studio, 注意 Port 不相同 , 亦可從 dash DB 的 service credential 取得
同 login 進入 R-Studio 的 ID, password
© 2016 IBM Corporation
1st json
41
由 Login to DashDB 的 Output 中 , 我們已取回了我們要的結果 , 回傳 的結果為 String 格式 , 為方便取欄位值 , 我們用 JSON 元件將 String 轉 Object
JSON 元件將 String 轉 Object
© 2016 IBM Corporation
Get item & 2nd json
42
我們要的結果在 “ items:” 欄位之中的 RModelOutput, 透過function 結點取出 items, 內容又是 JSON String, 所以我們用第2 個 json 元件將 items 轉成Object
© 2016 IBM Corporation
Get RModel Output
43
最後終於取到 我們要的RModelOutput
© 2016 IBM Corporation
第八章 結束
44
© 2016 IBM Corporation45
-- Alchemy Image Analysis
第九章 Watson 感知元件
© 2016 IBM Corporation
網頁相片分析
46
透過 Alchemy 影像分析元件 , 我們可以擷取網頁圖片 , 然後分析照片中的內容
© 2016 IBM Corporation
節點說明 – 第 1 個 http request
我們想知道此刻 CNN 新聞網頁上的照片的主題 . 我們可以 透過 http request 將網頁內容取回 , 並交給下一個節點 Feature Extract
47
© 2016 IBM Corporation
節點說明 – Feature Extract
透過 Alchemy Feature Extract , 我們可以很容易的擷取網頁上的照片
48
註 : 當網頁上有多張照片時 , 只會取最後一張 , 要同時取多張照片 , 可改用 元件處理 .
© 2016 IBM Corporation
節點說明 – Get Image URL
Alchemy Feature Extract , 回傳的 URL 看起來如下 :
49
{"page-image":"http://i2.cdn.turner.com/cnnnext/dam/assets/160325112508-brussels-policemen-search-large-tease.jpg"}
我們直接用 substring function, 擷取 url 的值再傳給影像分析節點 .處理後的回傳值如下 :
© 2016 IBM Corporation
節點說明 – 第 2個 http request 節點
URL 欄位留空白 , 因為我們已從前個節點傳入照片的URL:
50
© 2016 IBM Corporation
節點說明 – Image Analysis
照片的 URL傳入 Image Analysis元件後 , 可自動偵測內容 , 做為標籤 :
51
Image Analysis元件分析的結果 , 認為這張照片的主題內容是有94.26% 的機率是人
© 2016 IBM Corporation
節點說明 – Image Analysis
我們直接開啟這張照片件後 , 可以發現照片內容的確是人 :
52
© 2016 IBM Corporation
更多關於 IBM Watson
53
IBM 華生的目標在於使用當今可用的資訊技術 ,再次挑戰人工知慧這個議題 , 將技術以微服務 (包含視覺 , 聽覺 , 對話 , 自然語言… .物聯網感測 )的方式 提供給開發人員 , 期望透過全球開發者的力量 , 突破 IT 的運用方式 . 更多華生的議題筆者將另闢專文呈現 .不在 Node-RED文件中做說明 https://console.ng.bluemix.net/catalog/
© 2016 IBM Corporation
第九章 結束
54
top related