Skip to content

Latest commit

 

History

History
135 lines (89 loc) · 3.73 KB

README_CN.md

File metadata and controls

135 lines (89 loc) · 3.73 KB

homekit-bridge

English Version | 中文版

介绍

homekit-bridge专门为嵌入式设备设计,可以将非HomeKit的设备快速地接入到HomeKit。它提供了以下功能:

  • 配置你想要连接到HomeKit的设备
  • 编写插件来生成HomeKit桥接配件(Bridged Accessory)

homekit-bridgeHomeKitADK的基础上实现,主要的C代码位于ADK的应用层,只调用平台适配层(PAL)接口或者HomeKit协议(HAP)接口,不直接调用适配平台相关的接口。

HomeKitADK不仅实现了HomeKit协议(HAP),还将平台相关的接口抽象到了平台适配层(PAL),使得应用代码在不同平台上表现一致。

为了更好的扩展性以及降低开发难度,homekit-bridge引入了动态语言Lua,将C模块封装成Lua模块,使用Lua来编写上层应用代码。homekit-bridge还做了以下的优化,使得Lua能够在资源紧凑的设备上运行:

  • 通过luac将文本代码转换成字节码
  • 将多个Lua脚本生成目录树,嵌入到C代码中
  • 使得Lua虚拟机支持直接从ROM中读取代码,而不是拷贝到RAM中读取

支持的设备

米家 - miio

产品名称 型号
小米空调伴侣2代 lumi.acpartner.mcn02
小米智能插座基础版(1个插座) chuangmi.plug.m3
智米直流变频落地扇2S zhimi.fan.za4
小米直流变频塔扇 dmaker.fan.p9

支持的平台

目前针对以下平台做了适配:

  • Linux (Ubuntu/Raspberry Pi OS)
  • ESP-IDF (ESP32/ESP32-S2)

入门

注意

在克隆完代码后需要执行以下命令来初始化子模块代码:

$ git submodule update --init

Linux (Ubuntu)

准备

$ sudo apt install cmake ninja-build clang libavahi-compat-libdnssd-dev libssl-dev python3-pip
$ sudo pip3 install cpplint

编译和安装

$ mkdir build
$ cd build
$ cmake -G Ninja .. && ninja
$ sudo ninja install

运行

默认运行homekit-bridge:

$ homekit-bridge

以下选项可以在运行homekit-bridge的时候指定:

选项 描述
-d, --dir 设置脚本目录
-e, --entry 设置入口脚本的名称
-h, --help 显示帮助并退出

配置

配置文件config.lua默认位于/usr/local/lib/homekit-bridge,可以在运行homekit-bridge之前修改它。如果你指定了脚本目录,homekit-bridge将会到指定脚本目录中寻找config.lua

ESP-IDF

准备

根据ESP-IDF官方文档快速入门准备环境。

目前经过测试的ESP-IDF版本为v4.3.1,通过以下命令切换到该版本:

$ git fetch --tag
$ git checkout v4.3.1
$ git submodule update

ESP-IDF当前使用的MbedTLS版本为2.16.x,然而HomeKit ADK最低需要2.18版本的MbedTLS。目前维护了一个分支mbedtls-2.16.6-adk,在2.16之上包含了2.18的补丁,可以根据以下步骤切换到该分支:

$ cd $IDF_PATH/components/mbedtls/mbedtls
$ git pull
$ git checkout -b mbedtls-2.16.6-adk origin/mbedtls-2.16.6-adk

编译、烧录和运行

你可以在ESP32或者ESP32-S2上使用homekit-bridge,使用以下命令来编译、烧录和运行:

$ cd /path/to/homekit-bridge/platform/esp
$ export ESPPORT=/dev/ttyUSB0  # 设置开发板的串口
$ idf.py set-target <esp32/esp32s2>
$ idf.py flash
$ idf.py monitor

连接Wi-Fi

使用 join 命令来连接Wi-Fi:

esp32 > join "<ssid>" "<password>"

配置

TODO

许可证

MIT © 2021 KNpTrue and homekit-bridge contributors.