Download ppt - Bluemix node red-part iii

Transcript
Page 1: Bluemix node red-part iii

© 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

Page 2: Bluemix node red-part iii

© 2016 IBM Corporation2

第七章 資料儲存第八章 dashDB-R

第九章 Watson 感知元件

使用 IBM Bluemix Node-RED 打造智慧物聯網應用 (Part III)

Page 3: 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)

Page 4: Bluemix node red-part iii

© 2016 IBM Corporation4

-- Store data with Cloudant (NoSQL)-- Data Warehousing & Analytic with dashDB (SQL)

第七章 資料儲存

Page 5: Bluemix node red-part iii

© 2016 IBM Corporation

Insert & Query database with Node-RED

5

在 Node-RED 中 ,讀寫 DB 也是輕鬆容易的事

Page 6: Bluemix node red-part iii

© 2016 IBM Corporation

配置資料庫服務

6

請在 Node-RED 的  Server先開好所要的 DB, 在此我們用 Cloudant 與 dashDB 為例

Page 7: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – Prepare JSON data

在 Node-RED 中 , JSON 格式的資料 , 可以不用再轉換格式 , 直接 insert 到DashDB ,Cloudant 及 DB2 當中

JSON data 過msg.payload 傳給 DB 元件 , 就可將資料寫入 DB

7

Page 8: Bluemix node red-part iii

© 2016 IBM Corporation

Dash DB

8

Page 9: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – SENSOR_DB(dashDB Insert)

9

Bind 在 Node-RED server 的 Cloudant服務 ,會出現在DB 元件的 service 選項中

填入 Table 欄內容 ,資料就可以寫入指定的 DB 中 由 service icon (左下圖 ) 點選可進入 DashDB 管理畫面

(右下圖 )

Page 10: Bluemix node red-part iii

© 2016 IBM Corporation

DashDB 管理畫面及 資料 Insert

10

點選左上圖的 Add Table, 以建立資料表格   參照左下圖以標準 DDL 語法建立” SENSOR_DB” 資料表格檢式建好的 Table 結構 (右下圖 )

Page 11: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – SENSOR_DB (dashDB Insert)

11

資料成功  Insert

透過 debug 可檢視準備寫入的內容

Page 12: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – SENSOR_DB(DashDB Query)

12

透過msg.payload 傳遞查詢條件 , 這個值會覆寫下個節點的 Query

Bind 在 Node-RED 上的 DashDB 可直接選取

由 DB 讀出的資料 , 以JSON 格式顯示

Page 13: Bluemix node red-part iii

© 2016 IBM Corporation

Cloudant

13

Page 14: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – SENSOR_DB(Cloudant Insert)

14

• Bind 在 Node-RED 上的 Cloudant DB 可直接選取• 填寫在 Database 名

稱 , 如不存在 , Cloudant 會自動建立

• Operation 欄選 insert

Page 15: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – SENSOR_DB (Cloudant Insert)

15

  點選 Cloudant 圖示 , 以開啟管理界面

Node-RED 宣告的 DB 自動建立

資料成功 Insert

Page 16: Bluemix node red-part iii

© 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

Page 17: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – SENSOR_DB (Cloudant Query)

17

• 建完 Index 之後 , 可點選  Search 頁面做測試• Query 條件需包含欄位名稱及欄位值 , 以 : 分隔 , 值的部份可用

wildcard character

Page 18: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – SENSOR_DB (Cloudant Query)

18

請照前頁的設定值 , 設定  Cloudant in node 的內容

Query 條件的設法同前頁所述

查詢結果以JSON 陣列顯示

Page 19: Bluemix node red-part iii

© 2016 IBM Corporation

Warehousing by Cloudant and dashDB

19

從  Cloudant 選單中的Warehousing 功能 ,可以建立另外一組與 dashDB 間的資料抄寫通道 , 讀者可自己測試看看 !!

Page 20: Bluemix node red-part iii

© 2016 IBM Corporation

第七章  結束

20

Page 21: Bluemix node red-part iii

© 2016 IBM Corporation21

-- R-studio in DashDB-- Create R pakage-- Execute R in Node-RED

第八章 dashDB-R

Page 22: Bluemix node red-part iii

© 2016 IBM Corporation

Execute R in dashDB using Node-RED

22

Page 23: Bluemix node red-part iii

© 2016 IBM Corporation

開啟 dasb DB資料庫服務

23

點選 dashDB 開啟管理畫面

如果尚未建立 dashDB 服務 , 請點選 ADD A SERVICE OR API 以建立 dashDB 服務

Page 24: Bluemix node red-part iii

© 2016 IBM Corporation

開啟 dashDB 中的 R-Studio

24

1. 點選 RScripts

2. 點選 Studio

Page 25: Bluemix node red-part iii

© 2016 IBM Corporation

Login ID/Pass

25

如果需要 ID/pass 可從 Connection Information 取得

Page 26: Bluemix node red-part iii

© 2016 IBM Corporation

R – Studio Web UI

26

開啟 R-Studio 之後 , 可將網址加入瀏覽器 書籤 以方便之後開啟

Page 27: Bluemix node red-part iii

© 2016 IBM Corporation

建立 HelloWorld package

27

1. 點選 New Project…

2. 點選 New Directory 3. 點選 R Package

我們希望在 Node-RED 中呼叫自已寫的程式 , 因此需要自已建立 Package

Page 28: Bluemix node red-part iii

© 2016 IBM Corporation

建立 HelloWorld package (continue…)

28

4. 點選 New Directory

為 package 取名

按 create project

Page 29: Bluemix node red-part iii

© 2016 IBM Corporation

檢視左上視窗 hello.R 程式碼

29

Page 30: Bluemix node red-part iii

© 2016 IBM Corporation

(optional) 做些小修改 , 讓程式多傳個參數

30

Page 31: Bluemix node red-part iii

© 2016 IBM Corporation

Build Package

31

點選 Build and Reload 以編譯 Package

點選 Save Selected 以儲存 並繼續編譯

Page 32: Bluemix node red-part iii

© 2016 IBM Corporation

編譯結果

32

右上視窗顯示Build 執行記錄 ,

左下視窗出現 library(helloword)表示 package 已成功編譯並載入

Page 33: Bluemix node red-part iii

© 2016 IBM Corporation

測試執行

33

在 Console 鍵入 hello(“joseph”)結果如預期顯示

Page 34: Bluemix node red-part iii

© 2016 IBM Corporation

檢視 helloworld package 檔案結構

34

從右下方的視窗可檢視 package 的組成結構

Page 35: Bluemix node red-part iii

© 2016 IBM Corporation

檢視 helloworld package

35

從右下視窗 packages tab 可檢視 helloworld package 被加入到User Library 當中

Page 36: Bluemix node red-part iii

© 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”

Page 37: Bluemix node red-part iii

© 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 ....

Page 38: Bluemix node red-part iii

© 2016 IBM Corporation

Call R function with Node-RED

38

Page 39: Bluemix node red-part iii

© 2016 IBM Corporation

Prepare R Script

39

呼叫 R function

換成自已的 dashdb schema id

Page 40: Bluemix node red-part iii

© 2016 IBM Corporation

Login in to DashDB

40

網址同 R-Studio, 注意 Port 不相同 , 亦可從 dash DB 的 service credential 取得

同 login 進入 R-Studio 的 ID, password

Page 41: Bluemix node red-part iii

© 2016 IBM Corporation

1st json

41

由 Login to DashDB 的 Output 中 , 我們已取回了我們要的結果 , 回傳 的結果為 String 格式 , 為方便取欄位值 , 我們用 JSON 元件將 String 轉 Object

JSON 元件將 String 轉 Object

Page 42: Bluemix node red-part iii

© 2016 IBM Corporation

Get item & 2nd json

42

我們要的結果在 “ items:” 欄位之中的 RModelOutput, 透過function 結點取出 items, 內容又是 JSON String, 所以我們用第2 個 json 元件將 items 轉成Object

Page 43: Bluemix node red-part iii

© 2016 IBM Corporation

Get RModel Output

43

最後終於取到 我們要的RModelOutput

Page 44: Bluemix node red-part iii

© 2016 IBM Corporation

第八章  結束

44

Page 45: Bluemix node red-part iii

© 2016 IBM Corporation45

-- Alchemy Image Analysis

第九章 Watson 感知元件

Page 46: Bluemix node red-part iii

© 2016 IBM Corporation

網頁相片分析

46

  透過 Alchemy 影像分析元件 , 我們可以擷取網頁圖片 , 然後分析照片中的內容

Page 47: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – 第 1 個 http request

我們想知道此刻  CNN 新聞網頁上的照片的主題 . 我們可以 透過 http request 將網頁內容取回 , 並交給下一個節點 Feature Extract

47

Page 48: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – Feature Extract

透過  Alchemy Feature Extract , 我們可以很容易的擷取網頁上的照片

48

註  : 當網頁上有多張照片時 , 只會取最後一張 , 要同時取多張照片 , 可改用                  元件處理 .

Page 49: Bluemix node red-part iii

© 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 的值再傳給影像分析節點 .處理後的回傳值如下 :

Page 50: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – 第 2個  http request 節點

URL 欄位留空白 , 因為我們已從前個節點傳入照片的URL:

50

Page 51: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – Image Analysis

照片的 URL傳入 Image Analysis元件後 , 可自動偵測內容 , 做為標籤 :

51

Image Analysis元件分析的結果 , 認為這張照片的主題內容是有94.26% 的機率是人

Page 52: Bluemix node red-part iii

© 2016 IBM Corporation

節點說明 – Image Analysis

我們直接開啟這張照片件後 , 可以發現照片內容的確是人 :

52

Page 53: Bluemix node red-part iii

© 2016 IBM Corporation

更多關於 IBM Watson

53

IBM 華生的目標在於使用當今可用的資訊技術 ,再次挑戰人工知慧這個議題 , 將技術以微服務 (包含視覺 , 聽覺 , 對話 , 自然語言… .物聯網感測 )的方式 提供給開發人員 , 期望透過全球開發者的力量 , 突破 IT 的運用方式 . 更多華生的議題筆者將另闢專文呈現 .不在 Node-RED文件中做說明 https://console.ng.bluemix.net/catalog/

Page 54: Bluemix node red-part iii

© 2016 IBM Corporation

第九章  結束

54

Page 55: Bluemix node red-part iii

© 2016 IBM Corporation

Thank you

55

Take me to BluemixClick Here


Recommended