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.
- 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
- 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).
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.
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.
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