快速上手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作为开 ...
随机推荐
- Spring Boot 以 war 方式部署
Spring Boot 默认自带了一个嵌入式的 Tomcat 服务器,可以以jar方式运行,更为常见的情况是需要将 Spring Boot 应用打包成一个 war 包,部署到 Tomcat.Jerry ...
- upper_bound()与lower_bound()的使用
upper_bound()与lower_bound()的使用 c++中的许多库函数可以使我们的代码量大大减少,也可使问题简单化.很早之前就接触了upper_bound()与lower_bound(), ...
- 华为18.9.5校招笔试题AK
26进制加法(一) 'a'-'z'代表十进制的0-25,求26进制加法.例如 'z'+'bc'= 'cb' 博主思路: 首先将长度不同的字符串高位补'a' 从低位开始将字符转换为10进制相加 计算进位 ...
- JavaScript设计模式—单例模式
单例模式介绍 系统中被唯一使用的,一个类只有一个实例 单例模式的思路是: 一个类能返回一个对象的引用(并且永远是同一个)和一个获得该实例的方法(静态方法,通常使用 getInstance 名称). 那 ...
- iOS网络缓存的系统实现是一个烂尾工程
烂尾的原因是request的一致性比较接口没有开放出来.
- tbb静态库编译
源自Intel论坛 Jeff的方法https://software.intel.com/en-us/forums/intel-threading-building-blocks/topic/29779 ...
- docker 导入导出镜像
docker容器导入导出有两种方法: 一种是使用save和load命令 使用例子如下: docker save ubuntu:load>/root/ubuntu.tar docker load& ...
- mysql安装后找不到sock文件
mysql rpm安装方式之后,启动找不到sock文件,经排查是之前安装的由mysql, 需要时yum list installed mysql 或者 rpm -qa |grep -i mysql ...
- grep, sed 与 awk 补补课,到底怎么用!
grep, sed 与 awk 相当有用 ! gerp 查找, sed 编辑, awk 根据内容分析并处理. awk(关键字:分析&处理) 一行一行的分析处理 awk '条件类型1{动作1}条 ...
- docker - kubernetes 网络(转)+ 架构图
1.host网络 连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样.可以通过--network=host指定使用 host 网络.docker ...