Node-RED是构建物联网(IOT, Internet of Things)应用程序的一个强大工具,其重点是简化代码块的“连接”以执行任务。它采用可视化编程方法,允许开发人员将预定义的代码块(称为“节点”,Node)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当他们连接在一起的时候,构成一个“流”(Flows)。
Node-RED最初是IBM在2013年未开发的一个开源项目,以满足他们快速连接硬件和设备到web服务和其他软件的需求--最为物联网的一种粘合剂,它很快的发展成为一种通用的物联网编程工具。重要的是,Node-RED已经迅速形成一个重要的、不断增长的用户基础和一个活跃的开发人员社区,他们正在开发新的节点,同时允许程序员复用Node-RED代码来完成各种各样的任务。
虽然Node-RED最初是用来处理物联网的应用,也就是说,它与现实世界交互和控制设备,随着它的发展,他已经成为了一个较为开放的物联网开发工具。本章内容将介绍一些Node-RED的示例,既可以了解其功能,也可以介绍其基本概念。同时还将讨论Node-RED的历史及其起源,以便让您了解Node-RED是什么样的,哪些类型的任务最好留给传统的编程环境。
到本章结束时,希望你对Node-RED,编程模型和一些简单的预构建节点有一个初步的认识,同时能深入了解Node-RED的起源和最佳使用方法。
第一个例子是运用收到的包含推特标签的反馈信息,用来打开和关闭树莓派的LED,在这个例子中,采用了在树莓派上运行的Node-RED,当然后面也补充了基于windows的Node-RED做的一个简单的模型。
示例1.1 使用twitter控制树莓派
Node-RED的流检查推特信息,当一个带有#LED推特信息的标签被检测到,则打开连接到树莓派的LED。具体的编程流如图所示。正如你所看到的,它由3个节点连接在一起,其中左边为推特节点,中间为触发节点和最右边为树莓派的节点(GPIO node)。通常Node-RED的图标都由其方框中左边的图标表示节点的类型,例如第一个节点的twitter鸟图标。方框右边的部分则可以由程序开发者自行编辑。
图1 使用twitter标签触发树莓派LED3节点流
这三个节点中的每一个都被构建到Node-RED可视化编程工具中,并可以从一个节点编辑栏拖到主工作区。然后将输出选项卡连接到下一个节点的输入选项卡,节点框右边或左边的小灰斑连接,进而实现流的通路,下一个章节将详细讨论,但现在让我们把重点放在使用逻辑上。
Twitter节点是Node-RED的内置节点,简化了使用Twitter API的复杂性,在功能上它可以配置用户帐户的凭据和各种搜索字符串。在这个应用中,用到只是寻找# LED标签。当Twitter节点在对用户的推文或公共推送的反馈中看到标签时,它会创建一条新消息,其中包含推送的细节,该消息转发到流(Flow)中的下一个节点。在示例中,由于Twitter节点的输出被连接到触发节点的输入,所以触发节点能接收消息中的详细信息。触发器节点是Node-RED色中的另一个内置节点,其默认行为是等待其输入的任何消息。当它收到一条消息时,它就会触发,输出值“1”,以消息体发送消息。然后等待1秒,然后在消息正文中发送值为“0”,作为第二条消息。
由于触发节点连接到树莓派的通用输入/输出接口(GPIO Node),控制输入/输出或树莓派的其他引脚,它得到的这两条消息。在Node-RED的通用输入/输出口(未详细地介绍树莓派的IO引脚具体信息),当获得一个“1”值的消息时,它将IO引脚电压升高,当它接收到一个带有“0”的消息时,它将引脚的电压拉低。在这个例