作者:何信昱

现在有越来越多非专业背景但有创造热诚的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,则不须安装。

  1. 安装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的帐号密码

进入编辑页面了

实作范例

  1. 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的更多相关文章

  1. 简明易懂,将细节隐藏,面向新手树立web开发概念——学完Java基础语法,超快速上手springboot+mybatiJavaWeb开发

    简明易懂,将细节隐藏,面向新手树立web开发概念 --学完Java基础语法,超快速上手JavaWeb开发 Web本质(先忽视各种协议) Web应用可以理解为浏览器和服务器之间的交互. 我们可以看一个简 ...

  2. vue开发工具node.js及构建工具webpack

    1.概念 node.js:可以运行JavaScript的服务平台,可以把它当做一个后端程序,只是它的开发语言是JavaScript (通常情况下,JavaScript的运行环境都是浏览器,因此Java ...

  3. 如何快速上手.net下单元测试工具NUnit?

    NUnit基本使用 准备知识: 读此博文需要了解单元测试基本概念及NUnit的的安装. 传送门:单元测试之道(使用NUnit) 1.常见的错误 当学习一个新东西时,先学习错误,是最快的方式. 1.1 ...

  4. vs转eclipse之工具快速上手篇

    eclipse工具下载 首先说明,本篇内容适用于刚开始学java的同学,老手大牛等可以路过. 不得不说vs确实很强大,常用的都在安装包里集成了,几乎可以一键安装,直接使用,操作起来非常方便. ecli ...

  5. java开发工具比较(16个工具修订版)

    1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...

  6. 十四种Java开发工具点评

    在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择.的确,这些工具各有所长,都没有绝对完美 ...

  7. Java开发工具全面比较

    1.JDK (Java Development Kit)Java开发工具集 从初学者角度来看Java开发工具,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对 ...

  8. JAVA程序员常用开发工具

    1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...

  9. LInux系统的C语言开发工具笔记

    常用的C语言开发工具有很多,每个开发工具所支持的库函数和对标准的实现都有差异.对于初学者,选择一款使用广泛.上手容易的开发工具才是王道.在Windows 上很多从事C和C++开发的人员都选择VS作为开 ...

随机推荐

  1. 高性能网站架构缓存——redis集群

    相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的实际应用中,使用redis肯定不会使用单机版,不光是redis不能使用单机版,其他的也不会使用,所以今天我们来说一下re ...

  2. 跟我一起阅读Java源代码之HashMap(三)

    上一节我们讲到了如何用散列和链表实现HashMap,其中有一个疑问今天已经有些答案了,为什么要用链表而不是数组 链表的作用有如下两点好处 1. remove操作时效率高,只维护指针的变化即可,无需进行 ...

  3. IM——技术方案

    一. 即时通讯技术方案 1. 第三方SDK: 环信, 融云, 网易云信, 腾讯 中小型公司/初创型: 建议使用第三方. 好处: 快, 符合快速开发的需求, 自己和后台人员不需要做什么操作 缺点: 你的 ...

  4. CSS控制列表与导航的制作

    <style type="text/css"> /*body默认是有边距的*/ body{ margin:0;} /*ul默认是有边距的所以先将边距去掉IE78只要加上 ...

  5. php5.5.* mysqlnd驱动安装

    1.什么是mysqlnd驱动? PHP手册上的描述: MySQL Native Driver is a replacement for the MySQL Client Library (libmys ...

  6. 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    首先把 node_modules 文件夹删除 然后运行以下命令: cnpm install 这样就可以正常运行

  7. RHEL 7.6 安装 Oracle 18c RAC

    RHEL 7.6 安装 Oracle 18c RAC 第一部分 安装规划 虚拟环境 VirtualBox 6.0 OS 版本 Red Hat Enterprise Linux Server relea ...

  8. EatWhat 实用的APP

    EatWhat最近比较闲开始学习煮粥,买了好多米和豆子,每天煮的都不一样,试了几天发现有的时候记不住要煮什么粥,所以就写了这个APP.每天煮粥的时候拿出来看看就可以了,再也不用思考半天要煮什么粥了. ...

  9. CoreText 关键性常用函数说明

    CoreText是专门进行文字绘制的函数集合 CoreText 将单个字符分为 · baseline(基线),一条假想的线,一行上的字形都以此线作为上下位置的参考,在这条线的左侧存在一个点叫做基线的原 ...

  10. UITableView 基本使用方法总结

    1..首先,Controller需要实现两个  delegate ,分别是  UITableViewDelegate 和  UITableViewDataSource2.然后 UITableView对 ...