户外热点版本
esphome:
name: scd41-0
friendly_name: scd41-0
esp32:
variant: esp32c3
framework:
type: esp-idf
logger:
api:
reboot_timeout: 0s
encryption:
key: "LsaHsXsKgR6Cp6NqLuRn37yrTnz3/4qI/5+uc6LZsuo="
ota:
- platform: esphome
wifi:
output_power: 8.5dB
reboot_timeout: 0s
ap:
ssid: "SCD41"
password: "12345678"
manual_ip:
static_ip: 192.168.4.1
gateway: 192.168.4.1
subnet: 255.255.255.0
i2c:
sda: GPIO3
scl: GPIO4
scan: true
frequency: 100kHz
sensor:
- platform: scd4x
co2:
id: scd41_co2
name: "CO2"
temperature:
id: scd41_temperature
name: "Temperature"
humidity:
id: scd41_humidity
name: "Humidity"
measurement_mode: low_power_periodic
update_interval: 30s
web_server:
port: 80
version: 3
local: true
log: false
font:
- file: "C:/Windows/Fonts/consola.ttf"
id: oled_co2_font
size: 10
glyphs: " -.0123456789CHORpm%"
- file: "C:/Windows/Fonts/consola.ttf"
id: oled_small_font
size: 10
glyphs: " -.0123456789CHORpm%"
- file: "C:/Windows/Fonts/consola.ttf"
id: oled_ip_font
size: 10
glyphs: " .0123456789IP"
display:
- platform: ssd1306_i2c
id: scd41_oled
model: "SSD1306 128x32"
address: 0x3C
update_interval: 60s
lambda: |-
if (std::isfinite(id(scd41_co2).state)) {
it.printf(0, 0, id(oled_co2_font),
"CO2 %.0f ppm", id(scd41_co2).state);
} else {
it.print(0, 0, id(oled_co2_font), "CO2 -- ppm");
}
if (std::isfinite(id(scd41_temperature).state)) {
it.printf(0, 11, id(oled_small_font),
"%.1fC", id(scd41_temperature).state);
} else {
it.print(0, 11, id(oled_small_font), "--C");
}
if (std::isfinite(id(scd41_humidity).state)) {
it.printf(64, 11, id(oled_small_font),
"%.0f%%RH", id(scd41_humidity).state);
} else {
it.print(64, 11, id(oled_small_font), "--%RH");
}
char ip[network::IP_ADDRESS_BUFFER_SIZE] = "192.168.4.1";
if (wifi::global_wifi_component->is_connected()) {
wifi::global_wifi_component->get_ip_addresses()[0].str_to(ip);
}
it.printf(0, 22, id(oled_ip_font), "IP %s", ip);
external_components:
- source:
type: local
path: "C:/Users/xc/esphome/components"
components: [history24h]
history24h:
setup_priority: 200
co2_id: scd41_co2
temperature_id: scd41_temperature
humidity_id: scd41_humidity
# 加到现有 YAML 顶层;已有 switch: 时只合并下面的条目。
# 保留 name: "屏幕",历史主页通过这个名称调用开关。
# 每次重启默认亮屏;运行中关屏不停止传感器或历史记录。
switch:
- platform: template
id: oled_screen_power
name: "屏幕"
icon: "mdi:monitor"
# 等显示组件初始化完成,再执行开机亮屏动作。
setup_priority: -100
restore_mode: ALWAYS_ON
lambda: |-
return id(scd41_oled).is_on();
turn_on_action:
- lambda: |-
id(scd41_oled).turn_on();
- component.update: scd41_oled
turn_off_action:
- lambda: |-
id(scd41_oled).turn_off();
WIFI版本
esphome:
name: scd41-0
friendly_name: scd41-0
esp32:
variant: esp32c3
framework:
type: esp-idf
logger:
api:
reboot_timeout: 0s
encryption:
key: "LsaHsXsKgR6Cp6NqLuRn37yrTnz3/4qI/5+uc6LZsuo="
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
output_power: 8.5dB
reboot_timeout: 0s
ap:
ssid: "SCD41-1"
password: "12345678"
ap_timeout: 90s
manual_ip:
static_ip: 192.168.4.1
gateway: 192.168.4.1
subnet: 255.255.255.0
i2c:
sda: GPIO3
scl: GPIO4
scan: true
frequency: 100kHz
sensor:
- platform: scd4x
co2:
id: scd41_co2
name: "CO2"
temperature:
id: scd41_temperature
name: "Temperature"
humidity:
id: scd41_humidity
name: "Humidity"
measurement_mode: low_power_periodic
update_interval: 30s
web_server:
port: 80
version: 3
local: true
log: false
font:
- file: "C:/Windows/Fonts/consola.ttf"
id: oled_co2_font
size: 10
glyphs: " -.0123456789CHORpm%"
- file: "C:/Windows/Fonts/consola.ttf"
id: oled_small_font
size: 10
glyphs: " -.0123456789CHORpm%"
- file: "C:/Windows/Fonts/consola.ttf"
id: oled_ip_font
size: 10
glyphs: " .0123456789IP"
display:
- platform: ssd1306_i2c
id: scd41_oled
model: "SSD1306 128x32"
address: 0x3C
update_interval: 60s
lambda: |-
if (std::isfinite(id(scd41_co2).state)) {
it.printf(0, 0, id(oled_co2_font),
"CO2 %.0f ppm", id(scd41_co2).state);
} else {
it.print(0, 0, id(oled_co2_font), "CO2 -- ppm");
}
if (std::isfinite(id(scd41_temperature).state)) {
it.printf(0, 11, id(oled_small_font),
"%.1fC", id(scd41_temperature).state);
} else {
it.print(0, 11, id(oled_small_font), "--C");
}
if (std::isfinite(id(scd41_humidity).state)) {
it.printf(64, 11, id(oled_small_font),
"%.0f%%RH", id(scd41_humidity).state);
} else {
it.print(64, 11, id(oled_small_font), "--%RH");
}
char ip[network::IP_ADDRESS_BUFFER_SIZE] = "192.168.4.1";
if (wifi::global_wifi_component->is_connected()) {
wifi::global_wifi_component->get_ip_addresses()[0].str_to(ip);
}
it.printf(0, 22, id(oled_ip_font), "IP %s", ip);
external_components:
- source:
type: local
path: "C:/Users/xc/esphome/components"
components: [history24h]
history24h:
setup_priority: 200
co2_id: scd41_co2
temperature_id: scd41_temperature
humidity_id: scd41_humidity
# 加到现有 YAML 顶层;已有 switch: 时只合并下面的条目。
# 保留 name: "屏幕",历史主页通过这个名称调用开关。
# 每次重启默认亮屏;运行中关屏不停止传感器或历史记录。
switch:
- platform: template
id: oled_screen_power
name: "屏幕"
icon: "mdi:monitor"
# 等显示组件初始化完成,再执行开机亮屏动作。
setup_priority: -100
restore_mode: ALWAYS_ON
lambda: |-
return id(scd41_oled).is_on();
turn_on_action:
- lambda: |-
id(scd41_oled).turn_on();
- component.update: scd41_oled
turn_off_action:
- lambda: |-
id(scd41_oled).turn_off();
打赏支持
支付宝扫一扫
感谢您的支持!让我有持续更新的动力
© 版权声明
分享是一种美德,转载请保留原链接
THE END















暂无评论内容