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

Initialization stage (0/4) indicates an issue. Can you share the logs from your ESP device? (ESPHome Builder -> [Device] -> Logs -> Wirelessly -> [Wait 10 seconds] -> Download Logs)

@Mully-1 The yaml configuration you posted does not work without custom component support which was remove from ESPHome last February. All current yaml configuration examples will have an external_components: line.

Can you try this configuration - you will need to update the ssid and password lines.

substitutions:
  device_name: halcyon-controller
  friendly_name: Halcyon Controller
  device_description: nathansags ESP32-C3 LIN Transceiver Board
  esp_board: esp32-c3-devkitm-1

wifi:
  ssid: "my wifi ssid"
  password: "my wifi password"

  ap:
    ssid: "Fujitsu ESP Recovery"
    password: "my wifi password"

  on_connect:
    then:
    - switch.turn_on: wifi_led

  on_disconnect:
    then:
    - switch.turn_off: wifi_led

web_server:
  port: 80

captive_portal:

logger:
  level: DEBUG

external_components:
  - source: github://Omniflux/esphome-tzsp
  - source: github://Omniflux/esphome-fujitsu-halcyon

esphome:
  name: ${device_name}
  friendly_name: ${friendly_name}
  comment: ${device_description}

esp32:
  board: ${esp_board}
  framework:
    type: esp-idf

api:

ota:
  - platform: esphome

button:
  - platform: restart
    name: Restart
  - platform: safe_mode
    name: Restart (Safe Mode)

sensor:
- platform: uptime
  name: "Uptime"

switch:
  - platform: gpio
    pin: GPIO10
    name: "WiFi_LED"
    id: wifi_led

uart:
  tx_pin: GPIO21  # Device dependent
  rx_pin: GPIO20  # Device dependent
  baud_rate: 500
  parity: EVEN
  rx_full_threshold: 120

climate:
  - platform: fujitsu-halcyon
    name: None
    controller_address: 1  # 0=Primary, 1=Secondary

Hey mate, it’s all sorted now. I changed the file but also the pcb board has a surge protector / diod that needed to be removed.

here is the log

I tried a few more things tonight but the problem seems to be the board.

I noticed @arjanr is experiencing the same issue with UART parity errors and he has the same controller and the same board from @nathansags. Although I never get an error on the controller. I tried without the controller connected and the ESP only but that didn’t work, I wasn’t getting any UART errors either.

@nathansags can you share the circuit diagram for your boards?

INFO ESPHome 2025.11.5
INFO Reading configuration /config/esphome/fujitsu-ac-controller.yaml...
INFO Starting log output from 192.168.30.62 using esphome API
INFO Successfully resolved halcyon-controller @ 192.168.30.62 in 0.000s
INFO Successfully connected to halcyon-controller @ 192.168.30.62 in 0.040s
INFO Successful handshake with halcyon-controller @ 192.168.30.62 in 0.033s
[22:48:05.816][I][app:190]: ESPHome version 2025.11.5 compiled on Dec 28 2025, 22:42:08
[22:48:05.818][C][logger:261]: Logger:
[22:48:05.818][C][logger:261]:   Max Level: DEBUG
[22:48:05.818][C][logger:261]:   Initial Level: DEBUG
[22:48:05.821][C][logger:267]:   Log Baud Rate: 115200
[22:48:05.821][C][logger:267]:   Hardware UART: USB_SERIAL_JTAG
[22:48:05.823][C][logger:274]:   Task Log Buffer Size: 768
[22:48:05.825][C][uart.idf:214]: UART Bus 0:
[22:48:05.828][C][uart.idf:215]:   TX Pin: GPIO21
[22:48:05.829][C][uart.idf:216]:   RX Pin: GPIO20
[22:48:05.832][C][uart.idf:219]:   RX Buffer Size: 256
[22:48:05.832][C][uart.idf:219]:   RX Full Threshold: 120
[22:48:05.832][C][uart.idf:219]:   RX Timeout: 2
[22:48:05.834][C][uart.idf:225]:   Baud Rate: 500 baud
[22:48:05.834][C][uart.idf:225]:   Data Bits: 8
[22:48:05.834][C][uart.idf:225]:   Parity: EVEN
[22:48:05.834][C][uart.idf:225]:   Stop bits: 1
[22:48:05.858][C][uptime.sensor:017]: Uptime Sensor 'Uptime'
[22:48:05.858][C][uptime.sensor:017]:   State Class: 'total_increasing'
[22:48:05.858][C][uptime.sensor:017]:   Unit of Measurement: 's'
[22:48:05.858][C][uptime.sensor:017]:   Accuracy Decimals: 0
[22:48:05.859][C][uptime.sensor:027]:   Device Class: 'duration'
[22:48:05.863][C][uptime.sensor:031]:   Icon: 'mdi:timer-outline'
[22:48:05.864][C][uptime.sensor:033]:   Type: Seconds
[22:48:05.867][C][switch.gpio:092]: GPIO Switch 'WiFi_LED'
[22:48:05.867][C][switch.gpio:092]:   Restore Mode: always OFF
[22:48:05.867][C][switch.gpio:029]:   Pin: GPIO10
[22:48:05.879][C][restart.button:015]: Restart Button 'Restart'
[22:48:05.881][C][restart.button:018]:   Icon: 'mdi:restart'
[22:48:05.884][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:05.887][C][safe_mode.button:015]: Safe Mode Button 'Restart (Safe Mode)'
[22:48:05.888][C][safe_mode.button:018]:   Icon: 'mdi:restart-alert'
[22:48:05.904][C][esphome::fujitsu_general_airstage_h_controller:111]: FujitsuHalcyonController 'Halcyon Controller'
[22:48:05.905][C][esphome::fujitsu_general_airstage_h_controller:112]:   Controller Address: 1 (Secondary)
[22:48:05.908][C][esphome::fujitsu_general_airstage_h_controller:113]:   Remote Temperature Controller Address: 0 (Primary)
[22:48:05.911][C][esphome::fujitsu_general_airstage_h_controller:017]:   Remote Temperature Controller Sensor 'Remote Temperature Sensor'
[22:48:05.911][C][esphome::fujitsu_general_airstage_h_controller:017]:     State Class: 'measurement'
[22:48:05.911][C][esphome::fujitsu_general_airstage_h_controller:017]:     Unit of Measurement: '°C'
[22:48:05.911][C][esphome::fujitsu_general_airstage_h_controller:017]:     Accuracy Decimals: 0
[22:48:05.914][C][esphome::fujitsu_general_airstage_h_controller:027]:     Device Class: 'temperature'
[22:48:05.916][C][esphome::fujitsu_general_airstage_h_controller:117]:   Ignore Lock: NO
[22:48:05.920][C][esphome::fujitsu_general_airstage_h_controller:118]:   Standby Mode: ACTIVE
[22:48:05.921][C][esphome::fujitsu_general_airstage_h_controller:133]:   Filter Timer: OK
[22:48:05.925][C][esphome::fujitsu_general_airstage_h_controller:698]: ClimateTraits:
[22:48:05.926][C][esphome::fujitsu_general_airstage_h_controller:699]:   Visual settings:
[22:48:05.926][C][esphome::fujitsu_general_airstage_h_controller:699]:   - Min temperature: 16.0
[22:48:05.926][C][esphome::fujitsu_general_airstage_h_controller:699]:   - Max temperature: 30.0
[22:48:05.926][C][esphome::fujitsu_general_airstage_h_controller:699]:   - Temperature step:
[22:48:05.926][C][esphome::fujitsu_general_airstage_h_controller:699]:       Target: 1.0
[22:48:05.930][C][esphome::fujitsu_general_airstage_h_controller:734]:   Supported modes:
[22:48:05.931][C][esphome::fujitsu_general_airstage_h_controller:736]:   - OFF
[22:48:05.934][C][esphome::fujitsu_general_airstage_h_controller:736]:   - HEAT_COOL
[22:48:05.936][C][esphome::fujitsu_general_airstage_h_controller:736]:   - COOL
[22:48:05.939][C][esphome::fujitsu_general_airstage_h_controller:736]:   - HEAT
[22:48:05.941][C][esphome::fujitsu_general_airstage_h_controller:736]:   - FAN_ONLY
[22:48:05.943][C][esphome::fujitsu_general_airstage_h_controller:739]:   Supported fan modes:
[22:48:05.945][C][esphome::fujitsu_general_airstage_h_controller:741]:   - AUTO
[22:48:05.951][C][esphome::fujitsu_general_airstage_h_controller:741]:   - MEDIUM
[22:48:05.951][C][esphome::fujitsu_general_airstage_h_controller:741]:   - HIGH
[22:48:05.954][C][esphome::fujitsu_general_airstage_h_controller:741]:   - QUIET
[22:48:05.955][C][esphome::fujitsu_general_airstage_h_controller:749]:   Supported presets:
[22:48:05.961][C][esphome::fujitsu_general_airstage_h_controller:751]:   - NONE
[22:48:05.962][C][esphome::fujitsu_general_airstage_h_controller:751]:   - ECO
[22:48:05.962][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:05.965][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:05.969][C][wifi:1062]: WiFi:
[22:48:05.969][C][wifi:1062]:   Connected: YES
[22:48:05.969][C][wifi:827]:   Local MAC: 7C:DF:A1:B3:EC:84
[22:48:05.971][C][wifi:834]:   IP Address: 192.168.30.62
[22:48:05.975][C][wifi:838]:   SSID: 'TsunamiIOT'[redacted]
[22:48:05.975][C][wifi:838]:   BSSID: EA:FA:C4:70:71:20[redacted]
[22:48:05.975][C][wifi:838]:   Hostname: 'halcyon-controller'
[22:48:05.975][C][wifi:838]:   Signal strength: -57 dB ā–‚ā–„ā–†ā–ˆ
[22:48:05.975][C][wifi:838]:   Channel: 11
[22:48:05.975][C][wifi:838]:   Subnet: 255.255.255.0
[22:48:05.975][C][wifi:838]:   Gateway: 192.168.30.1
[22:48:05.975][C][wifi:838]:   DNS1: 0.0.0.0
[22:48:05.975][C][wifi:838]:   DNS2: 0.0.0.0
[22:48:05.983][C][esphome.ota:093]: Over-The-Air updates:
[22:48:05.983][C][esphome.ota:093]:   Address: 192.168.30.62:3232
[22:48:05.983][C][esphome.ota:093]:   Version: 2
[22:48:05.986][C][esphome.ota:100]:   Password configured
[22:48:05.987][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:05.995][C][safe_mode:018]: Safe Mode:
[22:48:05.995][C][safe_mode:018]:   Successful after: 60s
[22:48:05.995][C][safe_mode:018]:   Invoke after: 10 attempts
[22:48:05.995][C][safe_mode:018]:   Duration: 300s
[22:48:06.007][C][api:223]: Server:
[22:48:06.007][C][api:223]:   Address: 192.168.30.62:6053
[22:48:06.007][C][api:223]:   Listen backlog: 4
[22:48:06.007][C][api:223]:   Max connections: 8
[22:48:06.009][C][api:235]:   Noise encryption: NO
[22:48:06.015][C][mdns:177]: mDNS:
[22:48:06.015][C][mdns:177]:   Hostname: halcyon-controller
[22:48:06.033][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.102][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.184][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.220][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.258][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.293][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.329][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.365][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.451][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.488][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.524][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.611][D][fujitsu_general::airstage::h::Controller:096][UART_Event]: UART break!
[22:48:06.647][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.668][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.702][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.789][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 08 D8 DC FD 1F A8 2C 4A
[22:48:06.791][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 6C FF 4B 58 FE DC FD 49
[22:48:06.794][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: FD 5B 2C 30 5E 67 6C BD
[22:48:06.797][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 6A FE CB 52 2B 4D 3A 6D
[22:48:06.800][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: FD 76 E6 3A 89 A5 6D 96
[22:48:06.803][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: B5 5B FC FE AD AC FD 69
[22:48:06.806][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: EE 6C FE B5 FE 25 92 FC
[22:48:06.808][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: AB FE 6A FD 2D FE 29 94
[22:48:06.810][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: FF AD 52 FE 69 FC AD FE
[22:48:06.813][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 59 FE FF 5A FA FE D4 5A
[22:48:06.816][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: F3 56 29 4A FD FF DA FC
[22:48:06.819][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.855][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.962][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:06.997][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:07.083][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:07.119][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:07.222][D][fujitsu_general::airstage::h::Controller:096][UART_Event]: UART break!
[22:48:07.259][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:07.296][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:07.329][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:07.350][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:07.434][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:15.933][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.038][D][fujitsu_general::airstage::h::Controller:096][UART_Event]: UART break!
[22:48:16.073][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.094][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.602][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.690][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.725][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.744][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.848][D][fujitsu_general::airstage::h::Controller:096][UART_Event]: UART break!
[22:48:16.883][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:16.907][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:17.784][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:17.870][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:17.973][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.008][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.096][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.182][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.218][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.296][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.323][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.344][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.377][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.464][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.549][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.636][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.673][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.696][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.780][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error
[22:48:18.872][W][fujitsu_general::airstage::h::Controller:116][UART_Event]: UART parity error

I just recently purchased a skid full of Fujitsu ARU12RLF units. So, I have a lot of questions. First, will this work with these units? I have not been able to find information on how this works using an ESP 32. I have a lot of D1 mini ESP 32s. Is there a certain board I need to have? I went ahead and compiled the fujitsu_halcyon.yaml to my D1 mini. It booted up with no errors, but when accessing the IP address, nothing would happen. IP address not found. I could see the IP address on my IP Scanner. But I could not access via a web browser. My question is, not having home assistant, should I be able to access a control panel via a web browser? Sorry I’m not a home assistant user, but wow, there is a lot more information here than anywhere else. I hope you can help me answer some questions and hopefully be able to use these units without purchasing expensive thermostats.

Yes, this works with ARU12RLF. You will need an adapter to convert from the 12 volt LIN bus the Fujitsu units use to the 3V UART connection on the ESP device.

There are several people in this thread who sell prebuilt boards as well as several schematics for assembling your own.

The example yaml is a minimum configuration, try adding

web_server:
  port: 80

Hey Everyone… Anyone who can help me with a controller board ( ready to use :slight_smile: ) for my fujitsu ASYG12KMCC , it seems I need a compatible UTY-TFSXW1 one… I am a tech guy… so maybe I can try something myself. Any help is appreciated ( live in Belgium )

Hi, you can use my project

Thanks @Benas Why do we need the Board (4x6) ? Maybe I overlook it, but don’t see that one in your layout? I might have other questions :slight_smile: order stuff Today.

You need to solder everything on that board. ESP32 on one side, DC/DC converter and logic level shifter on the other.

There is no logic level shifter on these photos, I added it other iterations, but everything else is the same. Do not forget to add logic level shifter, otherwise it wont work (some my AC’s worked without it, but after few months ESP pins gave up).

Also, this enclosure is very tight fit, so try to make PCB dimensions as small as possible. I will replace STL with little bigger dimensions in a future

1 Like

Hi @Mully-1

I’m about to play with the same Controller Unit you soldiered through and got working.

Can you please help me understand which pcb board you’re referring to in your comment (on Nathan’s pcb board, or the Fujitsu Controller pcb?), and which surge protector/diode so I can repeat your success :innocent:

Cheers!

one other question : any url for the box you used to put it in :slight_smile: or did you create it yourself ?

But as I said it barely fits, I will redesign it.
Also there is another topic for my integration :slight_smile:

I would surely be interested in purchasing a made board. I just need to see what it does and can do on a web browser. Would you know if there is a HomeKit compliant ability?

is there a way to view and control outside the network via internet. I got the web interface working. thanks for the info. I don’t understand all the commands and what each value means.

I don’t know anything about HomeKit, but you probably want GitHub - unreality/FujiHK: HomeKit Controller for Fujitsu AirConditioners

For controlling via the internet you would need to use a reverse proxy or VPN if using only ESPHome, or something like Home Assistant or HomeKit.

Hi,

I am also using nathansags board, I have got it setup with this yaml.
I have it showing up in HA but it seems to be read only.
Initialization Stage is 4/4
Looking at the logs there are no TX events, any idea what I should be looking at?
Thanks

I don’t think it can get to stage 4/4 without transmitting…

Can you share the most recent RX lines from your logging?

[13:45:47.565][D][esphome::fujitsu_general_airstage_h_controller:108][UART_Event]: RX: 00 A0 00 09 16 A0 03 20
[13:45:47.789][D][esphome::fujitsu_general_airstage_h_controller:108][UART_Event]: RX: 20 A1 00 09 16 00 3B 00
[13:45:47.791][D][esphome::fujitsu_general_airstage_h_controller:108][UART_Event]: TX: 21 81 00 09 16 20 00 00
[17:35:32.041][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 00 A0 00 A6 13 A0 03 20
[17:35:32.266][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 20 81 00 26 13 00 34 00
[17:35:32.751][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 00 A0 00 A6 13 A0 03 20
[17:35:32.955][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 20 81 00 26 13 00 34 00
[17:35:33.435][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 00 A0 00 A6 13 A0 03 20
[17:35:33.662][D][esphome::fujitsu_general_airstage_h_controller:107][UART_Event]: RX: 20 81 00 26 13 00 34 00

The Fujitsu unit is reporting an error. Can you try capturing the logs while power cycling it?