【树莓派】树莓派使用HomeAssistant连接ESPHome

【树莓派】树莓派使用HomeAssistant连接ESPHome

【Raspberry Raspberry Pi use HomeAssistant to connect ESPHome

Author: @kkl

多图警告!请流量党抓紧连上WiFi,捂好钱包,我们,出发!


写在前面

HomeAssistant logo
ESPHome logo

HomeAssistant是一个开源的智能家居自动化平台,它允许用户通过一个中心化的系统来控制和管理家中的各种智能设备。它的设计理念是为用户提供一个无需依赖特定制造商的解决方案,因此,它可以集成来自不同品牌的智能设备(如Xiaomi),为用户提供一个开放且可定制的智能家居体验。

ESPHome is a system to control your microcontrollers by simple yet powerful configuration files and control them remotely through Home Automation systems.

HomeAssistant官网:https://www.home-assistant.io
ESPHome官网:https://esphome.io

今天咱们使用HomeAssistant接入ESPHome,事不宜迟,趁热打铁,我们开始!

环境

  • 硬件:Raspberry Pi 4B
  • 镜像版本:HA-OS版本 HomeAssistant

HomeAssistant 版本

HomeAssistant一共推出了4种版本:HA-OS, Docker, Core, Supervised.

优先推荐安装HA-OS版本官方详细教程戳这里:),因为该版本安装简易,同时有Add-onSuperviser,拥有加载项商店,可以方便地下载插件!

本篇文章将简述使用树莓派 HomeAssistant 的HA-OS版本连接ESPHome


开始

下载ESPHome插件

So easy!!! Please just follow the pictures below:

添加新的Device

这里以ESP32S3为例:

烧录ESPHome固件

  1. 生成在线烧录的bin文件:

以下为YAML文件的模板,此文件将用于设置所有板配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
esphome:
name: my-esp32s3
friendly name: my-esp32s3
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio

esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
encryption:
key: "gbDi6S+wV/rr890ytxP1aD+lgdJOk/Wi52Q5RcK1BGc="
ota:
- platform: esphome
password: "1e7a2bdcdbcac1e989f1890679d09122"

wifi:
ssid: "your wifi name"
password: "your wifi password"

# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "My-Esp32s3 Fallback Hotspot"
password: "MoLTqZUvHwWI"
  1. 使用ESP32在线烧录工具:https://web.esphome.io/ ,将bin文件烧录到MCU当中:

烧录成功页面如下:

HomeAssistant连接Device

注意:Device连接的WiFi必须要与HomeAssistant在同一局域网之下!如果路由器WiFi分为2.4G和5G,最好都连接使用2.4G的(2.4G的WiFi对ESP32兼容,5G可能不行,不要一个使用2.4G,一个使用5G!

Plus:如果遇到以下错误,请检查:

  1. HA和Device是否在同一局域网下,检查Device的ip地址是否填写正确;
  2. 确保已经在同一局域网下,ip地址无误,可能是网络信号差,连续多点几次提交就能连接成功。

提示:最好使用 2.4GHz Wi-Fi!

跟随以下图片分解步骤即可完成 HomeAssistant 连接新的 Device:

ESPHome的yaml文件编写(根据不同传感器需求

  • Binary LED + SPG30 + DHT11 (ESP32S3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
esphome:
name: my-esp32s3
friendly_name: my-esp32s3


esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
encryption:
key: "gbDi6S+wV/rr890ytxP1aD+lgdJOk/Wi52Q5RcK1BGc="

ota:
- platform: esphome
password: "1e7a2bdcdbcac1e989f1890679d09122"

wifi:
ssid: "HUGO"
password: "12345678"

# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "My-Esp32S3 Fallback Hotspot"
password: "LakYDi3jZIKg"

# I2C configuration for i2c sensor
i2c:
sda: GPIO5
scl: GPIO6
scan: True
id: bus_a
frequency: 400kHz

# Example configuration entry
switch:
- platform: gpio
pin: GPIO1
name: "Living Room light"

captive_portal:

sensor:
# Sensor configuration for dht11
- platform: dht
pin: GPIO44
temperature:
name: "Temperature"
humidity:
name: "Humidity"
update_interval: 5s # 数据每5s监测一次
model: "DHT11"

# Sensor configuration for SGP30
- platform: sgp30
eco2:
name: "Workshop eCO2"
accuracy_decimals: 1 # 数据精确到小数点后1位
tvoc:
name: "Workshop TVOC"
accuracy_decimals: 1 # 数据精确到小数点后1位
store_baseline: yes
address: 0x58
update_interval: 5s # 数据每5s监测一次

Binary LED + SPG30 + DHT11

  • ESP-Camera (XIAO-ESP32S3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
esphome:
name: my-esp32s3-camera
friendly_name: my-esp32s3-camera

# PlatformIO build options
platformio_options:
build_flags: -DBOARD_HAS_PSRAM
board_build.arduino.memory_type: qio_opi
board_build.f_flash: 80000000L
board_build.flash_mode: qio

# Configuration for ESP32
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
encryption:
key: "0VVmbx1JdrIWI8sw+TneEf0oEi0vkQnNLuP3Vl6EvMQ="

ota:
- platform: esphome
password: "0237fcf68dea46990481fb72466c2cdc"

wifi:
ssid: "HUGO"
password: "12345678"

# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "My-Esp32S3-Camera"
password: "gqgYC1lZTiFD"

captive_portal:

# Configuration for the ESP32 Camera
esp32_camera:
id: espcam
name: My Camera
external_clock:
pin: GPIO10
frequency: 20MHz
i2c_pins:
sda: GPIO40
scl: GPIO39
data_pins: [GPIO15, GPIO17, GPIO18, GPIO16, GPIO14, GPIO12, GPIO11, GPIO48]
vsync_pin: GPIO38
href_pin: GPIO47
pixel_clock_pin: GPIO13
resolution: 800x600

# Configuration for the ESP32 Camera Web Server
esp32_camera_web_server:
- port: 8080
mode: stream
- port: 8081
mode: snapshot

esp-camera

  • WS2812 (ESP32C3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
esphome:
name: my-esp32c3
friendly_name: my-esp32c3

esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
encryption:
key: "giFi9MI6pdcoc+WdXm84dSaRFIbc8cn/TifIG6/V/Js="

ota:
- platform: esphome
password: "c73e533495a8ca7f3fcc39fd47a3182b"

wifi:
ssid: "HUGO"
password: "12345678"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "My-Esp32C3 Fallback Hotspot"
password: "uV72qROO5gCX"

captive_portal:

light:
#WS2812_RGB
- platform: neopixelbus
type: GRB
variant: WS2812
pin: GPIO2
num_leds: 60
name: "RGB_LED"

写在后面

HomeAssistant logo

鸣谢:


【树莓派】树莓派使用HomeAssistant连接ESPHome
https://zhangkeliang0627.github.io/2025/01/14/MyRaspberryPiLearningGuide/树莓派使用HomeAssistant连接ESPHome/README/
Author
Zhang-keliang
Posted on
January 14, 2025
Licensed under