基于WiFi的远程监控系统设计

2020-06-28 07:12张鹏远
好日子(下旬) 2020年3期
关键词:存储器命令节点

张鹏远

1 系统总体设计方案

本监控系统由单片机监控模块、Wi-Fi传输模块、监测网站三部分组成。

该系统以CC2530单片机和Wi-Fi模块为基础,以ASP.NET设计监控网站,SQL Server 作为服务器数据库,所完成的主要功能是实现设备工作状态的远程监测。单片机监控模块可以检测到设备的运行、关闭等状态,并记录各状态发生改变的时刻。检测到的设备状态信息以及相应的设备编号将通过Wi-Fi模块实时传送到服务器数据库并在监测网站的网页上显示。当服务器停止工作时,单片机将继续存储收集来的信息于Flash存储器中,当服务器恢复工作时自动向单片机存储器调取数据并存储于数据库。本文还是设计了符合系统的通信协议,应用了数据加密技术保证了数据的准确性和安全性。

2 SQL Server 数据库库表

2.1数据库表结构设计

数据库的设计对于整个系统而言起着不可替代的作用,完善的数据库结构可以让整个数据存储脉络清晰,不至于引起不必要的混乱。本系统的数据库表分为三个:第一个用户信息表;第二个节点信息存储表;第三个控制命令表。

2.1.1 用户信息表

用户信息表是与用户登录相关的表,登陆页面与用户信息表相关联,当用户登录时,通过SQL 语句数据库搜索引擎在数据库中搜索与注册用户信息相符的信息,如果信息相符,返回相应的数据,然后再根据权限登录到不同的页面,如果是管理员的话将登录管理员界面,可以向各节点发送命令。如果没有相应的数据信息,将不能登录。用户信息表包括:用户名、用户密码、用户权限和用户邮箱。

2.1.2节点信息存储表

节点信息存储表是系统中最关键的一张表,它记录了所有设备的所有开关机信息和状态信息,是为管理员有效管理设备提供重要参考的一张表。系统各个节点一直检测设备的状态,当设备状态发生改变的时候,将发送信息到服务器,网站接收各个节点传送过来的信息根据不同的数据类型存储于表中。节点信息存储表字段包括:设备号、事件时间、设备状态。

2.1.3控制命令表

管理员要想控制各个节点需要在监测网站上输入控制命令,而控制命令不能由网站直接发送到节点,首先要将控制命令存储到数据库再由数据发送应用程序发送至节点。将控制命令保存到数据库同时也是历史信息的保存,对于系统运行的分析将提供一定的信息资源参考。控制命令表字段包括:设备号和控制命令。

3 数据安全问题设计

3.1通信协议的制定

3.1.1采集数据格式

开始标志:接收方判断一个消息开始的表示,为了避免引起混乱,必须不同于其他信息,在这里设置为AAFF。

设备号:各节点设备的编号,用来知道是哪个设备采集来的数据。

数据长度:在本设计中,一般情况下要传送的数据信息的长度是固定的。

数据类型:01 表示状态改变时间;02表示设备状态。

数据:采集的设备状态和状态发生时的时间。

停止位:数据包结束标识符。

3.1.2命令信息格式

起始位:设置为AAEE.

设备号:接受节点的编号。如果设备号为EE,则表示该命令需要广播给网络中的所有节点;如果设备号是E1,则表示该命令需要广播至一组的路由节点;如果设备号为E2,则表示该命令需要广播至二组的所有节点;如果是E3则表示该命令需要广播至三组的路由节点;如果是某个节点的编号,则该命令只针对这个节点。

数据长度:命令帧的数据长度也是固定的。

命令标识符:用来区分各种不同的命令,如表6表示。

结束标识符:AA99

通信模式采取了实时上报和应答相结合的模式。实时上报模式,就是每个节点的状态在发生改变的时候数据会及时发送到服务器数据库,这样就保证了监测网站可以准确的把握每个节点的当前工作状态,进而可以准确的进行控制。命令——应答模式,是用户根据需要,对节点发出命令,节点收到命令后,根据命令内容作相应的处理。命令——应答模式是一个双向的数据通信系统,其具体步骤如下所示:

1 用户发送命令给目标节点。

2 目标节点解读命令,执行命令。如果目标节点收到未定义的命令,则认为是无效的数据包,目标节点会通知用户信息无效;如果目标节点处理命令信息失败,则协调器发送失败的应答信息,用户需要重新发送命令。

3 完成。

3.2节点及服务器异常处理

3.2.1节点异常处理

在网络运行中,节点可能会由于硬件问题或者遭受碰撞攻击等,导致丧失工作能力。用户可以通过预设的命令,在网络中进行广播,节点收到信息后进行回复,当有节点没有回复的时候再进行通信,如果三次都没有回复,便认为该节点出现了故障,需要从网络中移除或维修。

3.2.2服务器异常处理

理论上说服务器应该是24小时工作的,但是很难保证不会有意外情况的发生,如断电,数据库维护等都会使服务器暂时停止工作。由于各节点采用的是实时上报模式,所以服务器停止工作时各节点的数据将不能發送到服务器数据库,如果节点单片机不先将信息进行存储的话将导致数据的丢失。

在单片机检测模块本文设计采用了16M内存的Flash存储器用于对采集的信息进行存储,Flash存储器掉电后不会自动擦除数据,所以能保障数据在故障时的安全。当节点采集到数据时将试图发送到服务器数据库,如果数据发送成功,服务器方面将把信息存储在网络数据库,同时,单片机将发送成功的数据保存在Flash存储器中;如果数据发送失败,则在数据包加一个标识位1,并将该条信息保存至Flash存储器中。单片机定期遍历Flash存储器中的数据,将标识位为1的信息重新发送,发送成功后取消标识位存储于Flash存储器中,发送失败等待下次发送。

由于Flash存储器的内存有限,所以不能把所有的数据全部都存储于Flash存储器中,本文设计定期擦除Flash存储器中的已经发送成功的数据,未发送成功的数据将继续保留,直至发送成功。为了确保没有数据的丢失,从检测网站可以任意调取各个节点任何时间段的信息,管理员可以在网站管理界面输入想要的时间段数据至某一个或几个节点,节点接收到命令后从Flash存储器中调取相应信息发送至服务器。这样直接从Flash存储器调取数据将比从数据库中调取信息使得信息更加准确可靠。

3.3数据加密

在Z—Stack协议栈当中,这个加密算法默认是关闭的,使用时需要开启这个功能:首先将f8wConfig配置文件中的DSECURE值设置为1,这是一个总按钮;然后将ZGlobal.c中的zgPreConfigKeys的值由FALSE改为TRUE;最后在函数nwk-global.c中设置一个128bit的秘钥。启动数据密功能,发送数据的节点将明文经过AES-128加密算法加密后,使其变成密文传送出去接收节点在接收到复杂的密文后,使用相同的秘钥和AES-128解密算法,将其还原为明文,保证了数据在传输过程中的安全。

(作者单位:河北科技学院)

猜你喜欢
存储器命令节点
管理Windows10的PowerShell命令行使用记录
基于移动汇聚节点和分簇的改进节能路由算法
CAE软件操作小百科(48)
基于点权的混合K-shell关键节点识别方法
命令操作Windows 10回退的秘密
解析Windows10的内部命令
独立拼装手机
宝箱4
存储器——安格尔(墨西哥)▲
Buffalo推出四硬盘网络存储器 主打Soho一族