Fujitsu AC (heat pump) integration via ESPHome [ESP32]

Many thanks to the community! After reading a lot and realizing that the last feasible way to make this project work was through Omniflux Halcyon, I followed the steps described there — and it worked on the very first try!

Honestly, thank you so much. I haven’t needed to ask any questions so far, but I really appreciate the effort and dedication of everyone who contributes to this forum.

I was about to buy two IntesisBox units, so you’ve probably helped me save around €400 — truly grateful!

Hey Nathan,

I can’t PM you as well, but I’d be keen to take 3 of them off your hands once they arrive

I also can’t send a PM but would be keen to buy a board off you. Cheers

@nathansags I can’t DM either but which country?

There is a change in ESPHome 2025.10.0 that affects how data is received at lower baud rates - https://github.com/esphome/esphome/pull/8103.

If you are using the esphome-fujitsu-halcyon or esphome-fujitsu-dmmum components you will need to make an adjustment to your uart component to restore the old behavior.

uart:
  rx_full_threshold: 120
1 Like

I started to reverse engineer the UART protocol for Fujitsu Airstage units (the protocol used between the air handler and the official UTY-TFSXJ4 WiFi dongle). Since ha_airstage is working pretty great locally with the official dongle, I’m not sure I’ll continue building my own ESPHome integration, but I wanted to share what I learned in case anyone wants to pick up the trail.

The UART seems to be 9600 baud, 8 bit + 1 stop bit, no parity, inverted signal. Logic analyzer captures are in the captures dir. Everything else is a GPT5 vibe-coded interpreter for those captures (and at first glance the interpretation seems very sane!)

Looks the same protocol as i made an integration

1 Like

That’s great news!

I tried briefly to hook up your project but wasn’t getting any communication from the air handler. Maybe something wrong with my level shifter setup. Interestingly for me I noticed that with the real WiFi unit one line is logic level 5V and the other is 3.3V. If I do any further investigation I’ll chime in on your thread.

I looked again to your captures, and possible, that I made my statement too early. Bytes sequence look a bit differently.

Can you upload at least one .sal file (for example turn off.sal)? Because I can not load these .sal.csv to salae app.

Done! I went ahead and committed them all to the repo.