连接HomeKit附件和控制器的Python代码
homekit的Python项目详细描述
homeKit python
使用此代码可以实现HomeKit附件或模拟 家庭套件控制器。
此存储库中显示的代码是基于2017-06-07的R1版创建的。
贡献者
(贡献者没有按特定顺序列出!)
安装
基于IP的附件的安装
只需使用pip3安装软件包即可:
pip3 install --user homekit[IP]
此安装仅适用于基于IP的附件,无需任何操作系统级安装,并且 也适用于Linux以外的操作系统(Mac OS X、Windows等)。
安装基于蓝牙LE的附件
此变体需要操作系统上的一些软件包才能通过dbus访问蓝牙le。这些可以 通过:
安装在基于Debian的操作系统上apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
之后,再次使用pip3就足够了:
pip3 install --user homekit[BLE]
两种附件的安装
在这种情况下,请为您的操作系统安装软件包,然后使用pip3:
pip3 install --user homekit[IP,BLE]
家庭套件附件
此软件包有助于创建自定义HomeKit附件。
演示在 现在,让我们生成一个简单的灯泡附件作为演示: 如果一切正常,您应该可以将此附件添加到iOS设备上的家庭中。 以下工具有助于访问HomeKit附件。 此工具初始化HomeKit控制器的存储文件。 用法: 选项 此工具将列出所有可用的本地网络中的Le HomeKit IP附件。 用法: 选项 选项 选项 输出: 提示: 此工具将列出蓝牙LE设备范围内所有可用的家庭套件附件。 用法: 选项 选项 选项 选项 输出: 此工具将使用HomeKit附件的识别例程。它有三种操作模式。 用法: 选项 选项 用法: 选项 选项 选项 用法: 选项 选项 选项 选项 此工具将与新的IP附件配对。 用法: 选项 选项 选项 选项 选项 需要带有配对数据的文件才能向附件发送任何其他命令。 此工具将与新的蓝牙LE附件配对。 用法: 选项 选项 选项 选项 选项 选项 需要带有配对数据的文件才能向附件发送任何其他命令。 此工具将执行查询以列出附件的所有配对。这个
执行查询的控制器必须注册为 用法: 选项 选项 选项 选项 这将打印与附件配对的每个控制器的信息: 该信息包含配对ID、设备的公钥和控制器的权限。 此工具将为 用法: 选项 选项 选项 这将打印要输入 此工具用于告诉HomeKit附件接受
附加控制器。 用法: 选项 选项 选项 选项 选项 选项 这将打印要输入 此工具完成了家庭套件附件配对的添加。 用法: 选项 选项 选项 选项 选项 选项 选项 此工具将从附件中删除配对。 用法: 选项 选项 选项 选项 选项 此工具将读取附件属性数据库。 用法: 选项 选项 选项 选项 选项 使用 此工具将从一个或多个特征中读取值。 用法: 选项 选项 选项 选项 选项 选项 选项 选项 选项 例如,此命令读取酷客p1eu插头的2个特征: 结果将是一个json,其中包含每个请求特征的数据: 此工具将向一个或多个特征写入值。 用法: 选项 选项 选项 选项 选项 例如,此命令将转动Kookeek p1eu插头: 如果操作成功,则不会给出输出或显示错误消息。 <强>!!蓝牙LE附件尚未实现!! 此工具将向附件注册并收听从附件发送回来的事件。 用法< /P> 选项 选项 选项 选项 选项 例如,您可以收听Characteristics 1.8(on characteristics)、1.22(1 realtime-energy)和
Koogeek p1eu插头的1.23(2个当前小时数据),带: 这将导致 作者使用以下设备测试了代码: 用户已尝试(并且已成功,未经作者检查)使用以下设备:~/.homekit/demoserver.json中使用此json
{"name":"DemoAccessory","host_ip":"$YOUR IP","host_port":8080,"accessory_pairing_id":"12:00:00:00:00:00","accessory_pin":"031-45-154","peers":{},"unsuccessful_tries":0,"c#":0,"category":"Lightbulb"}
#!/usr/bin/env python3importos.pathfromhomekitimportHomeKitServerfromhomekit.modelimportAccessory,LightBulbServiceif__name__=='__main__':try:httpd=HomeKitServer(os.path.expanduser('~/.homekit/demoserver.json'))accessory=Accessory('Licht')lightService=LightBulbService()accessory.services.append(lightService)httpd.accessories.add_accessory(accessory)httpd.publish_device()print('published device and start serving')httpd.serve_forever()exceptKeyboardInterrupt:print('unpublish device')httpd.unpublish_device()
家庭套件控制器
初始控制器存储
python3 -m homekit.init_controller_storage -f ${PAIRINGDATAFILE}
-f
指定包含控制器数据的文件名。发现
python3 -m homekit.discover [-t ${TIMEOUT}][-u][--log ${LOGLEVEL}]
-t
指定查询的超时时间。这是可选的,默认为10秒。-u
激活过滤器,仅显示未配对的设备。这是可选的,默认情况下不起作用。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。Name: smarthomebridge3._hap._tcp.local.
Url: http://192.168.178.21:51827
Configuration number (c#): 2
Feature Flags (ff): Paired (Flag: 0)
Device ID (id): 12:34:56:78:90:05
Model Name (md): Bridge
Protocol Version (pv): 1.0
State Number (s#): 1
Status Flags (sf): 0
Category Identifier (ci): Other (Id: 1)
探索
pip3 install --user homekit[IP]
0
-t
指定查询的超时时间。这是可选的,默认为10秒。-u
激活过滤器,仅显示未配对的设备。这是可选的,默认情况下不起作用。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。pip3 install --user homekit[IP]
1
确定
识别未配对的家庭套件IP附件
pip3 install --user homekit[IP]
2
-d
指定要标识的附件的设备ID。可通过发现获得--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。识别未配对的家庭套件ble附件
pip3 install --user homekit[IP]
3
-m
指定要标识的附件的蓝牙le-mac id。可通过发现功能获得--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。识别配对的家庭套件附件
pip3 install --user homekit[IP]
4
-f
指定包含配对数据的文件。-a
指定设备的别名。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,仅
如果配对设备使用蓝牙LE,则使用此选项。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。配对
pip3 install --user homekit[IP]
5
-d
指定要配对的附件的设备ID。可通过"发现"获得。-p
指定HomeKit设置代码。可从附件获得。这必须看起来像xxx-xx-xxx
(x是一个数字,破折号很重要)。-f
指定包含配对数据的文件。-a
指定设备的别名。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。配对
pip3 install --user homekit[IP]
6
-m
指定要配对的附件的设备ID。可通过"发现"获得。-p
规范如果是HomeKit设置代码。可从附件获得。-f
指定包含配对数据的文件。-a
指定设备的别名。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,仅
如果配对设备使用蓝牙LE,则使用此选项。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。列表配对
admin
。如果这是
不是这样,没有列出配对。pip3 install --user homekit[IP]
7
-f
指定包含配对数据的文件。-a
指定设备的别名。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,仅
如果配对设备使用蓝牙LE,则使用此选项。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。pip3 install --user homekit[IP]
8
准备"添加远程"配对
add_additional_pairing
命令准备所需的数据。pip3 install --user homekit[IP]
9
-f
指定包含配对数据的文件。-a
指定要添加的设备的别名。--log
指定命令的日志级别。这是可选的。
使用"调试"获得更多输出。家庭工具包的信息。添加附加配对
(通过第二个频道):apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
0
添加附加配对
apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
1
-f
指定包含配对数据的文件。-a
指定要添加的设备的别名。-i
指定附加控制器的配对ID。-k
指定附加控制器的公钥。-p
指定附加控制器的访问权限,对于配对,这可以是用户
或管理员
。
拥有更高的特权。--log
指定命令的日志级别。这是可选的。
使用"调试"获得更多输出。HomeKit的信息。完成添加远程配对
(通过第二个频道):apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
2
完成添加远程配对。py
apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
3
-f
指定包含配对数据的文件。-a
指定要添加的设备的别名。-c
指定附件的连接类型(值为
IP和BLE)。-i
指定附件的设备ID。-k
指定附件的公钥。-m
指定蓝牙低能耗附件的MAC地址
配件。IP附件不需要此功能。--log
指定命令的日志级别。这是可选的。
使用"调试"获得更多输出。删除配对
apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
4
-f
指定包含配对数据的文件。-a
指定设备的别名。-i
指定要删除的控制器配对ID。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,仅
如果配对设备使用蓝牙LE,则使用此选项。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。获取附件
apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
5
-f
指定包含配对数据的文件。-a
指定设备的别名。-o
指定输出的格式:json
将结果显示为打印精美的json压缩
在一个屏幕上重新格式化输出以获得更多信息--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,仅
如果配对设备使用蓝牙LE,则使用此选项。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。compact
输出,结果如下所示:apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
6
获取特征
apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
7
-f
指定包含配对数据的文件。-a
指定设备的别名。-c
指定要读取的特征。格式为<;aid>;<;cid>;
。此选项可以重复到
使用一个调用检索多个特征(例如-c 1.9-c1.8
)。-m
指定是否也应读取元数据。-p
指定是否也应读取权限。-t
指定是否也应读取类型信息。-e
指定是否也应读取事件数据。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,仅
如果配对设备使用蓝牙LE,则使用此选项。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
8
apt install -y libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0 libdbus-1-dev
9
放置特征
pip3 install --user homekit[BLE]
0
-f
指定包含配对数据的文件。-a
指定设备的别名。-c
指定要更改的特性。格式为<;aid>;<;cid>;<;value>;
。这个选项可以是
通过一次呼叫重复更改多个特征(例如,-c 1.9 on-c1.8 22.3
)。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,仅
如果配对设备使用蓝牙LE,则使用此选项。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。pip3 install --user homekit[BLE]
1
pip3 install --user homekit[BLE]
2
-f
指定包含配对数据的文件。-a
指定设备的别名。-c
指定要更改的特性。格式为<;aid>;<;cid>;
。这个
可重复此选项,一次通话可收听多个特征。--adapter
指定要使用的蓝牙设备。这是可选的,hci0
是默认值,并且
仅在配对设备使用蓝牙LE时使用。--log
指定命令的日志级别。这是可选的。使用"调试"获得更多输出。pip3 install --user homekit[BLE]
3
pip3 install --user homekit[BLE]
4
家庭套件附件
报告工作的设备
推荐PyPI第三方库