首页 > 其他分享 >esp32c3 刷入 ESPHome 固件并联动 Home Assistant

esp32c3 刷入 ESPHome 固件并联动 Home Assistant

时间:2023-05-23 17:15:27浏览次数:59  
标签:刷入 temperature -- Assistant ESPHome 固件 id esp32c3

在物联网里有一个很有名的固件叫做 ESPHome,它是一个通过简单而强大的配置文件控制 ESP8266/ESP32 并通过家庭自动化系统远程控制。

目标

这里通过一个简单的案例场景来开始讲述整个过程,目标是通过温湿度传感器上传室内温度并在墨水屏上展示温度变化曲线。

先决条件

既然是 esp32c3 刷入 ESPHome 固件并联动 Home Assistant 那么就需要

  • 一个 esp32c3,我这里使用的是自己制作的墨水屏开发板(可以在小黄鱼上面搜索到)- ESPHome 和 Home Assistant 环境。
  • 当然还需要一定的软件开发基础,需要懂一些 C++ 和 Docker 的基础命令
  • 还有能够畅通访问 GitHub 的网络,否则下载相应固件时会很难下载下载。
  • flash_download_tool 乐鑫官网提供的固件写入软件 flash_download_tool

安装 ESPHome 和 Home Assistant

这里我就不过多赘述 Docker 相关的知识了

sudo docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=Asia/Shanghai \
  -v /root/homeassistant:/config \
  --network=host \
  homeassistant/home-assistant
  
sudo docker run -d \
 --name="ESPHome" \
 -e TZ=Asia/Shanghai \
 --hostname="esphome" \
 -v /root/esphome:/config \
 -v /run/udev:/run/udev \
 --privileged \
 --restart unless-stopped \
 --net=host \
 esphome/esphome

有几个注意点:

  • TZ=Asia/Shanghai
  • --network=host
  • --privileged
  • -v /run/udev:/run/udev

TZ=Asia/Shanghai 时区是必要的,否则界面上的时间会出现问题。--network=host 为了不必要的麻烦,请设置网络为 host。
--privileged-v /run/udev:/run/udev 是可以直接链接容器所在电脑刷入固件准备的,非必要。

硬件相关

一共三个硬件,esp32c3(这里选择的是合宙 12.9 版本),温湿度传感器 AHT21(其他的也可以,AHT10,AHT20,AHT25,DHT10,DHT20 都是可以的),墨水屏可以选择微雪的几款 Waveshare E-Paper Display

接线请看 GitHub 中的配置文件。

ESPHome 相关

Docker 的 ESPHome 容器起来以后,就可以通过 http://xxx::6052 来访问 ESPHome 的 Web 页面了,界面非常的简单,啥也没有。

依次点击 右下角NEW DEVICE -> CONTINUE -> 输入名称,如 esp32c3 NEXT -> 选择 esp32c3 -> 最后点击 SKIP

点击卡片的 EDIT 打开刚刚创建好的 esp32c3.yaml,这个是 ESPHome 的灵魂,我们可以同过编辑这个配置文件来实现各种各样的功能,即使不会编程也没有关系,通过查阅文档,参考着配置即可实现功能。

全部的配置文件访问我的 GitHub

这里稍微讲解一下配置文件的一些配置内容:

wifi:
  ssid: 'xxx'
  password: 'xxx'

这里的 wifi 要选择 2.4G 且必须链接,否则后面就没有办法和 Home Assistant 联动,并且要和 Home Assistant 服务处于同一个网络中。

i2c:
  sda: 18
  scl: 19
  scan: true
  id: bus_a

我这里定义的 i2c 引脚,scan 建议就直接设置为 true,省事。这里也可以写传感器的地址。

sensor:
  - platform: aht10
    temperature:
      id: "temperature"
      name: "temperature"
      filters:
      - offset: -1.0
    humidity:
      name: "humidity"
      filters:
      - offset: 10.0
    update_interval: 10s

这里是定义传感器的,温度和湿度
update_interval 采集间隔
filters offset 偏移量,这里根据自己购买的温湿度传感器来自行校准,ESPHome 也提供了函数式的方式来校准,我这里简单的使用偏移量来进行校准。

font:
  - file: "gfonts://Roboto Mono"
    id: roboto
    size: 10

定义显示的字体,后面墨水屏上面展示文字需要。

graph:
  # Show bare-minimum auto-ranged graph
  - id: single_temperature_graph
    sensor: temperature
    duration: 12h
    width: 276
    height: 101
    x_grid: 120min

graph 图形,简单来说这个就是一个开箱即用的图形组件
sensor: temperature 使用的数据是 id 为 temperature 的传感器
duration 数据展示时间
x_grid X轴竖线间隔单位
还有很多的参数,具体的可以看这里 graph-component

spi:
  clk_pin: 4
  mosi_pin: 6
  
display:
  - platform: waveshare_epaper
    cs_pin: 7
    dc_pin: 10
    busy_pin: 2
    reset_pin: 3
    model: gdey029t94
    update_interval: 1200s
    rotation: 90

    lambda: |-
      it.printf(10, 0, id(roboto), "temperature: %.1f", id(temperature).state);
      it.graph(10, 20, id(single_temperature_graph));

clk_pin,mosi_pin,cs_pin,dc_pin,busy_pin,reset_pin 声明了和墨水屏 SPI 通信需要的引脚。

model: gdey029t94 这里需要根据自己的墨水屏的不同来选择不同的 model。具体的可以看这里Waveshare E-Paper Display

update_interval: 1200s 每 1200 秒更新一次
rotation: 90 屏幕旋转角度

it.printf(10, 0, id(roboto), "temperature: %.1f", id(temperature).state); 用 roboto 字体在 10,0 位置展示格式化后的温度

it.graph(10, 20, id(single_temperature_graph)); 在 10,20 位置展示 graph 信息,就是上面定义的温度曲线图形

首次刷入固件

不得不说,无法直接访问 GitHub 或者其他的国外源有时候真的是一件非常麻烦的事情。这里我推荐使用代理,不然一些依赖根本就没有办法下载下载。所以 ESPHome Web 端的一些操作基本上就一点用都没有,很多其他的文章都是在 Web 端操作的,反正我是不行,下载个依赖就要 2-3 个小时,我这里推荐使用命令行的方式去操作,因为命令行可以设置代理。

前提条件,要有一个代理,这里我没有办法多写,自己想办法吧。我用的客户端是 Clash,开启局域网共享

首先进入容器

sudo docker exec -it 84a4c3113132  /bin/bash

84a4c3113132 是 ESPHome 容器的 id

export http_proxy=192.168.2.9:7890
export https_proxy=192.168.2.9:7890
curl www.google.com

设置命令行代理,ip地址为开启局域网共享客户端的那台电脑的ip。访问下 google 看看能不能访问。
如果不能,建议排查开启局域网共享客户端的那台电脑的防火墙是否允许 Clash 出入,这里就不详细说明了。

cd /config

esphome esp32c3.yaml clean
esphome esp32c3.yaml compile

clean Delete all temporary build files.
compile Read the configuration and compile a program.

可能会输出错误,一般都是 yaml 配置的有问题,根据提示进行解决

运行后会下载依赖并进行编译,编译成功后应该会输出如下内容:

Building .pioenvs/esp32c3/firmware.bin
Creating esp32c3 image...
Successfully created esp32c3 image.
esp32_create_combined_bin([".pioenvs/esp32c3/firmware.bin"], [".pioenvs/esp32c3/firmware.elf"])
Wrote 0x114380 bytes to file /config/.esphome/build/esp32c3/.pioenvs/esp32c3/firmware-factory.bin, ready to flash to offset 0x0
============================================================================================ [SUCCESS] Took 56.03 seconds =========

/config/.esphome/build/esp32c3/.pioenvs/esp32c3/firmware-factory.bin 这个文件下载到 Windows 电脑上。

将 esp32c3 开发板通过 typec 链接到 Windows 电脑上,并打开 flash_download_tool 软件。
乐鑫官网提供的固件写入软件 flash_download_tool

点击 START 就开始烧录固件了。

烧录完成后,重新上电,ESPHome Web 就可以发现卡片右上方的文字就变成 ONLINE 了。点击 LOGS 就可以查看 esp32c3 中的日志信息了。

Home Assistant 接入

进入 Home Assistant Web 管理界面,就会发现有一个 ESPHome 的卡片(首次接入会提示需要 API key,在 esp32c3.yaml 中有)。点击卡片上的 【设备】 按钮,然后点击 【传感器】 卡片上的 【添加到仪表盘】 即可将温湿度信息添加到首页。

OTA 刷新固件

当刷入 ESPHome 固件后,后续的操作就不用那么麻烦了,不需要使用 flash_download_tool 软件进行写入,ESPHome 中有 OTA 升级功能,直接通过 wifi 即可在线升级。

操作也很简单,首先进入容器,然后设置代理。然后键入以下内容:

esphome esp32c3.yaml clean
esphome esp32c3.yaml compile
esphome esp32c3.yaml upload

upload 就会将编译好的固件通过 OTA 的方式热更新。

标签:刷入,temperature,--,Assistant,ESPHome,固件,id,esp32c3
From: https://www.cnblogs.com/manastudent/p/17425773.html

相关文章

  • Laf Assistant:云开发从未如此爽快!
    原文链接:https://forum.laf.run/d/67工欲善其事,必先利其器。在编写代码时,IDE也是我们不可或缺的。它可以让我们更高效地完成代码编写,提高开发效率。因此,IDE是我们编写代码中最亲密的伙伴之一。虽然Laf云开发有简洁的WebIDE,只要能打开浏览器就可以随处编辑云函数。但很......
  • 先机XJ18A10块钱的随身wifi 刷入debian
      就是这个淘宝十块钱包邮。兄弟们冲呀薅秃它。 刷机包https://pan.baidu.com/s/1aialm5sRlgodtaDud8a_Dw?pwd=guz5  刷机包  详细教程可以参考高通410的随身WiFi刷入Debian教程_你干嘛-哎哟的博客-CSDN博客开源项目地址开始折腾·OpenStick项目·看云(kanclou......
  • 小米路由器3C刷入Breed和OpenWrt
    本文链接:https://www.cnblogs.com/snoopy1866/p/17278237.html准备工具:小米路由器3C(R3L)、网线、电脑准备软件:Xshell教程中使用到的文件均打包保存在:https://wwpe.lanzoub.com/ibnVl0rqr09a教程参考了以下多位大佬的帖子:https://www.right.com.cn/forum/forum.php?mod=viewthr......
  • 树莓派4 安装 Home Assistant Supervised
    默认先决条件RaspberryPiOS64(debian11)已经安装了Docker停用冲突的容器,如Portainer已拥有梯子预编写NetworkManager的配置创建配置目录和文件sudomkdir-p/......
  • Visual Studio Code UI5 Language Assistant 扩展介绍
    VisualStudioCodeUI5LanguageAssistant的功能有哪些?打开/编辑相关SAPUI5源文件时,此扩展的功能会自动启用。对于SAPUI5XML视图,这意味着:*.view.xml或*.fragme......
  • Visual Studio Code UI5 Language Assistant 扩展介绍
    VisualStudioCodeUI5LanguageAssistant的功能有哪些?打开/编辑相关SAPUI5源文件时,此扩展的功能会自动启用。对于SAPUI5XML视图,这意味着:*.view.xml或*.fragme......
  • idea.2022.3.x社区版插件“intellij-spring-assistant”
    idea.2022.3.x社区版插件“intellij-spring-assistant”https://blog.csdn.net/ErickPang/article/details/128794674?spm=1001.2101.3001.6650.2&utm_medium=distribute.......
  • IDEA社区版找不到SpringAssistant插件下载的解决办法
    进入JetBrains的官方网站搜索插件网址如下https://plugins.jetbrains.com/plugin/10229-spring-assistant/versions/stable打开IntelliJ文件夹,将下载所得内容解压缩到如下......
  • 如何选购可以刷入 Debian 的随身WiFi
    前言大家关注我大多是因为我花16块得到了一个永久的微型服务器这篇文章,而且也有很多人私信问我可以在哪里买到文章中的随身WiFi,所以本篇文章就简单说一下如何来选购可以......
  • 小米路由器4c刷入openwrt并成功进行锐捷认证
    小米路由器4C刷入openwrt并成功进行锐捷认证前言:在大学中,宿舍有个路由器当然是刚需,然而,我们学校的校园网需要进行锐捷认证,常规的路由器还用不了,需要自己刷路由器或是......