Thingsboard之Gateway使用示例

Thingsboard之Gateway使用示例

国庆期间西安阴雨绵绵,闲来无事,把thingsborad运行搭建起来,体验了一把。总体来讲CE版本还是很棒的,提供了物联网平台该有的基础能力。个人认为物联网项目开发有两个重点内容,一个是链接设备,实现设备数据的采集、设备控制指令的下发,另一个是采集数据的应用、包括数据的展示和分析等。Thingsboard CE版本提供了Gateway网关能力,实现了物联平台和设备之间互联的功能。Gateway本身的介绍官网已经提供了比较完善的文档,基础性知识就不在这里赘述了,可以详细参考Gateway https://thingsboard.io/docs/iot-gateway/getting-started/ 使用指南。

示例Gateway版本说明

搭建使用Gateway之前,需要先搭建好Thingsboard基础平台,并实现Gateway和Thingsboard平台间的通信。Gateway有Windows、linux、树莓派等多个运行版本,为了实现OPC和modbus的模拟测试,我选择了Windows版本的Gateway。官方现在提供tb-gateway-1.4版本的运行包供下载,经过测试,发现还不支持Modubs接入能力,索性下载了代码,重新编译构建了2.2.1-SNAPSHOT版本。

编译Thingsboard代码需要爬墙,过程比较顺利

Gateway示例场景

平台搭建运行好的第一个想法就是先连接一个设备,并实现和设备的互动,包括采集设备数据和给设备下发动作指令。看到官网上又一个风力发电机的示例,觉得很好,不如直接拿来修改实践一下。

定义一个资产【风力发电机】,里面包括两个设备【风向传感器】和【旋转系统】
1、采集到风向传感器的数据
2、根据风向传感器的数据下发旋转指令给旋转系统

实验场景里并不是真的有风力发电机设备,我们通过modbus模拟仿真软件来生成数据,并在Thingsboard里虚拟定义风向传感器和先转控制系统。这里用了ModbusSlave软件进行模拟,采用串口的方式进行通信,同时使用Virtual Serial Port Kit工具来虚拟串口。

Modbus设备模拟

Modbus协议包括ASCII、RTU、TCP等,我们选用RTU方式。没有更多的实验电脑,只好采用虚拟机,并安装了一个Windows2008操作系统。
1、先安装串口模拟工具Virtual Serial Port Kit,工具使用比较简单
Thingsboard之Gateway使用示例_第1张图片
添加COM1连接到COM2,并设置为启动状态。可以通过操作系统的设备管理查看串口信息。
Thingsboard之Gateway使用示例_第2张图片
看到FabulaTech Virtual Serial Port说明定义成功了。COM2用来给ModbusSlave连接,COM1用来给GateWay连接。
如果使用Modbus TCP方式的话,串口模拟这一步就可以省了
2、安装Modbus模拟仿真软件ModbusSlave,为了方便测试软件是否正常工作,ModbusPoll软件一并安装好。先启动ModbusSlave,并连接到COM2。
Thingsboard之Gateway使用示例_第3张图片
由于准备用Modus RTU方式通信,因此选择连接到 Serial Port选项。再启动ModbusPoll,连接到COM1。
Thingsboard之Gateway使用示例_第4张图片
连接成功后,Tx数字开始增长,打开通信界面可以看到通信信息。
Thingsboard之Gateway使用示例_第5张图片
至此,说明Modbus模拟环境是好的了。关掉ModbusPoll软件,把COM1空闲出来,留给GateWay使用。

为了简化设备定义,给【风向传感器】定义了一个采集属性windDirection,给【旋转系统】定义了一个控制属性turbineDirection(实际上旋转控制会比这复杂的多)。
Thingsboard之Gateway使用示例_第6张图片

安装并配置GateWay

由于采用的Modbus通信协议,我们直接安装tb-gateway-2.2.1-SNAPSHOT版本。
Thingsboard之Gateway使用示例_第7张图片
执行install安装提示不成功,看了下install.bat脚本,索性直接命令行里执行tb-gateway install,服务注册成功。
Thingsboard之Gateway使用示例_第8张图片
修改tb-gateway.yml配置文件,主要是host属性和accessToken属性,host是thingsborad平台的地址,accessToken是thingsborad平台中定义的Device(类型为GateWay)的"访问口令",保存修改后重启服务。
Thingsboard之Gateway使用示例_第9张图片
在平台上看到了相关的服务属性数据,说明网关和服务端已经联通了。
由于官网并没有提供modbus的示例扩展配置文件,以GUI的方式直接新增一个配置。
Thingsboard之Gateway使用示例_第10张图片
Thingsboard之Gateway使用示例_第11张图片
Thingsboard之Gateway使用示例_第12张图片
注意串口信息保持和ModbusSlave中的配置保持一致,GUI配置详细参考GateWay手册。配置成功后,GateWay会根据扩展配置动态生成风向传感器和旋转系统两个设备,查看具体设备的最新遥测,会发现ModbusSlave里设置的值已经采集上来了。
Thingsboard之Gateway使用示例_第13张图片

利用RPC实现向GateWay下发指令

thingsborad提供了RPC能力,GateWay的OPC、MQTT、Modbus协议都实现了对RPC的支持。官网上RPC部分的介绍还不够完备,做的过程中花了些时间去阅读了GateWay的源码,才大概搞清楚了使用方式。后面有时间再把GateWay源码分析写一篇。
thingsborad的Rule Chains提供了一种RPC的调用方式,这个使用起来比较便捷,我们采用这种方式实现向GateWay的指令下发。修改了下Tutorial of RPC Call Request规则链:
Thingsboard之Gateway使用示例_第14张图片
里面重点是New RPC Message个节点的定义,为了看着清晰,把里面的逻辑简化了,重点展示指令下发方式。
Thingsboard之Gateway使用示例_第15张图片

RPC指令下发消息体中,method = ‘write’ ,para的格式为{‘tag’:‘xx’,‘functionCode’:16,‘address’:x,‘value’:x},functionCode支持05、06、16

实现了turbineDirection的值跟随windDirection的值变化的效果,即风向指向哪里发电机叶片就转向哪里。
RPC下发指令给设备部分有一点小BUG,修正后重新编译打包tb-gateway-2.2.1-SNAPSHOT。

时间仓促,大概写了个执行思路,里面有很多细节需要慢慢调试。

我的 QQ:1821673038 欢迎大家交流指正

你可能感兴趣的:(物联网,边缘计算,边缘设备,开源物联网,IOT,ThingsBoard,OPC,Modbus)