前言
ESP-01/01S应该是目前最便宜的ESP8266系列模块了。在未涨价之前,单个模块价格在3-4块之间,不知为啥现在都涨价了= =、现在价格在6-8块之间,安信可官方店里卖10块,加上一个继电器模块,总价在10-15块之间。
(ESP01/01S模块)
(ESP01/01S + 继电器 模块)
也就是说:通过研读本篇文章,你只需花3-4瓶快乐水的钱,即可让你桌面上的台灯接入HomeAssistant,实现APP or Siri 智能控制。如果换成是现成的设备呢?
(HomeKit认证的插座 288块,够我买半年快乐水了,打扰了...)
(小米米家插座,49块)
这么一看,小米是真的很良心啊!确实,价格屠夫嘛,可是米家设备闭源,不支持开放协议,虽然也可以通过米家Aqara二代网关接入,但是,二代网关多少钱?比我半年快乐水还多23333...
好了进入正题,本篇文章讲的是如何使用ESP01/01S通过刷ESPHome固件接入HomeAssistant 的过程,可能会比较长,但是比较简单,跟着教程基本能100%实现。本篇文章会分两个部分,第一部分为ESPHome固件的编译与烧录;第二部分为ESPHome设备添加到HomeAssistant实现智能控制。
第一部分
第一步:准备工作
准备材料、工具、环境:
- 准备材料:ESP01/01S(注意:这是两个不同的模块,01和01S都可以),继电器模块。可以直接买上面一套的那种,10.2 元的,还需要有一个烧录工具
- 工具:小螺丝刀,烧录工具,杜邦线等
- 环境:HomeAssistant ,ESPHome 环境,参考前两篇连载文章;
(需使用到的模块)
最右边的是一个烧录工具,它与上面我提供的链接里的不一样,但是功能是一样的。提供链接里的烧录器不需要上电GPIO-0
拉高,但我图中的这种是需要拉高,才能进去烧录模式。
第二步:添加ESPHome硬件
在局域网内,打开ESPHome管理界面,浏览器输入群晖IP:6052
,打开主界面。点击右上角加号
,开始添加设备的操作
1、在第一栏输入设备名称,可以自定义,只能由小写字母,不能大写字母开头,可以使用下划线、拼音,不遵循驼峰命名法则,写好之后点击蓝色按钮CONITNUE
2、设备类型选择:Generic ESP8266
即默认的就可以。点击CONITNUE
3、输入Wifi信息,注意:ESP8266 只支持2.4G wifi,不支持5G wifi
,请不要搞错了。OTA & HA 连接密码,我这里填的是1
,这里需要记住,后面要用到。
4、输入完成之后,最后一步点击SUBMIT
即可完成对设备的初步设定。
第三步:编写配置文件代码
这是关键的一步,在这里你需要通过编写一些配置代码,实现对这个设备的控制,一些简单的控制逻辑、传感器算法也是在这里配置的。不会很难,很简单的 = =、
回到ESPHome配置界面,找到刚刚新建出来的switch
硬件,点击②EDIT
进入编辑,代码如下:
esphome:
name: switch ##这里的名称一定要与你建立这个模块时的名称相同;
platform: ESP8266 ##这里不能变;
board: esp01_1m ##这里不能变;
esp8266_restore_from_flash: yes ## 是否断电记忆继电器状态;
wifi:
ssid: "test-wifi" ## wifi账号;
password: "12345678" ## wifi密码;
manual_ip:
static_ip: 192.168.123.159 ##固定此设备IP地址为192.168.123.156;
gateway: 192.168.123.1 ##路由器、网关地址;
subnet: 255.255.255.0 ##子网掩码;
# Enable logging
logger: ##输出Log;
# Enable Home Assistant API
api:
password: "1" ## api密码,用于链接ha验证;
ota:
password: "1" ## ota密码,用于后续在线升级;
web_server: ## web控制,添加了这2行,就可以在网页端打开设备ip;
port: 80
switch: ##设备类型;
- platform: gpio ##平台;
name: "test switch relay" ##自定义名称,最好起关联的名称;
pin: GPIO0 ##ESP01/01S 是GPIO0脚;
id: relay ##ID 为继电器开关;
inverted: yes ## inverted 参数,表示低电平有效,即继电器是低电平触发;
第四步:校验-编译-下载
.yaml
配置文件对空格、换行敏感,请特别注意!编写好了之后,点击右下角SAVE
,然后点击④VALIDATE
检查一下配置文件有没有错误,如下图,出现右上角标志,表示配置文件没有错误,能通过校验。
通过校验之后,点击CLOSE
关闭校验窗口,回到主界面,点击switch
右上角三个点,弹出来选择Compile
开始编译固件,大概需要3-5分钟即可完成编译。
(开始编译)
(编译成功)
然后点击DOWNLOAD BINARY
将固件下载到桌面。
2019.9.4,接着更...
上面编译完成的固件下载保存到桌面之后之后,就需要通过下载工具烧录到ESP01/01S中了。
第五步:烧录固件
烧录软件点击下面链接获取
复制地址到浏览器打开:http://www.codess-yun.top:6860/index.php?share/file&user=1&sid=mZRfKghx
提取密码:EkEe9
或者Github下载:下载工具
首先,把ESP01/01S接上烧录工具,注意方向,否则直接烧报废,还有GPIO0需要拉低才能进入擦除Flash模式
,也就是:拉低GPIO0再插入电脑USB
(烧录成功)
第六步:接入HomeAssistant
让ESP插上继电器模块接入5v电源,注意:ESP01/01S模块的CH_PD引脚需要拉高至VCC才能正常工作!
,如下图:
(这里是为了演示引脚接法,实际使用中请不要直接使用焊锡飞线)
稍等一会儿在路由器管理界面就能看到接入的ESP设备,地址就是上面配置文件中你设置的地址,在这里就能测试继电器模块是否能正常工作,能显示这个界面,肯定是能工作的。
(WEB管理界面,也可以在这里进行固件的升级)
然后打开 HomeAssistant管理界面,配置-Server Control ,重启一下服务,稍等一会儿,再刷新一下就能看到一个新设备了。
按照步骤添加就行了
下面的是你设置的连接HA密码,我设的是1
;
然后,在主界面,点击右上角三个点,“未使用的实体” 就能发现你刚添加的继电器了,然后“配置UI” — “原始UI编辑器” 加上下面的卡片代码:
- entities:
- switch.test_switch_relay
show_header_toggle: false
theme: default
title: 测试房间
type: entities
(注意:这里只是一张自定义卡片,请严格遵循缩进)
卡片示意图:
打开HomeAssistant APP 和 Apple家庭应用:
自动添加,完美~
此时呼唤一句:嘿~ Siri,打开“测试开关”试试?
到了这里,台灯的智能改造已经完成95%了,至于后面怎么接入、改造台灯部分,那就自己发挥啦,强电一定要注意安全哦。
这篇教程终于写完了,难倒是不难,可是写教程真的非常耗费时间啊啊啊....
下一篇:ESP01/01S + WS2812,RGB灯带接入HomeAssistant,打造一个超炫的氛围灯~
版权属于:编码书生
本文链接:https://codess.cc/archives/277.html
所有原创文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
除特别注明,您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的。
81 条评论
esp8266_restore_from_flash: yes ## 是否断电记忆继电器状态;
我的这个语句报错啥问题,其他功能都正常
谢谢博主,如果是两路的继电器呢,需要加什么代码,麻烦你了,
把 switch: 后面的代码再复制一下,粘贴在后面,注意name和gpio要与前面的不一样,格式要对齐;gpio的选取要使用空闲未被使用的喔~
感谢大佬提供教程
用esphome刷完固件以后就可以OTA升级固件,空出来了RX,TX接口,接口一下子扩展到了4个。其中RX对应GPIO3,TX对应GPIO1。
完全可以再加一堆传感器~
怎么通过实体开关来控制呢。能不能加个433模块呢
学习
谢谢博主分享
卡在第四步compile switch.yaml提示未连接到互联网,无法下载依赖库,请教一下这个怎么解决呢?
ESPHome Dashboard we need Internet connection to install all dependencies
多谢指教
1、检查ESPHome网络环境,是否能联网;2、编译固件时,部分库需要到github拉取,而限于国内网络环境,连github可能会无响应,这个自己想办法哟;3、如果以上两条都无法完成,可以QQ群里私聊我,免费帮你编译一个固件
是的!输入完IP地址和端口后 提示,找不到设备。但我在网页端 可以操作继电器吸、合,也可以OTA升级
没遇到你这种情况,,,我也不知是啥原因
谢谢博主分享,网页端可以访问和控制。目前我卡在第六步里 HomeAssistant无法添加我的接点设备 提示:无法连接到 ESP。请确认您的 YAML 文件中包含 'api:' 行。ESPhome 2021.9.3 Home Assistant 2021.9.7
解决了嘛。我也遇到同样的问题了
你的ESPHome 配置代码是按照本博客代码的吗?如果是的话,API 密码是:1
是的!输入完IP地址和端口后 提示,找不到设备。但我在网页端 可以操作继电器吸、合,也可以OTA升级
你好,现在版本在 配置-集成-添加集成-搜索“ESPHome”-输入设备IP,端口默认,确定 试试看
Home Assistant 可以自动发现该设备,点击配置后 就提示 无法连接到 ESP。请确认您的 YAML 文件中包含 'api:' 行。我的IP是192.168.31.172 端口6053
是的!输入完IP地址和端口后 提示,找不到设备。但我在网页端 可以操作继电器吸、合,也可以OTA升级
inverted: false
4.0版本的继电器改成这个
感谢提醒,不同版本的继电器硬件,触发条件不同
谢谢博主分享,那个 烧录软件的下载地址失效了,能不能发一份,谢谢。
工具没失效,GitHub可能因不同地区网络原因而进不去;
谢谢博主分享~我正在搞这个模块
谢谢博主分享
[...]本文参考春泥酱:《智能家居篇-3:ESP-01/01S 接入HomeAssistant,实现Siri控制》[...]
谢博主分享~我正在搞这个模块
很棒,中文的案例真少,谢谢分享!
我的esp8266继电器, 会自动重启下什么原因。
从网页里面显示,长时间没有客户端连接,强制重启,之类的。
yaml配置文件是参照你的写的。
供电电压不足,CH_PD引脚未上拉,模块质量问题,都有可能导致
Looking for ESPAsyncWebServer-esphome library in registry 编译到时候卡在这里 是没有梯子的原因吗
我使用的nodemcu,刷完固件之后可以正常使用,但是重启就不行了,日志也不打,博主你知道是什么原因吗?也需要短接 ?
博主,如果是加几个esp-01继电器这样的模块。配置文件该怎么写?
多个esp-01也是一样,一个esp-01的 IO可以接4个继电器(如果用IO扩展芯片可以接更多),并对应一个配置文件,不同配置文件IP各不相同,不能将多个esp-01配置全部写到一个配置文件里
支持!
正是要学的东西,感谢楼主分享
esp8266都可以吗
esp8266 其他通用吗
通用,ESPHome 设置页面选择对应的模块就行
Thank you!!
学习
谢谢博主辛苦出教程。
谢谢分享,好好学习学习。
谢谢博主分享~我正在搞这个模块
学习一下 感谢博主分享
回复一下,看看评论
学习中,多谢
学习使我进步
谢谢博主分享~我正在学习搞这个模块
学习学习
我想看看代码
楼主很赞!
谢谢了。
11111
多谢博主
学习一下怎么接入
嘤嘤嘤
博主你好,我刷好了 home assistant里面也弄好了 ,怎么把他弄到苹果的家庭app里,(我原来有其他的接入ha的设备,已经添加到苹果app了,现在又增加了这个设备,该怎么弄到app里啊,)
如果原来就有的话,应该可以自动发现的,不需额外添加
刚刚选中8258....等着写入了
8266和8285有区别吗 这个能不能往8285里烧录
有区别,不能乱烧,设备类型选择那里不能选择:Generic ESP8266,得选择其他
我说怎么看不到代码,博主能搞个易微联的单火模块吗,搞了几天搞不定啊
没用的,即使刷了也不能使用,易微联服务器会验证芯片ID,把官方固件刷到普通8266上无法通过服务器ID校验,建议放弃
(๑•̀ㅁ•́ฅ)感谢分享
谢谢博主分享~我正在搞这个模块
上面那个ESPHome管理界面,我看到有个upload,可不可以直接在这个界面点击这个upload直接把固件上传到esp01上?
可以,但是仅限于设备已经连接过了的情况,第一次烧录还是需要工具的,后面更改了程序后就可以直接通过OTA 方式升级
请问一下我加入这句
web_server:
port: 80
就出问题,没这句就可以
看看是不是空格没注意,web_server: 后有空格再回车,另起一行后两个空格,port: 空格,再80
还是出错
collect2: error: ld returned 1 exit status
*** [.pioenvs/switch/firmware.elf] Error 1
直接复制粘贴我上面写的代码也会出错么?
是的,直接复制还是出错
不会吧 = =、这就是我的配置代码呢,我把它传到云盘,你自己下载一下看看,共享地址: http://www.codess-yun.top:6860/index.php?share/file&user=1&sid=Zk3NHed2 提取密码:slTeo
感谢大佬 的回复,感动,我在去试试
正好在做这方面的
谢谢博主分享~我正在搞这个模块
正在学习,多谢博主
谢谢博主分享~我正在搞这个模块