重要:本文是针对开发过程中使用的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. shell 关系运算符

    关系运算符 关系运算符只支持数字,不支持字符串,除非字符串的值是数字. 下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 -eq 检测两个数是否相等,相等返 ...

  2. Ubuntu14.04(server amd 64)编译安装 ceres-solver

    文档地址:http://www.ceres-solver.org/installation.html git地址:(需要FQ下载) git clone https://ceres-solver.goo ...

  3. 【转】DrawDibDraw

    http://blog.csdn.net/normallife/article/details/53177315 BMP位图文件结构及平滑缩放 用普通方法显示BMP位图,占内存大,速度慢,在图形缩小时 ...

  4. iOS开发中各种关键字的区别

    1.一些概念 1.浅Copy:指针的复制,只是多了一个指向这块内存的指针,共用一块内存. 深Copy:内存的复制,两块内存是完全不同的, 也就是两个对象指针分别指向不同的内存,互不干涉. 2.atom ...

  5. Python 爬虫-Scrapy框架基本使用

    2017-08-01  22:39:50 一.Scrapy爬虫的基本命令 Scrapy是为持续运行设计的专业爬虫框架,提供操作的Scrapy命令行. Scrapy命令行格式 Scrapy常用命令 采用 ...

  6. Spring源码的编译、下载和阅读

    原文出处: 分享牛 想对spring框架进行深入的学习一下,看看源代码,提升和沉淀下自己,工欲善其事必先利其器,还是先搭建环境吧. 环境搭建 sping源码之前是svn管理,现在已经迁移到了githu ...

  7. CF1082G Petya and Graph

    题意 定义图权 = 图中边权总和 - 图中点权总和(空图的图权=0),求 n 个点 m 条边的无向图最大权子图. 把边看成点,这个点与两个原图中的点连边.直接最小割求最大闭合子图即可.

  8. IntelliJ Idea工具使用

    以前一直用eclipse/myeclipse开发,最近因为需要学习了intelliJ Idea工具,感觉真的挺好用的..好用的东西就要掌握加以利用,特写一篇简单的总结(只写大体). 一,什么是Inte ...

  9. python-day10--文件处理

    1.文件:是操作系统提供的概念 2. open(r+'文件路径' , '打开方式' , '用什么字符编码')   #r 表示原始字符串 eg:open(r'C:\Users\13264\Desktop ...

  10. 弗洛伊德算法(Floyd算法)

    原博来自http://www.cnblogs.com/skywang12345/ 弗洛伊德算法介绍 和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的 ...