Airtouch 4 integration (AUS)

The API doesn’t include any indication of idle state as far as I have seen (neither the AirTouch 4 or AirTouch 5).

My integration will show an indication of whether the system is cooling or heating if you are running in auto mode though. Auto mode is called “Heat/Cool” in Home Assistant to align with the descriptions of the HVAC modes in the Home Assistant documentation.

Unfortunately, I haven’t been able to see any broadcast packets on that port within my LAN from my AirTouch 4 controller - I have double-checked my firewall, but it looks like my unit may just not be broadcasting. I also have not updated to the latest firmware, so that may be part of it.

Thank you so much for your work - if you do get around to doing this, I am definitely keen to try it out!

Yeah I had a look at the API and couldn’t see anything either. Thanks for the note about auto mode, I don’t use that because I have some rooms on the sunny side and some on the shady side I never know what it’s going to decide to do, so I use heat or cool modes.

I wonder if Polyaire would be open to adding an indicator for cooling / heating / idle.

Thanks for your work! I was able to install the integration within a few minutes and the Airtouch was properly detected, but it seems like the integration currently does not add dampers when multiple ACs are connected to the Airtouch. Note: I do not have any ITCs connected to my system so that could also be part of the issue.

The Airtouch and the main AC units are correctly added as devices, so I can see the status of both ACs with their current temperature reading, the cooling/ heating status, and if a spill zone is activated, but the dampers of the AC units are not added as entities.

The dampers should be added to Home Assistant as Cover entities even if you have no ITCs. If you’re not seeing those, then there might be something unexpected in the messages mapping zones to ACs.

Would you be able to send me a copy of the debug logs for the integration that includes a restart of Home Assistant? You can turn debug logging on from the integration’s page in the frontend, then restart and turn debug logging off to automatically download a log file.

This is the relevant section of the log after turning on debugging for the integration and restarting HA. The 9 dampers / covers are being detected (group_number=0 - 8), but no entities are being created for these dampers. So a total of 3 devices are added (1 for the Airtouch panel and 2 for the ACs), and 7 entities are added. For comparison, the Airtouch 4 (PUSH) integration creates 2 devices with 29 entities.

2024-01-18 19:13:46.398 DEBUG (MainThread) [pyairtouch.comms.socket] ...  Header  : At4Header(to_address=176, from_address=128, packet_id=4, message_id=43, message_length=54)
2024-01-18 19:13:46.399 DEBUG (MainThread) [pyairtouch.comms.socket] ...  Message : GroupStatusMessage(groups=[GroupStatusData(group_number=0, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None), GroupStatusData(group_number=1, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=0, set_point=None), GroupStatusData(group_number=2, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None), GroupStatusData(group_number=3, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None), GroupStatusData(group_number=4, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None), GroupStatusData(group_number=5, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None), GroupStatusData(group_number=6, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None), GroupStatusData(group_number=7, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None), GroupStatusData(group_number=8, power_state=<GroupPowerState.OFF: 0>, control_method=<GroupControlMethod.DAMPER: 0>, spill_active=False, supports_turbo=False, has_sensor=False, battery_status=<SensorBatteryStatus.NORMAL: 0>, temperature=None, damper_percentage=100, set_point=None)])
2024-01-18 19:13:46.726 INFO (MainThread) [homeassistant.components.binary_sensor] Setting up airtouch.binary_sensor
2024-01-18 19:13:46.732 INFO (MainThread) [homeassistant.components.climate] Setting up airtouch.climate
2024-01-18 19:13:46.732 DEBUG (MainThread) [custom_components.airtouch.binary_sensor] Found entities [<AcSpillEntity: AC1 (00:00:00:00:00:00_ac0_spill)>, <AcSpillEntity: AC2 (00:00:00:00:00:00_ac1_spill)>]
2024-01-18 19:13:46.734 INFO (MainThread) [homeassistant.components.cover] Setting up airtouch.cover
2024-01-18 19:13:46.735 DEBUG (MainThread) [custom_components.airtouch.climate] Found entities [<AcClimateEntity: AC1 (00:00:00:00:00:00_ac0)>, <AcClimateEntity: AC2 (00:00:00:00:00:00_ac1)>]
2024-01-18 19:13:46.737 INFO (MainThread) [homeassistant.components.sensor] Setting up airtouch.sensor
2024-01-18 19:13:46.737 DEBUG (MainThread) [custom_components.airtouch.cover] Found entities []
2024-01-18 19:13:46.740 INFO (MainThread) [homeassistant.components.update] Setting up airtouch.update
2024-01-18 19:13:46.741 DEBUG (MainThread) [custom_components.airtouch.sensor] Found entities: [<AcTemperatureEntity: AC1 (00:00:00:00:00:00_ac0_temperature)>, <AcTemperatureEntity: AC2 (00:00:00:00:00:00_ac1_temperature)>]
2024-01-18 19:13:46.743 DEBUG (MainThread) [custom_components.airtouch.update] Found entities: [<AirtouchUpdateEntity: AirTouch 4 (00:00:00:00:00:00)>]
2024-01-18 19:13:46.861 DEBUG (MainThread) [pyairtouch.comms.socket] Read Raw

Thanks. Are you able to pull out the log entry for the AcAbility message which should have come through just before that part of the logs? That message has the mapping from ACs to zones which is probably where this is going wrong.

There’s nothing too sensitive in the logs other than the AC and zone names, but you’re welcome to send me a direct message if you want to keep the logs out of the public thread.

I’ve just published a new version of my integration v0.3.0 which adds support for manually setting the AirTouch IP address when broadcast discovery doesn’t work.

This release also adds a configuration option to select if you have a bypass damper installed. Currently this configuration just prevents the creation of unnecessary spill entities.

1 Like

Thanks for the update! I have installed it and I can confirm it is working wonderfully :tada:

Thanks for the new option to try!

I’ve had nothing but crickets from polyaire and the technician.

I’m trying to install this yet I am getting stuck at the spinning wheel in HACS?

EDIT

“Download failed - Got status code 404 when trying to download https://github.com/TheNoctambulist/hass-airtouch/releases/download/v0.3.0/hacs-airtouch.zip

This may have been my issue, done the manual installation and all detected and connected.

I noticed upon connection it has made new areas for everything based on what the zones were called in the Airtouch, gotta delete the extras =)

Glad you got it working.

I set up the integration to populate a “suggested area” for each zone based on the zone name under the assumption that most people would have their zones and areas named similarly. To be honest, it seems a bit like a bug in Home Assistant that the suggested areas are automatically created even if you don’t accept them!

If the suggested areas annoys people I can turn that feature off or make it optional. Or, now that I think about it, perhaps it would be better if I just cross check with the area registry first and only add the suggested area if there’s a match.

Perhaps the suggested area could also be adjusted to look for areas containing the name supplied first?

There is an 8 character limit for zones in AT4, also users naming conventions that are unique to them, Area “Living Room” vs Zone “Living”

Not like a massive dealbreaker, I’m sure we’re all used to some sort of cleanup every now and then =)

Thanks again

The AirTouch tablet really doesn’t like wi-fi band steering, I’ve found. Turning that off makes a big difference.

Yeah, that’s a good idea. I’ll roll that into the next update.

I’ve just published v0.4.0 which will only suggest existing area names. The integration uses some basic fuzzy matching logic to try and pick the best area for each zone.

The release also includes a couple of other fixes including an issue with spill/bypass entities not restoring correctly when Home Assistant is restarted.

2 Likes

Has anyone done MQTT push events to SEND commands to this integration and had it work OK ?

On my main Node Red instance i do not have (and do not want) the Node Red Webhooks integration running so i do not get access to the entities etc. However as of 2023.8 MQTT events should be supported in the core - so i could theoretically use those to activate entities (such as the main AC in heat mode) and set ITCs on and off etc.

Wondering if anyone has gone down this path

Craig

I’m not sure how MQTT events integrate into Home Assistant, but the climate entities exposed by the integration support all of the standard climate service calls such as climate.set_hvac_mode and climate.set_temperature, so if you can trigger Home Assistant services via MQTT it should all work.

OK good one thanks - will have a look at going that way

Craig

Hi there and thanks Ben for your continuing effort
i’m running into an issue ;
I have 2 AC systems on my property - one running an AirTouch 4 and another running an AirTouch 5
Whenever i try to add your integration it scans the network for an airtouch controller and it adds the AirTouch 5 unit by default and once it does that i can’t add a second unit.
I tried to turn off the AirTouch 5 controller temporary and while it did find the AirTouch 4 module in that instance - once it was finally finished the setup i then switched the AT5 module back on again ; but it seemed like the integration was having a hard time loading the correct entities as it kept listing the AT4 entities as unavailable.

any advice?

It is supposed to work out of the box with the auto discovery, but you’re the first person I’ve heard of with both an AirTouch 4 and 5 on the same network. It sounds like the AirTouch 4 discovery isn’t coming through when both are turned on, or maybe I’m just not handling multiple systems properly somewhere.

If I get some time this weekend I’ll try to fire up my AirTouch 4 simulator in parallel with the AirTouch 5 to see if I can reproduce the problem. I never really tested two systems together before.

In the meantime, are you able to send through some debug logs that includes the initial adding of the integration?
You should be able to do that from the integration details page by turning debug logging on, then deleting the “hub”, then clicking the “Add” button to reinitiate discovery.