zoukankan      html  css  js  c++  java
  • Home Kit框架简介

     

    重要:本文是针对开发过程中使用的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

  • 相关阅读:
    找零问题-完全背包
    可同时在nodejs和浏览器端使用的websocket
    C++ vector 比较大小
    npm ERR! Unexpected token in JSON at position 0 while parsing near '<HTML> 解决办法
    C/C++宏定义中#与##区别
    解析日志工具。
    3
    2
    dssfsfsfs
    android获取USB设备的名称
  • 原文地址:https://www.cnblogs.com/sytfyf/p/4157811.html
Copyright © 2011-2022 走看看