ESP01S接入苹果homekit
方式一:导入三个文件,认证码 11111111
https://gitee.com/qcchat/esp-homekit-direct
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 | { |
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 秒即可添加完成。
现在我们就可以在 iOS 设备上通过 HomeKit 控制灯泡了。
相关链接(侵删)
欢迎到公众号来唠嗑: