iOS HomeKit 使用及介绍


HomeKit介绍

苹果Homekit智能家居平台是智慧家庭控制中心,让用户能够通过一个应用对所有智能家居类硬件产品进行统一管理 

HomeKit框架

HomeKit框架 是App用来沟通和控制家庭自动化配件的,这些家庭自动化配件都支持苹果的HomeKit Accessory Protocol。HomeKit应用程序可让用户发现兼容配件并配置它们。用户可以创建一些action来控制智能配件(例如恒温或者光线强弱),对其进行分组,并且可以通过Siri触发。HomeKit 对象被存储在用户iOS设备的数据库中,并且通过iCloud还可以同步到其他iOS设备。HomeKit支持远程访问智能配件,并支持多个用户设备和多个用户。HomeKit 还对用户的安全和隐私做了处理。

可以创建一个与苹果官方HomeKit App相似的 App 

如何在不进行苹果认证的情况下实现HomeKit

使用 Homebridge 技术模拟 HomeKit
Homebridge 是一种轻量级NodeJS框架,可以在家庭网络运行,模拟HomeKit Api ,可以为HomeKit 和 一些不支持HomeKit的设备提供链接桥梁。例如小米的HomeKit 就是利用此Api实现的(小米HomeKit 路由器插件已下架)类似的还有利用树莓派 运行 Homebridge 插件,来实现HomeKit和第三方设备的链接

资料: http://bbs.feng.com/forum.php?mod=viewthread&tid=10857822&mobile=no

如何构建 HomeKit App

1 创建 房间管理 homeManager

HomeKit会有一个或者多个家庭,但是最少是一个。管理或者创建家庭呢。 homeManager创建的时候,HomeKit就开始从HomeKit数据库获取这些homes和相关对象。 然后实现代理方法  当房间发生变化的时候会走这些代理方法。导入头文件,和在.h中加入 用homeManager来管理我们的房间了。操作房间, 使用homeManager的几个属性,primaryHome,和homes 
HMHome home = homeManager.primaryHome;   //拿到你的主家庭
NSArray homeArray = homeManger.homes;  //获取到所有的家庭

2 home(家庭)

home就是从homeManager拿出来的一个家庭,然后拿着这个home搞一些事情,home中有太多的事情可以搞了,比如说在这个home中添加一个房间,或者配件呀,给房间改个名字呀,看看这个home有多少个房间或者配件呀,等等。太home(家庭)有了,就要给这个home加配件(accessory)了。

3.accessory(配件)

加入配件你得先能找得到配件,若何发现配件。 创建HMAccessoryBrowser对象 
HMAccessoryBrowser *accessoryBrowser = [[HMAccessoryBrowser alloc] init] ;
accessoryBrowser.delegate = self;
然后实现代理方法,实现哪些代理方法自己去HMAccessoryBrowser里面看一看 
[accessoryBrowser startSearchingForNewAccessories];  //开始搜索配件
[accessoryBrowser stopSearchingForNewAccessories];  //结束搜索配件
当有配件被发现的时候会走didFindNewAccessory代理方法,然后你只需要 
//拿出已经找到的配件
NSArray *accessoryArray = accessoryBrowser.discoveredAccessories;  
从发现的配件数组总拿出一个 HMAccessory *accessory,然后调用 
//添加配件
[homeManager.primaryHome addAccessory:accessory completionHandler:^(NSError *error) {}];   
走这段代码的时候,会自动跳到HomeKit提供的界面,他会帮你处理扫描密码和配对过程,这样就把配件加入到房间中。这里有一点要说明一下,配件实际是应该加入到room中的,如果你还没有创建room,那会自动把配件加入到默认room中,怎么创建room呢,我就不说了,就是用HMHome的对象 addRoom...,移除removeRoom...,accessory(配件)或者房间(home)添加成功后他会通知代理,你就可以刷新界面了。如果你的添加或者删除操作失败了会返回给你个error,这个error你可以参照HMError来看一下是什么导致的错误。 在accessory的对象中你就可以获取到配件中的services(服务),name,是否在线,UUID,在哪个room下,还有一些属性和代理方法去看看他自己的接口。

4.service(服务)

服务就是你这个配件中都有哪些服务,说白了就是对这个配件功能的分类,服务是分类型的,当你添加完配件之后,里面肯定有至少服务,这个服务里面放着你的配件的基本信息,这些是必须有的,要是没有的话你的配件是添加不上的,所以这点不是ios程序员该关心的,我们关心的是有哪些服务,服务里面有哪些characteristic(特性)。强调一点每个服务都是分类型的, 
NSArray *serviceArray = accessory.services;    //获取服务数组
你要获取拿到哪一个服务可以根据类型来判断。服务只可以修改名字和类型的方法 ,属性有很多,不过我只用到了name(名字),characteristics(特性数组),associatedServiceType(类型),其他的看看接口吧,说的还是蛮详细的。

5.characteristic(特性)

特性就是你的这个配件的信息和操作了。特性也有多类型,比如开关类型;brightness(调光),还可以自定义类型,类型使用UUID来区分,自定义的类型用UUID是不一样,不是自定义的类型UUID是固定的,没了特性都会有value。你可以characteristic.value 看的到,每种特性还会分为,只读,只写,读写,可以写的是可以通过
[characteristic writeValue:tagetValue completionHandler:^(NSError *error)
{  //code
}];
来修改这个特性的value值,达到控制设备的操作。

6.user(用户

每个创建home的用户都是这个home的管理者,你可以邀请其他人到你的家来。同样你也可以删掉。除了管理者这之外的人,不可以改变home的格局,但是可以识别智能电器、读写特性、观察特性值变化、执行动作集。 在ios9以后,只需要调用 
[home manageUsersWithCompletionHandler:^(NSError * _Nullable error) {
}];
HomeKit会帮你管理你的user;不过在9之前,添加,删除用户是分开管理的,例如添加 
[self.home addUserWithCompletionHandler:^(HMUser *user, NSError *error) {
}];


你可能感兴趣的:(移动开发)