ESP32CAM通过ESPHome连接到Homeassistant

老于从今年开始入坑HomeAssistant,折腾这么旧,这次用ESP32-CAM做了个摄像头,这次就介绍下老于的折腾过程吧。
一、ESPHome简介及安装
一般自己DIY的硬件接入HomeAssistant一般有两种方式,分别是ESPHome和MQTT。这两个都是在加载项商店中的,所以要用的话首先要确定你的HomeAssistant中是有加载项的。
老于说过现在是在群晖VMM中安装了HomeAssistant的OS版本,这个版本是HomeAssistant中功能齐全的。老于在用的版本信息如下:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
因为ESPHome的介绍是:ESPHomeadd-onforintelligentlymanagingallyourESP8266/ESP32devices。它是一个系统,可以通过简单但功能强大的配置文件来控制ESP8266/ESP32,并通过家庭自动化系统对其进行远程控制。老于觉得ESPHome就是为ESP8266/ESP32整的,所以老于用的就是ESPHome。
下面就安装ESPHome。需要在HomeAssistant中依次打开“配置”—“加载项”—右下角的“加载项商店”,找到ESPHome:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
选择第一个稳定版本,点击进去:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击“安装”,进行安装,因为网络原因,可能要等一会,如果失败的话,多尝试几次,安装完成后再打开就是这样的:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
把后面的几个开关都打开,这样HomeAssistant启动后这个就可以自动启动了,而且也添加到了HomeAssistant的侧边栏。
这样ESPHome就安装好了。
点击左边栏的ESPHome,就可以看到它的主页面了:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
二、ESP32-CAM简介
虽然现在摄像头越来越普及,但是要在HomeAssistant中使用最好购买支持ONVIF协议的,但是价格都比较高,一般都在200左右。而ESP32-CAM模块价格不超过50块人民币,如果成功了,再跟别人谈论家里用的摄像头,你就可以自豪地说我家的摄像头是我自己做的,老于觉得这个牛可以吹好几个星期啊。
首先介绍下ESP32-CAM模块:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
先看看官方介绍:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
硬件配置:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
各引脚定义:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
在使用过程中,实际使用的引脚有四个,分别是电源端口:左下角的5V、右上角的GND;信号端口:右侧上方的U0TXD、U0RXD;烧录短接端口:右侧GPIO0和它上方紧挨的GND。如果使用USB-TTL线进行烧录的话就需要使用以上六个端口。
老于为了方便买的套件:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
左侧是ESP32-CAM底板,可以直接供电和进行烧录,不用像USB-TTL那样需要自己连线,这个直接插上去就能用了;中间就是ESP32-CAM模块开发板;右侧是标配OV2640标准视角模块,是200W像素的。
组合成一起就是这样的:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
这样就可以直接使用Micro-USB线连接这个跟电脑,进行固件烧录;也可以直接使用Micro-USB直接供电。如果没有底板的话,使用USB-TTL烧录的话,接线图如下:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
烧录后,正常工作供电的话,连接5V和GND两根线就行了。
三、编译固件
首先进入ESPHome主界面:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击“+NEWDEVICE”绿色按钮,进入添加流程:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击“CONTINUE”,进入创建配置页面:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
第一个Name是新建设备的名称,下面的Networkname和Password是HomeAssistant所在WiFi的名称和密码,这两个只有第一次使用的时候才会要求填写,后续再新增设备是不用填写WiFi名称密码的。
填写完成后,点击下一步:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
进入型号选择界面:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击“Pickspecificboard”,因为老于使用的是安信可的ESP32-CAM模块,就在下拉菜单中选择“AiThinkerESP32CAM”,继续“NEXT”:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
这时候就放烟花庆祝了,创建完成了:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击空白处或者“SKIP”,不要点INSTALL。
这个时候只是在ESPHome添加了,但是ESP32-CAM模块还没添加到HomeAssistant中,需要继续配置:
在新增加的设备下面,点击EDIT按钮:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
进入yaml编辑界面:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
需要注意的四个地方老于都画出来了,第一个apikey,是后续ESP32-CAM与HomeAssistant配对需要使用的,有位数要求,最好不改,复制粘贴下来备用;第二个password是后续进行ota升级的密码,可以修改成好记的,但是一般也用不到;第三个wifi那,需要输入HomeAssistant所在局域网的名称和密码;下面还有一个password是它自带热点的密码,老于也修改了,并且这几个能修改的密码老于都改成与WiFi密码一样,省的忘了。
另外,需要在第29行captive_portal后面增加部分代码,具体可以参见ESP32CameraComponent这个官网说明,在网页中找到ConfigurationforAi-ThinkerCamera的相关代码:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
如果嫌麻烦的话,直接用老于的现成的就行了:
captive_portal:
esp32_camera:
external_clock:
pin:GPIO0
frequency:20MHz
i2c_pins:
sda:GPIO26
scl:GPIO27
data_pins:[GPIO5,GPIO18,GPIO19,GPIO21,GPIO36,GPIO39,GPIO34,GPIO35]
vsync_pin:GPIO25
href_pin:GPIO23
pixel_clock_pin:GPIO22
power_down_pin:GPIO32
name:Camera01#连接HomeAssistant后显示的名称,可以更改
完成后整体是这样的:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
先点击右上角的SAVE保存一下,然后点击INSTALL,开始编译流程:首先弹出安装方式选择界面,选择最后一个“Manualdownload”:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
到选择版本界面,选择Legacyformat:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
然后就进入编译界面了:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
第一编译时间比较长,老于第一次编译了四五十分钟,等着就行了,除了第一次之外,后续如果你还有硬件要编译的话就很快了,一般两三分钟就好。一切顺利的话,会到达下面的界面,会提示成功“successfullycompiledprogram”。这个时候浏览器应该也下载了一个esp32cam01.bin这样的bin文件,这个就是需要写入的固件。
ESP32CAM通过ESPHome连接到Homeassistant-有驾
到这里固件就编译完成了,需要写入ESP32-CAM硬件中。
四、烧录固件
烧录硬件:一种是使用USB-TTL,需要自己接线,具体接线方式,参见上面老于的介绍;另一种是使用底板,老于买的是套装,包含底板的直接插上就行了,不用自己接线。
烧录软件:官方一般让用ESPHomeFlasher进行烧录,在固件版本选择的时候也选择的这个版本,但是这个版本依赖Github,成功率不高;老于推荐采用乐鑫烧录软件,毕竟ESP32就是乐鑫的。
固件准备:除了上面下载的那个bin文件外,还需要另外三个bin文件,这三个文件老于一起打包好了,因为文件不大,就放到百度网盘了,百度网盘地址:https://pan.baidu.com/s/1atL0bJFoIaRh5WQfsQJy_w?pwd=ejug,提取码:ejug。
都准备好后,把底板与电脑连接起来,打开设备管理器,找到这个端口号,记住,老于这个是COM3端口:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
打开烧录软件:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
ChipType那通过下拉菜单选择ESP32,WorkMode保持develop不变,点击OK按钮:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
进入烧录界面:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击长框后面的三个小点,分别把编译好的固件,老于打包好的三个固件导入;前面的框打钩;根据bin,分别在后面的框中填入:0x10000、0x1000、0xE000、0x8000;确认下面的COM端口是不是刚刚查看到的端口,最终成这样的界面:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
先点左下角的ERASE,擦除原来的固件,等显示完成后,再点击START,等待右下角的绿框编程“FINISH完成”。
ESP32CAM通过ESPHome连接到Homeassistant-有驾
这样固件也就烧录完成了,把它跟电脑连接线拔了吧。
五、接入HomeAssistant
断开ESP32-CAM与电脑的连接后,接入电源。
电源接好后,稍等一下HomeAssistant中左下角的通知,会有数字提醒:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击进去,会有新设备提醒,点击“Checkitout.”
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击后,就直接到集成界面了,发现了esp32cam01这个设备,需要进行配置:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
点击配置按钮后,会弹出窗口,要求输入加密秘钥:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
这个秘钥就是老于说的在进行固件编译时的apikey,很长的那一串,粘贴进去,然后点击提交按钮,就提示创建成功了。
ESP32CAM通过ESPHome连接到Homeassistant-有驾
然后在集成界面就新增了一个ESPHome设备:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
这个可以在HomeAssistant界面中添加了:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
图像出来了,但是图像质量不咋的,有水波纹,关键图像貌似是翻转的。
六、异常处理
一、图像有水波纹
老于查了一下,按照官方的说法就是电源的问题,输入电源要到5V2A。老于用的电源是手机充电器,电源应该没问题;电源线是手机原装的肯定也没有问题;最后就是底板,老于觉得底板应该没有问题,但是目前来看这个底板的嫌疑最大,于是就决定直接用电源线连接ESP32-CAM。
ESP32CAM通过ESPHome连接到Homeassistant-有驾
然后这样测试后水波纹就没有了。。。太相信官方的底板了。。。这个底板就只用来烧录吧,ESP32-CAM还是直接连接电源吧。
然后改进下,用块面包板连接了:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
二、图像翻转的问题
老于重新烧录了几次,图像还都是翻转的,本来打算放弃了直接凑活用。后来去官方文档看看了,可以到ESPHome首页搜索ESP32CameraComponent。
官方文档第一部分是一个示例,突然发现里面有个resolution是老于上次配置时没有的,看样子是分辨率的设置。
ESP32CAM通过ESPHome连接到Homeassistant-有驾
老于一喜,既然这个分辨率有参数那么翻转啥的应该有相应的参数,就继续往下看。
第一部分是ConfigurationVariables,配置变量,应该就是ESPHome创建device时原有的那些代码;
第二部分connectionoptions,连接选项,这个都是针脚的定义就是上篇老于提供的那些代码;
再往下的FrameSettings、ImageSettings、ExposureSettings、SensorGainSettings、WhiteBalanceSetting、Automations、TestSetting,都是没有用过的参数。这些参数中果然有垂直翻转和水平翻转选项,也有很多其他图像相关的选项。
老于把这些参数都复制在下面了,也整理好了相关的注释,需要的话可以直接使用。老于在这里面把垂直翻转、水平翻转由默认的true,调整为false,也就是关了翻转功能;同时把brightness亮度由默认0调整为1,增加图像亮度。
#####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#是否垂直翻转图像,默认值为true
horizontal_mirror:false#是否水平镜像图像,默认值为true
#contrast:0#对比度,-2到2,默认为0
brightness: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
虽然这些代码没有用到,但老于都写到yaml这个文件中了,如果需要调整就直接去掉注释的“#”就可以了:
ESP32CAM通过ESPHome连接到Homeassistant-有驾
这些代码需要结合老于上一篇和这次的代码,都复制到里面去。
复制进去后,点击右上角“SAVE”,再点击“INSTALL”,进入编译流程,获得相应的bin硬件。
然后重新烧录到ESP32-CAM中。
ESP32CAM通过ESPHome连接到Homeassistant-有驾
图像是正常了,左右上下颠倒都好了,亮度也可以了,但是这个像素质量。。。真是没话说。。。不过想想这才29块钱,还要啥自行车呢。
如果画质不合适的话可以自己调整下上面的参数然后编译烧录,再编译再烧录,直到合适,反正老于不折腾了。。。
0

全部评论 (0)

暂无评论