zoukankan      html  css  js  c++  java
  • 快速上手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,则不须安装。

    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

  • 相关阅读:
    Java 简单算法--打印乘法口诀(只使用一次循环)
    Java简单算法--求100以内素数
    ubuntu 16.04 chrome flash player 过期
    java 网络API访问 web 站点
    java scoket (UDP通信模型)简易聊天室
    leetcode1105 Filling Bookcase Shelves
    leetcode1140 Stone Game II
    leetcode1186 Maximum Subarray Sum with One Deletion
    leetcode31 Next Permutation
    leetcode834 Sum of Distances in Tree
  • 原文地址:https://www.cnblogs.com/Astar-STEAM/p/9843593.html
Copyright © 2011-2022 走看看