DIY门窗感应器,只用ESP-01S和Reed Switch Module,直接接入Homekit。【DIY Homekit设备】【记录】【一】
ESP-01S board |
申明
这不是一个教程、不是教程、不是教程,很重要所以说3次。我只是一个IoT的新手,有一些简单编程的能力,并不是这方面的专家。所以,这篇文章主要是在记录我自己的动手过程,也同时记一下笔记,方便我自己查看。
如果你是这三种人
- 专家:可以继续读下去,顺便嘲笑我,但也请指点一下。
- 有经验的人:一样可以笑我、指点或交流一下。
- 新手:不要学,弄坏自己负责,只提供参考。
计划说明
还没开始前,先说一下这个DIY Homekit设备的缺陷。我原本打算是用电池做为电源,后来才发现这个方案并没有Deep sleep节能功能。 电池供电基本上撑不过一天,只能用其它有线的方式供电。
目前,使用的是 esp-homekit-device(Github) 这个开源项目。这个项目主要是让设备直接接入Homekit,可以直接用iOS上的Home搜索到这个设备。并不需要额外接上一个Homebridge,再接上设备。
虽然,这个不是我最终想要的成果,但过程还不错好玩,后续也会做一些升级去达成原本的计划。
准备材料
需要硬件
- ESP-01/ESP-01S
- ESP-01 USB Programmer with CH340C
- Reed Switch Module
- Breadboard
- Jumper Wires (Female to Female)
需要预先安装
-
安装Python (下载:https://www.python.org/downloads/)
-
安装USB Programmer CH340C的Driver
(下载:http://www.wch.cn/download/CH341SER_ZIP.html)
安装
安装硬件方面非常直觉,只要把ESP-01S对照一样的针脚接上USB Programmer就好了(ESP-01S VVC针脚接上USB Programmer的VVC接口,以此类推)。然后,直接插上电脑的USB接口,并且电脑能正确识别到就可以了。
安装软件方面,开源项目esp-homekit-device教学和esptool教学就已经有很清楚的文档。 下面的内容主要是做一些翻译,或是加入一些细节。
首先,需要安装这个esptool项目的python
package(库/library),因为需要使用这个项目内的功能,去刷新的firmware。
pip install esptool
安装成功后,需要去下载fullhaaboot.bin 。
然后,通过esptool.py把刚下载好的fullhaaboot.bin刷入ESP-01S内。
esptool.py -p /dev/<your_ESPPort> --baud 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 fullhaaboot.bin
/dev/<your_ESPPort>
这个ESPPort需要去检查现在插入的USB接口,在Windows下可以去Device
Manager内查到,Windows下一般会看到是COM3或COM4之类。
USB Programmer Port |
设置
上面的安装完成后,ESP-01S一般需要一段时间就会自己启动,然后进入Soft Access Point模式让其它设备连接,并且设置。等待的时间不会太长,我自己的经验是几分钟就好了。
一般ESP-01S的Wi-Fi的名字会是从“HAA-”开始,连接后会自动跳出一个网页,可以直接做一些设置。这个设置页面主要是设置Wi-Fi和Json Config这两项,Wi-Fi设置算是很直觉,在Json Config方面会比较难明白。
Json Config主要是告诉系统ESP-01S的设置,这个方案的ESP-01S只使用了GPIO0针脚连接Reed Switch Module的DO(Digital Out)信号针脚。ESP-01S通过接收0或1来辨别开还是关,所以在Json Config里面也需要包括这个设定。
我的方案使用的Json Config是:
{ "a":
[{ "t":5, "f0":
[{
"g":0,
"t":0
}],
"f1":
[{
"g":0
}]
}] }
在官方开源项目有非常完整的说明,详情请点:这里。所以,这里只是简单说明我自己在用的Json config。
"a"这部分是告诉系统,ESP-01S连接上了多少个设备,例如:感应器、按钮等。
然后,"t":5 是在告诉系统这是一个Contact Sensor(接触感应器? 我也不确定这个翻译是否确定。)。
"f0"和"f1"就是Digital Input Filter,根据我的了解就是这段会filter信号,确保只有0或1信号会被接受。
"g":0比较简单,就是说明连接了那一个GPIO。
加入Homekit
让ESP-01S继续插在USB Programmer上当供电,然后利用USB Programmer上的Female Pin去连接Reed Switch Module。ESP-01S VVC和Ground pin就连接上Reed Switch Module的VVC和Ground,然后ESP-01S上的GPIO0就接上Reed Switch Module的DO针脚。把USB Programmer插上电脑或Powerbank的USB,ESP-01S就会自动启动。
下载好Home这个app后,按“+”,再按Add Accessory,可以通过scan QR Code或输入Normal Code来加入。
QR Code (From: esp-homekit-device wiki) |
Normal Code (From: esp-homekit-device wiki) |
结语
最后,只要磁铁靠近Reed Switch Module,Home上面就会显示“关”,磁铁离开就会显示“开”。