Hi all,
I applied the latest ESPHome update (2023.12.1) to HA tonight and then updated all my online devices (17) and all but one went fine and that gives a validation error as per the title?
I’m no coder so don’t know what would have changed before and after the update that would bring this error as an issue?
esphome:
name: co2-sensor-2
platform: ESP32
board: "featheresp32"
# Enable Home Assistant API
api:
ota:
wifi:
ssid: !secret ssid
password: !secret password
# use_address: 192.168.0.207
manual_ip:
static_ip: 192.168.0.198
gateway: 192.168.0.100
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Co2-Sensor-2 Fallback Hotspot"
password: "+++"
captive_portal:
logger:
level: DEBUG
logs:
component: ERROR
# CO2 sensor
uart:
rx_pin: 27
tx_pin: 26
baud_rate: 9600
# Dipslay driver: ST7789
spi:
clk_pin: GPIO18
mosi_pin: GPIO19
font:
- file: "Oswald-Light.ttf"
id: font_70
size: 70
glyphs: 0123456789 # Only used for CO2 level
- file: "Oswald-Light.ttf"
id: font_30
size: 30
color:
- id: color_black
red: 0%
green: 0%
blue: 0%
white: 0%
- id: color_green
red: 0%
green: 100%
blue: 0%
- id: color_yellow
red: 100%
green: 100%
blue: 0%
- id: color_orange
red: 100%
green: 55%
blue: 0%
- id: color_red
red: 100%
green: 0%
blue: 0%
- id: color_white
red: 100%
green: 100%
blue: 100%
display:
- platform: st7789v
model: TTGO TDisplay 135x240 # added bit
id: my_display
backlight_pin: GPIO4
cs_pin: GPIO5
dc_pin: GPIO16
reset_pin: GPIO23
# brightness: 100%
rotation: 90
pages:
# Page 1: Current CO2 levels
# 0 - 1000 -> Green
# 1000 - 1600 -> Yellow
# 1600 - 2000 -> Orange
# >2000 -> Red
- id: page1
lambda: |-
if(!id(co2_sensor_2).has_state() ){
it.print(
it.get_width()/2,
it.get_height()/2,
id(font_70),
color_white,
TextAlign::CENTER,
"Starting..."
);
return;
}
auto bg_color = id(color_black);
auto text_color = id(color_green);
auto co2 = id(co2_sensor_2).state;
if(co2 > 1000) text_color = id(color_yellow);
if(co2 > 1600) text_color = id(color_orange);
if(co2 > 2000){
text_color = id(color_white);
bg_color = id(color_red);
}
it.filled_rectangle(0, 0, it.get_width(), it.get_height(), bg_color);
it.printf(
it.get_width()/2,
it.get_height()/2,
id(font_70),
text_color,
TextAlign::CENTER,
"%.0f",
co2
);
# Page 2: WiFi information
- id: page2
lambda: |-
it.print(
0, 0,
id(font_30),
id(color_white),
"WiFi details"
);
it.printf(
0, 30,
id(font_30),
id(color_white),
"%s",
id(wifi_ssid).state.c_str()
);
it.printf(
0, 60,
id(font_30),
id(color_white),
"%s",
id(wifi_ip_addr).state.c_str()
);
switch:
- platform: gpio
pin: GPIO4
id: backlight
internal: true
sensor:
- platform: mhz19
co2:
name: "CO2 Sensor 2"
id: "co2_sensor_2"
temperature:
name: "CO2 sensor 2 temperature"
internal: true
update_interval: 60s
automatic_baseline_calibration: false
- platform: wifi_signal
name: "CO2 sensor 2 WiFi"
update_interval: 60s
text_sensor:
- platform: wifi_info
ip_address:
internal: true
id: wifi_ip_addr
ssid:
internal: true
id: wifi_ssid
binary_sensor:
# Button to cycle through pages on the display
- platform: gpio
pin:
number: GPIO35
inverted: true
id: button_1
on_click:
then:
- display.page.show_next: my_display
- component.update: my_display
# Button to toggle the backlight (for use at night)
- platform: gpio
pin:
number: GPIO0
inverted: true
id: button_2
on_click:
then:
- switch.toggle: backlight
button:
- platform: restart
name: "CO2 sensor 2 restart"
When I validate it says:
Failed config
display.st7789v: [source <unicode string>:84]
Pin 4 is used in multiple places.
I understand what ‘Pin 4 is used in multiple places’ appears to suggest, just that if it was an actual issue, how could it have been working all this time and what to do about it now please?.