智能家居系统中网关与服务器如何连接?
原文点击打开链接
在新型智能家居系统中,家庭网关将取代PC机作为家庭控制中心。传统客户端/服务器模式不能保持家庭网关与远程服务器实时连接。基于百万级的家庭网关与服务器保持长连接的目的,采用主从服务器框架进行负载均衡,心跳机制保障网关与服务器实时连接的方案。
新型智能家居系统整体框架
基于传统C/S架构的智能家居系统需要保持一台PC机运行中间件才能达到随时控制的目的,这与智能家居绿色节能的理念相违背。在光纤到户的推动下,PON上行家庭网关在全国得到普及,并且有低功耗保持长时间工作的特点,适合用于智能家居系统中。
本方案设计一种新型智能家居系统,由家庭网关替代PC成为家庭网络控制中心。围绕家庭网关与远程服务器互联问题展开,探讨一种适合家庭网关与远程服务器的连接方案。基于家庭网关的智能家居系统整体框架如图1所示。智能家居系统由传感器网络,家庭控制中心,远程服务器,手机终端组成。其中传感器网络通过ZigBee、Wi-Fi等无线通信技术组建。
传统的智能家居系统中控制中心采用家用PC和协调器等设备,新型的智能家居系统如图1所示,采用家庭网关充当家庭控制中心的角色。
新型智能家居系统中家庭网关与服务器连接的设计与实现
远程服务器方案设计
传统的服务器方案往往使用单一服务器模式,传统业务不需要客户端与服务器保持长连接,客户端获取数据时发送一个连接即可。并且客户端运行在PC机上,客户端对服务器发起连接后,服务器可暂存客户端的IP地址和端口,当服务器需要给客户端发送数据时直接用客户端的IP地址和端口号即可。所以用单一服务器即能满足传统业务的需求。
当业务量大的时候,传统服务器采用服务器集群技术来保证服务器不因业务量过大而瘫痪。随着智能家居网关用户逐步上升,用户将达到百万级。每个网关都要与服务器保持长连接,同时服务器还要与手机端通信。为了保证服务器的负载会达到百万级时,其仍能正常其正常工作,本方案采用主从服务器框架来实现负载均衡。主服务器负责网关与服务器首次建立连接,然后根据地理位置等因素为网关分配一个从服务器并告知其IP等信息,网关再根据从服务器信息对从服务器发起连接,建立连接后网关与从服务器保持长连接并断开与主服务器的连接。
主服务器对手机终端也是如此,只负责首次建立连接,判断该手机号控制的网关分配到哪个从服务器,然后让其对从服务器进行连接。
本方案设计的服务器框架如图2所示,由主服务器和从服务器组成,网关第一次连接或者与服务器连接中断后重连都是对主服务器发起,主服务器收到网关发起的连接信息后进行认证,查看是否在服务网关列表,认证成功后分配从服务器IP和服务号给网关。从服务器用于保持与网关的长连接,一方面可以对网关发送控制命令,一方面可接收网关上报的监控信息。备用主服务器用于主服务器故障时切换使用。
家庭网关与远程服务器连接方案的设计
家庭网关所属的网络环境为电信运营商的子网环境,IP动态更改,并且经过了多层NAT转换,服务器无法对网关发起主动连接。而用户需要随时对家庭设备进行控制,服务器必须随时能够对网关发起连接。为了实现家庭网关与远程服务器互相通信。
本方案采用socket长连接模式实现,服务器配置固定IP,网关上电后发起对服务器的socket连接,连接成功后保持连接不中断,服务器可通过此socket连接收发网关的信息。
网关与服务器长连接及意外中断恢复的设计实现
用户需要随时远程监控家庭信息,例如回家路上打开空调,离开的路上关掉电源等,网关也需要随时向用户反馈家庭异常,例如烟雾报警信息,所以家庭网关必须与服务器随时保持连接。
本方案采用心跳包监控网关与服务器之间的长连接,当网关与服务器连接成功后,服务器每隔一段时间(暂时设置为15s)向网关发送心跳包,网关接收到心跳包后需立即回应心跳包给服务器。若超过5次无回应,则判定为连接断。
服务器会将次网关在线标志位置为0,同样家庭网关上线后会有监控心跳线程,若连续75 s内无心跳信息,则会判定已与服务器断开连接,网关会自动重启连接服务器线程。
家庭网关控制权安全性的设计
家庭网关的控制权必须是保证是家庭成员,不能让陌生人取得控制权,否则会带来不可估量的后果。家庭网关存储有一个可控手机号列表,必须通过本地web连接后才能更改,不能远程更改(防止黑客等利用漏洞远程添加控制权)。网关连接服务器后会上报可控手机号列表,只有在列表中的号码才能远程登录服务器,并且手机远程登录服务器还要短信验证码配合,防止他人伪装登录。
手机登录服务器后,发送控制家庭网关的命令时会在消息头部增加手机号信息,网关收到信息后会核对该手机号是否在本地可控手机号列表中(防止服务器的手机号列表与网关本地手机号列表不一致)。
家庭网关连接控制模块工作流程
家庭网关的软件流程如图4所示,上电后初始化,然后向主服务器发送连接信息,若无法连接主服务器则向备用主服务器发送连接信息。连接上主服务器后会上报自身的一些信息,包括可控手机号列表,主服务器会根据地理位置等信息返回一个最近的从服务器序号和IP地址等信息,然后网关连接从服务器。
若连接从服务器连接不上,则会反馈给主服务器,主服务器会返回另一个从服务器的序号和IP地址信息用于连接。连接好从服务器后,家庭网关即可实现远程监控,但必须与从服务器保持心跳连接,才能保证其是可控状态。
模拟测试的测试步骤和结果
本模拟测试方案中,为使数据库访问效率满足性能要求,且PC远程控制可直接用浏览器实现,主服务器采用PHP的YII框架搭建的web服务器,手机等终端和家庭网关连接主服务器则需要建立一个socket连接并把数据封装为https协议。主服务器负责存储网关信息,可控手机号列表等信息,并负责分发从服务器序号和IP给网关,查找与手机号配对的网关所在的从服务器序号和IP并发送给认证后的手机。
从服务器则采用PHP的Workerman框架来搭建,此框架是一个基于PHP的socket服务框架。网关与从服务器连接后保持心跳,手机获取从服务器序号和IP后连接从服务器,根据网关服务号绑定与网关在同一个服务号里,在一个服务号里可包含多个手机,但只能一个网关,手机和网关之间可以互相通信。服务器端打开workerman的进程,开启服务,如图5所示。
网关远程登录到服务器,id为67,服务号为1,与服务器保持心跳连接,如图6所示。浏览器远程登录,服务器认证后分配其id为68,匹配到网关所在服务号为1,向网关(id为67)发出指令“light1 turn on”,服务器将指令转发给网关。
结语
模拟实现结果表明,通过心跳保持家庭网关与远程服务器长连接,分配服务号保证手机与家庭网关相关联的方案可行。用家庭网关代替传统PC作为智能家居系统中家庭的控制中心,能充分利用现有家庭网关资
智能家居系统中网关与服务器如何连接?相关推荐
- 智能灯控制页面用HTML编写,智能家居系统中智能化灯光控制的设计实现
1. 概述 通过中央管理平台,让家居生活舒适.安全.便利.节能.健康.环保.类似名称的还有数码家居.数字字园.网络家庭.家庭自动化.E-HOME等等.目前,智能家居可为用户提供家居安全报警.可视对讲. ...
- 智能家居系统的设计与实现
摘自:http://www.csmayi.cn/yjzc/hyzc/201103/127410.html 论文关键词:智能家居 嵌入式系统 Windows CE Visual C++ Delphi 论 ...
- 智能家居系统开发框架
智能家居系统开发框架 版本号:V0.1 版本历史: V0.1,2016/5/15,beep_,初步规划智能家居系统框架并对部分内容予以说明. 一.智能家居系统内部划分 (1)按系统划分 家电控制系统( ...
- 基于IOT技术的智能家居系统应用研究
摘要:阐述了IOT(物联网)技术在现代智能家居系统中的应用,以基于微信聊天机器人.面向自闭症儿童.住宅项目健康及节能的智能家居系统为例进行研究,分析了基于IOT技术的智能家居系统与社会实际生活相结合的 ...
- android 智能家居开发,基于Android智能家居系统的设计与实现
摘要: 近年来,移动互联网技术的进步和智能终端设备的普及促进了智能家居产业的发展.同时,伴随着Android系统在手机.平板中广泛应用,人们通过一个Android设备远程控制家电设备,将与生活密切相关 ...
- 智能家居控制系统中的智能语音识别技术
作者:禅与计算机程序设计艺术 <智能家居控制系统中的智能语音识别技术> 引言 1.1. 背景介绍 随着科技的发展,智能家居系统越来越受到人们的青睐,人们通过智能家居系统可以实现远程控制.自 ...
- 【人工智能】智能家居控制器中的智能智能家居控制系统
文章目录 智能家居控制器中的智能智能家居控制系统 智能家居控制器中的智能智能家居控制系统 智能家居作为人工智能领域的重要应用之一,以其便捷.实用.智能化等特点受到了越来越多的关注.智能家居控制器作为智 ...
- 基于Domoticz智能家居系统(十七)DIY一款基于MySensors的ESP8266+NRF24L01的MQTT(WIFI)和RF无线网关(三)一个简单MySensors客户端的验证实验
DIY一款基于MySensors的ESP8266+NRF24L01的MQTT(WIFI)和RF无线网关(三)一个简单MySensors客户端的验证实验 一个简单MySensors客户端的验证实验 一. ...
- 一、基于wifi控制的智能家居系统之项目简介和设计方案(硬件基于arduino+esp8266,软件Android+Web端+scoket服务器,实现语音控制)
由于是物联网工程的学生,会一点硬件,会一点Android开发,会一点Web开发,于是乎决定毕设的时候做一个简单一点的毕设,但是能够把所有的知识都应用,串联起来,将所学的知识实践. 一.项目功能介绍 项 ...
最新文章
- jenkins需安装插件总结
- 字符串匹配算法(BM)
- 去掉Mybatis Generator生成的一堆 example
- Java成神之路——重入锁、公平非公平锁、自旋锁、读写锁
- 算法工程师面试备战笔记7_数据清洗与特征处理
- 关于时间序列分析的协整检验、脉冲响应图、方差分解图和格兰杰因果检验
- 基于stm32F4的项目总结:控制层设计(四)直流有刷电机驱动原理及驱动器选型
- c#实现的破解程序--针对软件使用时间限制
- 制作(转换)ico图标
- JavaScript编程入门
- Linux常见面试题,一网打尽!
- ARM - Linux嵌入式C/C++各种资料分享【更新日期:2012/04/24】
- [转]IDA + GDBServer实现iPhone程序远程调试
- weblogic测试环境安装部署--傻瓜式安装教程
- 机器视觉硬件—相机的选型
- 网络游戏排行榜计算机,十大pc游戏排行榜 英雄联盟位居第一,第三游戏体验感很强...
- WinZip 7 for mac如何解压缩文件
- DBMS_METADATA包获得对象DDL语句
- 响应“十三五”汽车工业发展规划意见,景联文提供自动驾驶全场景定制化数据采集标注服务
- CISA备考经验Pass CISA exam