广东省城市生命线工程的桥梁项目,都是户外的大型基础设施,现场的施工作业难度非常大,而且还涉及周边市政部门去现场的协调。 这个特点,使得去现场作业的人员,时间窗口非常有限,对现场的设备,基本上只能到场后快速接入,然后尽快离场。
上面的工程特点,就是物联网技术方案的约束条件。
每座桥梁上面拥有的众多物联网设备,它们通过RS485总线、LORA、以太网的方式,共同构成了一个现场的物联网。
数据采集设备,部署各个位置上,负责对现场桥梁数据,进行各种数据采集。
在桥梁的某个固定位置,会部署一个中控机柜。数据采集设备们,在完成数据采集后,会通过有线或者无线的方式,将数据汇总上报到中控机柜。
中控机柜,里面只要是负责供电的电源模组,复杂网络接入的交换机,负责数据集中处理的边缘端工控机。
在现场侧,由于施工和维护的难度限制,桥梁跨度又非常大,所以存在如下组网原则:
镭射一体机、振动仪这类高速通信的设备,采用光纤/以太网这类有线方式,安装位置在机柜附近
温湿度计、水准仪、应变计、位移计、倾角计,这类低功耗的设备,采用LORAWAN这类有线方式,安装位置桥梁的各个位置。
边缘计算设备、LORAWAN网关、交换机网关、电源模组,安装在机柜中,各种传感器数据通过有线和无线,汇聚接入到机柜中。 数据在边缘计算设备上进行汇聚之后,再由边缘计算设备作为中控,从4G无线网络推送给云端。
由于功耗的限制,桥梁项目的设备采用的是数据主动上报的技术方案,它们在完成现场测量之后,会将数据主动上报给自己的管理设备。
现场施工人员,首先要在现场要对这些设备进行安装、调测和配置,使之能够工作后,定期将数据主动上报,这些设备的上报信息包含有它们自己的身份特征信息。
为了减少现场人员的配置工作,边缘计算设备,采用的是自动发现的技术方案,也就是工程人员一旦将设备接入,这些设备过一会会自动上报自己的报文信息。
这些设备的上报报文,包含有自己的身份和数据信息,边缘端设备会根据这些收到的信息,自动创建设备、通道,让这些设备自动接入。
那么,现场的工程人员,只要将设备接入机柜之后,等待一会,就能看到边缘端上自动生成的设备配置了,这时候就知道是否在边缘端接入成功了。
MQTT是一个非常易用和维护的物联网接入方式,边缘端工控机,是基于LINUX操作系统的系统。
边缘端工控机出厂的时候,除了预先安装了边缘计算的Fox-Edge系统之外,还安装了一个本地的MQTT服务器。
现场的数据采集设备,会将自己的数据推送到该本地的MQTT服务器之中,而边缘端Fox-Edge的子系统 channel-mqtt-client 服务会订阅设备推送的MQTT消息, 然后对这些MQTT上报消息进行报文分析(Topic和Playload),从而得到数据采集设备的 身份特征 和 采样数据 。
尽管边缘端的工控机在出厂的时候,预装好了边缘端系统,希望现场工程人员能够即插即用,但由于设备的版本升级,组网方案的后期调整等各种原因。
这时候,需要远程登录到边缘端工控机上,进行 软件升级 和 重新配置 的处理。
边缘端的升级主要包括 解码器 和 后台服务 两种情况
进入 组件仓库 》动态解码 页面,检查解码器状态,如果现场设备对应的解码器没有安装或者有升级,可以选择安装和升级,进行安装和更新。
进入 组件仓库 》服务模块 页面,跟生命线桥梁工程相关的两个服务主要是 channel-mqtt-client-native 和 iot-thingspanel-native
这部件在出厂时已经自带,但是可能是早期的旧版本,如果设备不能自动接入和发现,可以尝试下载新的版本。
这部件在出厂时已经自带,但是可能是早期的旧版本,如果设备不能推送成功,可以尝试下载新的版本。
在工程实践中,现场可能会遇到跟软件配置和软件版本,导致的一些问题,以下是现场碰到的问题和解决办法
有次现场工程人员发现,在边缘端系统,登录失败
边缘端系统是依赖Redis服务的,通常是Redis安装存在问题,无法启动成功,进而导致边缘端系统无法启动成功。
让管理人员使用root用户登录Linux,重新安装Redis服务,确保Redis服务可以正常启动
有次现场工程人员发现,MQTT的连接正常,但是下面的传感器设备,接入边缘端工控机,自动发现失败
该传感器未安装或者未升级,无法正确处理传感器设备上报的报文
登录边缘端的管理界面后,进入 组件仓库 》动态解码 页面,选择该设备对应的解码器,进行安装或者升级。
然后,进入 系统管理 》系统参数 页面,channel-mqtt-client-native和serverConfig的配置项目,在handler中检查topic和解码器是否已经配置。
然后,重启channel-mqtt-client-native服务,重新启动这些配置
此前被旧的解码器自动发现生成的设备和通道,数据结构是旧的,可能并不可用,可以全部手动删除,等待重新自动发现。
进入 设备管理 》设备列表 页面,选择该型号的设备,全部选择后,手动删除。
进入 通道管理 》通道列表 页面,选择该型号的通道,全部选择后,手动删除。
在生命线工程中,设备在自动发现后,上报的数据会在 记录管理 》数值记录 记录页面,会产生记录内容。
这些记录内容,后面是要被iot-thingspanel-native服务推送到云端的真正内容。
但是,有些时候,工程人员发现,在这个页面上看不到记录内容。
未位置为,需要将收集到的数据,进行持久化保存到sqlite数据库
进入 系统管理 》系统参数 页面,persist-native和serverConfig的配置项目,deviceValueRecord的enable,修改为true。
也就是说,设备的采样数值,不但要保存到redis,还需要保存到sqlite
现场人员,多次遇到边缘端已经产生了数据,但是推送到云端的时候,不成功。
边缘端向云端的推送,是由 iot-thingspanel-native 和 云平台互相的互相配合来完成的。
iot-thingspanel-native服务要配置一个MQTT账号和密码,这个MQTT账号和密码是云端专门给它分配的,这些账号密码往往比较复杂。
手动输入,容易输入错误。
复制密码,也经常遇到图片OCR账号密码,导致的密码错误。
粘贴密码,也经常会遇到多粘贴空格和星号字符之类的错误。
不管是哪种错误,可以进入 系统管理 》前台日志 页面,查看iot-thingspanel-native的日志,是否有显示 连接成功 字样。
如果没有显示这个字样,那么基本上就是账号密码不正确,导致认证不成功。
前台日志,显示建立连接,仅仅是MQTT的连接在尝试准备建立,需要 连接成功 字样出现,才是成功连接了。
旧版本曾经采用设备的名称,转为小写的方式,然后上传。后面云端和边缘端,同步改成了大小写敏感的方式,进行设备名称匹配。
两边新旧版本的不匹配,导致数据无法上传到云端。
进入 组件仓库 》服务模块 页面,下载和升级 iot-thingspanel-native 新的服务。
自动发现的设备,无法被推送。
iot-thingspanel-native服务要会去设备的通道参数上,查找 devEUI 配置项,并将该内容作为云端的设备名称,推送给云端。
这个配置项是解码器,根据设备上报的身份信息,而自动构造的。
如果旧的解码器已经创建了通道,那么新的解码器将无法重新创建通道,从而无法填入新的 devEUI 配置项
进入 通道管理 》通道列表 页面,选择该型号的通道,全部选择后,手动删除。