esphome中如何给esp32-cam视频画面添加时间显示
esphome中如何给esp32-cam视频画面添加时间显示 基础配置在ESPHome的YAML配置文件中,需启用摄像头组件和时间组件。示例配置如下:
yaml
Copy Code
esphome:
name: esp32-cam
platform: ESP32
board: esp32cam
# 启用摄像头
esp32_camera:
name: "ESP32-CAM"
external_clock: 20MHz
i2c_pins:
sda: GPIO26
scl: GPIO27
data_pins:
vsync_pin: GPIO25
href_pin: GPIO23
pixel_clock_pin: GPIO22
power_down_pin: GPIO32
resolution: 800x600
# 启用时间组件(从NTP服务器获取时间)
time:
- platform: homeassistant
id: homeassistant_time
叠加时间显示
使用lambda在视频流上叠加时间文本,需在摄像头配置中添加以下内容:
yaml
Copy Code
esp32_camera:
# 其他配置同上
extra_components:
- lambda: |-
it.text(10, 10, id(homeassistant_time).now().strftime("%Y-%m-%d %H:%M:%S"))
.color(255, 255, 255)
.font_size(20);
注意事项
时间同步:需确保ESP32连接到Home Assistant或配置NTP服务器以获取准确时间
2
3。
电源稳定性:电源不足可能导致图像水纹或时间显示异常
4。
字体大小与位置:通过调整text()函数的坐标和font_size参数可优化显示效果
7。
验证与调试
编译并刷入固件后,通过Home Assistant的ESPHome面板查看视频流,时间应显示在画面左上角。若未显示,检查时间组件是否成功同步或调整lambda中的坐标值
3
8。
参考 https://zhidao.baidu.com/question/445750262465112804.html
参考 https://zhuanlan.zhihu.com/p/1908975111807141597
参考 在ESPHome中为ESP32-CAM视频流叠加时间显示的最简方法如下:
基础配置方案
时间组件
使用SNTP协议自动同步网络时间:
yaml
Copy Code
time:
- platform: sntp
id: sntp_time
servers: pool.ntp.org
timezone: "Asia/Shanghai":ml-citation{ref="3" data="citationList"}
摄像头配置
通过esp32_camera组件直接叠加时间文本:
yaml
Copy Code
esp32_camera:
name: "ESP32-CAM"
# 标准引脚配置(AI-Thinker版本)
external_clock:
pin: GPIO0
frequency: 20MHz
i2c_pins:
sda: GPIO26
scl: GPIO27
data_pins:
# 时间叠加关键配置
extra_command: "text 10 10 %Y-%m-%d %H:%M:%S -c white -s 20":ml-citation{ref="3,5" data="citationList"}
替代方案(兼容旧版本)
若上述方法不兼容,改用图像处理组件实现:
yaml
Copy Code
image_processing:
- platform: lambda
name: "Time Stamp"
update_interval: 1s
lambda: |-
return {
draw: [{
type: "text",
x: 15, y: 15,
text: id(sntp_time).now().strftime("%H:%M:%S"),
color: { r: 255, g: 255, b: 255 },
font_size: 16
}]
};:ml-citation{ref="3" data="citationList"}
注意事项
确保ESP32-CAM使用board: esp32cam配置
时间同步需要稳定的WiFi连接,首次启动可能延迟30-60秒
2
若显示异常,尝试降低分辨率至640x480或调整字体位置参数
参考
页:
[1]