close

好的!今天就要來跟大家介紹要怎麼樣將RPI連結到IBM的bluemix平台上面拉~~

首先先拿起我們的RPI

在RPI上面要準備東西如下:

-可以順利透過wifi連接網路 (https://www.raspberrypi.com.tw/2152/setting-up-wifi-with-the-command-line/)

-node.js安裝   (http://weworkweplay.com/play/raspberry-pi-nodejs/)

為了方便我都將如何連結的教學網站貼上了~大家可以先搞定這兩個步驟!

接著就是我們的重頭戲啦!

前往IBM所提供的watson給node.js 的github上抓取最新的node module套件!(https://www.npmjs.com/package/watson-developer-cloud)

並且使用linux介面cd至你要放至你等下要寫你的node.js的資料夾中 像我放置在 home/pi/workspace/iot/裡面 我就在linux指令介面上面敲上 cd home/pi/workspace/iot就會到這個資料夾中囉

接著在打上

$ npm install watson-developer-cloud --save

他就開始安裝了

安裝完之後你會看到你的資料夾中多了一個node module的資料夾,這個資料夾就像資料庫一樣,你要安裝任何lib都會跑到這裡來,之後你就可以呼叫你有安裝過的函式來用了~

因為Bluemix的iot服務是透過mqtt去連線,所以我們也要再安裝一個套件就是mqtt的套件

所以在剛剛你安裝 watson的資料夾的那一層再打上

npm install mqtt --save

咻一下~

也安裝好了

好了基本本機的東西弄好了!

接下來上到bluemix網站上面

開始要新增一個裝置讓iot服務可以連結到你的RPI了!

 

 

 

進去bluemix之後我們選擇到上次創建的應用程式中我們可以看到以下的頁面

這裡代表我們的這個應用程式中有兩個服務

一個是iot一個是DB的服務

這時候我們選擇iot的服務

點選進去之後可以看到這個畫面,然後選擇儀表板

會看到我們IOT的總攬畫面,接下來我們選取左邊的第二的選項

然後我們就可以到達這個地方~~我的畫面跟大家不太一樣,因為我已經新增了裝置拉~所以你們下面的欄位基本上是空白了,接著就按下新增裝置

這個頁面就會跑出來我們選取建立裝置類型

打上RPI並且按下一步

這頁我們不用勾選任何東西直接按下一步

 一樣!直接下一步

一樣直接建置XD

我們的類型就建立好啦!!RPI就是我們剛剛建立好的類型,這時候我們直接按下下一步

這邊的ID要打上一個不重複的ID看大家要如何去編輯,這部很重要喔!打完後按下一步

最後這一個也是直接按下一步

這裡也是下一步

新增~

這一頁非常的重要啊!!!!!!!!!務必把他截圖下來不要弄丟了啊!不見了就要不回來了QQ這個是待會我們node.js上面程式碼必須要提供的資訊喔!!

好的!我們的裝置新增玩了XD是不是很簡單哈哈哈

一直按下一步而已

接下來我們可以到bluemix的儀表板上做正事了

回到我們剛剛應用程式的頁面,點選紅圈裡面的網址,這就是管理你iot應用程式的地方囉~到哪裡都可以用它登入

接著就會到node red的介面了!

node red 是一個非常好用的圖形化程式介面,操作起來非常簡單,往後我們雲端的程式碼也會在這邊撰寫,那我們就點選下面的按鈕進去的開發頁面

這個頁面就是node red的程式編輯頁面大家可以學我先把其他東西刪光光,這時候我們只需要留下這兩個東西就好了~弄完之後記得按下右上角的佈署,代表更新的意思^^~

一個是iot的input一個是debug用的顯示視窗,debug的顯示視窗代表我們可以看到資訊,如果不拉debug的block的話,程式依然會執行,只是看不到我們的東西而已,就像是C語言中的priontf or cout 或是js中的console.log不加也沒有關係只是看不到東西而已QQ,那我們切到debug頁面

我們可以看到一片空白!!

好雲端上面的準備工作做完了,接著回去你的rpi上面

我們在剛剛安裝兩個套件的資料夾中,創建一個js檔案,也就是寫程式,如果不知道js檔案是什麼意思的人!那!你就先打一個txt檔再把副檔名改成js檔也可以哈哈哈哈

接著在我們的檔案中寫下以下的程式碼,以下有幾個東西是自己要填上去的喔!是上面我說很重要的那張圖裡面有的東西!!組織ID以及鑑別記號,記得不用打小括弧~我讓大家好看才打上去的=ˇ=~

----------------------------------------------------------------------------我是分隔線-------------------------------------------------------------------------------------
var watson = require('watson-developer-cloud');
var mqtt = require('mqtt');

var clientId = ['d', "(組織ID)", "RPI", "(裝置ID)"].join(':');  //RPI的裝置變數
    
    
    iot_client = mqtt.connect("mqtt://(組織ID).messaging.internetofthings.ibmcloud.com:1883",//連結mqtt伺服器的認證
                          {
                              "clientId" : clientId,
                              "keepalive" : 30,
                              "username" : "use-token-auth",
                              "password" : "(鑑別記號)"
                          });
                          
                          
   iot_client.on('connect', function() {//如果連接上的話要做的事情
        
      console.log('Rapiro client connected to IBM IoT Cloud.');
      iot_client.publish('iot-2/evt/status/fmt/json', '{"d":{"status": "connected" }}');

//發布一個event至伺服器上並且這個event的名子叫做status面的值為json有一個ID為status,value為connect
     

  

      
  
    }
    )
    
    
    iot_client.on("message", function(topic,payload){
    console.log('received topic:'+topic+', payload:'+payload);});

 

--------------------------------------------------------------------------------------------我是分隔線------------------------------------------------------------------------------

打完之後我們就可以執行這個js檔案啦!!!

執行方法為再linux指令行打上 

sudo node 'js檔名'

像我就是打成這樣

接著我們就可以看到

還有!這時候打開你剛剛的node red頁面就可以看到!!!有資訊被傳上來了!

而且就是你剛剛在程式碼中寫上的東西!!

最初步的RPI連結到bluemix iot服務就是這樣啦!!!

之後我們會利用這個東西上傳像是感測器的資料阿~之類的

那讓我們下次見了!

arrow
arrow

    C牛(norman kung) 發表在 痞客邦 留言(0) 人氣()