The problem
I'm changing my TCL Aircon units across from the manufacturer supplied app to ESPHome.
The original Wifi module is an ESP2866 based device which talks to the A/C mainboard using simple serial comms.
I have completed 3 of these units, but on the last one, I am not getting any status info from the AC, or a response to commands.
When I send a command to the device through the HASS integration, it is sent. the ESPhome device recieves the command, and sends it on to the AC's mobo, and it is carried out (so, turns on, switches mode, sets temp etc) - just no response.
What is super confusing to me is this - I swapped the TX and RX pins in my YAML, and get exactly the same result... so either GPIO1 or GPIO3 seems to be able to act as a TX - without swapping the wires over! neither can receive though.
I'm trying to bottom out any software issues I can before replacing/rewiring the ESP32 as these AC units requie quite a teardown to get the Wifi module disconnected.
Any help welcome!
Which version of ESPHome has the issue?
2026.3.0
What type of installation are you using?
Docker
What platform are you using?
ESP32
Component causing the issue
uart
YAML Config
esphome:
name: tcl-ac-activityroom
friendly_name: tcl-ac-activityroom
esp32:
board: esp32-c3-devkitm-1
framework:
type: esp-idf
external_components:
- source:
type: git
url: https://github.com/lNikazzzl/tcl_ac_esphome
components: [tcl_climate]
# Enable Home Assistant API
api:
encryption:
key: "<encryption key removed>"
ota:
- platform: esphome
password: "<password removed>"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Tcl-Ac-Activityroom"
password: "52Vou5GnM677"
captive_portal:
uart:
id: uart_bus
tx_pin: 3
rx_pin: 1
baud_rate: 9600
parity: EVEN
logger:
level: VERBOSE
baud_rate: 0
climate:
- platform: tcl_climate
id: tcl_custom_climate
uart_id: uart_bus
name: "HAVC TCL"
select:
- platform: template
name: Vertical swing
id: vswing
entity_category: config
options:
- "Last position"
- "Fix top"
- "Fix upper"
- "Fix mid"
- "Fix lower"
- "Fix bottom"
- "Move full"
- "Move upper"
- "Move lower"
set_action:
then:
lambda: |-
id(tcl_custom_climate).control_vertical_swing(x);
- platform: template
name: Horizontal swing
id: hswing
entity_category: config
options:
- "Last position"
- "Fix left"
- "Fix mid left"
- "Fix mid"
- "Fix mid right"
- "Fix right"
- "Move full"
- "Move left"
- "Move mid"
- "Move right"
set_action:
then:
lambda: |-
id(tcl_custom_climate).control_horizontal_swing(x);
Anything in the logs that might be useful for us?
INFO ESPHome 2026.3.0
INFO Reading configuration /config/tcl-ac-activityroom.yaml...
INFO Starting log output from tcl-ac-activityroom.local using esphome API
INFO Successfully resolved tcl-ac-activityroom.local in 0.004s
INFO Successfully connected to tcl-ac-activityroom @ 192.168.200.110 in 0.212s
INFO Successful handshake with tcl-ac-activityroom @ 192.168.200.110 in 0.068s
[16:43:26.405][I][app:231]: ESPHome version 2026.3.0 compiled on 2026-04-04 16:20:02 +0000
[16:43:26.409][I][app:238]: ESP32 Chip: ESP32-C3 rev0.4, 1 core(s)
[16:43:26.409][C][logger:233]: Logger:
[16:43:26.409][C][logger:233]: Max Level: VERBOSE
[16:43:26.409][C][logger:233]: Initial Level: VERBOSE
[16:43:26.409][C][logger:240]: Log Baud Rate: 0
[16:43:26.409][C][logger:240]: Hardware UART: USB_SERIAL_JTAG
[16:43:26.416][C][logger:250]: Task Log Buffer Size: 768 bytes
[16:43:26.430][C][uart.idf:222]: UART Bus 0:
[16:43:26.430][C][uart.idf:152]: TX Pin: GPIO3
[16:43:26.431][C][uart.idf:152]: RX Pin: GPIO1
[16:43:26.436][C][uart.idf:227]: RX Buffer Size: 256
[16:43:26.436][C][uart.idf:227]: RX Full Threshold: 7
[16:43:26.436][C][uart.idf:227]: RX Timeout: 2
[16:43:26.436][C][uart.idf:236]: Baud Rate: 9600 baud
[16:43:26.436][C][uart.idf:236]: Data Bits: 8
[16:43:26.436][C][uart.idf:236]: Parity: EVEN
[16:43:26.436][C][uart.idf:236]: Stop bits: 1
[16:43:26.436][C][uart.idf:236]: Wake on data RX: ENABLED
[16:43:26.437][C][template.select:010]: Template Select 'Vertical swing'
[16:43:26.437][C][template.select:014]: Optimistic: NO
[16:43:26.437][C][template.select:014]: Initial Option: Last position
[16:43:26.437][C][template.select:014]: Restore Value: NO
[16:43:26.451][C][template.select:010]: Template Select 'Horizontal swing'
[16:43:26.475][C][template.select:014]: Optimistic: NO
[16:43:26.475][C][template.select:014]: Initial Option: Last position
[16:43:26.475][C][template.select:014]: Restore Value: NO
[16:43:26.475][C][captive_portal:134]: Captive Portal:
[16:43:26.475][C][wifi:1510]: WiFi:
[16:43:26.475][C][wifi:1510]: Local MAC: REDACTED
[16:43:26.475][C][wifi:1510]: Connected: YES
[16:43:26.484][C][wifi:1221]: IP Address: 192.168.200.110
[16:43:26.484][C][wifi:1232]: SSID: [redacted]
[16:43:26.484][C][wifi:1232]: BSSID: [redacted]
[16:43:26.484][C][wifi:1232]: Hostname: 'tcl-ac-activityroom'
[16:43:26.484][C][wifi:1232]: Signal strength: -60 dB ▂▄▆█
[16:43:26.484][C][wifi:1232]: Channel: 6
[16:43:26.484][C][wifi:1232]: Subnet: 255.255.254.0
[16:43:26.484][C][wifi:1232]: Gateway: 192.168.200.1
[16:43:26.484][C][wifi:1232]: DNS1: 192.168.200.1
[16:43:26.484][C][wifi:1232]: DNS2: 192.168.10.1
[16:43:26.490][C][esphome.ota:071]: Over-The-Air updates:
[16:43:26.490][C][esphome.ota:071]: Address: tcl-ac-activityroom.local:3232
[16:43:26.490][C][esphome.ota:071]: Version: 2
[16:43:26.490][C][esphome.ota:078]: Password configured
[16:43:26.516][C][safe_mode:026]: Safe Mode:
[16:43:26.516][C][safe_mode:026]: Successful after: 60s
[16:43:26.516][C][safe_mode:026]: Invoke after: 10 attempts
[16:43:26.516][C][safe_mode:026]: Duration: 300s
[16:43:26.519][C][safe_mode:043]: Bootloader rollback: supported
[16:43:26.519][C][web_server.ota:238]: Web Server OTA
[16:43:26.519][C][api:237]: Server:
[16:43:26.519][C][api:237]: Address: tcl-ac-activityroom.local:6053
[16:43:26.519][C][api:237]: Listen backlog: 4
[16:43:26.519][C][api:237]: Max connections: 8
[16:43:26.526][C][api:244]: Noise encryption: YES
[16:43:26.526][C][mdns:194]: mDNS:
[16:43:26.526][C][mdns:194]: Hostname: tcl-ac-activityroom
[16:43:26.526][V][mdns:199]: Services:
[16:43:26.526][V][mdns:201]: - _esphomelib, _tcp, 6053
[16:43:26.531][V][mdns:204]: TXT: friendly_name = tcl-ac-activityroom
[16:43:26.535][V][mdns:204]: TXT: version = 2026.3.0
[16:43:26.535][V][mdns:204]: TXT: mac = 206ef16d9b3c
[16:43:26.535][V][mdns:204]: TXT: platform = ESP32
[16:43:26.540][V][mdns:204]: TXT: board = esp32-c3-devkitm-1
[16:43:26.540][V][mdns:204]: TXT: network = wifi
[16:43:26.586][V][mdns:204]: TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[16:43:51.296][D][climate:049]: 'HAVC TCL' - Setting
[16:43:51.299][D][climate:053]: Mode: COOL
[16:43:51.304][I][TCL:231]: Received mode control command: 2
[16:43:51.307][I][TCL:313]: Building and sending command to AC unit
Additional information
Jst in case it's useful, the ESP32-C3 dev board being used is a C3 SuperMini
The problem
I'm changing my TCL Aircon units across from the manufacturer supplied app to ESPHome.
The original Wifi module is an ESP2866 based device which talks to the A/C mainboard using simple serial comms.
I have completed 3 of these units, but on the last one, I am not getting any status info from the AC, or a response to commands.
When I send a command to the device through the HASS integration, it is sent. the ESPhome device recieves the command, and sends it on to the AC's mobo, and it is carried out (so, turns on, switches mode, sets temp etc) - just no response.
What is super confusing to me is this - I swapped the TX and RX pins in my YAML, and get exactly the same result... so either GPIO1 or GPIO3 seems to be able to act as a TX - without swapping the wires over! neither can receive though.
I'm trying to bottom out any software issues I can before replacing/rewiring the ESP32 as these AC units requie quite a teardown to get the Wifi module disconnected.
Any help welcome!
Which version of ESPHome has the issue?
2026.3.0
What type of installation are you using?
Docker
What platform are you using?
ESP32
Component causing the issue
uart
YAML Config
Anything in the logs that might be useful for us?
Additional information
Jst in case it's useful, the ESP32-C3 dev board being used is a C3 SuperMini