Contexte & Objectif
Les climatiseurs Airton et Teknopoint utilisent en grande partie le module ACW02 de Tuya pour contrôler les unités intérieures des climatiseurs.
Toutefois, l’intégration Tuya ou Tuya Local, bien qu’elle permette un certain contrôle de ces appareils dans Home Assistant, reste dépendante du cloud chinois de Tuya. De plus, l’intégration peut s’avérer complexe pour une entité climatique avancée.
En disposant du module ACW02 officiel, j’ai sniffé la communication UART entre celui-ci et la climatisation afin de recréer un module complet, 100 % local et sans cloud, grâce à ESPHome.
Matériel (BOM) & Schéma de câblage
Le projet utilise :
-
ESP32 D1 Mini WROOM 32 ou LOLIN ESP32 C3 mini ou XIAO C3 ou XIAO C6
-
Pololu D24V10F5 (alimentation)
-
Convertisseur logique bidirectionnel, 2 options disponibles (pour la communication UART, car les climatiseurs utilisent du 5V):
- Convertisseur logique bidirectionnel 4 canaux CYT1076
-
Convertisseur logique basé sur le SN74LVC2T45DCUR, afin d’avoir une carte plus fiable (gerber, BOM et pick and place dispo sur mon github)
-
Connecteurs JST XA 2.5
Voici le schéma de base pour ESP32 D1 MINI WROOM 32 :
Voici le schéma de base pour LOLIN C3 MINI, XIAO C3 et XIAO C6 :
J’ai également créé un PCB pour ESP32 D1 MINI WROOM 32 (il y a 2 version du PCB) pour simplifier le montage ainsi que des fichiers 3D pour le boîtier :
-
Une v1.0 (fonctionnel)
-
Une v1.1 avec une zone sans cuivre sous l’antenne ESP32 (fonctionnel mais aucun gains notable de dBm sur le wifi)
J’ai également créé un autre PCB pour les lolin C3 mini, xiao c3 et xiao c6 :
Je fournis aussi le YAML complet :
- en version française et anglaise, compilable en local
version fr :
substitutions:
dev_name: acw02-salon
dev_friendly: ACW02 salon
lang: "fr"
api_encrypted_key: "D2oldc0VP++fni6src89tCSC0UwBhNPgyc8vgYN8/mA="
ota_password: "REPLACE_WITH_YOUR_PASSWORD"
ap_password: "fallbackpassword"
web_server_username: admin
web_server_password: admin
# ESP32 D1 mini WROOM 32
board: esp32dev
TX: GPIO17
RX: GPIO16
## LOLIN ESP32 C3 MINI
# board: lolin_c3_mini
# TX: GPIO21
# RX: GPIO20
## XIAO (seeeds studio) ESP32 C3
# board: seeed_xiao_esp32c3
# TX: GPIO21
# RX: GPIO20
## XIAO (seeeds studio) ESP32 C6
# board: seeed_xiao_esp32c6
# TX: GPIO16
# RX: GPIO17
acw02_ref: main
esphome:
name: ${dev_name}
friendly_name: ${dev_friendly}
platformio_options:
build_flags:
- -DDLOCALE_LANG=\"${lang}\"
- -DDBOARD=\"${board}\"
esp32:
board: ${board}
framework:
type: esp-idf
web_server:
port: 80
auth:
username: ${web_server_username}
password: ${web_server_password}
version: 3
log: true
local : true
include_internal: true
logger:
level: INFO
api:
encryption:
key: ${api_encrypted_key}
reboot_timeout: 0s #in test for not forcing using esphome native
ota:
- platform: esphome
password: ${ota_password}
- platform: web_server
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
power_save_mode: none
# networks:
# - ssid: !secret wifi_ssid
# password: !secret wifi_password
# - ssid: !secret wifi_ssid2
# password: !secret wifi_password2
# - ssid: !secret wifi_ssid3
# password: !secret wifi_password3
ap:
ssid: ${dev_friendly}
password: ${ap_password}
mqtt:
broker: ""
username: ""
password: ""
enable_on_boot: false
discovery: false
keepalive: 30s
log_topic: null
clean_session: false
idf_send_async: false
wait_for_connection: false
topic_prefix: ${dev_name}
birth_message:
topic: ${dev_name}/status
payload: online
will_message:
topic: ${dev_name}/status
payload: offline
captive_portal:
uart:
id: uart_acw02
tx_pin: ${TX}
rx_pin: ${RX}
baud_rate: 9600
stop_bits: 1
rx_buffer_size: 1024
external_components:
- source:
type: git
url: https://github.com/devildant/acw02_esphome
ref: ${acw02_ref}
packages:
acw02_entities: github://devildant/acw02_esphome/components/acw02/acw02_fr.yaml@${acw02_ref}
acw02:
id: ac_ctrl
uart_id: uart_acw02
- ainsi qu’une version directement utilisable dans ESPHome Builder sur Home Assistant
Ressources
Tous les fichiers sont disponibles sur mon GitHub :
-
fichiers 3D
-
BOM
-
Gerber
-
etc.
voici mon github:
QRCODE generator
En complément, je fournis un générateur de QRCODE (le qrcode est générer a partir du yaml choisi), afin de l’imprimer et le placer sur le module en cas d’oublie des identifiants
Photo coté HA
Note :
Attention le module n’est pas compatible avec les AC qui utilise le module officiel 409945 (mais compatible avec les models qui utilise le module officiel 409729)
Les unites incompatiblr que j’ai trouvé qui utilise se module sont :
- 409942
- 409943
- 409944
Je ne peux pas faire de compatibilité n’ayant ni l’un des climatiseurs ni ce module
après les deux modules semble partager l’hardware, donc si quelqu’un possède ses elements, et est motiver pour faire le reverse engineering uart je serais ravis d’intégrer ca dans la mesure du possible
avec citation bien sur dans la doc
























