nVisual集成node-red 实现数据采集
node-red是nvisual系统用于连接硬件设备以及第三方系统的重要组成部分,咱们来介绍一下如何使用node-red实现数据采集。
首先先来简单介绍一下node-red的通用使用方式。在页面的左侧,包含很多的节点,每个节点相当于一个函数(方法),通常用于获取数据或者处理数据。节点之间可以通过连线的形式进行数据的传递,从而形成一个“流”,我们可以通过这个”流“来实现各式各样的功能。
接下来我们详细介绍一下如何通过node_red来实时采集nvisual设备在线状态数据。
实时采集nvisual设备在线状态数据,即根据nvisual系统的设备ip列表,监测这些设备状态的在线情况并显示在系统中。首先对此功能进行一下分解:首先需要获取nvisual系统所有设备的ip列表、检测设备的在线状态、对比设备在系统中的原有状态与检测的状态是否一致,最后向系统中写入设备属性并发送提示通知。
下面根据功能的分解来具体实现,首先通过inject节点来设置每隔30秒来监测一下设备状态,此时间间隔可以自行设置。双击inject节点,进入设置界面(所有节点都是通过双击节点的形式进入设置界面),可设置周期性执行以及时间间隔。
之后在获取nVisual设备ip列表之前,需要通过nVisual-getToken节点来登录用户名密码来登录。在nVisual-getToken节点中,打开设置界面,设置连接地址以及用户名、密码,点击完成即可登录成功。
接下来可以通过get-nVisual-ip节点来获取nVisual设备的所有ip。该节点通过设置传入对象类型,可以获取该对象类型下的nVisual系统所有的IP以及各个IP当前在nVisual系统中的监测状态值并返回在msg.payload变量中,数据结构为一个数组。
随后我们遍历从get-nVisual-ip节点返回的数组,将每一个IP通过ui ping节点以ping的方式监测设备是否在线,通过ui ping的使用文档我们的值,需要传入ip的遍变量为msg.host
。因此我们将遍历得到的每一个ip来msg.host的变量名传递给ui ping节点,随后即可得出该ip的设备是否在线。
将检测到的在线情况与nvisual系统中的进行对比,如果一致,则跳过。如果不一致,则通过write-propertie节点写入属性值。通过查看使用文档,我们可以看到,可以使用msg.nvisual.id、msg.nvisual.ip、msg.nvisual.propery和msg.nvisual.properyValue写入目标值。
另外可以通过和send-message节点来发送通知信息。通过查看使用文档,我们可以看到,可以使用msg.nvisual.title、msg.nvisual.content、msg.nvisual.noticePop和msg.nvisual.userId设置目标值。这里需要注意的是nvisual系统管理员权限的用户能收到所有的消息,普通权限的用户只能收到关于自己的消息。
通过以上步骤,我们便可以实现通过node_red来实时采集nvisual设备在线状态数据。在node-red中,每一个节点都有着非常详细的使用介绍,主要是了解每个节点的用途以及接收和发送数据的传参变量名称。下面来介绍一下关于nVisual系统的节点使用:
1. nVisual-getToken
功能:通过用户名和密码来获取nVisual的Token
说明:每条需要调用nVisual接口的流程都需要事先该节点。用于收集用户的用户名和密码以及api的连接地址,保证token的有效性以支撑整条流程的正常运行。
## 2. get-nVisual-ip
功能:获取nVisual的所有IP
说明:通过传入对象类型,可以获取该对象类型下的nVisual系统所有的IP以及各个IP当前在nVisual系统中的监测状态值
3. read-properties
功能:获取nVisual的属性值
说明:该节点的作用为读取nVisual的节点的属性值,您必须输入属性名称的变量,而IP或ID两者选其一进行输入即可,如果IP以及ID都有输入,则以IP为准。
输入:使用msg.nvisual.id和msg.nvisual.ip和msg.nvisual.propery设置目标值,但是静态配置的值具有优先权。
输出:msg.nvisual.id(节点的ID)、msg.nvisual.ip(节点的IP)、msg.property.key(节点的属性名称)、msg.property.value(节点的属性值)
4. write-properties
功能:写入nVisual的属性值
说明:该节点的作用为写入nVisual的节点的属性值,必须输入属性名称、属性值两个变量值,而IP或ID两者选其一进行输入即可,如果IP以及ID都有输入,则以IP为准。
输入:使用msg.nvisual.id、msg.nvisual.ip、msg.nvisual.propery和msg.nvisual.properyValue设置目标值,但是静态配置的值具有优先权。
输出:msg.nvisual.id(节点的ID)、msg.nvisual.ip(节点的IP)、msg.property(节点的属性名称)、msg.property.value(节点的属性值)
5. send-message
功能:发送nVisual的消息
说明:该节点的作用为写入nVisual的消息标题、消息内容、接收消息的用户id以及是否弹出,默认为弹出。用户id可通过nVisual系统中的权限管理来查看
输入:使用msg.nvisual.title、msg.nvisual.content、msg.nvisual.noticePop和msg.nvisual.userId设置目标值,但是静态配置的值具有优先权。
6. write-port-property
功能:批量写入nVisual设备的端口属性值
说明:该节点的作用为批量写入nVisual设备的端口属性值,必须输入端口名称、属性名称、属性值三个变量值,而IP或ID两者选其一进行输入即可,如果IP以及ID都有输入,则以IP为准。
输入:使用msg.nvisual.id、msg.nvisual.ip、msg.nvisual.ports、msg.nvisual.properyValue和msg.nvisual.propery来分别设置id、ip、端口名称、属性值、属性名称等目标值,但是静态配置的值具有优先权。
主要注意的是当使用msg.nvisual.ports、msg.nvisual.properyValue时,需要传递一个数组
7. nVisual-websocket
功能:连接nVisual系统的WebSocket
说明:该节点在每次部署时自动连接,连接成功后当每次收到WebSocket消息则通过msg.webSocket变量来输出。