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

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的结构。



分享到:
评论

相关推荐

    Java 员工管理系统项目源代码(可做毕设项目参考)

    Java 员工管理系统项目是一个基于 Java 编程语言开发的桌面应用程序,旨在管理员工的信息、津贴、扣除和薪资等功能。该系统通过提供结构和工具集,使公司能够有效地管理其员工数据和薪资流程。 系统特点 员工管理:管理员可以添加、查看和更新员工信息。 津贴管理:管理员可以添加和管理员工的津贴信息。 扣除管理:管理员可以添加和管理员工的扣除信息。 搜索功能:可以通过员工 ID 搜索员工详细信息。 更新薪资:管理员可以更新员工的薪资信息。 支付管理:处理员工的支付和生成支付记录。 模块介绍 员工管理模块:管理员可以添加、查看和更新员工信息,包括员工 ID、名字、姓氏、年龄、职位和薪资等。 津贴管理模块:管理员可以添加和管理员工的津贴信息,如医疗津贴、奖金和其他津贴。 扣除管理模块:管理员可以添加和管理员工的扣除信息,如税收和其他扣除。 搜索功能模块:可以通过员工 ID 搜索员工详细信息。 更新薪资模块:管理员可以更新员工的薪资信息。 支付管理模块:处理员工的支付和生成支付记录 可以作为毕业设计项目参考

    CAD实验报告:制药车间动力控制系统图、烘烤车间电气控制图、JSJ型晶体管式时间继电器原理图、液位控制器电路图

    CAD实验报告:制药车间动力控制系统图、烘烤车间电气控制图、JSJ型晶体管式时间继电器原理图、液位控制器电路图

    使用 Arduino 和 Python 实时数据绘图的温度监控系统源码(可做毕设项目参考)

    项目简介: 本项目将教您如何使用 Arduino 和 Python 实时数据绘图来构建温度监控系统。通过这个项目,您将学习如何从 Arduino 到 Python 进行串行通信,并实时收集和监控温度数据。 项目目标: 实时监控和绘制温度数据。 提供用户友好的操作界面。 提高用户的编程技能,特别是Arduino和Python的应用能力。 项目功能 实时温度监控: 传感器每秒读取一次温度数据,并通过串行监视器发送到Python程序。 数据保存: Python程序将温度数据保存到CSV文件中。 实时数据绘图: 使用Matplotlib库实时绘制温度数据,温度在Y轴,时间在X轴。 项目优势 高效的数据监控: 实时监控和绘制温度数据,提高数据监控的效率。 用户友好: 界面简洁,操作简单,用户可以轻松使用该应用程序。 提高编程技能: 通过实践项目,提高对Arduino和Python的应用能力。 项目技术细节 项目详情: 项目名:使用 Arduino 和 Python 实时数据绘图的温度监控系统 项目平台:Arduino 和 Python 使用的编程语言:C++(Arduino)、Python ID

    软件测试-软件测试方案pdf

    本测试计划提供给深圳移动公司PMS核心小组成员,对PMS EXPRESS 系统进行功能测试。测试计划主要通过对基站项目管理过程的模拟,从项目的立项开始直至基站的验收交付以及知识沉淀,对基站建设全过程中涉及的管理内容进行模拟测 试。测试计划中设计了两个基站项目一明宁花园、椰风海岸。其中明宁花园按 原计划如期完工,而椰风海岸因为设备没能如期到货导致了个整个项目工期的延误。

    博物馆智能化系统的解决方案.pptx

    博物馆智能化系统的解决方案.pptx

    基于STM32的电子罗盘

    基于STM32的电子罗盘试验

    【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真 VR界面设计

    【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。 (GUI interface design, four rotor aircraft simulation. The VR interface design. ) 【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。

    基于VHDL的倒车雷达项目(免费提供全部源码)

    项目简介: 本项目实现了一个基于VHDL(VHSIC硬件描述语言)的倒车雷达系统。倒车雷达用于检测车辆后方障碍物的距离,以辅助驾驶员安全倒车。系统通过超声波传感器检测距离,并使用LED显示或蜂鸣器提示障碍物的接近程度。 项目模块: 传感器接口模块: 处理超声波传感器的信号。 发送触发信号,接收回波信号。 计算回波时间,进而计算距离。 距离计算模块: 根据传感器回波时间计算距离。 处理和转换距离数据,准备用于显示和警报。 警报显示模块: 基于计算出的距离提供视觉和听觉警报。 使用LED显示不同的距离范围。 使用蜂鸣器发出不同频率的警报声。 控制模块: 控制各模块的协调工作。 管理超声波传感器的触发和数据采集周期。

    2024年动力电池回收行业市场分析报告.pptx

    行业报告

    ssm框架在线课堂微信小程序源码+项目说明(高分毕设)

    毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一款针对在线课堂微信小程序的数据管理系统,旨在便捷用户对小程序中的信息进行有效管理。系统设计注重功能完善和用户体验,力求使用户能轻松找到所需信息。采用JAVA技术开发,并结合现有成熟源代码模板,确保了平台的可操作性和实用性。关键词:在线课堂微信小程序;JAVA。

    国内锂矿加速开发,四川锂矿详细梳理

    国内锂矿加速开发,四川锂矿详细梳理

    一个基于react框架的资源文件

    一个基于react框架的资源文件 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 内容来源于网络分享。仅供学习使用。请勿商用。如有侵权,请联系我。我将立即删除

    MQD企业大学建设思路与年度工作重点.pptx

    MQD企业大学建设思路与年度工作重点.pptx

    Java语言基础入门教程 Java实训教程 13.反射 共38页.pptx

    Java语言基础入门教程 Java实训教程 13.反射 共38页.pptx

    网上购物商城数据库设计报告.docx

    网上购物商城数据库设计报告.docx

    单机成本核算统计表.docx

    单机成本核算统计表.docx

    Swift语言简介.md

    Swift 是由苹果公司推出的一种现代化的编程语言,用于开发 iOS、macOS、watchOS 和 tvOS 应用程序。它结合了安全、高性能和易用性的特点,成为开发苹果平台应用程序的首选语言。

    创建一个简单的PHP页面.pdf

    创建一个简单的PHP页面

    乐视生态链生态系统介绍.pptx

    乐视生态链生态系统介绍.pptx

    tensorflow安装详细教程.pdf

    当安装TensorFlow时,我们需要按照一系列步骤来确保正确无误。以下是一个详细的TensorFlow安装教程,包括准备工作、安装步骤以及验证安装等部分。 准备工作 1. 检查系统要求 确保你的系统满足TensorFlow的硬件和软件要求。TensorFlow支持Python 3.5-3.8版本,并需要一个64位操作系统。对于GPU加速,需要支持CUDA的NVIDIA GPU。 2. 安装Python 从Python官方网站或可靠的国内镜像源下载并安装适合你操作系统的Python版本(建议Python 3.7或3.8)。 3. 安装pip pip是Python的包管理器,用于安装和管理Python包。在安装Python时,通常会同时安装pip。如果没有安装,请从pip官方网站下载并安装。 安装TensorFlow 1. 升级pip 打开命令行工具(在Windows上是CMD或PowerShell,在macOS和Linux上是Terminal)。 运行以下命令来升级pip到最新版本: bash复制代码 pip install --upgrade pip 2. 使用pip安装

Global site tag (gtag.js) - Google Analytics