Apple HomeKit


HomeKit is a framework for communicating with and controlling connected home automation accessories that support Apple’s HomeKit Accessory Protocol. HomeKit apps enable users to discover compatible accessories and configure them.

智能家居是一个Apple提供的一个框架,在该框架下,可以链接和控制支持Apple HAP(HomeKit Accessary Protocol)协议的配件。用户可以通过智能家居APP来寻找兼容的配件并配置他们。

HomeKit简介

智能家居是Apple在iOS 8发布的时候就提出来,经历iOS 9的发展,在iOS 10发布的时候作为一个应用融入到系统中。HomeKit目前可以控制开关、电灯、空调等智能设备,检测室内温度、湿度等指标。Apple推出Homekit致力为市面上主流智能家居设备搭建一个智能家居平台,建立一个统一适用的标准,创建智能家居的生态环。


注释
关于 Nordic Semiconductor ASA
关于nRF51系列
nRF51系列蓝牙智能SDK、开发工具和参考设计

HAP协议

Apple推出了自家智能家居平台的一个标准协议:HomeKit Accessary Protocol。只有通过MFi(Made for iOS)认证的机构才能拿到HAP协议,针对HomeKit设计生产配套的智能硬件设备。常见的正品配件如充电线、数据线产品上都会印MFi授权logo,因为代表Apple品牌形象,所以认证过程非常严格,通过率为2%,而且无法以个人开发者身份加入。

除了官方的给出的协议支持途径外,可以通过第三方硬件厂商开发的SDK来进行智能硬件开发。例如:挪威的专业射频厂商奥斯陆于2015年6月29日宣布提供用于nRF51系列蓝牙智能SoC的HomeKit解决方案。新型SDK结合nRF51 系列蓝牙智能SoC,为开发人员提供了用于HomeKit产品的独特解决方案。丹麦企业Poly-Control基于上述方案,开发了创新、时尚的无钥匙门锁Danalock。

也有人在Github发布了自己逆向HAP协议的开源代码,通过树莓派开发版开发的支持HAP协议的智能硬件,相应的开源有HAP-NodeJS和hc等。这种做法成本相对较小,但是提交Apple Store的APP可能因此被拒,毕竟是逆向出Apple的协议,没有走正规渠道。

最后一种方法是通过桥接的方式,Apple对这种方式的功能限制比较多。作为对比,桥接外设可以将 iOS 设备与非 HomeKit 外设链接。桥接设备将通过 HomeKit 协议与 iOS 设备通信,并使用其他无线/传输协议,比如 ZigBee、Z-Wave 与非 HomeKit 外设通信。这也意味桥接设备将允许 Siri 控制非 HomeKit 设备。能桥接至 Homekit 的设备非常有限。比如,苹果不允许家庭自动化外设通过 WiFi 链接,比如 Nest 恒温器。苹果将允许一些蓝牙低能耗外设进行桥接,不过仅限于没有提供给用户控制的家庭电器,比如一款非 MFi 授权的蓝牙灯泡产品不会被连接。

苹果将允许不会提供控制的家电与 HomeKit 连接。只有提供数据给 HomeKit 的家用电器才可以支持桥接。通过 Siri 无线控制家用电器需要 Apple TV 在网络之中。这也意味着家用电器不能进行远程控制。

附HomeKit的审核指导:
26.1 使用HomeKit框架的应用程序必须有提供家庭自动化服务的主要目的。
26.2 使用HomeKit框架的应用程序必须在营销文本中说明用法,同时必须提供隐私政策,否则将会被拒绝。
26.3 应用程序不允许将从HomeKit API收集的数据用于广告宣传或者其他基于使用的数据挖掘。
26.4 出于其他目的使用从HomeKit API收集的数据,而不是用于提高用户体验或者家庭自动化功能中硬件/软件性能,这类应用将会被拒绝。

HomeKit Software Development

HomeKit同其他的kit一样是Apple官方提供的框架,最低支持iOS 8和Xcode 6
启用HomeKit的步骤如下:
1. 在Xcode中,选择View > Navigators > Show Project Navigator;
2. 从Project/Targets弹出菜单中target(或者从Project/Targets的侧边栏)
3. 点击Capabilities查看你可以添加的应用服务列表;
4. 滑到HomeKit 所在的行并打开关。

如果没有智能硬件调试,Apple 提供HomeKit Accessory Simulator来测试HomeKit app和模拟配件设备之间的通信,需要单独下载:
1. 在Capabilities面板的HomeKit分区,点击Download HomeKit Accessory Simulator按钮。(或者选择Xcode > Open Developer Tool > More Developer Tools)
2. 在浏览器中搜索并且下载”Hardware IO Tools for Xcode “.dmg文件。
3. 在 Finder中双击~/Downloads中的.dmg文件。
4. 把HomeKit Accessory Simulator拖拽到/Application文件中。

HomeKit布局介绍:

用户以home为单位在APP中创建布局,可以创建一个或多个home。

每个Home一般有多个room,并且每个room一般会有多个智能配件,并且有自己独立的名字,可以搭配Siri使用。room中的智能配件为accessary,例如车库开门器,灯,开关等。

同时,HomeKit还提供区域划分,不同的room可以分类到同一片zone,例如可以根据楼上、楼下来划分。

HMService,每个配件都有它的属性和服务,一个车库开门器可能拥有一个照明和开关的服务。照明服务可能拥有打开/关闭和调节亮度的特性。用户不能制造智能家电配件和它们的服务-配件制造商会制造配件和它们的服务-但是用户可以改变服务的特性。一些拥有可读写属性的特性代表着某种物理状态,比如,一个恒温器中的当前温度就是一个只可读的值,但是目标温度又是可读写的。苹果预先定义了一些服务和特性的名称,以便让Siri能够识别它们。

HMAction,写入动作会向一个服务的特性写入值并被加入到动作集合中去。HMAction类是HMCharacteristicWriteAction具体类的抽象基类。一个动作有一个相关联的特性对象,你可以通过Accessing Services and Characteristics中描述的来获取相关的服务和特性,然后创建这个HMCharacteristicWriteAction。

HMTrigger,触发器会执行一个或多个动作集。iOS会在后台管理和运行你的触发器。HMTrigger类是HMTimerTrigger具体类的抽象类。当你创建一个定时触发器时,你需要指定触发时间和触发的周期。创建并开启一个定时触发器需要多个步骤来完成。

观察HomeKit数据库的变化

由于Homekit支持iCloud服务,一个账号可以在多台设备上使用,管理员可以添加访客。每个Home都有一个HomeKit数据库。如下图所示,HomeKit数据库会安全地和home授权的用户的iOS设备以及潜在的客人的iOS设备进行同步。为了给用户展示当前最新的数据,你的应用需要观察HomeKit数据库的变化。

HomeKit通过代理的方式告知该设备上其他使用HomeKit的应用,数据发生变化;通过通知推送的方式,来告知不同设备上使用HomeKit的应用,数据发生变化。

参考资料:
谷歌I/O大会发布智能家居Google Home

苹果详解HomeKit兼容性 支持非认证设备

What protocol does HomeKit use to communicate with its devices?

折腾 Raspberry Pi + HomeKit 手记

关于 BlueTooth 的疑问

基于nRF51系列蓝牙智能SoC的HomeKit解决方案

Introduction to HomeKit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章