远程数据采集系统 开发后记

前言

业务场景:为了实现远程监测桥梁、大楼、信号塔等建筑物的震动、倾斜,在建筑物上安装传感器和 DTU(data transfer unit),DTU 将传感器的数据发送到指定服务器,服务器对数据进行解析、存储。客户端只要通过浏览器访问服务器的 WEB 服务器,就可以获取到建筑物的数据,实现远程监测。

关于服务器,对比了多家云平台,综合价格、易用性、资料量等各方面因素,选择了阿里云,而且前一段时间阿里云做活动,赠送了我 6 个月的云服务器,体验下来确实不错。

前期先使用本地主机作为服务器,后期系统开发完成再搬运到阿里云服务器。

远程数据采集系统业务流程示意图:

business progress2

备注:

1,桥梁上的蓝色方块表示监测点,安装着传感器和 DTU

传感器包括倾角传感器、温度传感器等,传感器将数据通过 RS485 总线传输给 DTU。

DTU 将传感器发送过来的数据根据预先配置的 IP、端口,传输至云端服务器。

2,阿里云服务器包括:数据接收、处理后台、web服务器、数据库

 

开发流程

一、Web 开发本地开发环境搭建

工具:Wampserver、Notepad++

1,Wampserver 它集成 Apache、Mysql、PHP 的安装软件于一身,只要根据安装向导简单几步就能快速低搭建起 Web 开发环境。

注意:Wampserver 在安装的时候,可能会弹出 “无法启动此程序,因为计算机中丢失 VCRUNTIME140.dll。尝试重新安装该程序以解决问题” 这样的警告,这个时候要先安装 vc_redist.x86 或者 vc_redist.x64,然后重新安装 Wampserver 即可。

201803071348101         20180307135057

正确安装的 Wampserver 呈现绿色。打开 localhost,出现 wampserver 主页即安装成功。

20180306155834

2,Notepad++ 是一款小巧的文本编辑器,功能强大,使用方便,以后的 HTML、PHP、CSS 等都用这个编辑器编辑

 

二、远程数据采集系统 前端开发

工具:Wampserver、Notepad++

语言或框架:ThinkPHP、H-ui.admin、PHP、HTML、CSS、Bootstrap、JavaScript、AJAX、jQuery、SQL

框架结合环境,边开发边看效果

ThinkPHP 是一个学习曲线平缓的前端框架,相比较 YII 等要容易上手很多。H-ui.admin 是用 H-ui 前端框架开发的轻量级网站后台模版,采用源生html语言,完全免费,简单灵活,兼容性好。其他的都是前端开发必备语言技能,可以在 菜鸟教程网站 逐个学习。

根据以上内容,开发了一个简单的网站,用户登录网站,查看账户下的所有的地图位置、状态、数据表、数据趋势图等信息,数据可以下载到用户本地进一步分析。如果需要更多的功能,比如超阈值警报、监测现场配图等,就需要一个强大的前端团队了,高大上的网站不是简单几天就开发出来的,里面还有艺术设计、用户体验等一系列内容呢。前端开发的时候,还涉及到数据库的设计,一个好的数据库设计模式,各种开发效率都提高了。这里使用 MySQL 数据库。

 

三、远程数据采集系统 后端开发

工具:Visual studio 2010、网络串口调试助手(用来模拟数据)

语言:C#、SQL

后端采用 C# 语言编写了个 winform 程序,个程序对端口进行监听,然后对监听到的数据进行筛选、解析、插入数据库相应的位置。主要的 “知识点” 是 Socket 通信、多线程、操作数据库。

201803050958207

 

四、业务在本地进行测试

工具:花生壳软件

该系统本地测试的关键就是网络回路要打通,因为我的主机是没有公网 IP 的,所以外网想直接给我的主机发数据是不现实的,关于网络层原理请访问 百度百科 网络七层协议 进行了解。

花生壳软件的作用就是实现 “内网穿透”,先安装、注册,然后在本地电脑运行,根据花生壳软件打开网站,配置好映射信息,花生壳就能把网络数据 “映射” 到我的主机。

20180306164748

选择域名:注册的时候 5 块钱就可以购买一个二级域名,填写那个就行。以后可以用这个域名访问被映射的主机

应用名称:起个名字即可

内网主机:填写本机 ipv4 ,在 cmd 里使用 ipconfig 命令查

20180307135917

内网端口:找一个大一点的端口,避免端口冲突,比如 12000

配置好映射后,花生壳软件会给我们该映射的外网 IP 和临时端口号,这个 IP 和端口号就是 DTU 发出数据的目标网络地址。完成以上步骤,整个网络线路就打通了。

关于花生壳软件的工作原理,我的理解如下图所示:

Peanutshell

1,花生壳客户端将所在主机的公网 IP 和私有 IP 注册到花生壳服务器
2,服务器根据账户注册信息,获取到映射目标的公有、私有 IP ,即可把数据 “映射” 过去。
3,DTU 根据预设的目标 IP 和端口将数据发送到花生壳的服务器,此 IP 和端口由花生壳软件给分配的。
4,数据就像直接到了主机。

如果主机的花生壳掉线了或者没有打开,则数据走不通,进一步验证了我的理解哈哈 ^_^

本地测试没有问题,DTU 的数据也上来了,WEB 服务器也跑起来了,客户端远程访问都没有问题。

 

五、移植至阿里云

1,配置阿里云服务器

阿里云服务器的根据需要选择规格、操作系统等即可,直观简单。配置好就可以远程连接了,第一次使用,服务器里面就是一个刚安装好的操作系统。

2,云服务器环境搭建

第一部分是 WEB 服务器架设,步骤和在本地架设 WEB 服务器一模一样,唯一的差别的是,架设好 WEB 服务器后,测试访问的时候会遇到 “You don’t have permission to access/on this server”,这时候,要修改一下 Wampserver 里 Apache 的配置文件:

修改 https.conf(C:\wamp\bin\apache\apache2.4.23\conf\httpsd-vhosts.conf)
<Directory />  //大概两百四十行左右
    AllowOverride none
    Require all granted
    Allow from all
</Directory>
修改 https-vhosts.conf(C:\wamp\bin\apache\apache2.4.23\conf\extra\httpsd.conf)
<Directory "c:/wamp/www/BC/">
    Option +Indexes + Includes + FollowSymLinks + MultiViews
    AllowOverride All
    #Require local  //加井号把这句话注释掉
</Directory>
如果外网还是不能访问,请检查操作系统防火墙规则:
关闭防火墙
防火墙->入站规则->新建规则->80,然后选择端口->端口 80 ->下一步....
创建完成,重新打开防火墙即可

 第二部分是后台程序运行,后台程序要监听的端口必须打开,这个不是在服务器的操作系统里进行操作,是在阿里云控制台进行操作。

操作步骤
云服务器ECS->网络和安全->安全组->配置规则->添加安全组规则->
20180309152934

这样后台程序才能成功的监听端口 12000,就可以收到 DTU 往这个端口发的数据。

3,文件移植

这一步就是把本地服务器的 网站、程序、应用软件安装包等拷贝到云服务器里,我的办法是在云服务器安装 TeamViewer,使用 TeamViewer 里的文件传输功能,将文件都搬到了云服务器。

4,整体测试

在云服务器整体测试的时候,实际比在本地测试还要简单一点,因为云服务器是有公网 IP 的,不需要做 “内网穿透”,DTU 和客户端都是直接与云服务器进行交互。

六、试运行

后记

这篇就是传说中的流水账哈哈,实际在开发的过程中,遇到了各种各样的问题,有小的有大的,通过请教同事、朋友、百度,或者问题被解决或者我被问题妥协,Anyway,系统成功运行,基本功能都ok。以后还是最好边开发,边记录。

发表评论

Powered by WordPress | Theme Revised from Doo

苏ICP备18047621号

Copyright © 2017-2024 追光者博客