Fujitsu Air Conditioning integration - Airstage dongle

On my unit, the only LED that can be disabled is the orange WiFi one.
The power/economy/timer LEDs seem to be “on” whenever the unit is on.

I wonder if this is the presence detector?

iu_hmn_det_auto_save

Perhaps use the CURL command above to see if this changes with motion?
(My device doesn’t have motion)

Looks like the python modules temp conversion seems more accurate (-5000 then /100)

The iu_demand does not seem to change with AC activity.

I’m going to monitor iu_demand and ie_err_code with the following in my configuration.yaml (edit the IP and MAC address for your needs)

rest:
  - resource: http://192.168.1.59/GetParam
    scan_interval: 60
    payload: '{"device_id":"E8FB1CFF5FF5","device_sub_id":0,"req_id":"","modified_by":"","set_level":"03","list":["iu_set_tmp","iu_indoor_tmp","iu_outdoor_tmp","iu_onoff","iu_economy","iu_fan_ctrl","iu_fan_ctrl","iu_powerful","ou_low_noise","iu_op_mode","iu_fan_spd","iu_af_swg_vrt","iu_err_code","iu_demand"]}'
    sensor:
      - name: "Error code test aircon"
        value_template: "{{ (value_json['value']['iu_err_code']) }}"
    binary_sensor:
      - name: "Demand Status test aircon"
        value_template: "{{ (value_json['value']['iu_demand']) }}"

You could possibly add in a rest sensor for iu_hmn_det_auto_save to see what it does.

My device doesn’t have motion either. But if any one have and can give me the curl results, I’m happy to implement!

Toggle for Indoor LED is added in version 1.0.7

1 Like

The field for the motion sensor (aka “human detection”) is (NOT - see edit further down) :

iu_hmn_det

curl -vv -X POST --data '{"device_id":"YOURMACHERE","device_sub_id":0,"req_id":"","modified_by":"","set_level":"03","list":["iu_wifi_led","iu_af_inc_hrz","iu_af_inc_vrt","iu_indoor_tmp","iu_outdoor_tmp","iu_hmn_det","iu_main_ver","iu_eep_ver","iu_has_upd_main","iu_has_upd_eep","iu_fld_set80"]}' 'http://YOURIPHERE/GetParam'

Result:

{"value":{"iu_wifi_led":"0","iu_af_inc_hrz":"0","iu_af_inc_vrt":"4","iu_indoor_tmp":"7375","iu_outdoor_tmp":"7000","iu_hmn_det":"1","iu_main_ver":"E101V03P00L02-1","iu_eep_ver":"E000V01P00L01-1","iu_has_upd_main":"1","iu_has_upd_eep":"1","iu_fld_set80":"65535"},"read_res":"ack","device_id":"YOURMACRETURNEDHERE","device_sub_id":0,"req_id":"","modified_by":"","set_level":"03","cause":"","result":"OK","error":""}

I’m running 3 x ASYG09KGTF and 1 x ASYG12KGTF connected to an AOYG30KBTA4 external.

Also the temperature values are seemingly in fahrenheit, and appear to be the simple

(VALUE − 32) × 5/9 = CELCIUS VALUE

HOWEVER, you need to add a decimal before the last two digits of the returned value, i.e. 7375 = 73.75, which after conversion is 21.194C (and bang on).

Philips Hue motion sensors do this (although they report in Celcius by default - they return 4 digits, with no decimal, but the same principle applies - add the decimal) :slight_smile:

Allright, I’m adding a binary_sensor for human detection.
I’m also thinking of refactor my code, where when on local connection you can query single params. I guess the human detection needs a higher frequency than every 30 seconds.

As of the temperature calculation, I stole this from here:

I tried ((VALUE / 100) − 32) × 5/9 = CELCIUS VALUE, but I could not get it to match what the app was showing.

((7675 / 100) - 32) * 5/9 = 24.8611111111
(7675 - 5000) / 100 = 26.75

Here’s a screenshot with the app and the integration with value = (int(value) - 5000) / 100

1 Like

Weird bug for you, if you set the mode to Fan Only, the set temperature goes to 6553.5C.

Suspect this is some logic on the Fuji side that alters its set point to max under this condition and it’s a 16 bit value, but maybe it would be nicer for the integration if you can hold over the previous value even when in fan only?

BTW You should submit this integration for inclusion in Home Assistant Core, you’ve done such a great job.

Thank you! Yes, maybe I’ll do that :slight_smile:

Ah, I see what’s happening. When fan only Airstage sets the “set temperature” to disabled (code 65535). I’ll fix it tomorrow!

1 Like

Appears I was wrong :\

I think the iu_hmn_det field is just wether it’s “capable” or not - and not that it’s actually detected someone. From the manual, if it detects no-one for (I think) 20 mins, it sets the temp +2C so it uses less power.

In fact, disabling it via the app doesn’t seem to change it’s value when I query with JSON…so it does seem to be more of a “capability” flag - with detection hiding somewhere else.

Checking your code I found “iu_hmn_det_auto_save” (which I hadn’t seen before) - and that does appear to be the toggle option from the app to turn the ‘feature’ on/off - but I’ve not seen the actual “person sensed” flag exposed yet.

Here (by way of example) is a response to a query for both iu_hmn_det and iu_hmn_det_auto_save - and you will see _det is 1 and _auto_save is 0 (toggled off in app). So I think _det is just capability flagging.

{"value":{"iu_onoff":"1","iu_wifi_led":"0","iu_af_inc_hrz":"0","iu_af_inc_vrt":"4","iu_indoor_tmp":"7275","iu_outdoor_tmp":"7300","iu_hmn_det":"1","iu_hmn_det_auto_save":"0","iu_main_ver":"E101V03P00L02-1","iu_eep_ver":"E000V01P00L01-1","iu_has_upd_main":"1","iu_has_upd_eep":"1","iu_fld_set80":"65535"},"read_res":"ack","device_id":"1068388965C3","device_sub_id":0,"req_id":"","modified_by":"","set_level":"03","cause":"","result":"OK","error":""}

How do you obtain a list of all the json fields?

Is it just wireshark of the app connection? Or can we get the API to spit out a list?

Good job, works good :slight_smile:
Would it be possible to implement Eco or Powerful as preset?

FYI I used the Cloud login from the integration, and today (after a few days) I found my mobile Airstage app cannot login, and HASS has “no info”.

I took my mobile off WiFi, and it worked - so I presumed my IP has been blocked/banned. I have emailed airstage support and said I can use local mode if required but either way, per the OP integrators post, mind out.

Same happen to me :frowning:

I’ve just moved my HASS install to local. I will advise if Fujitsu unban my IP.
I know the app at least has a “manual refresh” (pull down) so I’m assuming it’s “too many queries”. Depends if they just do a temp or perma ban…they shouldn’t see any more hits from HASS anyway - but my mobile app will be trying.

Just to confirm that this is working for both my UTY-TFSXH3 (wall mounted split) and UTY-TFSXJ3 (ducted) Airstage wi-fi adapters

The only bug I see is the 6553.5 temperature when on Fan mode which does not impact functionality.

Thanks @danielkaldheim for pulling this one out of the hat

Only ‘nice to haves’ for new users would be:

  • MAC address is automatically detected (as this should be accessible from the IP address?)
  • Some sort of auto-detection of devices although I can’t see any broadcast from the device (this will be really useful if this integration was part of the core HA release - I was so surprised when I first installed HA and it detected many devices I didn’t know had integrations)
  • ‘tool tip’ next to IP address to suggest that the device is setup with a static IP address
  • ability to edit the IP address of the device at a later time (for those who forget to set a static IP address!)

Thanks for all the nice comments about the integration!

I’ve been sick for the past week, and haven’t had a chance to fix bugs.

@gorstj many good suggestions, and certainly things I think we can implement.
Pull requests are always welcome, if anyone have any good ideas.

In relation to the Cloud connection, I’ll add some text that warns about IP block. like on the
readme of the repo: GitHub - danielkaldheim/ha_airstage: Connects your Fujitsu Airstage air conditioner to Home Assistant.

Good idea! I’ll add that to the todolist!