当前位置: 首页 > article >正文

HomeKit 基本理解

概括

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 相关类和操作,怎么模拟配件和开发。

相关文章:

HomeKit 基本理解

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

[SC]SystemC在CPU/GPU验证中的应用(三)

SystemC在CPU/GPU验证中的应用(三) 摘要:下面分享50个逐步升级SystemC编程能力的示例及建议的学习路线图。您可以一次一批地完成它们——从前五个基础的例子开始,然后转向channels, TLM, bus models, simple CPU/GPU kernels等等。在每个阶段掌握之后,再进行下一组…...

gunicorn多线程部署django导致的登陆错误

使用django写后端,认证系统使用了内存中的令牌存储(authentication.py中的user_tokens字典)。 from secrets import token_hex from .models import User# Create a custom token generation function def generate_token():return token_he…...

(LeetCode 每日一题) 909. 蛇梯棋 (广度优先搜索bfs)

题目&#xff1a;909. 蛇梯棋 思路&#xff1a;广度优先搜索bfs队列&#xff0c;时间复杂度0(6*n^2)。 细节看注释 C版本&#xff1a; class Solution { public:int snakesAndLadders(vector<vector<int>>& board) {int nboard.size();// vis[i]&#xff1a;…...

PostgreSQL ERROR: out of shared memory处理

使用pg_dump命令导出一个库的时候&#xff0c;报 pg_dump: error: query failed: ERROR: out of shared memory HINT: You might need to increase "max_locks_per_transaction". 从错误字面上看是超出内存大小了&#xff0c;建议增加max_locks_per_transaction参…...

生成https 证书步骤

一、OpenSSL下载 OpenSSL下载地址&#xff1a; https://slproweb.com/products/Win32OpenSSL.html 如果电脑是64位的就选择64位的 二、OpenSSL安装 双击打开.exe文件 开始安装&#xff0c;一直下一步&#xff0c;不过需要注意的是默认安装路径是C盘&#xff0c;可更改到其他盘…...

34、请求处理-【源码分析】-Model、Map原理

34、请求处理-【源码分析】-Model、Map原理 在 Spring Boot 中&#xff0c;处理请求时&#xff0c;控制器方法可以接收 Model 和 Map 类型的参数&#xff0c;用于向视图传递数据。以下是 Model 和 Map 参数处理的原理分析&#xff1a; ### 1. 参数解析过程 #### **1.1 确定参数…...

设计模式——适配器设计模式(结构型)

摘要 本文详细介绍了适配器设计模式&#xff0c;包括其定义、核心思想、角色、结构、实现方式、适用场景及实战示例。适配器模式是一种结构型设计模式&#xff0c;通过将一个类的接口转换成客户端期望的另一个接口&#xff0c;解决接口不兼容问题&#xff0c;提高系统灵活性和…...

小黑大语言模型通过设计demo进行应用探索:langchain中chain的简单理解demo

chain简介 LangChain 中的 Chain 模块‌在开发大型语言模型&#xff08;LLM&#xff09;驱动的应用程序中起着至关重要的作用。Chain是串联LLM能力与实际业务的关键桥梁&#xff0c;通过将多个工具和模块按逻辑串联起来&#xff0c;实现复杂任务的多步骤流程编排。 案例 通过…...

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

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

[SC]SystemC在CPU/GPU验证中的应用(六)

SystemC在CPU/GPU验证中的应用(六) 摘要:下面分享50个逐步升级SystemC编程能力的示例及建议的学习路线图。您可以一次一批地完成它们——从前五个基础的例子开始,然后转向channels, TLM, bus models, simple CPU/GPU kernels等等。在每个阶段掌握之后,再进行下一组…...

【STM32】HAL库 之 CAN 开发指南

基于stm32 f407vet6芯片 使用hal库开发 can 简单讲解一下can的基础使用 CubeMX配置 这里打开CAN1 并且设置好波特率和NVIC相关的配置 波特率使用波特率计算器软件 使用采样率最高的这段 填入 得到波特率1M bit/s 然后编写代码 环形缓冲区 #include "driver_buffer.h&qu…...

WPF的基础设施:XAML基础语法

XAML基础语法 1 控件声明与属性设置1.1 特性语法&#xff08;Attribute Syntax&#xff09;1.2 属性元素语法&#xff08;Property Element Syntax&#xff09;1.3 特殊值标记扩展 2 x:Name与Name的区别3 注释与代码折叠4 实用技巧集合5 常见错误排查 XAML( Extensible Applic…...

DeepSeek R1-0528 新开源推理模型(免费且快速)

DeepSeek推出了新模型,但这不是R2! R1-0528是DeepSeek的最新模型,在发布仅数小时后就在开源社区获得了巨大关注。 这个悄然发布的模型DeepSeek R1-0528,已经开始与OpenAI的o3一较高下。 让我来详细介绍这次更新的新内容。 DeepSeek R1-0528 发布 DeepSeek在这次发布中采…...

Go 语言的 GC 垃圾回收

序言 垃圾回收&#xff08;Garbage Collection&#xff0c;简称 GC&#xff09;机制 是一种自动内存管理技术&#xff0c;主要用于在程序运行时自动识别并释放不再使用的内存空间&#xff0c;防止内存泄漏和不必要的资源浪费。这篇文章让我们来看一下 Go 语言的垃圾回收机制是如…...

[git每日一句]your branch is behind ‘origin/master‘

当 Git 提示 "your branch is behind origin/master" 时&#xff0c;意思是&#xff1a; 你的本地分支落后于远程仓库&#xff08;origin&#xff09;的 master 分支 即&#xff1a;远程仓库有新的提交&#xff0c;而你的本地分支尚未同步这些更新。 如何解决&…...

【QT】在QT6中读取文件的方法

在QT6中读取文件的方法 QT6提供了多种读取文件的方式&#xff0c;下面我将介绍几种常用的方法&#xff0c;包括处理文本文件和二进制文件。 1. 使用QFile和QTextStream读取文本文件 这是读取文本文件最常用的方法&#xff1a; #include <QFile> #include <QTextSt…...

安全帽目标检测

安全帽数据集 这里我们使用的安全帽数据集是HelmentDetection&#xff0c;这是一个公开数据集&#xff0c;里面包含5000张voc标注格式的图像&#xff0c;分为三个类别&#xff0c;分别是 0: head 1: helmet 2: person 安全帽数据集下载地址、 我们将数据集下载后&#xff0c…...

Java工厂方法模式详解

工厂方法模式&#xff08;Factory Method Pattern&#xff09;是一种创建型设计模式&#xff0c;它将对象的创建和使用分离&#xff0c;通过定义一个创建对象的接口&#xff0c;让子类决定实例化哪个类。这种模式提高了代码的可扩展性和可维护性&#xff0c;尤其适用于需要根据…...

【pytorch学习】土堆pytorch学习笔记2

说明 主要以https://www.morinha.cc/posts/courses/pytorch-%E5%B0%8F%E5%9C%9F%E5%A0%86的内容为基础&#xff0c;没有的或者自己不是很清楚的再补充上内容&#xff0c;该贴有的内容大部分不再加入进来 新增的更全的参考&#xff1a; https://2048.csdn.net/6801fc28e9858151…...

Eclipse 插件开发 5.3 编辑器 监听输入

Eclipse 插件开发 5.3 编辑器监 听输入 1 插件配置2 添加监听3 查看效果 Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Click1 Bundle-SymbolicName: com.xu.click1;singleton:true Bundle-Version: 1.0.0 Bundle-Activator: com.xu.click1.Activator Bundle…...

iOS 集成网易云信IM

云信官方文档在这 看官方文档的时候&#xff0c;版本选择最新的V10。 1、CocoPods集成 pod NIMSDK_LITE 2、AppDelegate.m添加头文件 #import <NIMSDK/NIMSDK.h> 3、初始化 NIMSDKOption *mrnn_option [NIMSDKOption optionWithAppKey:"6f6568e354026d2d658a…...

Parasoft C++Test软件单元测试_实例讲解(对多次调用的函数打桩)

系列文章目录 Parasoft C++Test软件静态分析:操作指南(编码规范、质量度量)、常见问题及处理 Parasoft C++Test软件单元测试:操作指南、实例讲解、常见问题及处理 Parasoft C++Test软件集成测试:操作指南、实例讲解、常见问题及处理 进阶扩展:自动生成静态分析文档、自动…...

azure web app创建分步指南系列之二

为注册表授权托管标识 你创建的托管标识尚未获得从容器注册表中提取数据的授权。在此步骤中,你将启用授权。 返回容器注册表的管理页面: 在左侧导航菜单中,选择“访问控制 (IAM)”。选择“添加角色分配”。此屏幕截图显示了如何为容器注册表启用添加角色分配。在角色列表中…...

题海拾贝:P8598 [蓝桥杯 2013 省 AB] 错误票据

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…...

MySQL 8.0:解析

引言 MySQL 8.0 作为里程碑版本&#xff0c;在功能、性能、安全性等维度进行了全面革新。以下从技术实现、应用场景和实践挑战三个层面&#xff0c;深度解析其核心特性变化&#xff1a; 一、架构级重构&#xff1a;数据字典与原子 DDL 1. 事务性数据字典 技术实现…...

Python量化交易12——Tushare全面获取各种经济金融数据

两年前写过Tushare的简单使用&#xff1a; Python量化交易08——利用Tushare获取日K数据_skshare- 现在更新一下吧&#xff0c;这两年用过不少的金融数据库&#xff0c;akshare&#xff0c;baostock&#xff0c;雅虎的&#xff0c;pd自带的......发现还是Tushare最稳定最好用&…...

封装一个小程序选择器(可多选、单选、搜索)

组件 <template><view class"popup" v-show"show"><view class"bg" tap"cancelMultiple"></view><view class"selectMultiple"><view class"multipleBody"><view class&…...

Dest建筑能耗模拟仿真功能简介

Dest建筑能耗模拟仿真功能简介 全球建筑能耗占终端能源消费的30%以上&#xff0c;掌握建筑能耗模拟是参与绿色建筑认证&#xff08;如LEED、WELL&#xff09;、超低能耗设计、既有建筑节能改造的必备能力。DEST作为国内主流建筑能耗模拟工具&#xff0c;广泛应用于设计院、咨询…...

【Hot 100】121. 买卖股票的最佳时机

目录 引言买卖股票的最佳时机我的解题 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;【Hot 100】121. 买卖股票的最佳时机❣️ 寄语&#xff1a;书到用时方恨少&#xff0c;事非经过不知难&#xff01; 引…...