FujitsuAC Integration

I’m not sure, so I would try this by powering DC/DC converter only (not connected to aircon) from some power supply, if I did this. Then I would measure if the output voltage is 5V DC compared to GND and finally if everything as expected, connect it to aircon :slight_smile:

If ESP GND is connected with aircon gnd (Vin) and there is no voltage between these GND pins, then everything should be ok.

Thanks for your answer, I tried it with an external power supply. 5v output is ok. Now Gnd from AC and esp32 are shared, I guess tr/tx data will be allright.

I flashed a Wemos Esp32 D1 Mini with FujitsuAC and connected 2 leds. I did not yet connect the esp32 to the AC. When I switch it on, both leds are on. The device is in AP mode then. When I enter credentials for WiFi and MQTT, I succeed in connecting both. But the state of the leds does not change, both stay on. What is see on the MQTT end, is that messages are send, about every second. (fujitsu/940db3f4e9d4/state/status Init1 Send
fujitsu/940db3f4e9d4/debug/send 00 00 00 00 04 00 00 00 00 FF FB) Does it behave like this because I did not connect it to the AC?

Hi. Sorry, I did not add circuit for leds to the repo yet.
They should be connected like that (they are optional, of course):
Resistor values depends on LED’s you are using

For logs - yes, it is first stage of communication initialization and the ESP repeats sending such frame until response is not received

Thanks agian. Now that I have connected the leds according, it works as expected.

@Benas

Thanks a lot for this project, want to report back that I was able to control my ducted unit with this project:

Unit PN:
Condenser AOYG14LUC (Outdoor)
Evaporator: ARYG14LSLAP (Indoor)
Remote: UTY-RLRY (2 Wire, connected to the unit and operational)

Connected to CN65 White connector (top of main board):
Pin1 (+12V)
Pin2 (GND)
Pin3 (AC TX Meaasured at 0V vs GND) → Level Shifter → ESP32 RX GPIO16
Pin4 (AC RX Meaasured at 5V vs GND) ← Level Shifter ← ESP32 TX GPIO17

All wiring per repo picture by author.

Import note:
I had this level shifter - SparkFun Link - Initially used the “resistor divider” based path for AC - RX - this didn’t work as expected - solution was to move both lines to the “bi-directional” path’s,

Here is the correct wiring with this level shifter, hope this will help someone:

If you are using the one @Benas show on his schematic - it’s even better as all channels there are mosfet based.

In terms of discovered functions / controls - this is what I have:

Very happy, thanks again @Benas.

1 Like

Hello @Benas,
have you any update on the additional registers for ducted AC? Do you need other information/logs? Thanks!!!

Hi, sorry I did not try yet. I will check it next week

I noticed the control-entities have become unavailable in my HA. Rest is still working/available. Any idea what happened? How can I repair this?

Hi, what version are you running?

Version 1.3.6

Hi Benas,

I solved it, it appeared to be a problem with my MQTT-broker. Nothing wrong with your integration!

Version 1.3.6 has been very good for me.

Good, there was mqtt issue fixes in 1.3.5 and 1.3.6, so I thought there was another unknown scenario :slight_smile:

Just out of curiosity, wouldnt it have been simpler to add a Broadlink RM mini IR blaster and used that to control the AC.

It would be simpler, but this is OEM level solution. You get 2 way communication, so you are always sure that aircon received the command, you can see its reported temps and you get aircon state synced when something is changed by the remote controller.

Also you dont have to think where to place the blaster and how to get power for it. These dongles placed inside aircons in their dedicated slots.

1 Like

Hi, I have loaded your logs to DummyUnit and unfortunately there are no more registries queried.

How do you think your wall controller uses its thermometer? Maybe it has is own logic and just adjusts setpoint temp by its local temp value?

There are request data frames below

10:26:35.458 -> 0 0 0 0 4 0 0 0 0 FF FB
10:26:35.458 -> Controller initialized connection
10:26:35.880 -> 1 0 0 0 4 0 4 0 1 FF F5
10:26:35.880 -> Controller connected
10:26:36.266 -> 3 0 0 0 4 0 1 1 1 FF F5
10:26:36.685 -> 3 0 0 0 1C 1 10 1 11 1 12 1 13 1 14 1 15 1 17 1 1A 1 1D 1 20 1 30 1 31 1 42 1 43 FE F
10:26:37.104 -> 3 0 0 0 14 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 70 1 71 1 93 FC 25
10:26:37.494 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:37.914 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:38.302 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:38.723 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:39.111 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:39.499 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:39.922 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:40.309 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:40.696 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:41.119 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:41.541 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:41.898 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:42.319 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:42.739 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:43.095 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:43.515 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:43.937 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:44.293 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:44.713 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:45.134 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:45.490 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:45.913 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:46.334 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:26:46.721 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:26:47.141 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:26:47.531 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:27:20.973 -> 0 0 0 0 4 0 0 0 0 FF FB
10:27:20.973 -> Controller initialized connection
10:27:21.360 -> 0 0 0 0 4 0 0 0 0 FF FB
10:27:21.360 -> Controller initialized connection
10:27:21.779 -> 1 0 0 0 4 0 4 0 1 FF F5
10:27:21.779 -> Controller connected
10:27:22.164 -> 3 0 0 0 4 0 1 1 1 FF F5
10:27:22.585 -> 3 0 0 0 1C 1 10 1 11 1 12 1 13 1 14 1 15 1 17 1 1A 1 1D 1 20 1 30 1 31 1 42 1 43 FE F
10:27:23.001 -> 3 0 0 0 14 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 70 1 71 1 93 FC 25
10:27:23.421 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:27:23.839 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:27:24.194 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:27:24.613 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:27:25.032 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:27:25.386 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:27:25.806 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:27:26.222 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:27:26.610 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:27:27.028 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:27:27.447 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:27:27.799 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F
10:27:28.220 -> 3 0 0 0 1A 10 0 10 1 10 2 10 3 10 10 10 11 10 A0 10 22 10 23 10 A9 10 31 10 33 10 34 FC C5
10:27:28.637 -> 3 0 0 0 26 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 20 11 21 11 44 12 0 12 1 12 2 12 3 12 4 11 41 FD 91
10:27:28.991 -> 3 0 0 0 18 14 0 14 1 14 2 14 3 14 4 14 5 14 6 14 E 20 0 20 20 20 21 F0 1 FD 8F

Hi @Benas,
thanks for checking!
From the wall controller I was able to change the registers of the internal unit and set the wall controller thermometer as the default one.

How to interpret/map the request data frames you sent?

3 = command type (read)
0 0 0 - padding
14 - payload length in hex (= 20 in decimal, so there should be 10 addresses queried (each address consist of two bytes))
1 50 = 0x0150 (address)
1 51 = 0x0151 (address)
1 52 = 0x0152 (address)
...
...
FC 25 = checksum of the frame to validate data integrity

When you change wall controller thermometer to default, do you notice any register change in mqtt logs? I think it just enables internal logic in the wall controller to do setpoint temp adjustment, but of course its just a guess.

What registers were you able to change? Any additional which are in the current registry table but not named yet?

Released 1.3.10.

There are new configuration entities now:

  • low_cpu_speed - enabled by default now. It sets cpu speed to lowest available
  • wifi_sleep - enables wifi sleep feature of esp

Both these configs should decrease power consumption and cpu temp. I did not notice any drawbacks, so its prefered to keep these enabled