程序员

智能家居解决方案

2017-06-24  本文已影响751人  帅气小伙

大家好,我是帅气小伙,好久没更新了,今天写这篇文章的目的是:介绍一下我们父子共同合作过的智能家居解决方案。谨此记录大学4年与父亲欢度的时光。

需求分析

有一套硬件设备接入到了路由器,有一个独立的ip地址,硬件有网络通讯模块,能够通过socket通信协议控件硬件根据相应的命令完成指定的操作,由于硬件设备接入的是内网,ip是(192.168.1.x),因此无法通过外网直接控制硬件设备。为此需要开发一个管理系统去实现外网控制硬件的需求

解决方案

一、Android和iOS同时开发一套Socket长连接(不建议使用)

大三的时候,在学Android开发,我确实采用了这个解决方案,后来因为Socket长连接这块没有实现好,导致了自动重连的多次失败,内存占用过高,而导致了APP的不稳定,显然达不到产品级的需求,并且iOS开发也需要成本,因此把这种解决方案做为调试硬件用。

方案一

实现思路是如下:

1.注册一个花生壳域名,绑定你的家庭的IP地址,因此这个IP地址是不固定的,除非你向电信申请一个公网的IP。

2.在路由器配置花生壳的登陆(官网有教),然后配置内网和外网的映射。例如

硬件设备IP地址 192.168.1.119  监听端口是20108

路由器配置

经过以上的配置你就可以通过外网访问到硬件设备了(注册域名:20108)

3.在Android开发中使用Socket连接服务器(注册域名:20108)

二、使用HBuilder混合开发APP,省去开发iOS的成本

实际开发出来的demo

这个解决方案,虽然能够省去开发iOS的开发成本,但是同样存在解决方案一的不足,因为是混合型开发,对于底层Socket的封装也不够完善,更别提写长连接了。但是值得一提的是,这个混合开发框架,开发效率还是有的。

三、搭建Web服务器,Web服务器控制硬件设备,移动端连接Web服务器

以上2种App直连的解决方案,显然不可行,于是我们提出方案三,但是Web服务器有2种搭建形式:内嵌,外设。

内嵌Web服务器

现在有一些硬件模块,例如(STM32F107开发板),支持内嵌Web服务器,也就是将html代码编译成16进制,写入到开发板中。

内嵌 这是手机访问的样子

内嵌的好处就是,不用专门搭建Web服务器,跟硬件的运行状态一致,但是缺点是很多的

1.HTML转成16进制,写入开发板,这样调试略麻烦。

2.可扩展性和性能差,硬件设备的内存和CPU都有限。

3.开发效率低,产品质量差,我都不知道,我要贴个图,弄个样式,搞个插件该怎么写入开发板了。

外设Web服务器(推荐)

外设Web服务器

1.可扩展性强,一个Web服务器可以同时与多台硬件设备进行通讯和交互

2.性能由于前面的解决方案,开发效率高。

功能模块

4个模块

1.设备管理

录入设备的IP和监听端口

发布硬件设备(真正建立Socket长连接)

实时展示硬件的运行状态

2.硬件调试

可通过Socket与硬件设备进行通信

可通过Socket指令形式向硬件设备写入程序

3.指令管理

常用的指令,可以做完模板保存

4.运行日志

硬件设备的故障情况,运行情况需要及时的记录,方便及时排查。

技术选型

后端

Spring boot  tio swagger  

前端

easyui

总结

读了4年的软件,只是为你能够与你软硬兼施,我们在一起的时间太少了。

上一篇下一篇

猜你喜欢

热点阅读