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