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

Try changing the type to arduino instead of esp-idf. For some reason you can only compile using that right now.

I can’t seem to get my unit connecting to the ESP32 so I can’t check if this works, but it will at least compile. Let us know if yours works with this setup though!

AMAZING!!! i owe you a beer! :beers: this works!! it’s alive!! i have no words…

1 Like

Thanks for this integration @rabbit-aaron! I’ve got it working nicely (despite my poor hardware electronics skills).

I also took the single core branch, updated it with the latest fixes from your master and integrated zone control (each zone and zone group as an individual switch), in the single-core-updated-with-zones
branch of my fork at https://github.com/0xadam/esphome-fujitsu.

I haven’t had anyone else test it out yet, so I’d love to get some feedback if it works for others. Just have a look at the fujutisu.yaml in the repo for how to use it. I’m unsure of my zone controller model but have an AR-WDD1E wall controller.

3 Likes

Thank you so much for investing the time to work out the zone function. I planned on testing it over the weekend, however we had VERY hot temperatures and I didn’t want to risk blowing something up right when I needed the AirCon.

What card are you using to integrate the extra buttons?

Ha, no stress I totally get it. I was also scared of breaking things when playing around with zones.

Am using vertical-stack-in-card from HACS to squash the climate card and tiles for the switches together:

type: custom:vertical-stack-in-card
cards:
  - features:
      - type: target-temperature
      - type: climate-fan-modes
        style: dropdown
      - style: icons
        type: climate-hvac-modes
        hvac_modes:
          - "off"
          - cool
          - heat
    type: tile
    entity: climate.fujitsu
    state_content: state
    features_position: bottom
    vertical: false
  - type: horizontal-stack
    cards:
      - type: tile
        entity: switch.downstairs
        vertical: true
        features_position: bottom
      - type: tile
        entity: switch.master_bedroom
        name: Master
        vertical: true
        features_position: bottom
      - type: tile
        entity: switch.2nd_bedroom
        vertical: true
        features_position: bottom
        name: 2nd Bedroom
      - type: tile
        entity: switch.guest_bedroom
        name: Guest
        vertical: true
        features_position: bottom

1 Like

Thanks again! I’ve got it all connected and it WORKS perfectly. I now have zone control.

1 Like

Really like what you’ve contributed here.

Wanted to get my AC setup into home assistant and was really hoping to get zone control integrated as well.

Just wondering if you could give some more details on how the zone control works in your system.

  • Do you control the zone from within the fujitsu unit?
  • or is it a separate zone controller next to the main unit?

Possibly a picture of your main controller and the associated zone controller might help me figure out if your setup is anything similar to mine. (and if ill have to settle for a more janky zone control solution!)

Thanks in advance!

My main controller isn’t very accessible in the roof space, so I haven’t been able to ascertain the model of it and if there is a separate zone controller, despite trying to have a look. My unit is a bit older so I assume it’s a separate zone control? My wall unit is an AR-WDD1E. If you have the same one it would likely work as I can’t imagine the zone protocol being too different for different controllers.

1 Like

Our indoor units does not have a wired remote just IR remote. can you connect direct to the main PCB or do you need the communication board? (UTY-XCBXZ2) its plugs into the white 9 pin connector

Hi everyone, I hope someone can provide me some help, because I’m completely out of ideas.
I’m in the situation where my esp32 become unaccessible immediately after I install the following code in it:

esphome:
  name: "fujitsuespclim"
  friendly_name: FujitsuESPClim
  includes:
    - FujitsuClimate.h
    - FujitsuClimate.cpp
    - FujiHeatPump.h
    - FujiHeatPump.cpp


esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

web_server:
  port: 80

# Allow Over-The-Air updates
ota:
- platform: esphome

wifi:
  networks:
    ssid: !secret wifi_castro_ssid
    password: !secret wifi_castro_password
  #manual_ip:
  #  static_ip: 192.168.1.102
  #  gateway: 192.168.1.1
  #  subnet: 255.255.255.0
  use_address: 192.168.1.149

   # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Fujitsufallback"
    password: !secret wifi_castro_password

captive_portal:

external_components:
  - source:
      type: git
      url: https://github.com/robertklep/esphome-custom-component
    components: [ custom, custom_component ]

climate:
- platform: custom
  lambda: |-
    auto fujitsuClimate = new fujitsu::FujitsuClimate();
    App.register_component(fujitsuClimate);
    return {fujitsuClimate};

  climates:
    - name: "Fujitsu"

Before the code it works well, but once installed it becomes unavailable, with logs unhelpful:

INFO ESPHome 2025.4.0
INFO Reading configuration /config/esphome/esphome-web-694604.yaml...
INFO Starting log output from 192.168.1.149 using esphome API
WARNING Can't connect to ESPHome API for fujitsuespclim @ 192.168.1.149: Error connecting to [AddrInfo(family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, proto=6, sockaddr=IPv4Sockaddr(address='192.168.1.149', port=6053))]: [Errno 111] Connect call failed ('192.168.1.149', 6053) (SocketAPIError)
INFO Trying to connect to fujitsuespclim @ 192.168.1.149 in the background

Of course since I cannot connect, I also cannot update the code so I have to detach the ESP32 from the pcb, plug USB and start fresh install through ESPhome Wizard Dashboard, then add it to ESPHome in my HA instance and write the modified code (only for my ESP to start becoming unvailable again)

Through the ESP wizard I’m able to see the log tho:

[16:09:17]ets Jul 29 2019 12:21:46
[16:09:17]
[16:09:17]rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:17]configsip: 0, SPIWP:0xee
[16:09:17]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:17]mode:DIO, clock div:2
[16:09:17]load:0x3fff0030,len:1184
[16:09:17]load:0x40078000,len:13132
[16:09:17]load:0x40080400,len:3036
[16:09:17]entry 0x400805e4
[16:09:18][I][logger:171]: Log initialized
[16:09:18][C][safe_mode:079]: There have been 0 suspected unsuccessful boot attempts
[16:09:18][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:18][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:18][I][app:029]: Running through setup()...
[16:09:18][D][fuji:028]: Fuji initialized
[16:09:18][D][fuji:035]: starting task
[16:09:18][D][fuji:010][FujiTask]: reached task
[16:09:18][D][fuji:011][FujiTask]: serialTask started on core 1
[16:09:23]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:09:23]E (10355) task_wdt:  - loopTask (CPU 1)
[16:09:23]E (10355) task_wdt: Tasks currently running:
[16:09:23]E (10355) task_wdt: CPU 0: IDLE
[16:09:23]E (10355) task_wdt: CPU 1: FujiTask
[16:09:23]E (10355) task_wdt: Aborting.
[16:09:23]
[16:09:23]abort() was called at PC 0x400f8594 on core 0
[16:09:23]
[16:09:23]
[16:09:23]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:09:23]
[16:09:23]
[16:09:23]
[16:09:23]
[16:09:23]ELF file SHA256: 0000000000000000
[16:09:23]
[16:09:23]Rebooting...
[16:09:23]ets Jul 29 2019 12:21:46
[16:09:23]
[16:09:23]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:23]configsip: 0, SPIWP:0xee
[16:09:23]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:23]mode:DIO, clock div:2
[16:09:23]load:0x3fff0030,len:1184
[16:09:23]load:0x40078000,len:13132
[16:09:23]load:0x40080400,len:3036
[16:09:23]entry 0x400805e4
[16:09:23][I][logger:171]: Log initialized
[16:09:23][C][safe_mode:079]: There have been 1 suspected unsuccessful boot attempts
[16:09:23][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:23][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:23][I][app:029]: Running through setup()...
[16:09:23][D][fuji:028]: Fuji initialized
[16:09:23][D][fuji:035]: starting task
[16:09:23][D][fuji:010][FujiTask]: reached task
[16:09:23][D][fuji:011][FujiTask]: serialTask started on core 1
[16:09:28]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:09:28]E (10355) task_wdt:  - loopTask (CPU 1)
[16:09:28]E (10355) task_wdt: Tasks currently running:
[16:09:28]E (10355) task_wdt: CPU 0: IDLE
[16:09:28]E (10355) task_wdt: CPU 1: FujiTask
[16:09:28]E (10355) task_wdt: Aborting.
[16:09:28]
[16:09:28]abort() was called at PC 0x400f8594 on core 0
[16:09:28]
[16:09:28]
[16:09:28]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:09:28]
[16:09:28]
[16:09:28]
[16:09:28]
[16:09:28]ELF file SHA256: 0000000000000000
[16:09:28]
[16:09:28]Rebooting...
[16:09:28]ets Jul 29 2019 12:21:46
[16:09:28]
[16:09:28]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:28]configsip: 0, SPIWP:0xee
[16:09:28]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:28]mode:DIO, clock div:2
[16:09:28]load:0x3fff0030,len:1184
[16:09:28]load:0x40078000,len:13132
[16:09:28]load:0x40080400,len:3036
[16:09:28]entry 0x400805e4
[16:09:29][I][logger:171]: Log initialized
[16:09:29][C][safe_mode:079]: There have been 2 suspected unsuccessful boot attempts
[16:09:29][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:29][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:29][I][app:029]: Running through setup()...
[16:09:29][D][fuji:028]: Fuji initialized
[16:09:29][D][fuji:035]: starting task
[16:09:29][D][fuji:010][FujiTask]: reached task
[16:09:29][D][fuji:011][FujiTask]: serialTask started on core 1
[16:09:34]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:09:34]E (10355) task_wdt:  - loopTask (CPU 1)
[16:09:34]E (10355) task_wdt: Tasks currently running:
[16:09:34]E (10355) task_wdt: CPU 0: IDLE
[16:09:34]E (10355) task_wdt: CPU 1: FujiTask
[16:09:34]E (10355) task_wdt: Aborting.
[16:09:34]
[16:09:34]abort() was called at PC 0x400f8594 on core 0
[16:09:34]
[16:09:34]
[16:09:34]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:09:34]
[16:09:34]
[16:09:34]
[16:09:34]
[16:09:34]ELF file SHA256: 0000000000000000
[16:09:34]
[16:09:34]Rebooting...
[16:09:34]ets Jul 29 2019 12:21:46
[16:09:34]
[16:09:34]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:34]configsip: 0, SPIWP:0xee
[16:09:34]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:34]mode:DIO, clock div:2
[16:09:34]load:0x3fff0030,len:1184
[16:09:34]load:0x40078000,len:13132
[16:09:34]load:0x40080400,len:3036
[16:09:34]entry 0x400805e4
[16:09:34][I][logger:171]: Log initialized
[16:09:34][C][safe_mode:079]: There have been 3 suspected unsuccessful boot attempts
[16:09:34][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:34][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:34][I][app:029]: Running through setup()...
[16:09:34][D][fuji:028]: Fuji initialized
[16:09:34][D][fuji:035]: starting task
[16:09:34][D][fuji:010][FujiTask]: reached task
[16:09:34][D][fuji:011][FujiTask]: serialTask started on core 1
[16:09:39]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:09:39]E (10355) task_wdt:  - loopTask (CPU 1)
[16:09:39]E (10355) task_wdt: Tasks currently running:
[16:09:39]E (10355) task_wdt: CPU 0: IDLE
[16:09:39]E (10355) task_wdt: CPU 1: FujiTask
[16:09:39]E (10355) task_wdt: Aborting.
[16:09:39]
[16:09:39]abort() was called at PC 0x400f8594 on core 0
[16:09:39]
[16:09:39]
[16:09:39]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:09:39]
[16:09:39]
[16:09:39]
[16:09:39]
[16:09:39]ELF file SHA256: 0000000000000000
[16:09:39]
[16:09:39]Rebooting...
[16:09:39]ets Jul 29 2019 12:21:46
[16:09:39]
[16:09:39]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:39]configsip: 0, SPIWP:0xee
[16:09:39]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:39]mode:DIO, clock div:2
[16:09:39]load:0x3fff0030,len:1184
[16:09:39]load:0x40078000,len:13132
[16:09:39]load:0x40080400,len:3036
[16:09:39]entry 0x400805e4
[16:09:40][I][logger:171]: Log initialized
[16:09:40][C][safe_mode:079]: There have been 4 suspected unsuccessful boot attempts
[16:09:40][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:40][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:40][I][app:029]: Running through setup()...
[16:09:40][D][fuji:028]: Fuji initialized
[16:09:40][D][fuji:035]: starting task
[16:09:40][D][fuji:010][FujiTask]: reached task
[16:09:40][D][fuji:011][FujiTask]: serialTask started on core 1
[16:09:45]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:09:45]E (10355) task_wdt:  - loopTask (CPU 1)
[16:09:45]E (10355) task_wdt: Tasks currently running:
[16:09:45]E (10355) task_wdt: CPU 0: IDLE
[16:09:45]E (10355) task_wdt: CPU 1: FujiTask
[16:09:45]E (10355) task_wdt: Aborting.
[16:09:45]
[16:09:45]abort() was called at PC 0x400f8594 on core 0
[16:09:45]
[16:09:45]
[16:09:45]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:09:45]
[16:09:45]
[16:09:45]
[16:09:45]
[16:09:45]ELF file SHA256: 0000000000000000
[16:09:45]
[16:09:45]Rebooting...
[16:09:45]ets Jul 29 2019 12:21:46
[16:09:45]
[16:09:45]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:45]configsip: 0, SPIWP:0xee
[16:09:45]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:45]mode:DIO, clock div:2
[16:09:45]load:0x3fff0030,len:1184
[16:09:45]load:0x40078000,len:13132
[16:09:45]load:0x40080400,len:3036
[16:09:45]entry 0x400805e4
[16:09:45][I][logger:171]: Log initialized
[16:09:45][C][safe_mode:079]: There have been 5 suspected unsuccessful boot attempts
[16:09:45][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:45][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:45][I][app:029]: Running through setup()...
[16:09:45][D][fuji:028]: Fuji initialized
[16:09:45][D][fuji:035]: starting task
[16:09:45][D][fuji:010][FujiTask]: reached task
[16:09:45][D][fuji:011][FujiTask]: serialTask started on core 1
[16:09:50]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:09:50]E (10355) task_wdt:  - loopTask (CPU 1)
[16:09:50]E (10355) task_wdt: Tasks currently running:
[16:09:50]E (10355) task_wdt: CPU 0: IDLE
[16:09:50]E (10355) task_wdt: CPU 1: FujiTask
[16:09:50]E (10355) task_wdt: Aborting.
[16:09:50]
[16:09:50]abort() was called at PC 0x400f8594 on core 0
[16:09:50]
[16:09:50]
[16:09:50]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:09:50]
[16:09:50]
[16:09:50]
[16:09:50]
[16:09:50]ELF file SHA256: 0000000000000000
[16:09:50]
[16:09:50]Rebooting...
[16:09:50]ets Jul 29 2019 12:21:46
[16:09:50]
[16:09:50]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:50]configsip: 0, SPIWP:0xee
[16:09:50]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:50]mode:DIO, clock div:2
[16:09:50]load:0x3fff0030,len:1184
[16:09:50]load:0x40078000,len:13132
[16:09:50]load:0x40080400,len:3036
[16:09:50]entry 0x400805e4
[16:09:51][I][logger:171]: Log initialized
[16:09:51][C][safe_mode:079]: There have been 6 suspected unsuccessful boot attempts
[16:09:51][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:51][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:51][I][app:029]: Running through setup()...
[16:09:51][D][fuji:028]: Fuji initialized
[16:09:51][D][fuji:035]: starting task
[16:09:51][D][fuji:010][FujiTask]: reached task
[16:09:51][D][fuji:011][FujiTask]: serialTask started on core 1
[16:09:56]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:09:56]E (10355) task_wdt:  - loopTask (CPU 1)
[16:09:56]E (10355) task_wdt: Tasks currently running:
[16:09:56]E (10355) task_wdt: CPU 0: IDLE
[16:09:56]E (10355) task_wdt: CPU 1: FujiTask
[16:09:56]E (10355) task_wdt: Aborting.
[16:09:56]
[16:09:56]abort() was called at PC 0x400f8594 on core 0
[16:09:56]
[16:09:56]
[16:09:56]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:09:56]
[16:09:56]
[16:09:56]
[16:09:56]
[16:09:56]ELF file SHA256: 0000000000000000
[16:09:56]
[16:09:56]Rebooting...
[16:09:56]ets Jul 29 2019 12:21:46
[16:09:56]
[16:09:56]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:09:56]configsip: 0, SPIWP:0xee
[16:09:56]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:09:56]mode:DIO, clock div:2
[16:09:56]load:0x3fff0030,len:1184
[16:09:56]load:0x40078000,len:13132
[16:09:56]load:0x40080400,len:3036
[16:09:56]entry 0x400805e4
[16:09:56][I][logger:171]: Log initialized
[16:09:56][C][safe_mode:079]: There have been 7 suspected unsuccessful boot attempts
[16:09:56][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:09:56][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:09:56][I][app:029]: Running through setup()...
[16:09:56][D][fuji:028]: Fuji initialized
[16:09:56][D][fuji:035]: starting task
[16:09:56][D][fuji:010][FujiTask]: reached task
[16:09:56][D][fuji:011][FujiTask]: serialTask started on core 1
[16:10:01]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:10:01]E (10355) task_wdt:  - loopTask (CPU 1)
[16:10:01]E (10355) task_wdt: Tasks currently running:
[16:10:01]E (10355) task_wdt: CPU 0: IDLE
[16:10:01]E (10355) task_wdt: CPU 1: FujiTask
[16:10:01]E (10355) task_wdt: Aborting.
[16:10:01]
[16:10:01]abort() was called at PC 0x400f8594 on core 0
[16:10:01]
[16:10:01]
[16:10:01]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:10:01]
[16:10:01]
[16:10:01]
[16:10:01]
[16:10:01]ELF file SHA256: 0000000000000000
[16:10:01]
[16:10:01]Rebooting...
[16:10:01]ets Jul 29 2019 12:21:46
[16:10:01]
[16:10:01]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:10:01]configsip: 0, SPIWP:0xee
[16:10:01]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:10:01]mode:DIO, clock div:2
[16:10:01]load:0x3fff0030,len:1184
[16:10:01]load:0x40078000,len:13132
[16:10:01]load:0x40080400,len:3036
[16:10:01]entry 0x400805e4
[16:10:01][I][logger:171]: Log initialized
[16:10:02][C][safe_mode:079]: There have been 8 suspected unsuccessful boot attempts
[16:10:02][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:10:02][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:10:02][I][app:029]: Running through setup()...
[16:10:02][D][fuji:028]: Fuji initialized
[16:10:02][D][fuji:035]: starting task
[16:10:02][D][fuji:010][FujiTask]: reached task
[16:10:02][D][fuji:011][FujiTask]: serialTask started on core 1
[16:10:07]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:10:07]E (10355) task_wdt:  - loopTask (CPU 1)
[16:10:07]E (10355) task_wdt: Tasks currently running:
[16:10:07]E (10355) task_wdt: CPU 0: IDLE
[16:10:07]E (10355) task_wdt: CPU 1: FujiTask
[16:10:07]E (10355) task_wdt: Aborting.
[16:10:07]
[16:10:07]abort() was called at PC 0x400f8594 on core 0
[16:10:07]
[16:10:07]
[16:10:07]Backtrace:0x40083705:0x3ffbea0c |<-CORRUPTED
[16:10:07]
[16:10:07]
[16:10:07]
[16:10:07]
[16:10:07]ELF file SHA256: 0000000000000000
[16:10:07]
[16:10:07]Rebooting...
[16:10:07]ets Jul 29 2019 12:21:46
[16:10:07]
[16:10:07]rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:10:07]configsip: 0, SPIWP:0xee
[16:10:07]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:10:07]mode:DIO, clock div:2
[16:10:07]load:0x3fff0030,len:1184
[16:10:07]load:0x40078000,len:13132
[16:10:07]load:0x40080400,len:3036
[16:10:07]entry 0x400805e4
[16:10:07][I][logger:171]: Log initialized
[16:10:07][C][safe_mode:079]: There have been 9 suspected unsuccessful boot attempts
[16:10:07][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:10:07][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:10:07][I][app:029]: Running through setup()...
[16:10:07][D][fuji:028]: Fuji initialized
[16:10:07][D][fuji:035]: starting task
[16:10:07][D][fuji:010][FujiTask]: reached task
[16:10:07][D][fuji:011][FujiTask]: serialTask started on core 1
[16:10:12]E (10355) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[16:10:12]E (10355) task_wdt:  - loopTask (CPU 1)
[16:10:12]E (10355) task_wdt: Tasks currently running:
[16:10:12]E (10355) task_wdt: CPU 0: IDLE
[16:10:12]E (10355) task_wdt: CPU 1: FujiTask
[16:10:12]E (10355) task_wdt: Aborting.
[16:10:13]ets Jul 29 2019 12:21:46
[16:10:13]
[16:10:13]rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
[16:10:13]configsip: 0, SPIWP:0xee
[16:10:13]clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
[16:10:13]mode:DIO, clock div:2
[16:10:13]load:0x3fff0030,len:1184
[16:10:13]load:0x40078000,len:13132
[16:10:13]load:0x40080400,len:3036
[16:10:13]entry 0x400805e4
[16:10:13][I][logger:171]: Log initialized
[16:10:13][C][safe_mode:079]: There have been 10 suspected unsuccessful boot attempts
[16:10:13][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:10:13][D][esp32.preferences:143]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed
[16:10:13][E][safe_mode:086]: Boot loop detected. Proceeding to safe mode
[16:10:13][E][component:164]: Component safe_mode set Error flag: unspecified
[16:10:14][I][app:029]: Running through setup()...
[16:10:14][C][wifi:048]: Setting up WiFi...
[16:10:14][C][wifi:061]: Starting WiFi...
[16:10:14][C][wifi:062]:   Local MAC: 88:13:BF:69:46:04
[16:10:14][D][wifi:482]: Starting scan...
[16:10:14][W][component:157]: Component wifi set Warning flag: scanning for networks
[16:10:20][D][wifi:497]: Found networks:
[16:10:20][I][wifi:541]: - 'SFR_FC5F' (58:FC:20:51:FC:60) [redacted]▂▄▆█
[16:10:20][D][wifi:542]:     Channel: 11
[16:10:20][D][wifi:543]:     RSSI: -65 dB
[16:10:20][D][wifi:546]: - 'DIRECT-EB-HP OfficeJet Pro 9010'[redacted] (AA:B1:3B:F8:79:EB) [redacted]▂▄▆█
[16:10:20][D][wifi:546]: - 'SFR_FC5F_GUEST'[redacted] (58:FC:20:51:FC:62) [redacted]▂▄▆█
[16:10:20][D][wifi:546]: - 'NETGEAR48_EXT'[redacted] (94:A6:7E:4F:19:DF) [redacted]▂▄▆█
[16:10:20][D][wifi:546]: - 'ShellyPlusUni-CC7B5C84C6F0'[redacted] (CC:7B:5C:84:C6:F1) [redacted]▂▄▆█
[16:10:20][I][wifi:313]: WiFi Connecting to 'SFR_FC5F'...
[16:10:21][I][wifi:617]: WiFi Connected!
[16:10:21][C][wifi:428]:   Local MAC: 88:13:BF:69:46:04
[16:10:21][C][wifi:433]:   SSID: 'SFR_FC5F'[redacted]
[16:10:21][C][wifi:436]:   IP Address: 192.168.1.149
[16:10:21][C][wifi:440]:   BSSID: 58:FC:20:51:FC:60[redacted]
[16:10:21][C][wifi:441]:   Hostname: 'fujitsuespclim'
[16:10:21][C][wifi:443]:   Signal strength: -67 dB ▂▄▆█
[16:10:21][C][wifi:447]:   Channel: 11
[16:10:21][C][wifi:448]:   Subnet: 255.255.255.0
[16:10:21][C][wifi:449]:   Gateway: 192.168.1.1
[16:10:21][C][wifi:450]:   DNS1: 192.168.1.1
[16:10:21][C][wifi:451]:   DNS2: 0.0.0.0
[16:10:21][D][wifi:626]: Disabling AP...
[16:10:21][I][app:062]: setup() finished successfully!
[16:10:21][W][safe_mode:099]: SAFE MODE IS ACTIVE
[16:10:21][W][component:172]: Component wifi cleared Warning flag
[16:10:21][I][app:100]: ESPHome version 2025.4.0 compiled on Apr 22 2025, 15:52:27
[16:10:22][C][wifi:600]: WiFi:
[16:10:22][C][wifi:428]:   Local MAC: 88:13:BF:69:46:04
[16:10:22][C][wifi:433]:   SSID: 'SFR_FC5F'[redacted]
[16:10:22][C][wifi:436]:   IP Address: 192.168.1.149
[16:10:22][C][wifi:440]:   BSSID: 58:FC:20:51:FC:60[redacted]
[16:10:22][C][wifi:441]:   Hostname: 'fujitsuespclim'
[16:10:22][C][wifi:443]:   Signal strength: -67 dB ▂▄▆█
[16:10:22][C][wifi:447]:   Channel: 11
[16:10:22][C][wifi:448]:   Subnet: 255.255.255.0
[16:10:22][C][wifi:449]:   Gateway: 192.168.1.1
[16:10:22][C][wifi:450]:   DNS1: 192.168.1.1
[16:10:22][C][wifi:451]:   DNS2: 0.0.0.0
[16:10:22][C][logger:177]: Logger:
[16:10:22][C][logger:178]:   Max Level: DEBUG
[16:10:22][C][logger:179]:   Initial Level: DEBUG
[16:10:22][C][logger:181]:   Log Baud Rate: 115200
[16:10:22][C][logger:182]:   Hardware UART: UART0
[16:10:22][C][captive_portal:089]: Captive Portal:
[16:10:22][C][mdns:116]: mDNS:
[16:10:22][C][mdns:117]:   Hostname: fujitsuespclim
[16:10:22][C][esphome.ota:073]: Over-The-Air updates:
[16:10:22][C][esphome.ota:074]:   Address: 192.168.1.149:3232
[16:10:22][C][esphome.ota:075]:   Version: 2
[16:10:22][C][safe_mode:018]: Safe Mode:
[16:10:22][C][safe_mode:020]:   Boot considered successful after 60 seconds
[16:10:22][C][safe_mode:021]:   Invoke after 10 boot attempts
[16:10:22][C][safe_mode:023]:   Remain in safe mode for 300 seconds
[16:10:22][W][safe_mode:031]: SAFE MODE IS ACTIVE
[16:11:13][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[16:11:13][D][esp32.preferences:114]: Saving 1 preferences to flash...
[16:11:13][D][esp32.preferences:143]: Saving 1 preferences to flash: 1 cached, 0 written, 0 failed

From what I read in this forum, some people had this problem before me. Some had it because they needed to use the single-core version, but I tried and the result was exactly the same.
So now I’m lost. Does anybody can help me, or have any idea what I’m missing?
Thank you very much

That error log does make it look like your esp32 only has one core (as indicated by the watchdog triggering for CPU 1). What was the log output for the single core version?

Thanks for your help and sorry for the delay, I was in vacation.
I managed to get it working today, and the cause was… Me (ofc)! Indeed I misread the explainations and wired RXD->RXD and TXD->TXD instead of RXD->GPIO16 and TXD->GPIO17.
After that I faced another problem for some time, the climate entity showed nicely in HA but the A/C in the house weren’t working, showing “00:12 Er” on the screen (UTY-RNNUM type controller). But the air flow and A/C Mode were switching correctly between HA and the controller. In the end it was AGAIN my fault, as I thought it wasn’t mandatory to power down the electricty then power up (despite it was clearly stated in this thread). After that, everything was working perfeclty fine.

Although I didn’t thought about the fact you mentionned I probably needed to use Single Core version. Ift’s working now so I hope the fact I didn’t used the single core version won’t create some problems later.

@0xadam thank you for your help and your time
And @rabbit-aaron thank you for this amazing work

There are several unanswered questions in this thread regarding connecting directly to unit’s UART without any additional communication board or wired controllers. For example from @patvdleer or @Pukkahq

To my understanding newer units are using 4 pin CN65 connector to communicate with official wifi module like UTY-TFSXW1 or UTY-TFSXZ1 (FGLAIR) or UTY-TFSXJ3 (AIRSTAGE) and 3rd party devices like Zennio KLIC-FJT or Airzone AZAI6WSCFU2. All of these devices are kind of expensive so replacing them with ESP32 would be very welcome.

Did anyone have a success with utilizing this connector? In theory this should be very simple and no transceiver should be needed. Does anyone have more details about pinout, voltages or baud rate?

I’ve been giving it a go on and off. Its a non-standard USB out, with 12v, 5v, 0v, and GND from the pins. I’ve got an ESP hooked up with a logic level converter and trying to get serial working with no luck.

I think that USB is very likely a different connector for the same interface (CN65) like in my post. It should be an UART, they even sell the cable named UART UTY-NXT-CAB which uses the same CN65 connector. I’m really surprised that no one ever attempted to utilize this connection, but maybe I’m missing something.

Hi Aaron, Ive just stumbled onto this thread having been working through unreality/fujihk’s. I’ve purchased all the hardware made my circuit, Noticed it’s looking for 3 wires…… Removed the controller…. Noticing 3 wires coming to the controller rear. But then seeing only 2 feeding my wall control unit itself. Are these the gnd and sig? Is the 3rd +12v and not used by the more modern wall controller? Has anyone else used this setup with wall controllers that just have 2 wire controller connections? Is the protocol used the same as before? Keen to help progress this as I think there needs to be a solution for 2 wire connected controllers and need guidance on how to get it working (particularly now I have got it all working on my m5Atom and arduino ide (with esp32 lib version 3.1.3).

I just wanted to say that I cant thank you enough for this. I have been waiting 6 years for something like this and I got it working this afternoon. It really is amazing and will make me and my families life’s so much better with it now connected and automated.

Just a few things to mention to the group that caught me off guard.

  1. Make sure the MCP2025 is positioned the correct way. At first I was getting the C015 error and I realized I had it upside down.
  2. For some reason, I was unable to get logs via wifi on my ESP32 but once it was connected correctly (see above), the logs appeared in home assistant as expected.
  3. Make sure your capacitors are seated correctly. I thought mine we in the breadboard all the way and it turns out they were not, so check that as well.
  4. See the above post about getting the external components working in yaml, that was super helpful.

Stick with it, it does really work as expected.