homekit介绍:
https://sspai.com/post/68897

HomeKit 对 Wi-Fi 系统的挑战

相较于路由器,HomeKit 对于 Wi-Fi 的性能需求并不突出,但 Wi-Fi 系统的孱弱仍然有可能成为影响 HomeKit 体验的隐患。这样的挑战是目前阶段绝大多数智能家居平台中普遍存在的,下面我们来简要介绍一下。
目前,大部分 Wi-Fi 智能家居设备只支持 2.4GHz 频率的 Wi-Fi 4 协议,而且功率较低,穿墙性能和抗干扰能力都较弱。摄像头、传感器等智能家居设备还往往被放在家中的角落,靠单一路由器进行覆盖很可能出现死角。此外,智能家居设备几乎都不支持 MIMO;为了服务这些设备,其他无线设备(例如手机、电脑)的信号很可能受到影响。
考虑到 Wi-Fi 接入目前仍然是智能家居单品的主流入网方式,在布置 HomeKit(以及其他智能家居系统)前建议先升级自己的无线 AP 布局。对于已经入住的家庭来说,mesh 路由系统是扩展无线覆盖最省心的选择;还在装修阶段的也可以提前布局 AC+AP 方案。为智能家居布设 Wi-Fi 应当尽量确保所有可能安装智能家居设备的位置都有较强的 2.4GHz 信号覆盖,以免设备发生断连掉线。

自动化

image.png

image.png
HomeKit 的抽象模型设计十分简洁。它只包含三个不同层次的核心概念:

  • 设备(accessory)
  • 服务(service)
  • 属性(characteristic)。
  • 「服务」是对某一类设备功能的抽象。除了名为「设备信息」,用于展示制造商、序列号、固件版本等信息的一个必须的服务外,大部分设备只包含一个服务,和自己的功能相匹配。为了最大程度的抽象和复用,部分服务类型会可能「附加」其它服务。例如「空气净化器」就可以附加「风扇」服务;如果一个设备同时包含「空气净化器」和「风扇」服务,HomeKit 会推断出这是一台空气净化器,「风扇」控制的是空气净化器的风速,并且二者的开关状态应当同步。

每个服务都规定有可选和必选属性,例如「设备信息」服务中制造商、型号等属性都是必须提供的。属性反映设备的某个特征或者状态,例如开关状态、传感器数据等。属性支持多种不同的权限组合:设备制造商信息是只读(paired read)的,开关既可读(paired read)又可写(paired write),传感器数据等可以用于触发自动化的则必须具备通知(notify)权限。支持推送消息的关键属性则需要在通知的基础上实现事件(event)。除此之外,还有立即写(timed write)、写返回(write with response)、广播(broadcast)、隐藏(hidden)等权限。设备还可以定义私有属性,这些属性在「家庭」app 中将向一般用户隐藏,但可以被 HomeKit 用于控制以及自动化等操作。

home assistant 自动化:事件(边缘变化)、条件(持续状态)、动作
在 Home Assistant 中把自动化分为三个部分即:事件(events)、条件(conditions)、动作(actions)。在许多三方 App 中常把事件和条件混在一起,厘清区别有助于理解和创建更直观的自动化。自动化事件负责触发自动化,条件负责判断触发这个事件时环境的条件是否满足,动作负责具体控制设备。举个例子:如果我需要开门时环境亮度低于 30 Lux 时开灯。那么开门门窗传感器检测到开门的这个动作则进入条件判断,然后光照传感器检查目前的环境亮度符合较低的条件就执行开灯的动作。一般说来事件是一个变化状态(关变为开),条件是一个持续状态(小于 30 Lux),动作是对设备具体的控制行为(开灯)。

image.png

桥接器(网关)是一类特殊的设备,它承担着将非 BLE 或 IP 设备接入 HomeKit 的功能。通过桥接器接入 HomeKit 的设备可以以「产品组合」的形式通过 HomeKit 认证,宣传和销售时除了印刷「Works with Apple HomeKit」标志,还需注明支持 HomeKit 的桥接器型号。有些设备既有自己的功能,又可以用作桥接器(例如 Aqara 空调伴侣 P3);也有一些设备只有桥接功能,「家庭」app 将它们隐藏到了「家庭设置 > 中枢与桥接」中。我们可以在这一页面查看或移除桥接器。

添加设备及初始化
作为「HomeKit 原理」的最后一块拼图,我们需要谈谈 HomeKit 设备的入网和初始设置流程。为了在本地完成设备的配置和认证,HomeKit 不像米家等平台那样提供「支持设备列表」和操作指南,而是完全依靠蓝牙和 Bonjour 发现(discover)附近的设备。这样反倒创造出了更一致的设备添加流程,成为了 HomeKit 的一大标志性体验。
对于 BLE 设备来说,未经注册的设备会不停「广播」一个特殊的「HAP 配对」服务,HomeKit 将监听这类广播消息,从而识别附近正在等待配对的设备。Wi-Fi 设备的入网则实际上使用了 MFi 无线设备配置功能;这一功能只对 MFi 计划的认证硬件开放,并且需要专用 BLE 蓝牙芯进行服务广播片以被 iOS 设备发现。还有一类 IP 设备并不通过 HomeKit 的配对流程接入局域网。它们可能使用有线连接,或者拥有更复杂的功能(例如电视机),因此这类设备将直接通过 Bonjour 被发现。
个人终端设备将结合设置码来自动发现对应的 HomeKit 设备,确认它还未添加到 HomeKit,然后为设备配网。绝大多数 HomeKit 设备采用的静态设置码会以贴纸的形式出现在机身或者说明书等位置,目前主要有二维码贴纸和 NFC 贴纸两种。使用 iOS 或 iPadOS 设备的摄像头或 iPhone 的 NFC 扫描对应贴纸都可以激活配对流程。使用动态设置码的带屏幕设备需要在屏幕上展示二维码供扫描,例如电视机和机顶盒。
已经正确配对或接入后后,下一步需要进行初始设置。整个流程采用安全远程密码交换协议(Secure Remote Password protocol),需要进行三个来回的信息传递,期间将验证设置码的有效性,并为 HomeKit 设备生成一个长期密钥。这一密钥在还原出厂设置前都将保持不变。设置完成后,HomeKit 就会尝试和该设备建立会话,以上流程全部无错误则设备添加成功。
image.png
homekit - 图5
homekit - 图6
homekit - 图7