快速上手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跟这两大视觉开发工具相比,又有什么样的优势呢?

ode-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的浏览器。
原文参考
https://mp.weixin.qq.com/s?__biz=MzU0MTg0ODIzNA==&mid=2247485188&idx=2&sn=615be89aafa52f4ef2077c34b189d81a&chksm=fb22e0c1cc5569d7a8693201128c7f88e1a925611188961bbe811546503eaa937a72d2409eee#rd

快速上手IOT视觉化开发工具Node-RED的更多相关文章
- 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发
简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...
- vue开发工具node.js及构建工具webpack
1.概念 node.js:可以运行JavaScript的服务平台,可以把它当做一个后端程序,只是它的开发语言是JavaScript (通常情况下,JavaScript的运行环境都是浏览器,因此Java ...
- 如何快速上手.net下单元测试工具NUnit?
NUnit基本使用 准备知识: 读此博文需要了解单元测试基本概念及NUnit的的安装. 传送门:单元测试之道(使用NUnit) 1.常见的错误 当学习一个新东西时,先学习错误,是最快的方式. 1.1 ...
- vs转eclipse之工具快速上手篇
eclipse工具下载 首先说明,本篇内容适用于刚开始学java的同学,老手大牛等可以路过. 不得不说vs确实很强大,常用的都在安装包里集成了,几乎可以一键安装,直接使用,操作起来非常方便. ecli ...
- java开发工具比较(16个工具修订版)
1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...
- 十四种Java开发工具点评
在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择.的确,这些工具各有所长,都没有绝对完美 ...
- Java开发工具全面比较
1.JDK (Java Development Kit)Java开发工具集 从初学者角度来看Java开发工具,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对 ...
- JAVA程序员常用开发工具
1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...
- LInux系统的C语言开发工具笔记
常用的C语言开发工具有很多,每个开发工具所支持的库函数和对标准的实现都有差异.对于初学者,选择一款使用广泛.上手容易的开发工具才是王道.在Windows 上很多从事C和C++开发的人员都选择VS作为开 ...
随机推荐
- taskset
常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源: 这个时候我们就可以把一些不太重要的比如co ...
- [转]JMX的Hello World
这篇写的很详尽了: http://www.blogjava.net/hengheng123456789/articles/65690.html
- C#基础学习之事件的理解和应用
事件的使用和委托类似,也是分四步来实现:声明委托.定义事件.注册事件.调用事件 我们先看一下事件的定义 //定义委托 public delegate void PublishEventHandler( ...
- 前端面试总结——http、html和浏览器篇
1.http和https https的SSL加密是在传输层实现的. (1)http和https的基本概念 http: 超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和 ...
- python导入模块总结与分析
定义1:python中什么是模块? 答:模块就是一个.py文件,每一个以py作为后缀的文件,都是一个模块. 定义2:Python中什么是包? 答:包是一类特殊的模块,他能包含其他模块,为了更好的组织模 ...
- luogu P2617 Dynamic Rankings(主席树)
嘟嘟嘟 一句话题意:带修改区间第\(k\)小. 不修改都会,主席树板子.但是有修改就要比较深入的理解主席树了. 众所周知,主席树中以\(i\)为根的线段树维护的是\([1, i]\)这个前缀的权值,因 ...
- spring boot集成dubbo
spring-boot-start-dubbo spring-boot-start-dubbo,让你可以使用spring-boot的方式开发dubbo程序.使dubbo开发变得如此简单. 如何使用 1 ...
- 二进制包 vs. 源代码包
在ROS中, 我们可能经常会遇到缺少相关的ROS依赖的问题. 有些时候你编译或者运行一些ROS程序, 系统会提示找不到XXX功能包. 如果是缺少ROS的依赖, 通常可以用以下命令来安装: $ sudo ...
- Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getUser' in class org.uncommons.reportng.ReportMetadata threw exception class java.net.UnknownHostException :
Running TestSuite [TestNG] [WARN] Ignoring duplicate listener : org.uncommons.reportng.HTMLReporter ...
- 实现Redis Cluster并实现Python链接集群
目录 一.Redis Cluster简单介绍 二.背景 三.环境准备 3.1 主机环境 3.2 主机规划 四.部署Redis 4.1 安装Redis软件 4.2 编辑Redis配置文件 4.3 启动R ...