TCL & Kältebringer Split-Klimaanlagen lokal steuern – smart mit ESP32 & Home Assistant, ganz ohne Tuya oder Cloud

wie ich das angeschlossen habe kannst du weiter oben im thread sehen.

esphome:
  name: tcl-klimaanlage
  friendly_name: TCL-Klimaanlge

esp32:
  board: az-delivery-devkit-v4

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxx="

ota:
  platform: esphome
  password: "xxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Test1 Fallback Hotspot"
    password: "xxx"

captive_portal:

substitutions:
  device_name: Splitanlage_TCL_ESPmini
  humanly_name: Splitanlage TCL (ESPmini)
  uart_rx: GPIO18
  uart_tx: GPIO16
  receive_led: GPI26
  transmit_led: GPI27

packages:
  remote_package:
    url: https://github.com/sorz2122/tclac.git
    ref: master
    files:
      - packages/core.yaml
    refresh: 30s
1 „Gefällt mir“

Ich war jetzte einige Zeit nicht da, hier ist ja richtig was los.

Wie oben schonmal geschrieben, ist es recht sinnvoll den Web-Server auf dem ESP mit zu instalieren, wenn dann könnt Ihr viel mehr sehen und kommt so evtl. auch den Problemen auf den Grund.
Ihr könnt dann die Web-Oberfläche des ESPs über dessen IP erreichen und auf der auf der rechten Seite ist ein Log zu sehen, mit allem was gerade passiert. Ihr könnt z. B. auch sehen, ob die Kommunikation mit der AC-Anlage funktioniert.
Ich persönlich finde das recht hilfreich. außerdem lasst sich die AC darüber dann auch steuern, falls HA mal ausgefallen sein sollte.

web_server:
port: 80

2 „Gefällt mir“

Hi goldrapper1987,

falls es für dich interessant ist, hier noch mal meine YAML-Datei für den ESP32 DEVKIT V1

esphome:
  name: splitanlage-ac
  friendly_name: Splitanlage AC

esp32:
  board: esp32dev
  framework:
    type: arduino

logger:

api:
  encryption:
    key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX="

ota:
  password: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  ap:
    ssid: "Splitanlage-EG-Esp"
    password: "!Go2theFallback!"

web_server:
  port: 80    

captive_portal:
    
substitutions:
  device_name: Splitanlage_AC
  humanly_name: Splitanlage AC
  uart_rx: GPIO3
  uart_tx: GPIO1

packages:
  remote_package:
    url: https://github.com/sorz2122/tclac.git
    ref: master
    files:
      - packages/core.yaml
    refresh: 30s


1 „Gefällt mir“

Ja, da hast du echt mal was losgetreten. Richtig schöne Lösung. Ich habe jetzt auch nochmal den webserver aktiviert und 2025.7.0 firmware. Alles läuft blendend.

1 „Gefällt mir“

Hallo aezaekiel,
von wann ist deine Anlage?


Bevor ich zu der ESP32 und GitHub Lösung gekommen bin, hatte ich schon andere Versuch gemacht darunter auch einen mit folgender Lösung: https://smlight.tech/product/slwf-01/
Wenn Du auf der Seite etwas nach unten gehst, dann sind da Fotos einer Anlage, deren WiFi-Modul, bzw. Anschluss, so aussieht wie das deine.
Bei den Kältebringer- und TCL-Anlagen habe ich habe ich dann herausgefunden, dass sie andere Belegung an dem WiFi-Modul haben als das SLWF-01 pro Modul. Die YAML-datei und alles was Du benötigst findest Du auf der Seite, wie oben angegeben.
Da ich das SLWF-01 pro Modul von meinem Versuch noch habe, kann ich es dir gerne für einen Test zur Verfügung stellen. schreib mir bitte eine persönliche Nachricht, wenn Du daran interessiert bist.

Viele Grüße, Hain

1 „Gefällt mir“

Danke, esp32 hat bei mir auch nicht geklappt. Habe jetzt einen esp8266 genommen mit der config von der original Seite damit klappt es jetzt.

1 „Gefällt mir“

Klasse, freut mich :grinning:

Heute die R290 Single Split von Kältebringer verbaut. Wifi-modul sieht exakt so aus wie bei aezaekiel
Leider habe ich diese bisher nicht mit einem esp8266 zum laufen bekommen. Ich hatte gehofft das mit dem SLWF-01 integriert zu bekommen, aber leider klappt das nicht. ESP hat Strom (über den USB-A-Port des Geräts) und läuft, aber die Kommunikation klappt nicht. Ich habe auch mal RX und TX zumindest via Config vertauscht, half auch nicht. Ich bin kein Vollprofi was die ESPs betrifft, RX<->TX vertauschen geht schon, richtig?
Ich denke wenn das so nicht klappt würde mich auch der slwf-01pro nicht weiter bringen oder? Mich irritiert nur, dass die Bilder dort genau das Modul so zeigen wie es verbaut ist. Macht der slwf-01pro etwas anders?
Vielen Dank für jede Form von Idee / Tipp :slight_smile:

Update:
Aderbruch im Kabel gehabt o.O jetzt geht es, aber ist vergleichsweise begrenzt im Umfang und (muss das morgen noch genauer testen) ich hatte das Gefühl, dass es buggy ist. Also die Kombinationen nicht alle passen. Was mich etwas stört: im Auto Heat/Cool lässt sich (auch via Fernbedienung) die Lüfterdrehzahl nicht anpassen. Die ist dann auch automatisch auf Auto, oder Silent, wenn man Fan lange genug drückt (was nicht über den ESP zu funktionieren scheint).

Moin…
Ich denke das das per Configuration nicht funktioniert.
Da ja die Pins
GPIO01 TX / GPIO03 RX
auf der Platine exakt so beschriftet sind…
Die wirst du schon Hardware mäßig tauschen müssen…

Immer TX - RX Verbindung…
TX sendet die Daten
RX empfängt die Daten

Ja, wobei die Pins ja als “General IO” nutzbar sind und somit theoretisch der mit TX gekennzeichnet Pin RX sein kann und anders herum. Wie es auch sei, es funktioniert nun ja und ich schaue mir das jetzt mal über eine Zeit an.

1 „Gefällt mir“

Moin cloudysky
willkommen im Club :grinning:
Das hört sich ja wirklich klasse an und es freut mich, dass es dir gelungen ist deine neue Kältebringer Anlage nun steuern zu können.
Kannst Du bitte für alle noch mal kurz beschreiben was Du genau gemacht. Sicherlich wird es einige User interessieren, da Kältebringer ja offenbar Änderungen gemacht hat.
Viele Grüße, Hain

Hi zusammen.
Kurz zur Info: Ich habe eine “neue” Kältebringer Trio-Klima-Split (vll. 4 Wochen). Ich habe jetzt nach weiterer Recherche den folgenden Thread (Midea branded AC’s with ESPhome (no cloud) - ESPHome - Home Assistant Community) gefunden, mit dem ich es geschafft habe den ESP per 4xJumper-Kabel direkt an den 4-Pin-Anschluss anzuschließen und zu steuern!

Jetzt muss ich das nurnoch sauber angelötet bekommen und dann sollte das laufen.

Danke für eure Hilfe und Gruß,
Aezaekiel

UPDATE auf Anfrage von @Traktorist:
Das hier ist meine funktionierende ESPHome Konfiguration (für meinen ESP8226 D1 Mini):

esphome:
  name: ${node_name}
  comment: ${friendly_node_name}

esp8266:
  board: esp01_1m

substitutions:
  node_name: ac-buero #unique name.
  node_id: ac_buero    #unique id.
  friendly_node_name: "AC Buero"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: ${node_name} " FB"
    password: "TopSecretPassword"

captive_portal:

# Enable Home Assistant API
api:
  encryption:
    key: "key" # Optional in case set on HA esphome addon

# Enable Over The Air updates
ota:
  - platform: esphome
    password: "OTAKey"

# Disable logging
logger:
  baud_rate: 0
  logs:
    sensor: ERROR
    duty_cycle: ERROR
    binary_sensor: ERROR
    light: ERROR

# Optional, Enable Web server; start internal webserver so it can be used stand-alone
web_server:
  port: 80

# Optional, Sync time with Home Assistant.
time:
  - platform: homeassistant
    id: ${node_id}_homeassistant_time

# Binary Sensors.
binary_sensor:
  - platform: status
    name: ${friendly_node_name} Connection Status
    id: ${node_id}_connection_status

# Sensors.
sensor:
  - platform: uptime
    name: Uptime Sensor
    id: ${node_id}_uptime_sensor
    icon: mdi:clock-start
    update_interval: 60s
  - platform: wifi_signal
    name: ${friendly_node_name} WiFi Signal
    id: ${node_id}_wifi_signal
    update_interval: 60s
  - platform: template
    name: ${friendly_node_name} fan mode
    id: ${node_id}_fan_mode
    internal: true
    update_interval: 10s
    lambda: !lambda |-
      if (id(${node_id}_my_climate).fan_mode == 2)
      {
        if (id(${node_id}_select_fan_mode).state != "Auto")
        {
          auto call = id(${node_id}_select_fan_mode).make_call();
          call.set_option("Auto");
          call.perform();
        }
      }
      else if (id(${node_id}_my_climate).fan_mode == 3)
      {
        if (id(${node_id}_select_fan_mode).state != "Low")
        {
          auto call = id(${node_id}_select_fan_mode).make_call();
          call.set_option("Low");
          call.perform();
        }
      }
      else if (id(${node_id}_my_climate).fan_mode == 4)
      {
        if (id(${node_id}_select_fan_mode).state != "Medium")
        {
          auto call = id(${node_id}_select_fan_mode).make_call();
          call.set_option("Medium");
          call.perform();
        }
      }
      else if (id(${node_id}_my_climate).fan_mode == 5)
      {
        if (id(${node_id}_select_fan_mode).state != "High")
        {
          auto call = id(${node_id}_select_fan_mode).make_call();
          call.set_option("High");
          call.perform();
        }
      }
      return id(${node_id}_my_climate).fan_mode;

# Text Sensors.
text_sensor:
  - platform: version
    name: ${friendly_node_name} ESPHome Version
    id: ${node_id}_esphome_version    
  - platform: wifi_info
    ip_address:
      name: ${friendly_node_name} IP Address
      id: ${node_id}_ip_address
      icon: mdi:ip-network

# Select.
select:
  - platform: template
    name: "Fan mode"
    id: ${node_id}_select_fan_mode
    icon: mdi:fan
    optimistic: true
    options:
      - Auto
      - Low
      - Medium
      - High
    on_value:
      then:
        - lambda: |-
            auto call = id(${node_id}_my_climate).make_call();
            call.set_fan_mode(x.c_str());
            call.perform();

# Switches.
switch:
  - platform: restart
    name: ${friendly_node_name} Restart
    id: ${node_id}_restart
    icon: "mdi:restart"
  - platform: shutdown
    name: ${friendly_node_name} Shutdown
    id: ${node_id}_shutdown
  - platform: safe_mode
    name: ${friendly_node_name} Restart (Safe Mode)"
    id: ${node_id}_safe_mode
  - platform: template
    name: ${friendly_node_name} Beeper
    icon: mdi:volume-source
    id: ${node_id}_beeper
    restore_mode: RESTORE_DEFAULT_OFF
    optimistic: true
    turn_on_action:
      midea_ac.beeper_on:
    turn_off_action:
      midea_ac.beeper_off:

# Define UART pinout 
uart:
  tx_pin: 1
  rx_pin: 3
  baud_rate: 9600

climate:
  - platform: midea
    id: ${node_id}_my_climate   # Use a unique id
    name: ${node_name}          # Use a unique name

# Optional settings overrides.
    period:  2s                        # Optional
    timeout: 4s                       # Optional
    num_attempts: 3              # Optional
    visual:                              # Optional
      min_temperature: 17 °C    # min: 17
      max_temperature: 30 °C    # max: 30
      temperature_step: 0.5 °C  # min: 0.5
    
    #autoconf=true
    # All capabilities in the section below are detected when autoconf = true:
    supported_modes:    
      - FAN_ONLY
      - HEAT_COOL
      - COOL
      - HEAT
      - DRY
    custom_fan_modes:
      - SILENT
      - TURBO
    supported_presets:  # All capabilities in this section detected by autoconf.
      - ECO
      - BOOST
      - SLEEP
    custom_presets:     # All capabilities in this section detected by autoconf.
      - FREEZE_PROTECTION
    supported_swing_modes:
      - VERTICAL
      - HORIZONTAL
      - BOTH
    outdoor_temperature:  # Optional. Create outdoor unit temperature sensor (may display incorrect values after long inactivity).
      name: "Temp"
    power_usage:          # Optional. Create power usage sensor (only for devices that support this feature).
      name: "Power"
    humidity_setpoint:    # Optional. Create indoor humidity sensor.
      name: "Humidity"`Vorformatierter Text`

Angeschlossen ist er wie folgt (am Board von Oben nach Unten):

Kabel/Klemme Anschluss am D1 Mini
SCHWARZ GND
GRAU/BRAUN TX
GELB/ORANGE RX
ROT 5v

Vermutlich waren in meinem ersten Versuch TX und RX vertauscht oder die Konfiguration falsch.
Ich hoffe, das hilft dem Ein oder Anderen hier.

4 „Gefällt mir“

Hallo zusammen,

ich finde dieses Thema total spannend und habe nun offenbar das gefunden was ich brauche. Dazu muss ich sagen, dass ich Anfänger in der Materie bin und etwas ausführlichere Erklärungen brauche.
Vor Kurzem habe ich drei Kältebringer Split Klimaanlagen installiert bekommen und ich würde sie gerne auch unabhängig von einer Cloud über Home Assistant bedienen können. In HA habe fummele ich mich gerade rein.
@Aezaekiel bitte beschreibe doch mal was Du nun genau gemacht hast, ich bin mir da etwas unsicher.
Welchen ESP32 hast Du genommen, welchen YAML-Code und welches Kabel geht an welchen Pin des ESP32. Vielleicht hast Du ja auch davon noch ein Foto. Wie die Kabel auf die Platine der Anlage gehen ist ja dank des Fotos gut zu sehen.

Ich wäre dir sehr dankbar, wenn Du deine Lösung hier zeigen würdest.

Beste Grüße, der Traktorist :tractor:

Hallo, mal etwas Offtopic an diejenigen die ne TCL Klima haben, brummt die bei euch im Standby auch? Habe eine TAC-12CHSD/XA21. Also wie Spulen fiepen vom PC-Netzteil her? Erst wenn ich sie über die Sicherung komplett stromlos mache ist Ruhe.

Grüße

Nein, meine anlagen sind alle ruhig und so kenne ich es auch nur.

1 „Gefällt mir“

Danke für die Info, dann nehme ich das Teil mal auseinander.

Hi, ich benutze einen ESP 32C3 Super Mini, der so aussieht wie der von dir verwendete Controller. Bin aber noch etwas am struggeln, habe zB Probleme mit der WLAN Verbindung,…
Kannst du Deine verwendete config hier teilen? Vielen Dank!

@aezaekiel Vielen Dank, nun ist mir die Sache klar.
Ich werde es in ein paar tagen mal ausprobieren und berichten.

Auch wenn ich hier gerade nicht angesprochen war, hier meine YAML für den ESP32-C3 Super Mini:

esphome:
  name: splitanlageesp-c3mini
  friendly_name: Splitanlage (ESP-C3mini)

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  ap:
    ssid: "Splitanlage-ESP-C3mini"
    password: "xxxxxxxxxx"

web_server:
  port: 80

captive_portal:

substitutions:
  device_name: Splitanlage_ESPmini
  humanly_name: Splitanlage (ESPmini)
  uart_rx: GPIO3
  uart_tx: GPIO1
  receive_led: GPIO6
  transmit_led: GPIO4

uart:
  tx_pin: GPIO21
  rx_pin: GPIO20
  baud_rate: 9600

packages:
  remote_package:
    url: https://github.com/sorz2122/tclac.git
    ref: master
    files:
      - packages/core.yaml
    refresh: 30s
2 „Gefällt mir“

Vielen Dank - hat zumindestens kurzzeitig mal funktioniert, allerdings ist die Verbindung zum WLAN super instabil. ggf. wechsle ich auch auf einen anderen ESP.