『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 313449|回复: 3454

[教程系列] Node Red系列教程之二 使用Node Red建立第一个Flow

  [复制链接]

23

主题

656

帖子

4605

积分

元老级技术达人

积分
4605
金钱
3934
HASS币
30

教程狂人

QQ
发表于 2018-1-12 14:27:15 | 显示全部楼层 |阅读模式
本帖最后由 alei643 于 2018-1-17 16:36 编辑

导航帖:
       Node Red 系列教程之一 初识Node Red

       Node Red系列教程之二 使用Node Red建立第一个Flow             Node Red系列教程之三 实现Node Red与Home Assistant之间的联动

前方高能预警:本帖包含较大容量的Gif动画,动画缓冲时间可能会有点长,爪机党请注意流量。
一、Node Red安装
      
1、
Raspbian                         
              树莓派的映像中已经预装Node Red,可以通过下面的命令升级:
   
              如果要在树莓派启动时运行Node Red,执行下面的命令:
sudo systemctl enable nodered.service

              Node Red 其它命令:
              停止运行:
node-red-stop

              查看日志:
node-red-log


         2、Hass.io
               在Addon Store中添加下面的插件库
               

https://github.com/notoriousbdg/hassio-addons

        3、官方提供Docker安装包,查看相关命令请移步官方

       安装完成之后,访问http://Your Node Red Services IP Address:1880 使用Node Red。如果是在树莓派和Docker中安装,我们还可以在HA中添加下面的代码,将Node Red加入到HA的左侧导航菜单中
      
panel_iframe:
 nodered:
   title: 'Node-Red'
   icon: 'mdi:shuffle-variant'
   url: 'http://Your Node Red Services IP Address:1880/'


二、Node Red UI
      
         是不是已经迫不及待想要体验Node Red强大的功能了,先不要着急,让我们先来了解一下Node Red的使用方法和注意事项,以便我们可以快速上手使用Node Red,并创建自己的Flow。
         Node Red WEB UI 中分为三个工作区域,分别是“功能区”、“流程编辑区”、“交互区”。图2.1所示

          火狐截图_2018-01-12T03-42-49.914Z_看图王.png
图2.1    Node Red WEB UI

         功能区包含了“输入”、“输出”、“功能”等一些常用的Node节点,每一个Node节点都代表着一个功能,这些功能可以是TCP、UPD协议数据的输入,或者是JSON、XML语言格式的输出。同时借助开发人员开发的第三方Node节点,我们可以方便的实现更多复杂的功能,比如控制树莓派的GPIO。

        我们将一个Node节点拖拽到中部的流程编辑区,双击Node节点配置必要的参数,并使用线将这些节点相互连接,就构成了一个Flow,通过点击页面右上角的Deploy实现该流程运行。

         在开启配置第一个流程之前,有一些操作细节需要注意,图2.2中是一些不同功能的Node呈现不同的UI视觉,他们是有区别的, 为了直观提醒开发者当前Node的分类、状态等信息。灰色方形UI(1)表示该Node节点需要连线,在左侧代表需要有输入节点,在右侧代表需要有输出节点。蓝色的圆点UI(2)代表该Node有参数可以选择设定,如果部署后更改了节点的参数,再次部署前会以高亮状态显示。红色的三角代UI(3)表该Node有必要的参数需要设定。大方形UI(4、5)类似一个虚拟按键功能,用来开启或者屏蔽改Node节点功能,方便开发者调试。

             QQ图片20180112124739.png
图2.2    Flow中的UI视图

          图2.3中是流程正常运行的UI界面,黄色的小方框代表该节点有数据输入,但已经被Node中设定的条件过滤,后方的注释是最后一次接收数据的时间,蓝色的小方框代表该节点输出执行成功,注释为发送的数据和时间。
             4.png
图2.3  Flow 运行时的UI视图

         图2.4同样为流程正常运行时的界面,展示的信息与图2.3稍有区别,这些细节功能主要为开发者提供直观的视图。
5.png
图2.4  Flow运行时的UI视图



三、Node Red 制作第一个流程

          啰嗦了那么多,让我们正式开始制作一个简单的流程,下面这个流程只包含了两个组件,输入分组中的Inject和输出分组中的debug。我们将这两个组件拖拽到主工作视图中,并用导线将两个流程连接,然后点击Deploy部署该Flow。我们打开右侧交互区的debug视图,你会发现好像什么都没有发生,别急,回到主视图中,点击inject节点的左侧虚拟按键,这时候交互区debug视图就应该有调试的信息出现了。
          我们再次回到主视图中,双击Inject组件,打开参数配置窗口,我们将Repeat参数中的none修改为interval,点击save保存参数,然后点击Deploy重新部署该流程,再次点击Inject的虚拟按键,查看交互区的debug信息,看看发生了什么。 这一次,Inject组件被激活后,将每1秒钟执行一次输出动作,将时间戳的数据传送给debug组件。

         
游客,如果您要查看本帖隐藏内容请回复
  
3.1 第一个Flow流程动画(点击放大观看)

          我们再来制作一个稍微复杂一点的流程,下面这个动画中的流程使用了TCP、delay、switch、change、debug五个Node。简单介绍一下该流程实现的功能,使用TCP组件在Node Red端建立一个端口为1881的TCP Server,如果监听到有数据输入,delay节点延时5秒,将接收到的数据传送给switch节点,switch节点判断该数据是不是自己想要的,如果不是则丢弃数据,如果是,则将该数据发送给change节点,change将该数据进行二次加工,并发送给debug组件。

游客,如果您要查看本帖隐藏内容请回复
3.2 第二个Flow流程动画(点击放大观看)

        Node Red为了方便开发者分享制作的流程,提供便捷的流程导入和导出功能,只要在Node Red视图中点击右上角菜单图标,选择导入,选择剪贴板,在打开的剪贴板选项卡中粘贴Flow代码,然后点击导入。我将第二个例子的代码分享在下面:
         
[{"id":"56723380.1b6ddc","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"b78f746a.444778","type":"tcp in","z":"56723380.1b6ddc","name":"","server":"server","host":"","port":"1881","datamode":"stream","datatype":"utf8","newline":"","topic":"","base64":false,"x":107,"y":222,"wires":[["38691e83.e2ac62"]]},{"id":"afa3e295.d695d","type":"debug","z":"56723380.1b6ddc","name":"","active":true,"console":"false","complete":"false","x":792,"y":210,"wires":[]},{"id":"38691e83.e2ac62","type":"delay","z":"56723380.1b6ddc","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":280,"y":217,"wires":[["61e13a76.917154"]]},{"id":"61e13a76.917154","type":"switch","z":"56723380.1b6ddc","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"hello","vt":"str"}],"checkall":"true","outputs":1,"x":424,"y":213,"wires":[["1d0ff414.462e0c"]]},{"id":"1d0ff414.462e0c","type":"change","z":"56723380.1b6ddc","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"hello world","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":596,"y":212,"wires":[["afa3e295.d695d"]]}]


这一节就先到这里了,本来按计划是这一贴介绍一下如果实现Node Red和HA的结合,写着写着发现基础内容还有好多需要介绍,看官们还是多忍一下吧。



评分

参与人数 8金钱 +71 收起 理由
homekitroot + 2 感谢楼主分享!
dashu33 + 2 感谢楼主分享!
fantasiataiwan + 2
lyfff + 5 感谢楼主分享!
lidicn + 20 谢谢分享!
windgo + 10 膜拜大神!
Roger + 20 谢谢分享!
neroxps + 10 必须顶

查看全部评分

回复

使用道具 举报

1

主题

110

帖子

756

积分

高级会员

Rank: 4

积分
756
金钱
646
HASS币
0
发表于 2018-1-12 14:31:40 | 显示全部楼层
感谢楼主费心分享
回复

使用道具 举报

6

主题

386

帖子

2045

积分

金牌会员

Rank: 6Rank: 6

积分
2045
金钱
1657
HASS币
0
发表于 2018-1-12 15:09:52 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

2

主题

230

帖子

1901

积分

金牌会员

Rank: 6Rank: 6

积分
1901
金钱
1671
HASS币
0
发表于 2018-1-12 15:12:23 | 显示全部楼层
感謝分享。
回复

使用道具 举报

40

主题

3056

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

积分
11149
金钱
8042
HASS币
182
发表于 2018-1-12 16:05:28 | 显示全部楼层
感谢楼主分享,啊 一直想学Node Red
Nero
回复

使用道具 举报

8

主题

70

帖子

723

积分

版主

Rank: 7Rank: 7Rank: 7

积分
723
金钱
653
HASS币
0
发表于 2018-1-12 16:12:02 | 显示全部楼层
谢谢 正需要
回复

使用道具 举报

1

主题

143

帖子

3662

积分

论坛元老

Rank: 8Rank: 8

积分
3662
金钱
3519
HASS币
0
发表于 2018-1-12 16:57:59 | 显示全部楼层
学习!!!!!
回复

使用道具 举报

4

主题

313

帖子

1965

积分

金牌会员

Rank: 6Rank: 6

积分
1965
金钱
1652
HASS币
0
发表于 2018-1-12 17:28:28 | 显示全部楼层
这个得学,比ha自带的自动化应该简单
回复

使用道具 举报

4

主题

208

帖子

1408

积分

金牌会员

Rank: 6Rank: 6

积分
1408
金钱
1199
HASS币
0
发表于 2018-1-12 19:18:47 来自手机 | 显示全部楼层
谢谢大神,感动啊 终于有个node red教程了
回复

使用道具 举报

1

主题

91

帖子

956

积分

高级会员

Rank: 4

积分
956
金钱
865
HASS币
0
发表于 2018-1-12 19:24:17 | 显示全部楼层
继续继续学习。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-21 16:58 , Processed in 0.338441 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表