在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环

在virtualbox中新建虚拟镜像后,为规避网络不稳定的问题,选用桥接模式,使网络与本地一致。(原来使用双网卡模式,发现网络经常不稳定,使得在格式化硬盘及下载docker等方面失败)

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第1张图片

安装系统

虚拟机启动后使用root登录,此时根据提示运行setup-alpine

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第2张图片

Select keyboard layout [none]: 是选择键盘布局,系统默认给你选了none,输入两次cn表示中文。其他都默认,root账户的密码如果要设置后继要记住使用,否则填空。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第3张图片

Which timezone are you in? (’?’ for list) [UTC] 这里输入PRC。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第4张图片

Enter mirror number (1-62) or URL to add (or r/f/e/done) [f] 选择源,r是代表随机指定一个源,f是是自动检测速度最快的源,e是编辑系统对应文件,可以选择f。建议使用e编辑对应的/etc/apk/repositories 文件(配置安装速度更快且稳定):

vi /etc/apk/repositories

按i切换成输入模式,写入镜像文件后按Esc,   :wq  (写入后保存退出),

如果后面显示相关镜像Not Found,重复上一步进入文件夹检查镜像文件输入是否有误。

http://mirrors.aliyun.com/alpine/v3.9/main
http://mirrors.aliyun.com/alpine/v3.9/community

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第5张图片

根据提示键入内容

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第6张图片WARNING: Erase the above disk(s) and continue? [y/N]: 这里输入y确认格式化,等待格式化成功即可。

关机后,在virtualbox中的存储中移除掉之前的iso文件,否则下次启动还是在光盘启动的安装状态,而不是进入我们写入的sda磁盘中。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第7张图片在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第8张图片在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第9张图片

再次启动就可以进行linxu系统,使用root登录,可以使用命令进行更新系统或者安装删除软件:

apk update                              # 更新最新镜像源列表

apk upgrade                           # 升级所有软件

 在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第10张图片

安装docker 

前面我们在安装系统的时候默认在测试源时选择使用e,编辑对应的/etc/apk/repositories 文件,所以文件里已经有对应的镜像文件,所以我们直接下载:

apk add docker            #安装docker

rc-update add docker boot                        设置为默认启动服务
service docker start                            启动这个服务
service docker status                        查看服务状态

 在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第11张图片

安装docker时如果下载时显示全部ERROR,首先考虑网络问题,可以使用解决:

service networking restart     重启网络服务

 如果只是部分条款丢失,如docker正常安装完成显示(11:11),丢失了三条,可以重复运行安装docker命令,直至显示丢失的三条完成安装为(3:3),即为下载完成。此时启动docker服务并查看状态,若显示started则为运行。若显示crashed(碰撞),可以重启docker:

service docker restart      重启docker服务

安装和使用neuron网关软件 

https://hub.docker.com/r/emqx/neuron/tagsNeuron docker 镜像下载:https://hub.docker.com/r/emqx/neuron/tags

 docker pull emqx/neuron:2.5.3-alpine

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第12张图片

下载完成后使用该命令可以查看是否下载完成。 

 docker images 查看所有镜像,可以看到这个emqx/neuron镜像

 启动neuron

docker run -d --name neuron -p 7000:7000  --restart=always emqx/neuron:2.5.3-alpine  
docker ps -a    查看容器,status为up的表示这个容器正在运行中

  • tcp 7000:用于访问 web 和 http api 端口。
  • --restart=always:docker 进程重启时,自动重启 neuron 容器。
  • emqx/neuron:2.5.3-alpine  版本信息

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第13张图片

进入网关搭建 

查看下alpine的IP地址:

ip addr
ifconfig  在windows下这条命令是ipconfig

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第14张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第15张图片

添加南向设备

1、添加modbus rtu设备:

设置ip为windows主机的IP

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第16张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第17张图片

创建组

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第18张图片

创建点位

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第19张图片

在windows上启动modbus slaver模拟从端软件,模拟风速、风向、压力。(modbus-slaver软件在进行连接的时候需要序列号:5455415451475662)

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第20张图片在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第21张图片 

打开数据监控,需要注意的是,在进行modbus-rtu连接时会弹出防火墙询问是否允许访问,选择是,因为对端口进行监控不允许访问会被拦截,值信息会显示插件未启用。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第22张图片在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第23张图片 

2、添加modbus tcp的设备 :

与建立modbus-rtu设备一样,只是把插件类型改成modbus-TCP,端口号改为503。

依次创建组和点位。启动modbus slaver模拟从端软件,模拟温湿度和报警灯。

需要注意的是,与是否启用防火墙不同,若 配置信息有误,数据监控会显示插件信息未回复:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第24张图片在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第25张图片在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第26张图片

正确配置以后则正常连接显示值:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第27张图片

在边缘网关的监控页面,也可以对报警灯状态来进行下发命令,开启或者关闭。 

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第28张图片

搭建物联网云平台mqtt-broker:emqx 

构建emqx

Docker | EMQX 文档

  1. 运行以下命令获取 Docker 镜像:docker pull emqx/emqx:5.3.0   
  2. 运行以下命令启动 Docker 容器:
    docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.3.0 

使用浏览器访问其ip:18083上的web服务页面,默认用户名密码为admin、public。这里的IP是指alpine主机的ip。 

添加北向设备 

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第29张图片

点击对应的应用,添加订阅,选择之前能正常运行的组,主题默认。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第30张图片 在对应emqx的18083页面,可以看到连接的客户端和订阅的主题。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第31张图片

在mqtt客户端进行订阅和发布操作 

如图

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第32张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第33张图片

从北向设备发送数据到云平台

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第34张图片

读取tag进行订阅 

发布订阅以后可以在emqx的连接页面看到他默认的订阅信息,我们同样复制去MQTT中。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第35张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第36张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第37张图片

数据上下行格式 | Neuron 文档 (neugates.io)

发布消息的json格式可以通过官网查找。uuid:唯一标识符。

接收消息:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第38张图片

写tag发布消息

和上述基本相同

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第39张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第40张图片

在MQTT-broker中转发数据

Webhook | EMQX 文档

HTTP 服务 | EMQX 文档

这里以HTTP为例

首先我们使用 Python 搭建一个简单的 HTTP 服务,用来接收 POST / 请求,该服务打印请求内容后返回 200 OK:见官网

文件所在目录运行如下命令:

# 安装 flask 依赖
pip install flask

# 启动服务
python3 http_server.py

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第41张图片

创建 HTTP 服务数据桥接 

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第42张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第43张图片

输入数据桥接名称,要求是大小写英文字母和数字的组合,这里我们输入 my_httpserver

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第44张图片

至此您已经完成数据桥接创建,接下来将继续创建一条规则来指定需要写入的数据。

创建数据转发规则

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第45张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第46张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第47张图片

至此您已经完成整个创建过程,可以前往 数据集成 -> Flows 页面查看拓扑图,此时应当看到 t/# 主题的消息经过名为 my_rule 的规则处理,处理结果转发到 HTTP 服务。

测试数据桥接与规则 

使用 MQTT向 t/1 主题发布主题,可以直接用MQTT.fx订阅主题发布此操作同时会触发上下线事件。

配置jetlinks连接emqx

打开Ubuntu虚拟机查看IP(ip addr |more)。在windows中浏览器通过ubuntu的IP加上9000端口来访问jetlinks。默认的用户名密码都是admin。 如果进不去稍等2-3分钟再试,其后台服务还没有完全启动完成。

创建产品、设备作为mqtt客户端连接eqmx

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第48张图片

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第49张图片

注意此时产品还没有启用,做完链接配置以后再启用产品。 点入编辑添加物模型,这里的物模型标识要与前面neuron点位里面的标识一致。这样方便emqx的数据转发。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第50张图片

设备接入网关——新建接入方式,选择mqtt broker接入 ,配置完成后启用。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第51张图片

新增设备,需要是刚刚创建的产品中的设备,启用设备。此时,jetlinks已经作为mqtt客户端连接上了emqx。在emqx的web页面可以看到多了一个连接上来的客户端。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第52张图片

在emqx中进行数据转发实现上报属性数据

在emqx的集成/规则中创建规则,来进行数据转发。从之前的mqtt.fx中可以看出,对应主题为/neuron/emqx/modbus_tcp_device/modbus_tcp_group的上报传感器的报文数据的负载为:

{"node": "modbus_tcp_device", "group": "modbus_tcp_group", "timestamp": 1697634289873, "values": {"temperature": 18.0, "humidity": 64.5, "alarm": 0}, "errors": {}} 

SELECT payload.values as v FROM "/neuron/emqx/modbus_tcp_device/modbus_tcp_group"
 

有关jetlinks格式参见其官网文档:MQTT直连接入 · JetLinks企业级物联网基础平台 (yuque.com)

 规则创建完成后在jetlinks页面,就可以看到设备的运行状态中有数据了,数据的时间也在不断更新,数据的值来源于modbus-slaver中的模拟。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第53张图片在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第54张图片

同理还可以实现从jetlinks云平台控制开关灯。

至此就完成了三方平台互相通信的过程。

利用虚拟仿真,将串口数据转换成网络数据上传至云平台

搭建虚拟仿真

首先我们先连接单个485型的二氧化碳传感器

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第55张图片

点击终端(主机)配置COM200

 在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第56张图片

 二氧化碳传感器默认定值是2500,后续我们可以改为随机值,可以在网关上看到上传随机数据。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第57张图片

可以通过串口调试助手进行测试其串口通信是否正确:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第58张图片

将串口数据转换为网络数据 

使用串口转网口软件,我这里用的是VSPE:

指定设备类型为服务端:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第59张图片
 

配置相应COM口和波特率:

ip设置位0.0.0.0,表示监听本机所有IP。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第60张图片

 打开网络调试助手,作为tcp-client连接本机的5555端口,发送modbus数据

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第61张图片

 和前文相同,在neuron中创建南北向设备,在emqx中创建规则使数据能够顺利交互,最后在jetlinks设备中看到虚拟设备的运行状态:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第62张图片

运行实例

单个设备运行成功后,对整套系统就很好理解了,我们在此基础上创建一个实例,达到安装多个设备的效果:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第63张图片

参考Modbus TCP | Neuron 文档 (neugates.io) 在南向设备中添加点位,不同设备连接4150/4017的接口不同设备的点位也不同,这里我的数据作为一个参考:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第64张图片

仿真里面不支持单独寄存器地址的查询,而实际设备是支持的。 利用串口转网口程序补足虚拟仿真数据不交互的缺陷:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第65张图片

 jetlinks云平台可以连接在线并获取数据:

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第66张图片

 从云平台和边缘网关上进行写开关操作,仿真中的报警灯均可以亮灯,风扇转动。

在alpine-linux搭建边缘网关获取网络modbus数据并构建物联网系统闭环_第67张图片

你可能感兴趣的:(物联网边缘网关,linux,运维,服务器)