ESP32CAM通过ESPHome接入HomeAssistant(含无线刷固件等)
参考了不少教程,有些教程说的不够明白,而且很多教程都设置了vip (╯‵□′)╯︵┻━┻,还是自己整理一份好了
我的上一篇关于HomeAssistant安装教程可以看这里
ESP32CAM用的是安信可的,也就是和这篇文章的相同
1.安装ESPHome
- 很多教程没说清楚HomeAssistant和ESPHome的关系,大部分教程的HA都是Supervised版本的,也就是直接安装在物理机上的,如果不是Supervised版本,对于刚玩ESPHome的会一脸懵,怎么找半天没有【加载项】呢?
- ESPHome是一个单独的服务,需要单独运行的,而Supervised版本的HA可以在HA中直接安装、运行ESPHome,而对于其他的版本的如容器版本,就需要单独跑一个ESPHome了
- 为了图方便,我将HA装在了docker中,就意味着阉割了一部分功能,包括在【加载项】中安装ESPHome,如果你的HA是Supervised版本那直接搜索安装即可,我这里就以安装在docker为例
- HA各版本区别可以看这个图
docker ESPHome安装命令:
docker pull esphome/esphome
docker run -itd -v /xxxx/esphome/config:/config -v /etc/localtime:/etc/localtime:ro -e USERNAME=设置帐号 -e PASSWORD=设置密码 -p 6052:6052 --restart=always --name esphome esphome/esphome
-v /xxxx/esphome/config:/config
根据自己实际情况改路径
-e USERNAME=设置帐号 -e PASSWORD=设置密码
设置ESPHome的登录账户
2.ESP32CAM配置文件
ESPHome安装完毕后,输入帐号密码进入首页,点【New device】新增设备,第一次登录会让你输入你的wifi用户名和密码,后面固件的配置文件会自动带入
点CONTINUE,然后输入设备名字,根据自己喜好去写即可
选择设备,选ESP32,下面的Use recommended settings取消勾选的话,可以选择详细设备,其实这里勾选什么都无所谓,反正配置文件我们会去修改它
选择后点SKIP,不要INSTALL,还需要修改配置
这是我的配置,如果是用安信可的ESP32CAM模块,基本上不用改
详细配置如下
esphome:name: esp32camfriendly_name: esp32camesp32:board: esp32camframework:type: arduino# Enable logging
logger:# Enable Home Assistant API
api:encryption:key: "自动生成的key"ota:- platform: esphomepassword: "自动生成的password"wifi:ssid: !secret wifi_ssidpassword: !secret wifi_password# Enable fallback hotspot (captive portal) in case wifi connection failsap:ssid: "如果wifi链接失败的热点"password: "热点密码"captive_portal:esp32_camera:external_clock:pin: GPIO0frequency: 20MHzi2c_pins:sda: GPIO26scl: GPIO27data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]vsync_pin: GPIO25href_pin: GPIO23pixel_clock_pin: GPIO22power_down_pin: GPIO32name: Camera01 #连接HomeAssistant后显示的名称,可以更改#####FrameSettings帧设置#max_framerate:10#最大帧速率,最大60,默认10fps#idle_framerate:0.1#无请求时帧速率,默认0.1fps#####Imagesettings图片设置#resolution:640x480#分辨率默认640*480#jpeg_quality:10#图片质量默认10,10最好63最差vertical_flip: false #是否垂直翻转图像,默认值为truehorizontal_mirror: false #是否水平镜像图像,默认值为true#contrast:0#对比度,-2到2,默认为0brightness: 1 #亮度默认为0,-2到2#saturation:0#饱和度默认为0,-2到2#special_effect:none#图片效果默认为none#####ExposureSettings曝光设置#aec_mode:auto#曝光模块的模式,默认auto#aec2:false#是否启用自动曝光控制,默认false#ae_level:0#自动曝光级别,默认为0,-2到2#aec_value:300#曝光值,0到1200,默认300####SensorGainSettings传感器增益设置:#agc_mode:auto#增益控制模块的模式,默认值auto#agc_value:0:#应用于图片的增益值,默认0,0到30#agc_gain_ceiling:2x#似乎充当“ISO”设置,默认值2x,相机灵敏度低,画面干净无噪点,最大128x####WhiteBalanceSetting白平衡设置:#wb_mode:auto#白平衡模式,默认值为auto####Automations自动化:#on_stream_start#在流启动时执行的自动化。#on_stream_stop#在流停止时执行的自动化。####TestSetting测试设置#test_pattern:false#出于测试目的,可以用测试颜色模式替换从传感器获取的图片,默认false
这里的配置主要是根据这篇文章里的,关于摄像头的配置很全了,可以根据需要进行修改
和ESPHome自动生成的配置相比,主要就是增加esp32_camera
配置,其他的根据自己实际情况改即可
3.烧写固件
选择Install
ESPHome提供了几种固件烧录方式(从上到下)
- 无线刷固件,需要你的ESP32CAM模块已接入了和你的ESPHome同一个网络,并有IP了才能够使用,第一次通常不会用这个方式(ESP32CAM模块都还没能连上wifi呢=。=)
- 将模块连接到现在在用的电脑上刷固件,即连接到客户端刷固件
- 将模块连接到跑ESPHome的电脑上刷固件,即连接到服务端刷固件。这个和上面的区别在于:假设你的ESPHome跑在群晖或者树莓派上,如果你想把ESP32CAM模块连接到群晖或者树莓派上刷固件,那么就选择这一项;如果你想把ESP32CAM模块连接到自己的电脑,然后浏览器访问ESPHome来刷固件,就选择上面那项(第二项)
- 下载固件自己手动通过刷固件工具去刷
这里我仅演示第一种和第二种方式,因为第二种和第三种类似,所以不赘述了,第四种网上教程很多,也可以参考这篇文章,挺全的了,也不赘述
Plug into this computer方式
第一次刷固件,建议采用这个方式,把ESP32CAM模块连接到自己的电脑上就可以了,挺方便的,因为我的ESPHome是跑在群晖里,群晖在另一个房间里,懒得跑来跑去,而且相比手动刷固件还省了下载工具啥的,所以这个方式最方便了
选择这个方式后,先要等待圈圈下载完成,Download project变蓝色后,点击下载bin文件保存
建议先点Manual download,让ESPHome把编译的相关工具下载好进行编译,国内网络最少也要四五十分钟,否则这里的圈圈会转很久很久…
下载完成后,点击第二个Open ESPHome Web,会跳转到另一个页面
点CONNECT,左上角会出现你本机的设备,选择ESP32CAM模块的串口,我这里是COM5,根据实际情况选,如果不知道可以打开设备管理器查看
连接上了会出现这个页面
点击INSTALL,然后选择刚刚下载的bin文件,点INSTALL等待把固件刷进去就可以了
刷好后,重新上电,可以进行下一步了
Wirelessly方式
这里是提供了无线刷固件的方式,一般第一次刷固件可以用上面的方式,后面再刷固件就可以用这个方式了,把ESP32CAM模块通电联网就可以刷了,很方便
首先需要修改配置文件,很简单,就是再wifi
这一项增加一行use_address: 192.168.xx.xx
,这里的ip要去路由器查ESP32CAM模块的ip填进来
...上面省略...
wifi:ssid: !secret wifi_ssidpassword: !secret wifi_passworduse_address: 192.168.xx.xx # 如果需要无线ota,需要填上它的ip
...下面省略...
保存,然后选择Wirelessly刷固件,等待完成即可
4.接入HA
一般来说,ESP32CAM刷好固件并成功连上wifi后,HA会自动探测到这个设备,填入配置文件中的key就能够接入了
如果没有自动探测到设备,可以到设备与服务添加集成,然后填入ESP32CAM模块的ip
成功接入后的页面