Skip to content

ESPHome Component for Daikin Mini-Splits using the S21 serial port.

License

Notifications You must be signed in to change notification settings

joshbenner/esphome-daikin-s21

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

esphome-daikin-s21

ESPHome component to control Daikin indoor mini-split units with s21 ports.

Many thanks to the work by revk on the fantastic Faikin project, which was the primary inspiration and guide for building this ESPHome component.

Features

  • Setpoint temperature.
  • Climate modes COOL, HEAT, DRY, FAN, and HEAT_COOL.
  • Fan modes auto and 1-5.
  • Swing modes horizontal, vertical, and both.

Sensors:

  • Inside temperature (usually measured at indoor air handler return)
  • Outside temperature (outside exchanger)
  • Coil temperature (indoor air handler's coil)
  • Fan speed

Limitations

  • This code has only been tested on ESP32 pico.
  • Does not detect nor support powerful, econo, quiet modes.
  • Does not support comfort or presence detection features on some models.
  • Does not interact with the indoor units schedules (do that with HA instead).

Hardware

S21 Port

NOTE: The Daikin S21 port provides >5V, so if you intend to power your board on this pin, be sure to test its output and regulate voltage accordingly.

On my Daikin units, the S21 port has the following pins:

  • 1 - Unused
  • 2 - TX (5V)
  • 3 - RX (5V)
  • 4 - VCC (>5V!!)
  • 5 - GND

The S21 plug is JST EHR-5 and related header B5B-EH-A(LF)(SN), though the plug pins are at standard pin header widths.

PCB

I've been using the board designed by revk available here. Note that revk's design includes a FET that inverts the logic levels on the ESP's RX pin, which required using two separate UART devices to get around an ESPHome limit on having pins inverted differently.

Configuration Example

logger:
  baud_rate: 0  # Disable UART logger if using UART0 (pins 1,3)

external_components:
  - source: github://joshbenner/esphome-daikin-s21@main
    components: [ daikin_s21 ]

uart:
  - id: s21_uart
    tx_pin: GPIO1
    rx_pin: GPIO3
    baud_rate: 2400
    data_bits: 8
    parity: EVEN
    stop_bits: 2

# The base UART communication hub.
daikin_s21:
  tx_uart: s21_uart
  rx_uart: s21_uart

climate:
  - name: My Daikin
    platform: daikin_s21
    visual:
      temperature_step: 1.0
    # Optional HA sensor used to alter setpoint.
    room_temperature_sensor: room_temp  # See homeassistant sensor below

# Optional additional sensors.
sensor:
  - platform: daikin_s21
    inside_temperature:
      name: My Daikin Inside Temperature
    outside_temperature:
      name: My Daikin Outside Temperature
    coil_temperature:
      name: My Daikin Coil Temperature
    fan_speed:
      name: My Daikin Fan Speed
  - platform: homeassistant
    id: room_temp
    entity_id: sensor.office_temperature
    unit_of_measurement: °F

Here is an example of how daikin_s21 can be used with one inverted UART pin:

uart:
  - id: s21_tx
    tx_pin: 26
    baud_rate: 2400
    data_bits: 8
    parity: EVEN
    stop_bits: 2

  - id: s21_rx
    rx_pin:
      number: 27
      inverted: true
    baud_rate: 2400
    data_bits: 8
    parity: EVEN
    stop_bits: 2

daikin_s21:
  tx_uart: s21_tx
  rx_uart: s21_rx