重要:本文是针对开发过程中使用的API或者技术的初步文档。苹果提供该文档旨在为开发者使用该技术和苹果产品上的编程接口提供帮助。这些信息可能会发生变化,依据该文档开发的软件应该使用最新的操作系统软件和最终文档进行测试。文档的新版本可能会提供新的API和技术。

Home Kit在那些支持苹果Home Automation Protocol和iOS设备的附属配件之间实现了无缝集成和融合,从而推进家庭自动化的发展和革新。通过一个通用的家庭自动化设备协议,以及一个可以配置这些设备并与之通信的公开API,Home Kit使得app用户控制自己的home成为可能,而不需要由生产家庭自动化配件的厂商创建。Home Kit也使得来自多个厂商的家庭自动化配件集成为一体,而无需厂商之间彼此直接协调。

Home Kit允许第三方应用执行以下三大主要功能:

1.发现附属设备,并把它们添加到一个持久的、跨设备的home配置数据库中。

2. 在home配置数据库中展示、编辑以及操作数据。

3.与配置的附属设备和服务进行通信,从而使之执行相关操作,比如关掉起居室的灯。

Home配置数据库并不仅仅适用于第三方应用,也适用于Siri。用户可用Siri发出指令,比如“Siri,关掉起居室的灯。”如果用户通过合逻辑的分组配件、服务以及命令创建了家居配置,那么Siri可通过声音控制来完成一系列复杂精细的操作。

Home Kit把home看作一个家庭自动化配件的集合。家居配置的目的是允许终端用户为他们购买和安装的家庭自动化配件提供有意义的标签和分组。应用程序可以提供建议来帮助用户创建有意义的标签和分组,但不能把它们自己的偏好设定强加给用户--用户的意愿最重要。

基本数据包含层级类似下边这样:

Homes(HMHome)是最顶层的容器,展示了用户一般都会认为是单个家庭单位的结构。用户可能有多个离得较远的住所,比如一个经常使用的住所和一个度假别墅。或者他们可能有两个离得比较近的住所,比如一个主要住宅和一个别墅。

Rooms (HMRoom)是home的可选部分,并且代表home中单独的room。room并没有任何物理特性--大小、位置等等。对用户来说,它们是简单的有意义的命名,比如“起居室”或者“厨房”。有意义的room名称可以启用类似“Siri,打开起厨房的灯”的指令。

附属设备被安装在home中,并且被分配给每个room。它们是实际的物理家庭自动化设备,比如一个车库门遥控开关。如果用户没有配置任何room,那么Home Kit将会把附属设备分配给home中特殊的默认room。

Services (HMService)是由附属配件提供的实际服务。附属配件有用户可控制的服务,比如灯光;也有它们自用的服务,比如框架更新服务。Home Kit更多关注用户可以控制的服务。单个附属配件可能有多个用户可控制的服务。比如大部分车库遥控开关有打开或者关闭车库门的服务,并且在车库门上还有控制灯光的服务。

Zones (HMZone)是home中可选择的room分组。“Upstairs”和“downstairs”可以由zones代表。Zones是完全可选择的,room不需要处于zone中。通过把room添加到zone中,用户可以给Siri发命令,比如“Siri,打开楼下所有的灯。”

类    

NSObject:NSObject是大部分Objective-C类层次的基类。 
HMAccessory:一个HMAccessory对象代表一个家庭自动化配件,比如车库门遥控开关或者一个恒温器。
HMAccessoryBrowser:一个HMAccessoryBrowser对象是一个用来发现新附属配件的网络浏览器。
HMAction:HMAction是Home Kit中行为操作的抽象基类。
    (HMCharacteristicWriteAction:HMCharacteristicMetadata对象用来代表操作集中的一个操作。)
HMActionSet:HMActionSet对象代表应用于单个设置的一组操作(HMAction的实例)
HMCharacteristic:HMCharacteristic对象代表某个服务的特性,比如,灯是打开还是关闭,或者温度调节器设定了什么温度。
HMCharacteristicMetadata:HMCharacteristicMetadata对象代表某个特性的元数据。
HMHome:HMHome对象允许你在home中与不同附属设备进行通信并安装配件。
HMHomeManager:HMHomeManager对象管理一个或者多个home集合。
HMRoom:一个HMRoom对象被用来代表home中的一个room。
HMService:HMService对象代表附属配件提供的服务。
HMServiceGroup:HMServiceGroup对象代表配件提供的服务的集合,简化了把服务当作单一实体处理的过程。
HMTrigger:HMTrigger对象代表触发事件,在满足触发条件时,它用来触发一个或者多个操作集(HMActionSet的实例)。
    (HMTimerTrigger:HMTimerTrigger对象代表基于计时器的触发器。)
HMZone:HMZone对象代表一个room的集合--用户认为是单个区域或者zone,比如“起居室”和“厨房”可能会被分在一个叫做“Downstairs”的zone中。

Protocols

HMAccessoryBrowserDelegate:该协议定义了HMAccessoryBrowser对象的接口,以通知委托发现了新的附属配件。
HMAccessoryDelegate:该协议定义了从附属配件到委托状态更新的通信方法。
HMHomeDelegate:该协议定义了home中配置改变和在home中执行操作集的状态的通信方法。
HMHomeManagerDelegate:该协议定义了home manager对象如何把改变传达给它们的委托。

Other Reference

Home Kit框架简介的更多相关文章

  1. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  2. 《HiWind企业快速开发框架实战》(0)目录及框架简介

    <HiWind企业快速开发框架实战>(0)目录及框架简介 本系列主要介绍一款企业管理系统快速开发框架,该框架旨在快速完成企业管理系统,并实现易维护可移植的目标. 使用逐个系统模块进行编码的 ...

  3. Yaf零基础学习总结1-Yaf框架简介

    从今天开始,给大家讲解下yaf框架,讲解之前肯定要了解下yaf是个什么东西,当然,从标题我们已经知道yaf是个PHP框架了,也许大家对于PHP框架并不陌生,一般PHP程序员用过的框架至少有一两个吧,国 ...

  4. hdwiki 框架简介

    虽然HDwiki是一个开源的wiki系统,并且代码简洁易懂,但如果想在系统上做做进一步开发还需要对框架有一个整体的认识.熟悉了HDwiki的框架以后完全可以独立出来做其他功能的开发,当做一个开源的PH ...

  5. Apache—DBUtils框架简介

    转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner ...

  6. Jersey框架一:Jersey RESTful WebService框架简介

    Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...

  7. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  8. python运维开发(二十二)---JSONP、瀑布流、组合搜索、多级评论、tornado框架简介

    内容目录: JSONP应用 瀑布流布局 组合搜索 多级评论 tornado框架简介 JSONP应用 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. ...

  9. Spring 系列: Spring 框架简介(转载)

    Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...

随机推荐

  1. ubuntu 14.04 安装 gflags

    1.下载 git clone https://github.com/gflags/gflags 2.编译 进入源码目录(即gflags文件夹) cmake . make -j 24 sudo make ...

  2. JS + flash 复制

    js代码ZeroClipboard组件制作复制剪切板复制粘贴文字内容,一键即可复制粘贴文字内容.兼容各大主流浏览器firefox,,Chrome,IE等. 演示代码 如下: <script ty ...

  3. QString 编码转换

    参考网址:http://blog.csdn.net/lfw19891101/article/details/6641785 (网页保存于:百度云CodeSkill33 --> 全部文件 > ...

  4. Qt5.3.2_CentOS6.4(x86)_代码文件编码

    1.1.1.Qt5.3.2_MinGW 在Windows中安装时,默认的文件编码是 UTF8. 1.2.在 CentOS6.4中安装 qt-opensource-linux-x86-5.3.2.run ...

  5. Bootstrap 栅格系统(布局)

    基本用法  网格系统用来布局,其实就是列的组合.Bootstrap框架的网格系统中有四种基本的用法.由于Bootstrap框架在不同屏幕尺寸使用了不同的网格样式,在这一节中所涉及到的示例,我们都以中屏 ...

  6. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  7. codeforces 494a//Treasure// Codeforces Round #282(Div. 1)

    题意:一个'('  ,  ')'  ,  '#'组成的串,可将'#'换成至少一个')'.问一个换法能使串匹配. 至少换成一个,那么就先都换成一个,记结果为str.最后一个')'的后面没有未匹配的'(' ...

  8. 联想笔记本V470安装Win8.1 X64位系统,关机黑屏、电源灯亮

    以前的WIN7 X86系统用了很长时间了,软件业装了很多,现在使用的时候就有点卡了,最近决定重装个系统,后台发现开发的有一个东西要求WIN8 X64位的,就下载了一个准备直接安装了,也从此开始了整整2 ...

  9. 数据库到jsp页面报错(一)

    数据库到jsp页面报错(一) 这个错误的确比较坑. 控制台:     页面: 解决: 神坑啊!!!

  10. Dos命令的介绍

    Dos命令的介绍目录 1.什么是Dos 2.Dos的简介 3.Dos命令有哪些 4.Dos命令下常见的错误信息 5.Config.sys文件的命令和配置 6.Dos自带的的批处理命令 1.什么是Dos ...