步驟1:開始之前
確保已存在以下內容:
您已經完成了本教程的第1部分。
一個Bluemix帳戶。
愛迪生中已安裝Node-Red Watson IoT節點模塊。為此,請查看官方文檔。
步驟2:Watson IoT Application
此處的入口部分是創建Bluemix應用程序它將收集設備的數據,在這種情況下為LED狀態。為此,請轉到Bluemix目錄并選擇Internet of Things Platform Starter樣板,如果愿意,請轉到此鏈接并創建您的應用程序。
https://console.ng.bluemix.net/catalog/starters/internet-of-things-platform-starter/
請注意,通過此樣板,您可以將Node.js運行時,物聯網平臺和Cloudant NoSQL DB服務綁定到該應用程序。我們對本教程感興趣的是物聯網平臺和Node.js,因為它帶有Node-Red。
創建應用程序后,轉到物聯網平臺服務儀表板。在其中,您會找到按鈕啟動儀表板。單擊它
在Watson IoT Platform儀表板中,轉到設備,然后選擇設備類型選項卡并創建設備類型。
在設備頁面中,現在選擇瀏覽標簽,然后點擊添加設備。選擇您剛剛創建的設備類型并為其設置一個名稱。完成向導,然后在結果頁面中保存設備的詳細信息,因為您需要它們來連接物理設備(此數據無法恢復)。要存儲的重要數據是:
組織ID。
設備類型。
設備ID。
身份驗證令牌。
步驟3:將電路連接到IoT
將電路連接到IoT
在本部分中,您將在Edison中修改Node-Red中的流,以現在就可以從IoT實例向IoT實例發送數據和接收命令,并從IoT實例接收命令,從而使其可以從Internet(而不是互聯網)進行控制
此外,本節還假定Watson IoT節點已安裝在Edison的Node-Red中。如果沒有,請按照此處的說明
https://www.npmjs.com/package/node-red-contrib-ibm 。..
在愛迪生中啟動Node-Red添加和配置Watson IoT連接。在這里,LED將連接到IoT平臺,因此它可以從設備收集數據并發送命令以通過Internet打開和關閉它。
步驟4:讀取LED狀態
在輸入抽屜中,選擇 gpio 節點并將其拖放到畫布上。雙擊它并指定:
電路板:您在第1部分中配置的電路板。
類型:數字(0/1)。
引腳:我使用了引腳6。
名稱:ReadLED。
步驟5:形成Watson IoT的消息
Watson IoT期望一個非常特殊的消息。基本上,您需要從有效負載中讀取LED的狀態,并將其分配給Watson IoT期望的屬性,這是JSON消息中的d屬性。
為此,請使用 功能抽屜中的“功能”節點,然后在其中輸入以下代碼(不要忘記雙擊它)。
var ledState = msg.payload;
msg.payload = {
“d”: {
“led_state”: ledState
}
};
return msg;
現在
步驟6:將數據發送到IoT
選擇 Watson IoT 從 Output 抽屜中將其拖放到畫布上。雙擊它。
在將數據發送到IoT平臺之前,您需要配置連接。為此,請點擊憑據字段中的鉛筆圖標。在生成的表單中,輸入本教程的 Watson IoT應用程序部分中創建設備時獲得的憑據的信息。
一旦配置了憑據,請指定其余字段:
連接為:設備
已注冊:應選擇已注冊的無線電
憑據:您剛剛配置的憑據
事件類型:事件
格式:json
單擊完成,連接功能和該節點并部署更改。如果一切配置正確,ReadLED(如上圖)和Watson IoT節點都將有一個指示燈,指示它們已正確連接。
步驟7:從IoT讀取命令
現在將LED數據發送到IoT平臺。但是,尚無法從Internet對其進行操作。基本上,它只是數據源,沒有采取任何措施。現在可以從Internet讀取狀態并將其反映在LED上。這就是命令。
在輸入抽屜中,找到 Watson IoT 節點并將其拖放到畫布上。雙擊它并指定以下內容:
連接為:設備
憑據:您剛剛使用的憑據配置
命令:閃爍
保存節點。
步驟8:格式化傳入消息
由于來自Watson IoT的傳入消息具有特定格式,因此您需要提取要反映在物理LED中的狀態。從 Functions 抽屜中拖放 function 節點,然后輸入以下代碼。
var ledState = msg.payload.d.led_state;
msg.payload = ledState;
return msg;
連接兩個節點。最后,將功能節點與在本教程的第1部分中創建的LED節點連接起來。
最后,如果您遵循第1部分和第2部分中的這一部分,那么Edison中的流程應類似于此步驟中的圖像。此圖像的前兩行節點已在第1部分中完成,而最后一行已在本節中完成。
步驟9:從IoT讀取和控制設備
一旦設備通過Edison中的Node-Red連接到Watson IoT平臺,就該在Bluemix應用程序中創建流以接收該信息并將命令發送到打開和關閉LED。這將使用與第1部分中使用的HTTP請求非常相似的HTTP請求來完成。
首先,您需要在Bluemix中啟動Node-Red應用程序。為此,請轉到Bluemix儀表板,然后在所有應用程序中單擊應用程序的 Route 。出現的頁面上有一個大按鈕,顯示轉到您的Node-RED流編輯器。單擊它,Node-Red編輯器將準備就緒,可以開始創建流了。
步驟10:讀取數據
這是一項瑣碎的任務在Watson IoT節點中已經預先安裝了Watson IoT節點,因此可以在Bluemix中使用。就像從 Input 抽屜中添加 Watson IoT 節點并指定以下屬性一樣簡單:
身份驗證:Bluemix服務
輸入:設備事件
設備類型:您在憑證中使用的那個。
設備ID :您在憑據中使用的設備
事件:+
Format :json
我將此節點連接到 debug 節點,只是為了在 Debug 窗格,但是通常的想法是,當設備將數據發送到IoT實例時,您應該適當地對待它,可能會向移動設備或電子郵件發送通知,或者可能會向連接到IoT的設備觸發命令。
步驟11:HTTP請求
在Node-Red的 Input 抽屜中,選擇 HTTP 節點,將其拖放到畫布上。雙擊畫布中的節點并指定以下參數:
方法:GET
URL :/led/:state
步驟12:從HTTP請求中提取操作
您可以在上面的URL中看到,操作作為URL的最后一部分傳遞。因此,我們需要提取它。 Node-Red使您可以使用標準Express API從請求中獲取變量。
從 Function 抽屜中選擇 function 節點并拖動并將其拖放到畫布上。雙擊并放置以下JavaScript代碼。
if (msg.req.path == “/led/on”) {
msg.payload = 1;
msg.httpMsg = “On”
} else if (msg.req.path == “/led/off”) {
msg.payload = 0;
msg.httpMsg = “Off”
} else {
msg = null;
}
return msg;
輸入代碼后,單擊完成并連接兩個節點。
步驟13:將命令發送到設備
消息正確形成后,您可以將該命令發送到設備。從“輸出”抽屜中拖放一個Watson IoT節點,然后雙擊它。指定以下內容:
身份驗證:Bluemix服務
輸出類型:設備命令
設備類型:您憑據中的一個
設備ID :您憑據中的一個
命令 類型:閃爍
格式:json
數據:{“ d” :{“錯誤”:“有錯誤”}}
單擊完成并將功能連接到該節點。
注意 Data 屬性正在使用形成的JSON消息。只要其中具有 d 屬性,該消息就會被替換。基本上是在說如果在消息中沒有找到 d 屬性,然后將錯誤消息發送到設備。在功能節點中,我們確保消息中存在該屬性。
步驟14:發回響應
因為此請求是通過以下方式發起的:一個HTTP請求,您必須以HTTP響應完成它。為此,在 Output 抽屜中選擇一個 HTTP Response 節點并將其拖放到畫布上。將該節點連接到先前創建的功能以形成客戶端消息。
單擊部署以使流程栩栩如生。
第15步:測試流程
現在已經創建了流程,您可以使用網站了瀏覽器或處理HTTP請求(例如cURL或WGET)的任何其他程序來對其進行測試。
打開Web瀏覽器并使用這兩個URL之一。就我而言,我的Bluemix應用程序的地址是https://vsiotll.mybluemix.net
https://vsiotll.mybluemix.net/led/on
https://vsiotll.mybluemix.net/led/off
注意:隨著我將自己的空間用于自己的空間,此網址很快就會消失教育目的。
第16步:結論
使用適當的平臺和工具,可以帶給您永久的價值。相對輕松地實現生活中任何瘋狂的想法。今天,與硬件和軟件進行交互非常簡單,此外,構建有趣的東西可以幫助您使生活更輕松:也許是一種能夠感應到植物的水分或濕度,然后在需要時澆水的設備,或者是一種寵物飼養設備,單擊移動設備中的按鈕即可觸發。可能性是無止境的!
您應該牢記的一件重要事情是:安全是一個大話題,永遠不可低估。這是諸如IBM Watson IoT之類的平臺幫助您保護和管理設備的機會。
責任編輯:wv
-
IBM
+關注
關注
3文章
1755瀏覽量
74679
發布評論請先 登錄
相關推薦
評論