佘星星,纪超凡,李 星,李迎康,刘晴晴
(安徽信息工程学院 计算机与软件工程学院,安徽 芜湖 241000)
随着互联网和移动通信技术的发展壮大,人与人、人与虚拟世界的联系日益密切。智能手机的应用更是让互联网在真正意义上得到了普及。据中国互联网络信息中心(China Internet Network Information Center,CNNIC)发布的第44次《中国互联网络发展状况统计报告》显示,截止2019年6月份,我国的网民更是创历史新高,已经达到8.54×108人[1]。这些信息预示着互联网即将进入下一个阶段,即物联网时代。物联网就是将物理世界数字化,将虚拟和现实连接起来,实现物与人以及物与物连接[2]。而在此背后是大量设备与传感器的在线化操作,如城市共享单车服务等[3,4]。物联网中大量的数据是由设备产生的,这是物联网与传统互联网之间最大的区别,但是这些设备可以24 h时刻在线不间断工作,并提供随时的服务[5,6]。
物联网全流程全生命周期开发对后台编写、前端展示以及通信协议等计算机专业知识的掌握要求严格,本文设计了一种免除单片机底层开发,通过可视化配置交互单片机的智能物联网设备应用系统,其具有部署速度快、编程可视化以及开发门槛低的特点[7,8]。该系统完成了从物联网平台对物联网模块引脚的控制与信息读取,使用带有csrf安全认证机制的框架为后台,通过物联网模块刷入开发的固件,能通过TCP和HTTP(s)两种方式进行通信,并根据用户在平台的设定进行订阅推送,完成对设备引脚信号的控制与读取[9]。使用Redis来存储设备实时传送的信息,使用MySQL存储业务数据,GraphQl进行前端接口交互,此外还使用了Layui和Vue.js等新兴技术的前端框架[10]。
本系统的体系结构分为3层,且有3个子系统。其中,3层结构为基础感应控制层、网络数据传输层以及远程操作应用层,3个子系统为物联网模块端、智能物联网设备处理系统以及可视化物联网事件设定系统。
基础感应控制层是最底层,主要采集用户在系统上定义的指定针脚参数,并将这些参数规范成json格式,使其携带身份标识后发送给服务器。网络数据传输层主要依靠TCP和HTTP等将物联网模块的信息发送至服务器,同时服务器响应操作将数据传输给物联网模块。在远程操作应用层中,用户可以定义针脚功能,设置操作逻辑,观测数据等。物联网模块端主要负责采集信息上传到服务器和执行服务器下发的指令。智能物联网设备处理系统主要负责根据用户设定的逻辑对物联网模块的数据进行逻辑运算后返回下发指令。可视化物联网事件设定系统通过可视化的页面,使用户完成物联网模块绑定、引脚功能名称设定、事件逻辑设定以及物联网模块状态的可视化查看。
本系统通过借鉴MQTT实现方案并结合真实需要后做出以下两套方案。方案一系统架构(基于TCP长连接)如图1所示。
图1 基于TCP长连接
当网络通信采用TCP长连接时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时可以将其释放。长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间,适合频繁请求资源的客户端使用。
方案二系统架构(基于HTTP轻型开发解决方案)如图2所示。
图2 基于HTTP轻型开发解决方案
HTTP轻型开发客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。短连接对于服务器来说管理较为简单,存在的连接都是有用的,不需要额外的控制手段。但如果客户请求频繁,那么将在TCP的建立和关闭操作上浪费较多时间和带宽。
系统流程设计如下,用户通过系统注册拥有账号,登录账号进入系统,在系统添加相应的事件,从而触发相应的设备行为,也可以对相应事件进行修改或者在原本的事件上再添加行为。添加在系统上的设备可以通过系统的“设备管理”模块进行相应管理,包括添加设备、重命名设备以及删除设备等。通过系统“设置”模块可以修改用户名、修改用户密码以及重置密码等。
实现原理为用户将逻辑判断事件储存在数据库后,服务器会收到用户开发板的传感器参数,然后将参数与用户设定的逻辑判断进行逻辑对比,产生操作结果,然后将操作结果返回至开发板,开发板执行操作,完成设定的事件流程。
系统登录模块中用户使用注册好的账号登录到系统中,此过程需要验证码验证。绑定物联网模块中用户通过输入物联网模块的编号和名称进行绑定操作,绑定完成后会在列表中显示出已绑定的物联网模块。设置引脚功能是在用户选择绑定的物联网模块后,可以对引脚的功能、类型以及名称进行设定。在完成物联网模块绑定和针脚设定后,设置物联网模块即可在此页面设置事件逻辑的判断标准,点击保存后,用户的物联网模块将会按照设定的逻辑条件进行相应的动作。操作用户手机控制界面中用户可以在移动设备上直接操作物联网模块。当传感器的值符合用户的警报逻辑时,基于用户设定的报警功能平台将会通过拨打电话和发送邮件等方式对用户进行告警。
安装并配置好 Nginx、MySQL、uWSGI,安装python3.8、pip以及venv,需要的测试设备有DHT温度传感器、刷入开发固件的NodeMCU物联网模块、人体红外传感器、继电器、5VUSB灯、USB移动电源、登陆APP控制系统的手机以及开发完成的智能物联网设备系统。
首先在平台配置好App控制的灯光控制器的逻辑事件,进行保存,如图3所示。
图3 系统配置事件
其次在手机界面打开相应开关,如图4所示。
图4 手机界面图
最后开关开启后灯光亮起,实验成功,如图5所示。
图5 实验成功
与传统的编写单片机设备和编写后台接口等开发流程不同,本系统提供了一套可视化功能快速实现的全流程全生命周期的开发模式。打造了物联网创新孵化平台,用户可以节省开发的时间成本和学习成本,从而提高了物联网创意的孵化率,对整个物联网生态起到了促进作用,形成了一个能让用户在物联网平台快速开发的环境。以部署速度快和编程可视化为核心设计理念,大大降低了物联网开发的门槛。智能物联网快速应用系统的运用领域极为广泛,可以运用到工程控制、自动化农业、物联网智能医疗、物联网智能家居、物联网教育以及物联网学科竞赛等,具有积极的意义。