Daikin + ESP32 + ESPHome = Local Control!

Hello everybody,
I want to share with you this small ESP32 powered board that I designed myself that was inspired by these projects on the web:
https://github.com/revk/ESP32-Faikin

It’s just a tiny board that I installed inside my Daikin aircon and connected to the S21 port.
Loaded with ESPHome code found at https://github.com/joshbenner/esphome-daikin-s21 it allows full local control over my aircon like everyone of us like.

I also connected standard I2C BME280 and CCS811 modules to get more data and a bunch of IR led to control devices in the room.
The IR led are driven by a transistor on the cathode, while the anode is connected to the main S21 power supply through a resistor to limit the current flow ( the only through hole resistor in the picture ).
The position of the inside aircon unit is just perfect for the scope because can beam ir signals all around.
A footprint for an IR receiver is available, but I was not confident with drilling the aircon plastic chassis, so in the end I didn’t use it.

The board is connected to the S21 port with the correct JST connector, that provides supply and proper level shifting will prevent damage to the ESP.

Onboard general purpose blue led available and standard programming port for the ESP32.

There is also an NTC on the board because my original idea was to avoid any BME280, but I connected it to GPIO14 of the ESP, that can not be used as analog input with ESPHome…my fault of doing things before reading.

Some pictures of the installation where you can see how tiny is the board; I used some double side scotch tape to stick in this position so I can always have a look at it by just opening the front cover.

The final result is very clean and finally another device is cloud free.

I got 5 pieces with 5 JST cables, but I just need two of them.

If somebody from Italy is interested to get one just contact me in pm and we will find a solution, I will be happy to free others Daikin aircons from the cloud!!

Best Regards

4 Likes

What an amazing job! I am a beginner with ESP (just finished my first project: a D1 mini based LUX-meter in Home Assistant (#proud) and would like to add my Daikin in HA. I am not in Italy (currently), but would like to take your project as an inspiration. I have a Daikin FTXP35 but don’t have the Wifi module. Is that required for this setup or can I just connect your solution to the S21 port?

if your split has the S21 port, it’s likely gonna work. No need for the wifi module at all
you can find a lot of different works on s21 port, here on github, honestly you would not even need a JST cable to connect (i used plain dupont cables to connect a common esp8266 mini)

Edit:
check here

1 Like

Hmmm… mine is a Daikin Comfora, looking in the compatibility list it seems to be a bit troublesome due to power supply. Gonna have to read a bit deeper into this.

it doesn’t seem a power supply issue, probably you just need to use open drain output (mine works with 3.3V logic level, so can’t assure you)

I used this github code with board ESP32-C3 Supermini. My heatpump is FTXS serries, When set mode to Auto / HeatCool the heatpump are acknowledge but board show mode : “OFF”. Other mode setting is OK.
Any one have that error ???

Hi @vercellino ,

This is great, thank you for sharing. Would you mind sharing some details about that pcb you designed?

Thank you!

Hi, I’m trying to use an ESP32-C3 Supermini as well. I’ve connected directly to ports 1 and 5 of the S21 to power it with 5V, and ports 20 and 21 of the GPIO for RX and TX communications. Could you tell me what I’m doing wrong? I’m using the esphome-daikin-s21 integration.

[22:36:58][E][uart:015]: Reading from UART timed out at byte 0!
[22:36:58][W][daikin_s21:257]: Timeout waiting for F1 response
[22:36:58][E][uart:015]: Reading from UART timed out at byte 0!
[22:36:58][W][daikin_s21:257]: Timeout waiting for F5 response
[22:36:58][E][uart:015]: Reading from UART timed out at byte 0!
[22:36:58][W][daikin_s21:257]: Timeout waiting for RH response
[22:36:58][E][uart:015]: Reading from UART timed out at byte 0!
[22:36:58][W][daikin_s21:257]: Timeout waiting for RI response
[22:36:58][E][uart:015]: Reading from UART timed out at byte 0!
[22:36:58][W][daikin_s21:257]: Timeout waiting for Ra response
[22:36:58][E][uart:015]: Reading from UART timed out at byte 0!
[22:36:58][W][daikin_s21:257]: Timeout waiting for RL response
[22:36:58][E][uart:015]: Reading from UART timed out at byte 0!
[22:36:58][W][daikin_s21:257]: Timeout waiting for Rd response
[22:36:58][W][component:232]: Component daikin_s21 took a long time for an operation (899 ms).
[22:36:58][W][component:233]: Components should block for at most 30 ms.

I don’t used pin 1 on S21 connector. My wiring as follow:

  • PIN 4, 5 → DC-DC buck → PIN Gnd, VCC on ESP32-C3
  • PIN 2, 3–> Shift Level → PIN 20,21 on ESP32-C3

Yes, I also used pins 4 and 5 with a Mini 560, but for some reason, I couldn’t achieve a 5V output. However, when I tested it with a 9V battery, it worked. That’s why I opted for pin 1.
Is really necessary a level shifter?

My setting:

....
uart:
  - id: s21_uart
    tx_pin: GPIO20
    rx_pin: GPIO21
    baud_rate: 2400
    data_bits: 8
    parity: EVEN
    stop_bits: 2
...

S21 connector:
Pin2 (TX) → HV1( Shifter) → LV1( Shifter) → GPIO20
Pin3 (RX) → HV2( Shifter) → LV2( Shifter) -->GPIO21

Can you check mode HeatCool ?

Checked and it does not work properly. The problem is that when you activate it, the HVAC works, but on the frontend of HA, it shows as OFF

If you don’t want to buy/order a ‘special’ pcb, it can be done with off-the-shelf parts as well:
M5stamp + Dc-Dc 5V output + Levelshifter 5V-3V3 + a little soldering and heat shrink tubing.
Configure ESPHome with pins: RX 32 and TX 33 and S21 2 green - 3 yellow - 4 red - 5 black


I am trying figure out if I could get Faikin working on this setup with a non-standard pinout.

Other direction that can also go ‘real Faikin’ software: