close
今天要来分享时下最夯的物联网议题,如何让Raspberry Pi 与NAS结合建立自己的私有云并且创造出更多IOT应用,以下将以RPI作为Raspberry Pi的简称。

在介绍之前,先来看看事前准备,需要准备哪些东西:

硬体上的需求有: RPI-2 * 1、QNAP-NA S* 1、以及所拥有的感测器(Sensor)。

软体上的需求:RPI-SDK

硬体上采用QNAP-NAS是因为QNAP提供了QIOT的平台以及Container,其中Container是目前相当火红的议题,因为它不像VM需要每次都安装OS因此安装上便利许久,且在Linux的环境下即可建置完成,由于QNAP-NAS提供了这两项元素,因此采用QNAP-NAS当作我们的Container;接下来我们将分别介绍RPI的建置与QIOT的连结以及最后如何让两样东西连结一起后做出IOT应用实例。

首先,我们先将RPI的环境建置完成,可以到官网下载NOOBS,并且解压缩至RPI上的SD卡上,接着将RPI接上电源就会开始进入安装RPI的OS了。安装完成后,如果有网路线直接插上去,RPI会自动抓到网路。

为了使用方便,我们将设定SSH,方便透过电脑远端至RPI,远端教学可以参照此篇RPI-SSH设定。当一切就绪之后,刚刚有提到QNAP有提供QIOT平台,方便建立Container外还提供了Node-Red方便连结到你的装置(ex:RPI),因此我们先在RPI装Node-js,这边我们以Node-js 10.028版本为主,安装完成后,会出现这个画面图1,代表安装成功。

node_js_安裝成功

图1 Node-js 安装成功于RPI

接下来安装所使用的感测器,这边所使用的是GrovePi的感测器,因此需要安装几个node-grovepi、node-grovepi blessed、node-grovepi blessed-contrib、node-grovepi mqtt。到这边,RPI的环境建置算是告个段落,紧接着就是介绍QNAP-NAS的环境建置。 QNAP-NAS的官网有提供NAS的基本安装的方式,这边我们将介绍如何安装QIOT-Containers,安装好后会看到此漂亮的画面,图2所示。

 

container

图2 QNAP_Container安装完成

接着在Container安装MQTT、Node-Red,在安装MQTT时须设定网路关系,将它改成Host并且Port设定为1883,在Node-Red设定中将Port改成1880,如图3所示。

mqtt_port                          node_port

图3. (a)mqtt_port 设定为Host                                                             (b)Node_Port设定为1880

我们现在已经把两边的环境都建置完成,接下来就把整个串联在一起,这边在RPI写一个简单的Node-js的程式连结至Container透过Node-Red读取。

这边我们将示范 一个简单的Node-js的范例,其功能就是把再RPI面写一个连结到NAS的程式,其程式码如图4所示

Node_範例

图4 Node_RPI.js 范例程式

当程式完成后,接着要来拉Node-Red的元件,开启我们的Container并且点选Node-Red,会看到有一个链结,点下去之后会跑出像图5的画面

Node_red

图5 Node-Red开启的样子

接着我们拉两个元件为mqtt、debug,其中mqtt这个元件就是把刚刚我们设定的Port、IP位置所连结的地方,而Debug是方便我们看是否有接收到RPI所传的资讯,当执行刚刚所撰写的范例后,可以在Node-Red画面的Debug上面看到我们所传的文字如图6所示,此外我们也可以透过Container的连结情形,来确保我们的装置与NAS有连接,如图7所示。

 

node_連結_RPI                                        連結後的container

图6 Node-Red从RPI所传来的讯息                                                                       图7. Container的后端连结情况

到这边,介绍了如何把RPI与NAS做连结,如同一开始说的一样,QNAP的NAS提供的SDK、平台与介面都很友善、很容易操作,这样就可以建立一个私有云并在RPI上面做IOT的应用,透果与NAS的结合,想做更深入的IoT应用相信更可以得心应手的!
arrow
arrow
    全站熱搜

    tttt 發表在 痞客邦 留言(0) 人氣()