IOS开发之HomeKit(二)

作者: 在海边的人 | 来源:发表于2016-09-26 21:58 被阅读1614次

    上一篇算是先来一个前奏,这一篇开始我们正式开搞。

    一  相关概念

    1.home(HMhome)

            homeKit允许用户有多个home,每一个home代表一个有智能设备的住所。用户拥有Home的数据并可通过自己的任何一台iOS设备进行访问。用户也可以和客户共享一个Home,但是客户的权限会有更多限制。在用户的所有home中,会有一个常用的home,即为primary home。被指定为primary home的home默认是Siri指令的对象,并且不能指定home,就是说primary home是只读的不能去设定。

           我们可以通过创建一个HMHomeManager对象去管理home。使用这个HMHomeManager对象的访问home、room、配件、服务以及其他HomeKit对象。

    2.room(HMroom)

             每个Home一般有多个room,并且每个room一般会有多个智能配件。在home中,每个房间是独立的room,并具有一个有意义的名字,这个名字是唯一的。(home的名字也是唯一的)例如“卧室”或者“厨房”,这些名字可以在Siri 命令中使用。

    3.accessory(HMAccessory)

           一个accessory代表一个家庭中的自动化设备,例如一个智能插座,一个智能灯具等。

    4.sevice(HMService)

           一个sevice是accessory提供的一个实际服务,例如打开或者关闭灯泡,这里和蓝牙开发中的服务的意义基本是一样的。每个sevice中也会有多个特征(characteristic),这个也可以参考,蓝牙开发中的相关概念。

    它们之间的关系如图所示

    二  启动homeKit

           我这里写了一个界面,为了展示当前选中的home的所有room,可以编辑home以及其中的room:

    1.查看全部的home,获取到用户的homes,使用alterViewContorller展示出来。点击选择某一个home可以将其中的room展示在当前界面中。

    2.点击移除当前home可以移除当前界面展示的home。

    3.点击添加home,用户通过alterViewContorller输入一个名字,可以为用户增加一个新的home。

    4.蓝色的方块是collectionView,展示了当前home的所有room,点击对应的room会push到这个room的详情界面。点击后边的加号同样会出现一个alterViewContorller,让用户输入一个唯一的名字,来为当前的home增加一个新的room。


    上代码:

    这里为了搞得清楚一点,单搞了一个类出来作为工具类;

    .h文件
    .m文件这里有两个方法分别是添加和移除home

    接上图:

    这是homeManager的回调方法

    其中第一个方法是homeManager初始化之后的回调。我们对数据进行操作的时候,应该再其初始化之后进行。

    获取home: 初始化之后我们在其回调方法中可以获取到manager.homes,这是一个数组,里边是用户的全部HMhome对象,我们可以遍历这个数组获取到全部的home,通过home.name得到home的名字。

    添加和移除home:上图中有两个分别是添加和移除home的方法,使用homeManager对象来调用。这两个方法同样有两个回调方法来告诉我们是否操作成功。

    获取room:获取到HMhome对象之后可以通过home.rooms获取到该home的全部room。同样通过遍历这个数组获取到全部的HMroom对象,然后通过room.name获取到room的名字。

    添加和移除room:同添加和移除home,不过是使用HMhome对象来调用。

    其实这里边很多东西都是明确的上下级关系,只要搞清楚这个上下级关系,依次类推就很简单了。

    代码就写了一小部分,半成品代码放到github上了,有兴趣的可以去看一下。https://github.com/BigBirdalan/myHomeKit.git

           每天的时间确实有限,所以慢慢写吧。。。。这篇文章先介绍到这里,下篇继续。这里为了介绍的更加清楚,也引用了不少苹果官方文档中的描述,希望可以尽可能的把这些东西说明的更加清楚。有兴趣的可以一起研究,共同开搞。我也是在慢慢的摸索学习,所以肯定有许多地方,走远了。。。。。大家多多指正。

    相关文章

      网友评论

      • 追梦少年22:楼主有没有demo 可以分享一下
      • 悟2023:楼有Demo 没?可否共享一下
      • me007:楼主写得真好,有空一起学习交流,我也对智能家居感兴趣
      • f75dfaf80e43:您怎么实践的呢...
        在海边的人:@奔小康 对啊,就是智能家居什么的。
        f75dfaf80e43:@在海边的人 您是说硬件是指灯啥的控件
        么~~~~
        在海边的人:@奔小康 APP写好了,有条件就买个硬件,不买的话用模拟器测试不就好了。。。。。。。

      本文标题:IOS开发之HomeKit(二)

      本文链接:https://www.haomeiwen.com/subject/tgwqyttx.html