Z4RR0
(Z4 Rr0)
May 10, 2025, 5:50am
901
Little update, seem to all work i set “alternative swing” to true and vertical flap work but horizzontal not work…i can find a method to know why?
and i don’t understand i see all your github but how can i write yalm file to use your many config file?
thank’s
paveldn
(Paveldn)
May 10, 2025, 6:31am
902
As far as I remember not all smartAir2 ACs support horizontal swing control over serial. But you can try this haier-esphome/docs/faq.rst at ab6789c2caf7f4d9df2ac1ca3147e7f9ba1937f1 · paveldn/haier-esphome · GitHub Change horizontal swing with remote and you should be able to see changes in status packet in serial protocol if it is supported.
If you asking how to write yaml for ESPhome in general - topic is too big to explain in couple of words. Of you asking about haier component you should start with ESPHome help first:
Paul_Biod
(Paul Biod)
May 21, 2025, 1:07pm
903
Hi @MiguelAngelLV
If I’m not wrong, there is now in esphome a component that automatically adds the haier controls : Haier Climate — ESPHome
What’s the difference with your own custum component ?
Thanks
The component of EspHome was created by @paveldn . My component is a “grand grand father” of the Esphome Haier.
Use the component from EspHome
Paul_Biod
(Paul Biod)
May 21, 2025, 2:08pm
905
thank you very much for the quick reply
N0edL
(NoedLof)
May 28, 2025, 3:49pm
906
I’m trying to control my Haier AC using a D1 Mini with this ESPHome config (using the haier-esphome custom component), but it’s not working properly.
The logs show this loop:
[D][haier.protocol:019]: Sending frame: type 61, data: 00 07
[D][haier.protocol:019]: Frame found: type 62, data: ...
[D][haier.protocol:019]: Sending frame: type 01, data: 4D 01
[I][haier.climate:096]: Answer timeout for command 01, phase SENDING_FIRST_STATUS_REQUEST
It seems like the AC responds to type 61, but not to the 01 command.
YAML (relevant parts):
uart:
- id: ac_port
baud_rate: 9600
tx_pin: 1
rx_pin: 3
external_components:
- source: github://esphome/esphome@dev
components: [ haier ]
packages:
remote_package:
url: https://github.com/paveldn/haier-esphome
ref: master
files:
- .haier-smartair2-base.yaml
What I tried:
RX/TX wiring double-checked
Proper UART pins (TX=GPIO1, RX=GPIO3 on D1 Mini)
Different cables, confirmed AC is powered
Anyone know what might be wrong? Thanks in advance!
paveldn
(Paveldn)
May 28, 2025, 6:30pm
907
Hi @N0edL ,
You don’t need external component, you can remove it.
AC’s that use SmartAir2 protocol usually don’t answers to 61 command. Can you try to use hOn protocol?
ALso it would be useful if you can provide full log. Answer to 61 command should have information about your device (like protocol version and firmware version)
Hi, I have a question, please. I have older Haier ACs that use the USB wifi dongle (which is really a UART, according to my understanding). If I buy these: M5Stamp C3U Mate with Pin Headers | m5stack-store and reprogram them with esphome, will they work in the hOn app and be able to be voice controlled by Alexa for example? As hOn has Alexa integration. Sorry if this a noob question but I would apppreciate the help.
paveldn
(Paveldn)
June 15, 2025, 7:28am
909
Answers to your questions: no and maybe. You can’t have both hOn and ESPHome at the same time, only one of them will work. If you are using ESPHome with Haier component it is still possible to have voice assistant control but you should do it with Home Assistant.
JakeK
(Jake)
June 16, 2025, 7:27pm
910
Also interested in this. Both of my GE window AC’s use the uart usb wifi module.
Would really love to disconnect these from the cloud and have HA control them locally.
Knol010
(Joost)
June 26, 2025, 11:52am
911
@paveldn
WARNING Using climate.CLIMATE_SCHEMA is deprecated and will be removed in ESPHome 2025.11.0. Please use climate.climate_schema(...) instead. If you are seeing this, report an issue to the external_component author and ask them to update it. *.*_SCHEMA deprecations - ESPHome Developer Documentation . Component using this schema: haier
Does this effect something?
paveldn
(Paveldn)
June 26, 2025, 1:24pm
912
No, at least not till 2025.11.0 I will take a look. Anyway, I have plans to make some changes to the code. Will also check this.
biuklija
(Ivan Biuklija)
July 3, 2025, 1:10pm
913
Are we sure about this? Because I’ve updated to 2025.7.0 and got the following error instead of the climate control card.
Immediately downgraded from a backup and everything seems to work as before.
paveldn
(Paveldn)
July 5, 2025, 8:26pm
914
Your problem should be something related to Home Assistant. Maybe some bug introduced in 2025.7.0. If there would be problem with ESPhome you wouldn’t be able to compile your configuration.
Alloc186
(Petr T )
July 20, 2025, 7:02am
915
Can confirm, latest ESPHOME update breaks the integration.
1/3 my AC is not updated yet and works OK. Two of them are now at ESPHOME 2025.7.2 and stopped working (Answer timeout for command 61).
biuklija
(Ivan Biuklija)
July 20, 2025, 8:00am
916
Interestingly, my issue still persists, but doesn’t seem related to the ESPhome builder version at the moment. ESPhome firmware was built off ESPhome 2025.7.0, Home Assistant Core is at 2025.6.3 and everything works. As soon as I upgrade Homeassistant to 2025.7, the climate entity disappears. Tried all Homeassistant 2025.7.x versions to date. Esphome configuration is the default from the integration’s github. Now I’m hesitant to build new 2025.7.2 firmware images.
I’ll try to find time next week to upgrade Homeassistant and get debugging logs to see what the problem is.
paveldn
(Paveldn)
July 21, 2025, 4:40pm
917
@biuklija
I don’t think this issue is related to ESPhome it should be Home Assistant related. I can’t reproduce it in my setup. Should be something related to your case. I just used ESPhome 2025.7.2 everything fine.
@Alloc186
In your case looks like serial port is not working. Are you using something that is not related to Haier AC like BT proxy or some other havy component?
Alloc186
(Petr T )
July 22, 2025, 8:45pm
918
Hmm, maybe the problem is with esp32-s3-devkitc-1 board and new update…
opened 05:42PM - 22 Jul 25 UTC
### The problem
All of my ESP32C3 Zero devices will not take the update to 2025… .7 - 2025.7.2. Have tried every release since 2025.7 with same results. Compile and install process does not report any errors, bin file is uploaded with no errors. After restart, the device still reports running ESPHome 2025.6.3.
### Which version of ESPHome has the issue?
2025.7.2
### What type of installation are you using?
Home Assistant Add-on
### What platform are you using?
ESP32
### Component causing the issue
No components report problem
### YAML Config
```yaml
esphome:
name: vendriktning-den
friendly_name: Vendriktning Den
esp32:
board: esp32-c3-devkitm-1
variant: ESP32C3
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "xxxxx"
ota:
- platform: esphome
password: "xxxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Vendriktning-Den"
password: "xxxxx"
captive_portal:
web_server:
port: 80
light:
- platform: neopixelbus
variant: WS2812
type: RGB
id: status_led
pin: 10
num_leds: 1
name: Status LED
icon: "mdi:led-outline"
# Ikea Vindriktning PM2.5 sensor to pin D7
uart:
rx_pin: GPIO7
baud_rate: 9600
i2c:
sda: GPIO4
scl: GPIO5
scan: True
id: bus_a
bme68x_bsec2_i2c:
address: 0x77
model: bme680
operating_age: 28d
sample_rate: LP
supply_voltage: 3.3V
sensor:
- platform: pm1006
pm_2_5:
name: "Ikea Vindriktning PM25"
filters:
- sliding_window_moving_average:
window_size: 10
send_every: 10
- platform: bme68x_bsec2
temperature:
name: "BME68x Temperature"
pressure:
name: "BME68x Pressure"
humidity:
name: "BME68x Humidity"
iaq:
name: "BME68x IAQ"
id: iaq
co2_equivalent:
name: "BME68x CO2 Equivalent"
breath_voc_equivalent:
name: "BME68x Breath VOC Equivalent"
text_sensor:
- platform: bme68x_bsec2
iaq_accuracy:
name: "BME68x IAQ Accuracy"
- platform: template
name: "BME68x IAQ Classification"
lambda: |-
if ( int(id(iaq).state) <= 50) {
return {"Excellent"};
}
else if (int(id(iaq).state) >= 51 && int(id(iaq).state) <= 100) {
return {"Good"};
}
else if (int(id(iaq).state) >= 101 && int(id(iaq).state) <= 150) {
return {"Lightly polluted"};
}
else if (int(id(iaq).state) >= 151 && int(id(iaq).state) <= 200) {
return {"Moderately polluted"};
}
else if (int(id(iaq).state) >= 201 && int(id(iaq).state) <= 250) {
return {"Heavily polluted"};
}
else if (int(id(iaq).state) >= 251 && int(id(iaq).state) <= 350) {
return {"Severely polluted"};
}
else if (int(id(iaq).state) >= 351) {
return {"Extremely polluted"};
}
else {
return {"error"};
}
button:
- platform: restart
name: "Restart"
id: reboot
icon: mdi:restart
```
### Anything in the logs that might be useful for us?
```txt
INFO ESPHome 2025.7.2
INFO Reading configuration /config/esphome/vendriktning-den.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing vendriktning-den (board: esp32-c3-devkitm-1; framework: arduino; platform: https://github.com/pioarduino/platform-espressif32/releases/download/53.03.13/platform-espressif32.zip)
--------------------------------------------------------------------------------
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
- framework-arduinoespressif32 @ 3.1.3
- framework-arduinoespressif32-libs @ 5.3.0+sha.489d7a2b3a
- tool-esptoolpy @ 4.8.6
- tool-mklittlefs @ 3.2.0
- tool-riscv32-esp-elf-gdb @ 14.2.0+20240403
- tool-xtensa-esp-elf-gdb @ 14.2.0+20240403
- toolchain-riscv32-esp @ 13.2.0+20240530
Dependency Graph
|-- Networking @ 3.1.3
|-- AsyncTCP @ 3.4.5
|-- WiFi @ 3.1.3
|-- FS @ 3.1.3
|-- Update @ 3.1.3
|-- ESPAsyncWebServer @ 3.7.10
|-- ESP32 Async UDP @ 3.1.3
|-- DNSServer @ 3.1.3
|-- ESPmDNS @ 3.1.3
|-- noise-c @ 0.1.10
|-- Wire @ 3.1.3
|-- ArduinoJson @ 7.4.2
|-- NeoPixelBus @ 2.8.0
|-- SPI @ 3.1.3
|-- BME68x Sensor library @ 1.3.40408+sha.4f37df6
|-- bsec2 @ 1.10.2610+sha.0dac6ea
RAM: [= ] 11.9% (used 39140 bytes from 327680 bytes)
Flash: [======== ] 75.4% (used 1384242 bytes from 1835008 bytes)
========================= [SUCCESS] Took 12.60 seconds =========================
INFO Successfully compiled program.
INFO Connecting to 192.168.106.193 port 3232...
INFO Connected to 192.168.106.193
INFO Uploading /data/build/vendriktning-den/.pioenvs/vendriktning-den/firmware.bin (1397248 bytes)
Uploading: [============================================================] 100% Done...
INFO Upload took 25.72 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from 192.168.106.193 using esphome API
INFO Successfully resolved vendriktning-den @ 192.168.106.193 in 0.000s
INFO Successfully connected to vendriktning-den @ 192.168.106.193 in 3.099s
INFO Successful handshake with vendriktning-den @ 192.168.106.193 in 0.062s
[11:37:31][I][app:137]: ESPHome version 2025.6.3 compiled on Jul 4 2025, 12:04:52
[11:37:31][C][wifi:613]: WiFi:
[11:37:31][C][wifi:434]: Local MAC: DC:1E:D5:1E:AF:A0
[11:37:31][C][wifi:439]: SSID: [redacted]
[11:37:31][C][wifi:442]: IP Address: 192.168.106.193
[11:37:31][C][wifi:451]: BSSID: [redacted]
[11:37:31][C][wifi:451]: Hostname: 'vendriktning-den'
[11:37:31][C][wifi:451]: Signal strength: -65 dB ▂▄▆█
[11:37:31][C][wifi:462]: Channel: 6
[11:37:31][C][wifi:462]: Subnet: 255.255.255.0
[11:37:31][C][wifi:462]: Gateway: 192.168.106.2
[11:37:31][C][wifi:462]: DNS1: 192.168.106.20
[11:37:31][C][wifi:462]: DNS2: 192.168.106.2
[11:37:31][C][logger:215]: Logger:
[11:37:31][C][logger:215]: Max Level: DEBUG
[11:37:31][C][logger:215]: Initial Level: DEBUG
[11:37:31][C][logger:220]: Log Baud Rate: 115200
[11:37:31][C][logger:220]: Hardware UART: USB_CDC
[11:37:31][C][logger:224]: Task Log Buffer Size: 768
[11:37:31][C][i2c.arduino:072]: I2C Bus:
[11:37:31][C][i2c.arduino:077]: SDA Pin: GPIO4
[11:37:31][C][i2c.arduino:077]: SCL Pin: GPIO5
[11:37:31][C][i2c.arduino:077]: Frequency: 50000 Hz
[11:37:31][C][i2c.arduino:089]: Recovery: bus successfully recovered
[11:37:31][I][i2c.arduino:099]: Results from bus scan:
[11:37:31][I][i2c.arduino:105]: Found device at address 0x77
[11:37:31][C][uart.arduino_esp32:151]: UART Bus 0:
[11:37:31][C][uart.arduino_esp32:153]: RX Pin: GPIO7
[11:37:31][C][captive_portal:089]: Captive Portal:
[11:37:31][C][web_server:288]: Web Server:
[11:37:31][C][web_server:288]: Address: vendriktning-den.local:80
[11:37:31][C][esphome.ota:077]: Over-The-Air updates:
[11:37:31][C][esphome.ota:077]: Address: vendriktning-den.local:3232
[11:37:31][C][esphome.ota:077]: Version: 2
[11:37:31][C][esphome.ota:080]: Password configured
[11:37:31][C][safe_mode:018]: Safe Mode:
[11:37:31][C][safe_mode:025]: Boot considered successful after 60 seconds
[11:37:31][C][safe_mode:025]: Invoke after 10 boot attempts
[11:37:31][C][safe_mode:025]: Remain for 300 seconds
[11:37:31][C][api:185]: API Server:
[11:37:31][C][api:185]: Address: vendriktning-den.local:6053
[11:37:31][C][api:187]: Using noise encryption: YES
[11:37:31][C][mdns:125]: mDNS:
[11:37:31][C][mdns:125]: Hostname: vendriktning-den
[11:37:31][W][component:203]: Component bme68x_bsec2 cleared Warning flag
[11:37:31][D][sensor:099]: 'BME68x IAQ': Sending state 93.54942 IAQ with 0 decimals of accuracy
[11:37:31][D][sensor:099]: 'BME68x CO2 Equivalent': Sending state 857.60931 ppm with 1 decimals of accuracy
[11:37:31][D][sensor:099]: 'BME68x Breath VOC Equivalent': Sending state 1.12493 ppm with 1 decimals of accuracy
[11:37:31][D][sensor:099]: 'BME68x Pressure': Sending state 850.07648 hPa with 1 decimals of accuracy
[11:37:31][D][sensor:099]: 'BME68x Temperature': Sending state 25.00741 °C with 1 decimals of accuracy
[11:37:31][D][sensor:099]: 'BME68x Humidity': Sending state 38.55640 % with 1 decimals of accuracy
[11:37:31][D][text_sensor:069]: 'BME68x IAQ Accuracy': Sending state 'Stabilizing'
[11:37:32][D][api:133]: Accepted 192.168.106.25
[11:37:32][D][api.connection:1570]: Home Assistant 2025.7.3 (192.168.106.25) connected
```
### Additional information
_No response_
dark10
August 2, 2025, 10:52am
919
My Atom S3U was working all the time as esp32-s3-devkitc-1…
After last esphome update (i think) i lost my AC in homeassistant.
This was my working config:
substitutions:
name: esphome-web-18eac9
friendly_name: Haier AC
uart_id: ac_port
esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
platformio_options:
board_build.flash_mode: dio
project:
name: esphome.web
version: '1.0'
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
# Enable logging
logger:
level: DEBUG
# Allow Over-The-Air updates
ota:
- platform: esphome
# Allow provisioning Wi-Fi via serial
#improv_serial:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Optional manual IP
manual_ip:
static_ip: 192.168.1.15
gateway: 192.168.1.1
subnet: 255.255.255.0
# Set up a wifi access point
ap:
ssid: ${friendly_name} " admin"
password: !secret ap_wifi_pass
# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:
#dashboard_import:
# package_import_url: github://esphome/firmware/esphome-web/esp32s3.yaml@main
# import_full_config: true
# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
#esp32_improv:
# authorizer: none
# To have a "next url" for improv serial
#web_server:
# Haier AC
uart:
baud_rate: 9600
tx_pin: 19
rx_pin: 20
id: ${uart_id}
api:
services:
- service: turn_on
then:
- climate.haier.power_on: haier_ac
- service: turn_off
then:
- climate.haier.power_off: haier_ac
climate:
- platform: haier
id: haier_ac
protocol: smartAir2
name: Haier SmartAir2 Climate
uart_id: ${uart_id}
alternative_swing_control: true
wifi_signal: true
visual:
min_temperature: 16 °C
max_temperature: 30 °C
temperature_step: 1 °C
supported_modes:
- 'OFF'
- HEAT_COOL
- COOL
- HEAT
- DRY
- FAN_ONLY
supported_swing_modes:
- 'OFF'
- VERTICAL
# - HORIZONTAL
# - BOTH
supported_presets:
# - BOOST
# - COMFORT
# - AWAY
switch:
- platform: template
id: haier_ac_health_mode
name: Haier SmartAir2 Climate health mode
icon: mdi:leaf
restore_mode: RESTORE_DEFAULT_OFF
lambda: |-
return id(haier_ac).get_health_mode();
turn_on_action:
climate.haier.health_on: haier_ac
turn_off_action:
climate.haier.health_off: haier_ac
- platform: template
id: haier_ac_display_switch
name: Haier SmartAir2 Climate display
icon: mdi:led-on
entity_category: config
restore_mode: RESTORE_DEFAULT_ON
lambda: |-
return id(haier_ac).get_display_state();
turn_on_action:
climate.haier.display_on: haier_ac
turn_off_action:
climate.haier.display_off: haier_ac
maybe to tray something like this?
esp32:
board: m5stack-atom-s3
framework:
type: arduino
EDIT:
This abowe is not solution for my problem.
I will try to downgrade Homeassistant core
dark10
August 2, 2025, 3:01pm
920
I have esphome in docker and after i downgrade my docker container to esphome:2025.6.3 and after I update my board from that esphome version I can again control my AC.
My Homeassistant is:
* Installation method Home Assistant OS
* Core 2025.7.4
* Supervisor 2025.07.2
* Operating System 16.0
* Frontend 20250702.3