Hello,
after an extensive search, I finally found a method to integrate my AUX air conditioner into Home Assistant, and I’m happy to share it with you. For about two years, I’ve been using an AUX split air conditioner in my office and have been very satisfied with it. However, one annoyance was that the ACFreedom app could not connect to HA, and the backdoors for retrieving data from Broadlink were too complex for me to implement.
Fortunately, I came across the following repository:
To implement this repository, I made it a bit easier for myself and did not solder anything. The hardware I used includes:
- ESP32 NodeMCU Development Board
- LM7805 Voltage Regulator
- Jumper cables
- Wago clamp
- Plastic box
First, I compiled the YAML and customized it to my needs. It now looks like this:
# Konfiguration für ESPHome mit spezifischen Einstellungen für das Gerät mit der Bezeichnung "AUX Klimaanlage".
substitutions:
name: "TBD"
friendly_name: AUX Klimaanlage
# Hauptkonfiguration für ESPHome, verwendet die oben definierten Substitutionen.
esphome:
name: ${name}
friendly_name: ${friendly_name}
name_add_mac_suffix: false
project:
name: esphome.web
version: '1.0'
# Konfiguration für den ESP32, der auf dem Nodemcu-32s-Board läuft und das Arduino-Framework verwendet.
esp32:
board: nodemcu-32s
framework:
type: arduino
# Aktiviert das Logging auf DEBUG-Ebene und verwendet die Hardware-UART1.
logger:
level: DEBUG
hardware_uart: UART1
# WiFi-Konfiguration, verwendet geheime SSID und Passwort.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Aktiviert den Fallback-Hotspot (Captive Portal), falls die WiFi-Verbindung fehlschlägt.
ap:
ssid: "TBD"
password: "TBD"
# Ermöglicht Over-The-Air-Updates für die Firmware.
ota:
# Ermöglicht die Bereitstellung von WiFi über die serielle Schnittstelle.
improv_serial:
# API-Konfiguration mit Verschlüsselungsschlüssel.
api:
encryption:
key: "TBD"
# Captive Portal ermöglicht die Bereitstellung von WiFi-Anmeldeinformationen über den Hotspot.
captive_portal:
# Importiert ein Dashboard-Paket von GitHub für die Konfiguration.
dashboard_import:
package_import_url: github://esphome/example-configs/esphome-web/esp32.yaml@main
import_full_config: true
# Ermöglicht die Bereitstellung von WiFi-Anmeldeinformationen über Bluetooth LE (nur ESP32).
esp32_improv:
authorizer: none
# Konfiguration des Web-Servers für die Bereitstellung von "nächster URL" für die serielle Bereitstellung.
web_server:
# Externe Komponenten
external_components:
- source:
type: git
url: https://github.com/GrKoR/esphome_aux_ac_component
# Board Konfiguration
uart:
id: ac_uart_bus
# ATTENTION! For TX and RX use GPIO4 (D2) and GPIO5 (D1) for NodeMCU-like boards!
# See docs for details: https://github.com/GrKoR/esphome_aux_ac_component/blob/87f686564e743e3b1d0965a6bbc5780a173abbd1/docs/HARDWARE-EN.md
rx_pin: GPIO16
tx_pin: GPIO17
baud_rate: 4800
data_bits: 8
parity: EVEN
stop_bits: 1
# Klimaanlagen Konfiguration
climate:
- platform: aux_ac
name: ${friendly_name}
id: aux_id
uart_id: ac_uart_bus
period: 7s
show_action: true
display_inverted: false
timeout: 150
optimistic: true
indoor_temperature: # AC Indoor Temperature
name: Innentemperatur
id: ac_indoor_temp
accuracy_decimals: 1
internal: false
outdoor_temperature: # AC Outdoor Temperature
name: Außentemperatur
id: ac_outdoor_temp
internal: false
outbound_temperature: # AC Coolant Outbound Temperature
name: Kühlmittel-Ausgangstemperatur
id: ac_outbound_temp
internal: false
inbound_temperature: # AC Coolant Inbound Temperature
name: Kühlmittel-Eingangstemperatur
id: ac_inbound_temp
internal: false
compressor_temperature: # AC Compressor Temperature
name: Kompressor Temperatur
id: ac_strange_temp
internal: false
display_state: # AC Display State
name: Anzeigestatus
id: ac_display_state
internal: false
defrost_state: # AC Defrost State
name: Abtauzustand
id: ac_defrost_state
internal: false
inverter_power: # AC Inverter Power
name: Wechselrichterleistung
id: ac_inverter_power
internal: false
inverter_power_limit_value: # AC Inverter Power Limit Value
name: Grenzwert Wechselrichterleistung
id: ac_inverter_power_limit_value
internal: false
inverter_power_limit_state: # AC Inverter Power Limit State
name: Wechselrichterleistung Grenzzustand
id: ac_inverter_power_limit_state
internal: false
preset_reporter: # AC Preset Reporter
name: Voreinstellung Reporter
id: ac_preset_reporter
internal: false
vlouver_state: # AC Vertical Louvers State
name: Vertikale Lamellen Zustand
id: ac_vlouver_state
internal: false
visual:
min_temperature: 16
max_temperature: 32
temperature_step: 1
supported_modes:
- HEAT_COOL
- COOL
- HEAT
- DRY
- FAN_ONLY
custom_fan_modes:
- MUTE
- TURBO
supported_presets:
- SLEEP
custom_presets:
- CLEAN
- HEALTH
- ANTIFUNGUS
supported_swing_modes:
- VERTICAL
- HORIZONTAL
- BOTH
After loading this YAML onto the ESP32 with ESPHome, I initially integrated it into Home Assistant. While all entities were visible, they were naturally not reachable.
I then took various jumper cables (Red/Blue/Black/Yellow/Green) and connected them according to the GrKoR repository:
- Green - NodeMCU 5V Pin ➜ LM7805 PIN3 (Output)
- Black (1) - NodeMCU GND Pin ➜ Wago Clamp
- Blue - NodeMCU GPIO16 (RX) ➜ AC TX
- Red - NodeMCU GPIO017 (TX) ➜ AC RX
- Black (2) - LM7805 PIN2 (GND) ➜ Wago Clamp
- Yellow - LM7805 PIN1 (Input) ➜ AC Vcc
- Black (3) - Wago Clamp ➜ AC GND
Now, I’ve integrated everything into HA and was able to add it to my heating control. Next, I’ll add automations for surplus PV, so the air conditioner can start a bit earlier.
I hope this project appeals to some of you and enables you to integrate your air conditioner into HA as well. I would greatly appreciate active discussions here in the forum, and suggestions for improvements are welcome.
Best regards, Joscha