方式一:导入三个文件,认证码 11111111

https://gitee.com/qcchat/esp-homekit-direct

Sonoff-Homekit

bilibili视频使用的文件

固件和工具下载地址:
链接:https://pan.baidu.com/s/1zppF3IUorvEO7knatS5piQ 提取码:xso7
源码地址:https://github.com/LeeLulin/esp-homekit-direct

网盘文件使用说明

下载网盘上的连接,有三个文件依次烧录即可
rboot.bin 0x0
blank_config.bin 0x1000
switch.bin 0x2000

先擦除后下载即可!

源码说明

在window上使用git乌龟下载一直失败,在使用git bash 命令拉下来的时候成功了,也不知什么原因!

这个库使用的使用 esp-open-rtos 系统,所以前面要先把这个环境搭建好! 这个环境介绍说明的是跟 esp-free-rtos 一样,只是编译模式有所不同,每一个文件工程都独立包含了 esp-open-rtos 工程文件,而 esp-free-rtos 则是把总工程放到一个地方,有点像 SVN 和 GIT 的区别,一个完全copy副本,一个不需要!

在安装好环境之后就能根据 MD 文件说明操作,但是,在编译的时候会报错,一般报错就根据报错地方修改即可!

报错一:wifi_config.c文件中找不到html配置信息

这个故障主要是wifi配置html页面无法生成,故而在编译时也没法找到这些const字段。

在排查以后才发现主要还是 esp-homekit-direct\external_libs\wifi_config\tools\embed.py 文件错误导致的

两处 print 均报错,需要加上括号后才能通过并编译出相应的 html 字段
print ‘Error: no parts found’ 修改为:print (‘Error: no parts found’)
print gen_embedded(f.read()) 修改为:print (gen_embedded(f.read()))

报错二:生成 switch.bin 时设置的内存错误

在输出内存配置中,选项为 xMB,例如这个模块8MB,但设置的时候为8m,会报错且无法输出 bin 文件。
这时候就需要修改 esp-homekit-direct\sdk\esp-open-rtos\parameters.mk 文件。

然后重新编译就能得到 switch.bin 了

感觉这个方式接入 homekit 是最方便的了,另一个种 installer 方式接入会等待 github很久而且还不一定成功,可能是因为墙的原因。
而这种方式就能很快接入 家庭,不过还未试看能否接入 HomeAssistan 了。

(步骤详细)ESP8266控制继电器(支持HOMEKIT)

ESP8266控制继电器(支持HOMEKIT,无需homebridge,可用SIRI控制)
首先感谢:https://github.com/RavenSystem/esp-homekit-devices ——>镜像地址

https://github.com/Gruppio/Sonoff-Homekit ——>镜像地址

主要设备:ESP8266、1路5V继电器、杜邦线若干。

下面开始进入正题:开始给ESP8266刷固件
https://pan.baidu.com/s/1Xp3CvFbdh4McnkBIacfsuQ (固件自取)

本次采用esptool.py来刷鞋固件,所以需要给电脑安装python环境。
安装esptool.py
pip install esptool
切换到python的安装路径不知道在哪的输入

1
where python

cd /python路径 切换到python安装目录,在此目录下放上我们要刷写的固件

好,开始用micro-USB线将ESP8266连接到计算机(如果不识别自行安装CH340驱动)记住端口号,我的是COM3

先清空flash

1
esptool.py --port COM3 erase_flash

刷入固件

1
esptool.py -p COM3 -b 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 rboot.bin 0x1000 blank_config.bin 0x2000 Sonoff_ON.bin

到这里固件已经刷入完成,搜索WIFI看到名为Switch-******的SSID,连接上后进入192.168.4.1进行设置为其连接上一个可联网的WIFI。

这时打开ios的家庭APP,添加配件,选择“我没有代码或无法扫描”输入配对码:11111111

我们可以从串口信息看到正在添加HOMEKIT 客户端

这时已经成功添加到家庭APP,支持SIRI控制

接下来,让我们把继电器连接到ESP8266的D6 (GPIO12)口上。ESP8266接笔记本的USB口可能会供电不足导致不能控制继电器。我在这里就用充电宝做电源了。我们可以试试让siri帮你开关继电器了

方式二:一个文件 fullhaabot.bin

这个方法刷入并设置好WIFI后需要等待很久,看串口日志发现需要下载 github 上的 HAA文件下来,所以十分缓慢,而且 JSON 格式的 GPIO 设置自己还是没弄成功,这个也有相应的库

20 元将普通电灯接入

前言

最开始我是看到 B 站有刷固件接入 HomeKit 的视频,我了解了一下之后觉得有些问题,他们都用的是统一的一个 Sonoff 固件,刷入之后可以直接通过 NodeMCU D6 GPIO12 引脚输出高低电平,但是我甚至没找到这个固件的来源,所有视频都是草草地丢一个下载链接,告诉你下载刷进去就行了…而且这个输出引脚没法修改,后期接线的话会有一些问题。

后来我在 GitHub 上找到一个项目 RavenSystem/esp-homekit-devices,该固件可以刷入采用 8266 芯片的设备,接入 HomeKit 并提供丰富的自定义选项,而我之前在 B 站看到的固件,应该就是基于该项目修改,原本用于 Sonoff 开关的一个固件(查了一下 Sonoff 是深圳一家公司的物联网产品,主打 WiFi 继电器)。那么就可以通过该项目,很轻松地实现我们的目标。

准备

我们需要这些东西:

材料 价格
ESP-01 6.02 元
继电器模块 8 元
220V 转 5V 降压模块 6.25 元
总计 20.45 元

除了这些以外,还需要杜邦线若干,ESP-01 USB 转串口下载器一个。

为什么不用 NodeMCU 呢,因为开发板体积太大了,不必要的引脚和模块浪费空间,而且 ESP-01 有配套的继电器模块,8 个引脚一一对应,可以直接插在上面,由继电器给 ESP-01 供电,并通过 GPIO 0 引脚控制继电器,避免了复杂的接线。

刷机

首先给 ESP-01 刷入固件。

下载这三个文件 haaboot.bin rboot.bin blank_config.bin

6 月 5 日 更新:

今天发现 HAA 更新了他们的安装方式,之前的三个文件变成了一个 fullhaabot.bin。现在只需要下载这一个文件就可以了。

通过下载器让 ESP-01 连接电脑并进入烧录模式(flash-mode)。

根据下载器所使用的 USB 转串口芯片安装对应的驱动程序。完成之后在 设备管理器 - 端口 中应该能看到对应设备,记录下设备名之后所对应的串口号。

鼠标右键点击 属性 - 端口设置,在 位/秒(B) 选项中修改当前的波特率,默认应该为 9600,为了下面脚本方便这里改为 115200

这里我们采用 esptool.py 来刷入固件,电脑需要有 Python 环境。

安装 esptool.py:

1
pip install esptool

Shell

然后抹除 ESP-01 的闪存:

1
esptool.py -p /dev/<your_ESPPort> erase_flash

Shell

这里的 /dev/<your_ESPPort> 对应刚才在设备管理器中看到的端口号 COMx。

最后刷入刚才下载的三个文件:

1
esptool.py -p /dev/<your_ESPPort> --baud 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 rboot.bin 0x1000 blank_config.bin 0x2000 haaboot.bin # 更新之后用下面的方式刷入新文件

Shell

现在只需要刷入这一个文件:

1
esptool.py -p /dev/<your_ESPPort> --baud 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 fullhaaboot.bin

Shell

配置

完成之后,ESP-01 会建立一个 SSID 为 HAA-XXXXXX 的开放 2.4GHz WiFi 热点,连接它,等待几秒钟,就会跳转到 Home Accessory Architect 的配置页面。

这里我们需要写一个 JSON 来配置 ESP-01 的功能,HAA 提供了相当丰富的物联网设备类型供我们选择,这里我们选择相对简单的的开关(Switch)来配置。

将 wiki 中提供的范例 JSON 稍加修改:

1
2
3
4
5
6
7
8
9
10
{
"c": { "l": 1, "b": [{ "g": 2, "t": 5 }] },
"a": [{
"t": 1,
"s": 1,
"0": { "r": [{ "g": 0, "v": 1 }] },
"1": { "r": [{ "g": 0, "v": 0 }] },
"b": [{ "g": 2 }]
}]
}

JSON

这里表示了一个基本类型的开关("t": 1),通过 GPIO 0 控制继电器,因为这个继电器模块是 GPIO 0 低电平时闭合,所以在下面的 "0" 表示开关关闭的选项中 "v": 1 表示高电平,而 "1" 与之相反。LED 指示灯定义为 GPIO 1,按钮定义为 GPIO 2,"s": 1 表示通电后默认为开关打开状态。

详细的配置规则可以参阅原项目的 Wiki

将 JSON 填入配置页面,并在下方连接 WiFi,注意 ESP-01 仅能连接 2.4GHz 的 WiFi。

之后点击保存并等待 7 分钟左右,完成后 LED 会亮起几秒钟。

在设备安装或者更新的时候,可以在 macOS 或 GNU/Linux 设备上通过下面的命令检测日志获取设备状态:

1
nc -kulnw0 45678

Shell

接线

将 220V 的火线与零线接到 220V 转 5V 降压模块上。

降压模块输出 5V 电接入继电器的 VCC 与 GND。将 ESP-01 插在继电器上,因为该继电器自带一个 5V 转 3.3V,所以可以直接给 ESP-01 供电。

将继电器的常开端(NO)与通用端(COM)与灯泡和 220V 连接,当继电器闭合时即形成回路点亮灯泡。

添加 HomeKit 设备

在 iOS 设备中打开「家庭」App,通过下方的设置代码,按照正常步骤添加新配件。大约等待 30 秒即可添加完成。

QR-Code

Normal Code

现在我们就可以在 iOS 设备上通过 HomeKit 控制灯泡了。


相关链接(侵删)

  1. (bilibili视频)仅用20元成本,将esp8266接入HomeKit,用Siri控制你的灯
  2. ESP8266控制继电器(支持HOMEKIT)
  3. 20 元将普通电灯接入 HomeKit

=================我是分割线=================

欢迎到公众号来唠嗑: