HomeKit 基本理解

article/2025/6/23 19:08:31

概括

HomeKit 将用户的家庭自动化信息存储在数据库中,该数据库由苹果的内置iOS家庭应用程序、支持HomeKit的应用程序和其他开发人员的应用程序共享。所有这些应用程序都使用HomeKit框架作为对等程序访问数据库.

Home 只是相当于 HomeKit 的表现层,其他应用在实现 HomeKit 也能可以具备相应的能力。实际的数据存在 HomeKit 的数据库中。

automation-1@2x

我们的操作都会转化到数据库中,所以苹果需要家庭中枢控制,是不是将数据放在家庭中枢中。

结构图,下图可以看出家庭、放假、设备的层次关系。

截屏2022-02-15 下午3.22.21

控制路线,一层一层往下控制。

HMHomeManager
HMHome
HMRoom
HMAccessory 设备
HMService 服务功能 比如开关
HMCharacteristic 特征值 比如开关灯

HMHomeManager

HomeKit的总管理,主要负责权限、家庭数组、主home、home 的操作(增删改)和相关的代理

HMHomeManager
primaryHome:主家庭
autorizationStatus:授权状态
homes:家庭组
updatePrimaryHome:更新主 Home
addHomeWithName:添加 home
removeHome:移除 home
delegate:操作 home 的回调

HMHomeManagerDelegate

该代理主要响应 home 的增删改回调,以及权限更改。

HMHome

home 表示一个家庭,包含家庭各种信息,标识,房间,和对房间的操作。

1129722-20170814091627506-1683325220

HMRome

Home 中的最小颗粒,表示一个房间或者地方。包含基本信息、硬件设备。

HMRome
name:房间名字
uniqueIdentifier: 房间UUID
updateName:更新房间名字
accessories:设备

HMAccessory

accessory表示智能设备,比如灯泡、开关等。

1129722-20170821153631871-487150278

HMService

表示服务,或者一种能力。比如照明和开关的服务,如果你对服务的理解感到模糊,可以参考苹果内置的一些服务HMServiceType

1129722-20170821154352152-1036468327

HMCharacteristic

表示服务的特征值,比如可调灯的亮度或者色温。

1129722-20170821155003730-783067098

Accessory 端

智能设备在 iOS 的 HomeKit 中被称为 Accessory,如果硬件需要支持 HomeKit 则需要实现苹果的 HomeKit Accessory Protocol,总共包含三个三种接入方式

  1. Bluetooth LE 配件
  2. ip配件
  3. RF射频配件,这种方式只能通过具备ip通信的桥接设备接入。

参考

官方资料

开发者HomeKit 开发介绍
HomeKit 文档
HomeKit 示例工程

卷帘门和灯的添加和使用

WWDC2015: Introduce HomeKit

更深层次的理解 HomeKit

iOS HomeKit 详解

详细介绍 HomeKit 相关类和操作,怎么模拟配件和开发。


http://www.hkcw.cn/article/slmghJmAmp.shtml

相关文章

秒杀系统—5.第二版升级优化的技术文档三

大纲 8.秒杀系统的秒杀库存服务实现 9.秒杀系统的秒杀抢购服务实现 10.秒杀系统的秒杀下单服务实现 11.秒杀系统的页面渲染服务实现 12.秒杀系统的页面发布服务实现 8.秒杀系统的秒杀库存服务实现 (1)秒杀商品的库存在Redis中的结构 (2)库存分片并同步到Redis的实现 (3…

尚硅谷-尚庭公寓知识点

文章目录 尚庭公寓知识点1、转换器(Converter)2、全局异常3、定时任务1. 核心步骤(1) 启用定时任务(2) 创建定时任务 2. Scheduled 参数详解3. Cron 表达式语法4. 配置线程池(避免阻塞)5. 动态控制任务(高级用法)6. 注意事项 4、M…

字符串~~~

字符串~~ KMP例题1.无线传输2.删除字符串3.二叉树中的链表 AC自动机Manacher例题 扩展KMP字符串哈希 KMP (1) (2) (3) 经典例题 https://leetcode.cn/problems/find-the-index-of-the-first-occurre…

WEB3——简易NFT铸造平台之nft.storage

🧠 1. nft.storage 是什么? https://nft.storage 是 一个免费的去中心化存储平台,由 Filecoin 背后的 Protocol Labs 推出。 它的作用是: ✅ 接收用户上传的文件(图片、JSON 等) ✅ 把它们永久存储到 IPFS…

MCP架构全解析:从核心原理到企业级实践

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…

注销微软账户

若你需要注销微软账号,请点击下方超链接。 点击此处

华为OD机试真题——生成哈夫曼树(2025A卷:100分)Java/python/JavaScript/C/C++/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《生成…

Python实现P-PSO优化算法优化BP神经网络分类模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 随着人工智能技术的快速发展,神经网络在分类任务中展现了强大的性能。BP(Back Propagation&…

学习海康VisionMaster之表面缺陷滤波

一:进一步学习了 今天学习下VisionMaster中的表面缺陷滤波:简单、无纹理背景的表面缺陷检测,可以检测表面的异物,缺陷,划伤等 二:开始学习 1:什么表面缺陷滤波? 表面缺陷滤波的核心…

34.x64汇编写法(一)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:33.第二阶段x64游戏实战-InLineHook 首先打开 Visual Studio,然后创…

Java网络编程实战:TCP/UDP Socket通信详解与高并发服务器设计

🔍 开发者资源导航 🔍🏷️ 博客主页: 个人主页📚 专栏订阅: JavaEE全栈专栏 内容: socket(套接字)TCP和UDP差别UDP编程方法使用简单服务器实现 TCP编程方法Socket和ServerSocket之间的关系使用简…

算法:滑动窗口

1.长度最小的子数组 209. 长度最小的子数组 - 力扣(LeetCode) 运用滑动窗口(同向双指针)来解决,因为这些数字全是正整数,在left位置确定的下,right这个总sum会越大,所以我们先让num…

AI笔记 - 网络模型 - mobileNet

网络模型 mobileNet mobileNet V1网络结构深度可分离卷积空间可分![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/aff06377feac40b787cfc882be7c6e5d.png) 参考 mobileNet V1 网络结构 MobileNetV1可以理解为VGG中的标准卷积层换成深度可分离卷积 可分离卷积主要有…

新中地三维GIS开发智慧城市效果和应用场景

近年来,随着科技的发展和城市化进程的加速,智慧城市成为了全球各大城市的一个重要发展方向。 在这一背景下,三维GIS技术以其独特的优势,成为构建智慧城市不可或缺的工具。新中地GIS开发特训营正是在这样的大环境下应运而生&#…

Linux笔记---线程

1. 线程的介绍 1.1 线程的概念 基本定义: 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程(Process)之中(或者说是进程的一部分、对进程的划分),是进程中的实际…

Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)

前言:ArrayList是Java中最常用的动态数组实现之一,它提供了便捷的操作接口和灵活的扩展能力,使得在处理动态数据集合时非常方便。本文将深入探讨Java中ArrayList的实现原理、常用操作以及一些使用场景。 一:体系结构 二&#xff…

antddesign使用iconfont的字体库和图标库

antddesign使用iconfont 使用iconfont自定义字体 1️⃣选择一种需要的字体,点击【字体包下载】: 2️⃣下载好的字体放到项目目录下:src/assets/fonts: 3️⃣新建styles/font.css文件: /* src/styles/fonts.css */ f…

LearnOpenGL-笔记-其十二

今天我们来将LearnOpenGL的高级光照部分彻底完结: Bloom 泛光是一个非常常见的用于改善图像质量的手段,其主要做法就是将某个高亮度区域的亮度向四周发善以实现该区域更亮的视觉效果(因为显示器的亮度范围有限,需要通过泛光来体…

第十二节:第一部分:集合框架:概述、Collection集合的常用方法

集合体系结构 Collection集合体系 Collection的常用方法 代码: 代码一:认识Collection体系的特点 package com.itheima.day17_Collection;import java.util.ArrayList; import java.util.HashSet;/* * 目标:认识Collection体系的特点。 * */ public cl…

C++哈希表:unordered系列容器详解

本节目标 1.unordered系列关联式容器 2.底层结构 3.模拟实现 4.哈希的应用 5.海量数据处理面试题 unordered系列关联式容器 在c98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可以达到logN,即最差的情况下需要比较红…