asyncio HomeKit客户端
项目描述
aiohomekit
此库实现了使用asyncio控制Homekit配件的HomeKit协议。
它主要用于与Home Assistant一起使用。我们针对与他们相同的python版本,并尝试遵循他们的代码标准。
目前我们不提供任何API保证。API稳定性和文档将在我们对Home Assistant内部工作情况满意后发生。
贡献
请注意,一些物流设备对HAP规范的解释较为宽松。一般来说,我们更喜欢匹配真实HAP控制器的行为,即使它们的行为没有严格规定。以下是我们不得不解决的某些问题的类型
- 尽管JSON的精确格式在规范中未指定,但野外有一些设备无法在解析JSON时处理空格。例如,
{"foo": "bar"}
与{"foo":"bar"}
。这意味着我们从不使用“漂亮”的JSON编码。 - 尽管规范中明确将布尔值定义为
0
、1
、true
或false
,但一些设备只支持这四种中的三种。这意味着布尔值必须编码为0
或1
。 - 一些设备表明它们对缺少标题、标题顺序错误或存在额外标题非常敏感。因此,我们确保只有iOS发送的标题存在,并且大小写和顺序相同。
- 一些设备对HTTP消息被分割成单独的TCP数据包非常敏感。因此,我们注意只将完整消息写入网络堆栈。
等等。一般来说,我们需要对发送的内容严格,对接收的内容宽松。
设备兼容性
aiohomekit
主要通过Home Assistant与飞利浦Hue桥和Eve Extend桥进行测试。它在与许多其他设备的一些程度上已知可以工作,但这些目前尚未在任何地方明确记录。
您可以在home-assistant的问题列表中查看您的设备遇到的问题。
常见问题解答
我该如何使用它?
它作为aiohomekit
发布在pypi上,但仍在早期开发阶段 - 请谨慎行事。
API的主要消费者是Home Assistant中的homekit_controller,因此这是了解API的最佳地方。
这个支持BLE配件吗?
不。我们最终希望通过aioble来实现,它提供了一个在Linux、macOS和Windows上工作的异步蓝牙抽象。
我可以用这个来制作HomeKit配件吗?
不,这只是一个客户端部分。您应该使用其他实现之一
- homekit_python(这在aiohomekit开发期间被大量使用)
- HAP-python
为什么Home Assistant不使用库X而不是?
在编写本文时,这是唯一的Python 3.7/3.8异步HAP客户端,具有事件支持。
为什么aiohomekit不使用库X而不是?
尽可能,aiohomekit使用易于通过pip安装的库,作为轮子提供(包括通过piwheels在Raspberry Pi上),跨平台(包括Windows),并且已经被Home Assistant使用。它们不应该引入对不常见的系统库的硬依赖。这里的意图是避免在Home Assistant构建过程中的任何困难。
人们经常对手动编写的HTTP代码感到惊讶,并建议使用现有的HTTP库,如aiohttp
。高级HTTP库几乎无法启动,因为
- 在不进行猴子补丁的情况下添加HAP会话安全比较困难。
- 它们不期望没有请求就有响应(即事件)。
- 如上所述,一些设备非常敏感。我们不关心您的更改是否符合每个规范,只要它仍然使真实世界的设备崩溃。我们没有能力要求这些设备被修复。因此,我们努力在写入路径上实现字节数据的精确匹配。任何库都需要给我们这种灵活性。
- 响应的部分实际上不是HTTP,尽管它们看起来像。
我们也不愿意对正在大量设备上运行的东西进行如此大的改动。有很大的可能引入回归问题。
当然,一个经过测试的工作原型(使用流行的、维护良好的库)将会很有趣,这些测试包括像Tado互联网桥(包括事件)这样的东西。
谢谢
没有homekit_python,这个库就不可能实现,它是HAP客户端和服务器部分的同步实现。
项目详情
下载文件
下载您平台对应的文件。如果您不确定该选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
aiohomekit-3.2.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a4826b9d7bacb79cddd2a1f139ed9061f28fe4953e548c034ae21dc978f8d80a |
|
MD5 | 1718e0fcddc747f6d68c4f48f78c2a1c |
|
BLAKE2b-256 | c384e7427bbe1edb9d15f790f8744141b1da039af6291337c54db7960833f03d |
aiohomekit-3.2.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f269a96e1ffab81f8adc47686565b4ed2397395a715ab8e037abb003f11644bd |
|
MD5 | ff4234562b7464e1b5a38f47fe3225f9 |
|
BLAKE2b-256 | e6f43dd73cc2e4c1dd30601e48c4fb79cd654615149d98c4738bf11b5cdc0ca5 |