`
阿尔萨斯
  • 浏览: 4195004 次
社区版块
存档分类
最新评论

Sanliao智能家居平台软件设计

 
阅读更多

1,本设计版权归本人所有;2、本博客禁止转载或者用本博客技术用于商业用途。

还有个重要原因我不喜欢写博客,因为linux下编辑太痛苦了。所有 的这些图纸都是我用一个叫“DIA”的软件画的,然后导出成图片,这个软件不支持中文输入。所以待会看到,原来我是个英语爱好者。

废话不多说了。一下东西都是摘自我的记录性文档。

顺便说下我们的网站:http://115.28.80.200/

立马我们的域名就会备案成功了,到时候用域名访问更合适:www.threesoft.net

谢谢大家。有UI设计高手,单片机高手,诚信邀请这两方面的人才入伙,我们一起打土豪去。

Sanliao智能家居平台软件设计

项目

Sanliao智能家居平台软件设计

作者

曾金龙

470910357@qq.com

时间

2014-08-17

1,架构设计

1.1 总体架构

服务器采用openfire

家庭控制端需要一个android设备,例如闲置的android手机,作为homedevice controller。它通过wifi家庭网关(路由器)连接到服务器,同时通过蓝牙,wifi等其他无线方式连接到受控设备。

控制端是一台android手机(或者其他),用于发送控制命令。

1.2 Home Device Controller

家庭控制器,作为家庭内部设备的控制中心。内置Asmack,并定义智能家居的描述语言。和外设的连接通过插件apk来通信。

插件式管理有利于我们的sdk推广,成为真正的通用型平台。


1.3 家庭设备

通过无线来通信的家电设备

1.4 一次控制的交互时序图

2 实现层

2.1 包及类图结构

包的依赖关系

我们的 SmartHome依赖Eim,而Eim又依赖asmack。

1)IActivitySupport接口

/**

* 获取EimApplication.

*/

public abstract EimApplication getEimApplication();

/**

* 开启服务.

*/

public abstract void startService();

/**

* 终止服务.

*/

public abstract void stopService();

/**

* 校验网络-如果没有网络就弹出设置,并返回true.

*/

public abstract booleanvalidateInternet();

/**

* 校验网络-如果没有网络就返回true.

*/

public abstract booleanhasInternetConnected();

/**

* 退出应用.

*/

public abstract void isExit();

/**

* 判断GPS是否已经开启.

*/

public abstract booleanhasLocationGPS();

/**

* 判断基站是否已经开启.

*/

public abstract booleanhasLocationNetWork();

/**

* 检查内存卡.

*/

public abstract voidcheckMemoryCard();

/**

* 显示toast.

*/

public abstract voidshowToast(String text,int longint);

/**

* 短时间显示toast.

*/

public abstract voidshowToast(String text);

/**

* 获取进度条.

*/

public abstract ProgressDialog getProgressDialog();

/**

* 返回当前Activity上下文.

*/

public abstract Context getContext();

/**

* 获取当前登录用户的SharedPreferences配置.

*/

publicSharedPreferences getLoginUserSharedPre();

/**

* 保存用户配置.

*/

public void saveLoginConfig(LoginConfig loginConfig);

/**

* 获取用户配置.

*/

public LoginConfiggetLoginConfig();

/**

* 用户是否在线(当前网络是否重连成功)

*/

public boolean getUserOnlineState();

/**

* 设置用户在线状态 true在线 false不在线

*/

public void setUserOnlineState(boolean isOnline);

/**

* 发出Notificationmethod.

*/

public void setNotiType(int iconId, StringcontentTitle,

StringcontentText, Class activity, String from);

2) ActivitySupport

主要是检查网络,sdcard以及用户配置等基本环境,然后通过startService来开启四个服务。

3)AContactorSupport

它主要是包含一个广播接收器成员,该接收器类是它的内部类。它监听着那些它感兴趣的action。

4)IMContactservice

联系人服务类,它主要是维护用户的花名册(联系人),它是一个服务,对外传送数据是通过广播的形式。

该服务主要是监听用户联系人的变化,asmack提供了几组对数据包的回调函数,即linstener。IMContactService是监听了(packet listener)Presence.Type.subscribe,别人加它为好友的时候回调;还有一个RosterListener,监听整个花名册的变化。

这个类是设计的最失败的类,因为太复杂了。应该解耦。例如花名册的消息就应该和chat的分来来。揉在一起,很痛苦的。

RosterListener是一个接口,它包含了的方法有:

增加/更新/删除/改变,具体含义去看相应代码,在此不列出。

/**

* Called when rosterentries are added.

*/

public voidentriesAdded(Collection<String> addresses);

/**

* Called when a rosterentries are updated.

*/

public void entriesUpdated(Collection<String> addresses);

/**

* Called when a rosterentries are removed.

*/

public voidentriesDeleted(Collection<String> addresses);

/**

* Called when thepresence of a roster entry is changed. Care should be taken

*/

public voidpresenceChanged(Presence presence);

5)IMChatService

聊天服务

该服务,只是向XMPPConnection注册了个chat类型的数据包监听器,当connect收到chat类型的数据包之后会调用这里的processPacket函数。


6)IMSystemMsgService

系统消息服务类,监听系统消息,就是那种系统广播,如QQ的弹框消息。


7)ReConnectService

重连服务类,主要是通过一个广播监听器来监听系统网络的变化CONNECTIVITY_ACTION,如果网络改变,则对xmppconnection连接进行重连。



从上面的类图关系我们可以看出,这个设计其实并不合理的。服务不应该在ActivitySupport里面启动,这种设计的扩展性是非常的差,不过,startService在EIM中也只调用了一次,在LoginTask类里面。我个人觉得这个服务开启应该单独开来,和activity无关。先凑合用吧。哎,懒惰是一剂毒药,它会让你慢慢死去,勤奋也是一剂毒药,它会让你撕心裂肺。

8)AchatActivity

抽象对话类关系

总结下,可以得出EIM的组件图如下:

XMPPConnection对象是连接对象,负责和服务器的连接。整个就一个连接。

各种服务Service通过对XMPPConnection注册回调的方式来监听它们想要的包。当监测的包到来的时候,出了保存到本地,同时也广播出去。Activity会有个广播接收器,接收Service广播的消息,如果是感兴趣的,则处理,更新相应的UI。

这就是整个EIM的结构。



分享到:
评论

相关推荐

    埃森哲制药企业数字化转型项目顶层规划方案glq.pptx

    埃森哲制药企业数字化转型项目顶层规划方案glq.pptx

    华为OD机试D卷 - 机场航班调度程序 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    基于FPGA读取设计的心电图代码源码+全部资料齐全.zip

    【资源说明】 基于FPGA读取设计的心电图代码源码+全部资料齐全.zip基于FPGA读取设计的心电图代码源码+全部资料齐全.zip 【备注】 1、该项目是高分课程设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11/linux测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    基于Hadoop平台的分布式搜索引擎的设计与实现+部署文档+全部资料 高分项目.zip

    【资源说明】 基于Hadoop平台的分布式搜索引擎的设计与实现+部署文档+全部资料 高分项目.zip基于Hadoop平台的分布式搜索引擎的设计与实现+部署文档+全部资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    华为OD机试D卷 - 数的分解 - 免费看解析和代码.html

    私信博主免费获取真题解析以及代码

    基于Hadoop的智能购书系统的设计与实现+部署文档+全部资料 高分项目.zip

    【资源说明】 基于Hadoop的智能购书系统的设计与实现+部署文档+全部资料 高分项目.zip基于Hadoop的智能购书系统的设计与实现+部署文档+全部资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    setuptools-27.2.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于 python 在树莓派上面实现摄像头视频人脸识别

    【作品名称】:基于 python 在树莓派上面实现摄像头视频人脸识别 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于 python 在树莓派上面实现摄像头视频人脸识别

    setuptools-28.4.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    setuptools-16.0.zip

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    setuptools-68.2.0-py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于MQTT的校园新闻APP原生Android源码.zip

    基于MQTT的校园新闻APP原生Android源码.zip基于MQTT的校园新闻APP原生Android源码.zip基于MQTT的校园新闻APP原生Android源码.zip基于MQTT的校园新闻APP原生Android源码.zip基于MQTT的校园新闻APP原生Android源码.zip基于MQTT的校园新闻APP原生Android源码.zip基于MQTT的校园新闻APP原生Android源码.zip基于MQTT的校园新闻APP原生Android源码.zip

    setuptools-0.9.8-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    电压检测系统(含VB上位机+下位机程序)proteus仿真+程序资料

    【作品名称】:电压检测系统(含VB上位机+下位机程序)proteus仿真+程序资料 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:电压检测系统(含VB上位机+下位机程序)proteus仿真+程序资料

    第三讲python基础day03.zip

    第三讲python基础day03.zip

    电子周跟踪:AI市场竞争加剧,AIPC加速落地,关注联想4月18日科技创新大会.pdf

    电子元件 电子行业 行业分析 数据分析 数据报告 行业报告

    华中科技大学电信专业 课程资料 作业 代码 实验报告-操作系统-内含源码和说明书.zip

    华中科技大学电信专业 课程资料 作业 代码 实验报告-操作系统-内含源码和说明书.zip

    基于Hadoop的VGI矢量空间数据管理方法研究.docx

    本研究提出了基于Hadoop的VGI矢量空间数据管理方法,旨在解决VGI数据管理中的诸多挑战。通过利用Hadoop的分布式计算平台,实现了对VGI数据的高效管理和分析,提高了数据的准确性和一致性。 适用人群:本研究的方法适用于地理信息系统领域的研究人员、空间数据管理者、以及对VGI数据感兴趣的社会学者和政策制定者。 使用场景及目标:该方法可以应用于处理大量VGI数据的管理和分析,为地理信息系统的应用提供更准确、更及时的数据支持。在实际场景中,可以用于城市规划、交通管理、环境监测等领域的数据处理和分析工作,促进社会各个领域的发展和进步。 其他说明:通过实验和案例分析验证了基于Hadoop的VGI矢量空间数据管理方法的有效性和可行性,展示了其在实际应用中的优势和潜力。该方法对于推动VGI数据的管理和应用具有重要的意义,为地理信息系统和空间数据管理领域的进步提供了新的思路和方法。

    电子设备行业专题研究:新型显示系列报告之一:显示技术演进之路,Mini LED承前启后.pdf

    电子元件 电子行业 行业分析 数据分析 数据报告 行业报告

    基于FPGA减法器、移位寄存器VHDL语言源码+全部资料齐全.zip

    【资源说明】 基于FPGA减法器、移位寄存器VHDL语言源码+全部资料齐全.zip基于FPGA减法器、移位寄存器VHDL语言源码+全部资料齐全.zip 【备注】 1、该项目是高分课程设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11/linux测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Global site tag (gtag.js) - Google Analytics