IOT视觉化开发工具Node-RED快速上手

描述

现在有越来越多非专业背景但有创造热诚的Maker,想要进入物联网领域大展身手,但常常苦于无法撰写艰深难懂的程序代码,以及想要连接各种硬件与时下最流行的社群软件,却不知道如何使用开放给开发者应用的API的窘境。

没关系!IBM发行了一套开源可视化界面开发工具- Node-RED,嗯?是不是有点眼熟?怎么跟著名的程序语言Node.js有些相似?不用担心,即使完全不懂怎么撰写Node.js,也能学会使用Node-RED。接下来就让我们一起看看如何运用Node-RED吧!

大家可能会好奇,Node-RED跟Node.js怎么名字会这么像?是不是有某种关联存在?这边就要先从Node.js开始介绍了。Node.js是一个读取Javascript的运行环境,可用于开发网页后端程序,但是Node.js的指令是一行一行写出来的,为了免去呼叫程序代码麻烦,IBM的工程师开发了Node-RED来更容易地完成工作。

具体来说,每当启动Node-RED时,背景程序便会创造一个服务器来处理我们输入的指令,这时只要使用浏览器登入指定的IP即可进入Node-RED的编辑画面,设定好想要的流程后,背景程序会将流程转换成程序代码交给Node.js环境运行。

其实在Maker圈,可视化界面开发工具已经相当流行,特别是MIT开发的Scratch,以及Google开发的Blockly。那么,Node-RED跟这两大视觉开发工具相比,又有什么样的优势呢?

 

Node-RED特色

Node-RED起源于2013年IBM’s EmergingTechnology Services group的一个计划的副产物,工程师Nick O’Leary和Dave Conway-Jones想用可视化界面来概念性验证一套MQTT应用,让Node-RED因此孕育而生。

Node-RED很快成为更加全面性的开发工具,并于2013年9月成为OpenSource,于2016年10月加入JS Foundation。(以上说明节录自Node-RED官网)

Node-RED提供各式的API,包括因特网服务,例如推特与查询天气、呼叫使用各式的通讯协议,例如MQTT、TCP、UDP等;在嵌入式系统上,Node-RED提供控制GPIO的功能,并使用MQTT或是HTTP等协议与云端做沟通,架构IOT产品。

让Node-RED流行于各大网络社群的理由,在于它拥有以下诸多的优点:

1.相较于撰写程序代码,使用图形化界面可更快速开发。

2.适合作为概念性应用验证的开发工具。

3.浅显易懂,每个API都有文字说明可供查询。

4.具有高度扩充性,已有大量的Library、Flow、Node供人下载。

如何启用Node-RED

想在Raspberry Pi上使用Node-RED,需先安装Node.js运行环境,如果是使用FRED,或是IBM Bluemix使用Node-RED,则不须安装。

安装Node-RED:在Raspberry pi的Bash输入「sudo npm install -g node-red」

 

2. 启动Node-RED:

(1) 在Bash输入「node-red」

 

(2) 在计算机上使用远程桌面联机(Pi须安装xrdp),打开Linux的浏览器进入http://localhost:1880,即可进入Node-RED编辑页面,这里跟Bash登入画面一样,输入Pi的帐号密码

 

 

进入编辑页面了

 

实作范例

Hello Node-RED

http://noderedguide.com/node-red-lecture-2-building-your-first-flows-15/

接下来,让我们来学习如何使用Node-RED的基本单位:Node,并使用Nodes来传送字符串「Hello Node-Red!」来跟Node-RED打声招呼吧!

使用左侧的inject与debug接成以下的流程:

 

Inject node:我们使用这个Node来输入各式的数值,举凡变量、数字、字符串、时间常数都可以,Inject通常都是一个Flow的开头。

 

Debug node:这个Node就像是示波器的探棒,会将流入此点的对象信息于右边的Debug字段显示出来,我们使用这个Node检视结果是否符合预期的结果。

实作结果:左侧node按下蓝色的按钮后,右侧的debug栏接收到input的讯息。

 

2. LED灯开关

Node-RED有个很大的特色,就是可以方便地控制RaspberryPi,在这之前,呼叫GPIO都是使用Python、C语言、Java等等;而现在只要设定Node-RED就可以达到相同的效果,在这个流程输入开或关的讯息,判断式处理完后,会将1或0传入Rpi Pin node。

(RPi node预设只有RPi的Node-RED才有)

 

Inject Node:我们这边设定将”On"字符串输入给Switch function。

 

Function Node:我们使用这个Node作为撰写自定义函式的地方,使用的语法为Javascript,这?边先写一个简单的判断函式确认是ON或是OFF,最后将msg对象往下传。

 

RPi Pin node:我们使用这个Node来设定RPi的脚位输出,可分为数字输出与PWM;本次做数字输出,选择GPIO17脚位。

 

Raspberry Pi3脚位图:

 

实作结果:

 

可能遇到的错误

1.无法使用npm指令

Raspberry Pi尚未安装Node.js,需先安装Node.js才能使用npm。

2.进入0.01:1880无法显示网页?

需先在Raspberry Pi的terminal输入node-red,启动服务器才能登入页面。

3.Function Node无法输入程序代码?

GNU/Linux内建浏览器的Bug,建议使用FireFox的浏览器。

作者:何信昱

审核编辑:符乾江
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分