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

I was replying to another post which posted a picture telling he did it.

I have one more issue:
When I set climate:fan_only mode in homeassistant it changes the target temperature to 0°C
(even if target min=16°C and max=30°C).
Later when I set climate:cool mode, the target temperature is set to 0°C, then in a second it raises to 18°C, but the last used cooling target temp is lost (eg. 24°C).
Every time I have to set from 18°C to the desired target temp manually :unamused:

When using wired controller it doesn’t happen.
Wired controller doesn’t make any changes in the target temperature when using fan_only mode (it just doesn’t display the target temp in the wired controller).
When I set climate:cool mode, the last used cooling target temperature remains (eg. 24°C). It is probably memorised.

Snímek obrazovky 2024-06-08 192858A

Continuing the discussion from Fujitsu AC (heat pump) integration via ESPHome [ESP32]:

EDIT

I found that this is probably due to different work when using the wired controller or the HA climate control
When set to fan_only mode (no matter if by HA or wired ctrl) then the controller set the target temp to 0.
Later if set from fan to cool mode things are different:

  • if set to cool by HA - cooling start with target temp=0°C (immediately changed to 18°C) The last setting of target_temp is lost!
  • if set to cool by wired ctrl - cooling start with the last known target temperature used for cooling which is probably memorised in the controller (eg. 24°C)

The code should reproduce the behavior of the wired controller in this case.

(I have no idea why my temp = 4194303 after switching to fan_only mode? but it is not important because it is suddenly changed to match the ctrl temp)

Log from esphome with my comments

[17:51:51][I][app:100]: ESPHome version 2024.5.5 compiled on Jun 11 2024, 16:33:12
[17:51:51][C][wifi:580]: WiFi:
[17:51:52][C][wifi:408]:   Local MAC: xxxxx
[17:51:52][C][wifi:413]:   SSID: [redacted]
[17:51:52][C][wifi:416]:   IP Address: 10.0.0.9
[17:51:52][C][wifi:420]:   BSSID: [redacted]
[17:51:52][C][wifi:421]:   Hostname: 'fujitsu'
[17:51:52][C][wifi:423]:   Signal strength: -63 dB ▂▄▆█
[17:51:52][C][wifi:427]:   Channel: 10
[17:51:52][C][wifi:428]:   Subnet: 255.255.255.0
[17:51:52][C][wifi:429]:   Gateway: 10.0.0.138
[17:51:52][C][wifi:430]:   DNS1: 10.0.0.138
[17:51:52][C][wifi:431]:   DNS2: 0.0.0.0
[17:51:52][C][logger:185]: Logger:
[17:51:52][C][logger:186]:   Level: DEBUG
[17:51:52][C][logger:188]:   Log Baud Rate: 115200
[17:51:52][C][logger:189]:   Hardware UART: UART0
[17:51:52][C][captive_portal:088]: Captive Portal:
[17:51:52][C][web_server:173]: Web Server:
[17:51:52][C][web_server:174]:   Address: fujitsu.local:80
[17:51:52][C][mdns:115]: mDNS:
[17:51:52][C][mdns:116]:   Hostname: fujitsu
[17:51:52][C][ota:096]: Over-The-Air Updates:
[17:51:52][C][ota:097]:   Address: fujitsu.local:3232
[17:51:53][C][ota:103]:   OTA version: 2.
[17:51:53][C][api:144]:   Using noise encryption: NO
[17:51:54][D][api:102]: Accepted 10.0.0.8
[17:51:54][D][api.connection:1321]: Home Assistant 2024.6.1 (10.0.0.8): Connected successfully
[17:52:14][D][climate:011]: 'Fujitsu' - Setting
[17:52:14][D][climate:040]:   Target Temperature: 24.00
[17:52:14][D][fuji:234]: Fuji setting temperature 24.000000
[17:52:15][D][fuji:145]: ctrl temp 24 vs my temp 4194303
[17:52:15][D][fuji:201]: publishing state
//start with fan_only mode
[17:52:15][D][climate:396]: 'Fujitsu' - Sending state:
[17:52:15][D][climate:399]:   Mode: FAN_ONLY
[17:52:15][D][climate:404]:   Fan Mode: AUTO
[17:52:15][D][climate:419]:   Current Temperature: 27.00°C
[17:52:15][D][climate:425]:   Target Temperature: 24.00°C
[17:52:16][D][fuji:145]: ctrl temp 0 vs my temp 4194303
[17:52:16][D][fuji:201]: publishing state
[17:52:16][D][climate:396]: 'Fujitsu' - Sending state:
[17:52:16][D][climate:399]:   Mode: FAN_ONLY
[17:52:16][D][climate:404]:   Fan Mode: AUTO
[17:52:16][D][climate:419]:   Current Temperature: 27.00°C
[17:52:16][D][climate:425]:   Target Temperature: 0.00°C
//HA set to cool
[17:55:27][D][climate:011]: 'Fujitsu' - Setting
[17:55:27][D][climate:015]:   Mode: COOL
[17:55:27][D][fuji:213]: Fuji setting mode 2
[17:55:28][D][fuji:155]: ctrl mode 2 vs my mode 4
[17:55:28][D][fuji:201]: publishing state
[17:55:28][D][climate:396]: 'Fujitsu' - Sending state:
[17:55:28][D][climate:399]:   Mode: COOL
[17:55:28][D][climate:404]:   Fan Mode: AUTO
[17:55:28][D][climate:419]:   Current Temperature: 27.00°C
[17:55:28][D][climate:425]:   Target Temperature: 0.00°C
[17:55:29][D][fuji:145]: ctrl temp 18 vs my temp 4194303
[17:55:29][D][fuji:201]: publishing state
[17:55:29][D][climate:396]: 'Fujitsu' - Sending state:
[17:55:29][D][climate:399]:   Mode: COOL
[17:55:29][D][climate:404]:   Fan Mode: AUTO
[17:55:29][D][climate:419]:   Current Temperature: 27.00°C
[17:55:29][D][climate:425]:   Target Temperature: 18.00°C
//HA set target t to 22
[17:55:31][D][climate:011]: 'Fujitsu' - Setting
[17:55:31][D][climate:040]:   Target Temperature: 22.00
[17:55:31][D][fuji:234]: Fuji setting temperature 22.000000
[17:55:32][D][fuji:145]: ctrl temp 22 vs my temp 4194303
[17:55:32][D][fuji:201]: publishing state
[17:55:32][D][climate:396]: 'Fujitsu' - Sending state:
[17:55:32][D][climate:399]:   Mode: COOL
[17:55:32][D][climate:404]:   Fan Mode: AUTO
[17:55:32][D][climate:419]:   Current Temperature: 27.00°C
[17:55:32][D][climate:425]:   Target Temperature: 22.00°C
//HA set to fan only mode
[17:56:40][D][climate:011]: 'Fujitsu' - Setting
[17:56:40][D][climate:015]:   Mode: FAN_ONLY
[17:56:40][D][fuji:213]: Fuji setting mode 4
[17:56:41][D][fuji:155]: ctrl mode 4 vs my mode 2
[17:56:41][D][fuji:201]: publishing state
[17:56:41][D][climate:396]: 'Fujitsu' - Sending state:
[17:56:41][D][climate:399]:   Mode: FAN_ONLY
[17:56:41][D][climate:404]:   Fan Mode: AUTO
[17:56:41][D][climate:419]:   Current Temperature: 27.00°C
[17:56:41][D][climate:425]:   Target Temperature: 22.00°C
[17:56:42][D][fuji:145]: ctrl temp 0 vs my temp 4194303
[17:56:42][D][fuji:201]: publishing state
[17:56:42][D][climate:396]: 'Fujitsu' - Sending state:
[17:56:42][D][climate:399]:   Mode: FAN_ONLY
[17:56:42][D][climate:404]:   Fan Mode: AUTO
[17:56:42][D][climate:419]:   Current Temperature: 27.00°C
[17:56:42][D][climate:425]:   Target Temperature: 0.00°C
//HA set hvacmode to off
[18:04:48][D][fuji:193]: Controller turned off AC, adding mode change to call
[18:04:48][D][fuji:201]: publishing state
[18:04:48][D][climate:396]: 'Fujitsu' - Sending state:
[18:04:48][D][climate:399]:   Mode: OFF
[18:04:48][D][climate:404]:   Fan Mode: AUTO
[18:04:48][D][climate:419]:   Current Temperature: 27.00°C
[18:04:48][D][climate:425]:   Target Temperature: 0.00°C

//wired controller set to on and to cool
[18:06:28][D][fuji:145]: ctrl temp 22 vs my temp 4194303
[18:06:28][D][fuji:155]: ctrl mode 2 vs my mode 0
[18:06:28][D][fuji:201]: publishing state
[18:06:28][D][climate:396]: 'Fujitsu' - Sending state:
[18:06:28][D][climate:399]:   Mode: COOL
[18:06:28][D][climate:404]:   Fan Mode: AUTO
[18:06:28][D][climate:419]:   Current Temperature: 27.00°C
[18:06:28][D][climate:425]:   Target Temperature: 22.00°C
//wired controller set to fan only
[18:08:57][D][fuji:145]: ctrl temp 0 vs my temp 4194303
[18:08:57][D][fuji:155]: ctrl mode 4 vs my mode 2
[18:08:57][D][fuji:201]: publishing state
[18:08:57][D][climate:396]: 'Fujitsu' - Sending state:
[18:08:57][D][climate:399]:   Mode: FAN_ONLY
[18:08:57][D][climate:404]:   Fan Mode: AUTO
[18:08:57][D][climate:419]:   Current Temperature: 27.00°C
[18:08:57][D][climate:425]:   Target Temperature: 0.00°C
//wired controller set to cool
[18:10:30][D][fuji:145]: ctrl temp 22 vs my temp 4194303
[18:10:30][D][fuji:155]: ctrl mode 2 vs my mode 4
[18:10:30][D][fuji:201]: publishing state
[18:10:30][D][climate:396]: 'Fujitsu' - Sending state:
[18:10:30][D][climate:399]:   Mode: COOL
[18:10:30][D][climate:404]:   Fan Mode: AUTO
[18:10:30][D][climate:419]:   Current Temperature: 27.00°C
[18:10:30][D][climate:425]:   Target Temperature: 22.00°C

Question for the team here. What a project this is! Fujitsu does not make it easy to integrate.

Here you go: Is anyone interested in making a batch of these units for Home Assistant users? I have a need for 3 of these and would pay a premium for someone to create 3 of these for PNP with my Fujitsu units.

I’m sure others may be interested if we put it out there in the HA Community and Reddit.

I’m interested as well! I’ve been working toward building the FujiHeatPump project using an ESP32 but having some issues sourcing the parts like MCP2025.

@datapush3r how many would you need?

I would be interested in purchasing 2 and maybe a 3rd for an extra just in case. But, I may just start down the road of making them myself shortly.

Well, I just bought 30 PCBs from JLCPCB since it was like $5 more than just ordering 2 for a total of $35. Looks like the cost for the rest of the components is ~$30 including the Atom Lite and shipping from digi-key. With everything else that comes to a total of about $33 per unit. This is my first time offering up components to the community so I’m not sure what the typical markup is, but I’d be willing to sell these for like $50 + shipping if anyone wants one (or more). Assuming I can get it to work on my system first.

I only need one but not sure if I should go the ESP32 route or the Atom Lite route. I’d be willing to buy one from you @gtmax500 if you get them working. Are you in Australia?

Sounds good. I am in the US but if I just send you the completed PCB (without an ESP32) it doesn’t seem like shipping will cost too much since it’s pretty light and small (maybe $15-25 through USPS). I should receive all the parts this week so I’ll let you know if I am able to make it work successfully.

2 Likes

gtmax500, if you can get one working would you be willing to do a batch according to the same proven process? I’d be willing to pay premium for your hard work.

I’d also be interested in purchasing two of these and am also located in Australia! Let me know what the best way to sort out shipping/payment.

Grant, we have some people excited about this! Are you up for this?

For the rest of us: We would need to guarantee to Grant that there are no warranties or guarantees.

1 Like

I’d also love to purchase one if you do end up making some

First off, big thanks to @FOSV for thePCB designs and @rabbit-aaron for the esphome port.

After a second attempt, I believe I have a working PCB! The LED lights up and the Atom turns on while connected to the indoor unit’s connector labeled remote. However, I am struggling to get the software working. I used the Old serializer new driver branch and was able to get the web server to load and integrate with home assistant but it does not seem to communicate with the indoor unit.

It says it set the temp but nothing actually changes and the settings are wrong. I have pin 22 set as tx and 19 as rx and master set to true. I’m thinking it is software related but it could totally be a bad solder joint. Any help would be appreciated.

I would be happy to make a batch of these and ship them to whoever wants one once I can get mine working to confirm they work.

Has anyone had luck with zone control? :eyes: