Airtouch 4 integration (AUS)

That’s awesome thanks for sharing, I made my own images… but I’ll update soon with these new images.

I’ve made my first repo on GitHub with instructions on how I’ve made the card. It works, it is a bit involved but I thought I’d share my first pass.

Repo here - airtouch4 lovelace card

I’ve also made a quick demo video showing the card in action. Demo video

I’d love to hear thoughts and feedback.

1 Like

@mihailescu2m I’ve got a system with two AC units and I’d be happy to test it out for you. I haven’t installed a custom component before though and am having a bit of trouble getting it running. Should I be able to install it using HACS? I think I’ve got that running, but when I try to add your components URL to custom component in HACS it tells me “Repostitory structure for main is not compliant”

Whilst trying to work out how to get the new integration working, I’ve installed @LonePurpleWolf’s integration which is also great. Thanks for your efforts. Just wondering if anyone knows why this automation wouldn’t be working?

alias: Upstairs Cool
description: ''
trigger:
  - platform: device
    device_id: dcc2a633e9f0388f90ae90bbe8f40a96
    domain: climate
    entity_id: climate.ac_1
    type: current_temperature_changed
    above: 25
condition:
  - condition: state
    entity_id: input_boolean.ac_auto
    state: 'on'
    for:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
action:
  - service: climate.set_hvac_mode
    target:
      entity_id: climate.ac_1
    data:
      hvac_mode: cool
  - service: climate.set_temperature
    target:
      entity_id:
        - climate.kiara
        - climate.kyle
        - climate.master
        - climate.spare
    data:
      temperature: 25
mode: single

I have 3 automations like this that aim to keep the house between 20 and 25C, but even though the ac_auto state is on and the temperature of ac_1 is above 25C, the automation isn’t initiating. Running the automation’s actions sets the AC to the correct HVAC type and each of the rooms to the correct temperature.

you just need to download and extract the files in a home assistant components folder.
I will do an update later today so that it will work with HACS, then there won’t be any need for manual installation.

Given that I find the ITC temperature control algorithm not really suitable for me, or working well, I am also considering adding extra “fake” thermostats for each zone, then script the dampers to reach the temperature set there… would that be of interest to anyone else?

Thanks for updating to work with HACS, I’ll check it out once it’s uploaded.

Our system is only new and I’ve only added the ITCs (and only to the zones on one of the two systems) last week so I’m still getting a feel for them, but I thought they’d actually been doing a pretty good job. They’re certainly far more accurate than relying on the return systems sensor. My issue with them is that you need to set each room individually which makes trying to get the house to sit between a range of temperatures, vs just a fixed temperature, a bit annoying. Home Assistant will make that much easier though once I can get the Automations working.

I have several issues… like you, I don’t like having them set up separately. With young kids, doors stay open most of the time, so currently I figured what airflow is needed and set up the dampers manually to a position that maintains 90% of the time the temps we like just by setting the AC temp, rarely we need to change a setting for individual rooms. Using ITC control, I noticed instances where the dampers close everywhere, and it enters spill mode instead of shutting down the AC. So while temp-wise it’s ok with ITC, energy-wise it’s much more power hungry unless I manually shut down the AC. With dampers control, it shuts itself down much more.
Hence my idea to keep using damper control, and automation to detect only the cases when one room is too hot or too cold vs the others (e.g. when baking, kitchen becomes hot and influences the sensor and the temps in the other rooms).

1 Like

Have you tried setting the system’s control sensor (System Settings > Installers > AC Setup > Next > Detail Setting > Control Sensor) to Average? If you do that the system will set it’s Set Point at the average (possibly lowest for cooling, highest for heating) of all group set points and will turn off the outdoor unit once that occurs. It does still seem to run the indoor unit through the spill, but that’s relatively cheap to run. At least I think that’s what it does, it certainly sets it’s current temperature to the average of all the group temperatures.
I also set a minimum closure of 10% on each of the groups just so that there was still some air movement. Once I can get the Automations to work, I want it to set the system to Fresh (or possibly just off) between 21 and 24C.
As I said though, it’s a new system so I’m still playing with the settings to find something that works, but changing the Control Sensor to Average definitely seemed to make it more logical in my mind.

Yes I tried Average, Economy … all of them :slight_smile: And the AC was still using almost 1.5kWh with spill on. When spilling temperatures are mostly the ones I want, so better to turn off instead, save a few kW a day. I also have 20% min closure, and 30% min on the spill group…

You got me interested in what it’s costing to run ours. We’ve still got an old meter, but watching a single revolution for general household and then with both AC systems (1x 7.1kW and 1x 10kW) running on Fresh, they’re only using about 0.14kWh. I think about the only thing using power is all my nerd gear which was about 0.32kWh.

Same problem here! At the moment, I live by myself so usually have only a couple of smaller zones open whilst I WFH.
Drives me mad having to ‘game’ the system all the time - hearing air blasting in my living room whilst I work in my study during the day is frustrating (living room being spill).

My mate is coming to setup a feedback zone/loop directly to the intake instead of a ‘spill’ zone in the next few weeks. Having a bit more control over the temperature logic would be of benefit I think.
Running economy mode during winter, what annoys me the most is when at desired temperature, the fan turns off (eventually) but every few minutes, the fan comes on for say 8-10 seconds then off again. No idea if this is AT4 or the Panasonic unit doing this… wish we could see what was happening on the modbus side of things.

PS linear vents are damn loud :rage:

@Brett.Grivell @timbo
My integration can now be installed from HACS :slight_smile:
Need to add custom repository (GitHub - mihailescu2m/hass-airtouch4-platform: Airtouch4 integration for Home Assistant) and then install.

OK, I’ve got the HACS version installed, had a bit of a play and it’s generally working, but as expected for an early build there’s a few issues showing up.

  • My AC0 has four outlets without ITCs and AC1 has five outlets each with an ITC.
  • AC0 and AC1 control has the Set Point and Current Temperatures showing along with HVAC State and it appears to be able to control the system as expected using the various Heat, Cool etc buttons.
  • If the system is off, I can change the Set Point on AC0 using the dial to for example 20C. However, when I turn the unit on, the scale seems to change such that the lowest temperature I can select is 26C. I suspect this is due to the Set Point of the ITCs (25C), even though they’re only on AC1?
  • For the non-ITC groups, I can turn them on and off using the power button but I can’t see where I can change the control to allow me to adjust the baffles.
  • For the ITC groups, similarly, I can turn them on and off and I can adjust their temperature, but I can’t see how to change it to baffle control.
  • What should the Fan switches do? For me they’re behaving the same as the Power button on each Group Entity.
  • I can control the baffles using fan.decrease_speed etc in the Developer Tools so the functionality is there, I think it’s just not displaying correctly in the frontend.

@Brett.Grivell thanks for trying it out.

Yes, currently it’s looking only at AC0. I’ve pushed a new version that shows some debug info about groups and acs, can you please try and update, and check the logs and put the airtouch messages on a pastie? It would help me to assign groups to ACs. It should now also create thermostats only for the groups with ITCs, the groups without should have only fan entity.

It’s the fan speed. See below:

From the fan, you can set the Preset mode to DAMPER or ITC.

Fan switches and group switches do the same, turn the group on and off.

My fan entity card shows a slider for the speed, and the preset mode like in the screenshot above.
I’ve also installed slider-entity-row (GitHub - thomasloven/lovelace-slider-entity-row: 🔹 Add sliders to entity cards) where I have a list with all the zones (fans) showing their sliders.

Downloaded the new version and the non-ITC group’s thermostats are now listed as orphaned so I’ve removed them. I presume that was the expected action given you’re no longer creating thermostats for them.
I’ve now found the ITC vs Damper control, thanks. I haven’t installed any additional lovelace controls but my entity looks like this.
image
Or did you mean your list of Fan entities also has a slider? Personally I’m not too concerned as I don’t plan to operate the system manually through HA, this will do the automated control only.

Is this what you wanted from the logs?

2021-10-30 08:10:33 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-30 08:10:33 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration polyaire which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-30 08:10:42 ERROR (MainThread) [homeassistant.components.remote] The harmony platform for the remote integration does not support platform setup. Please remove it from your config.
2021-10-30 08:10:43 WARNING (MainThread) [custom_components.polyaire.airtouch4] ========== GROUPS INFO ==========
2021-10-30 08:10:43 WARNING (MainThread) [custom_components.polyaire.airtouch4] {0: 'Lounge', 1: 'Family', 2: 'Kitchen', 3: 'Study', 4: 'Master', 5: 'Kyle', 6: 'Kiara', 7: 'Spare', 8: 'Landing'}
2021-10-30 08:10:43 WARNING (MainThread) [custom_components.polyaire.airtouch4] ==============================
2021-10-30 08:10:43 WARNING (MainThread) [custom_components.polyaire.airtouch4] ========== ACS INFO ==========
2021-10-30 08:10:43 WARNING (MainThread) [custom_components.polyaire.airtouch4] {0: {'ac_unit_name': 'D/Stairs', 'ac_group_start': 0, 'ac_group_count': 0, 'ac_min_temp': 16, 'ac_max_temp': 32, 'ac_modes': {4: True, 3: True, 2: True, 1: True, 0: True}, 'fan_modes': {6: False, 5: False, 4: True, 3: True, 2: True, 1: False, 0: True}}, 1: {'ac_unit_name': 'Upstairs', 'ac_group_start': 4, 'ac_group_count': 4, 'ac_min_temp': 16, 'ac_max_temp': 32, 'ac_modes': {4: True, 3: True, 2: True, 1: True, 0: True}, 'fan_modes': {6: False, 5: False, 4: True, 3: True, 2: True, 1: False, 0: True}}}
2021-10-30 08:10:43 WARNING (MainThread) [custom_components.polyaire.airtouch4] ==============================
2021-10-30 08:10:45 ERROR (MainThread) [snitun.client.client_peer] Challenge/Response error with SniTun server (0 bytes read on a total of 32 expected bytes)
2021-10-30 08:10:45 ERROR (MainThread) [hass_nabucasa.remote] Connection problem to snitun server
2021-10-30 08:10:48 WARNING (MainThread) [homeassistant.components.homeassistant.triggers.numeric_state] Error initializing 'Upstairs Cool' trigger: In 'numeric_state' condition: unknown entity climate.ac_1
2021-10-30 08:10:48 WARNING (MainThread) [homeassistant.components.homeassistant.triggers.numeric_state] Error initializing 'Upstairs Heat' trigger: In 'numeric_state' condition: unknown entity climate.ac_1
2021-10-30 08:11:02 ERROR (MainThread) [snitun.client.client_peer] Challenge/Response error with SniTun server (0 bytes read on a total of 32 expected bytes)
2021-10-30 08:11:02 ERROR (MainThread) [hass_nabucasa.remote] Connection problem to snitun server

Thanks @Brett.Grivell - assuming Lounge, Family, Kitchen and Study are downstairs, and the rest upstairs, the update I just pushed (v.1.1.0) should fix multi-unit issues.

Yes there is a custom custom lovelace card that shows a list of fans with the sliders for each. But if the group is under ITC preset, the slider disappears, so if you want temperature control then you won’t need that card.

Great work, no errors in the log now.
I’m still seeing the issue where I can’t set the Downstairs unit lower than the set point of the ITCs attached to the upstairs unit. I can do that in the official app. But so far everything else I’ve tested appears to be working.

Weird, I thought I fixed this. I’ve pushed another version which has some messages in the log.
Can you please update again and paste the messages from your log? Cheers!

I thought maybe I’d messed up my testing so had another look and it’s not quite as simple a problem as we thought. Take the situation of both systems running on Heat. 4x Upstairs groups are on and set to 21. One group is off but set to 26 (note, on/off status doesn’t actually change behaviour just explaining why it’s on a different value). In this situation, the lowest I can set downstairs unit to, whilst running on Heat, is 26. If I turn the unit off, I can set it down to 16, but lets say I set it to 22. I now turn the unit on for Heat and the dial scale resets so that it’s right at the start. If I move the dial, the set point immediately jumps to 26. Now, if I adjust the Upstairs group that was set to 26 to say 23, I can still only set Downstairs to a minimum of 26. Turning Downstairs off / on results in the system resetting it’s minimum to 23.

Same behaviour after the update and the logs appear to be the same whether the Downstairs unit is on or off when HA restarts. At least as far as all reporting minimum value is 16.

2021-10-30 23:26:07 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration polyaire which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-30 23:26:07 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2021-10-30 23:26:17 ERROR (MainThread) [homeassistant.components.remote] The harmony platform for the remote integration does not support platform setup. Please remove it from your config.
2021-10-30 23:26:18 WARNING (MainThread) [custom_components.polyaire.airtouch4] {0: 'Lounge', 1: 'Family', 2: 'Kitchen', 3: 'Study', 4: 'Master', 5: 'Kyle', 6: 'Kiara', 7: 'Spare', 8: 'Landing'}
2021-10-30 23:26:18 WARNING (MainThread) [custom_components.polyaire.airtouch4] {0: {'ac_unit_name': 'D/Stairs', 'ac_group_start': 0, 'ac_group_count': 0, 'ac_min_temp': 16, 'ac_max_temp': 32, 'ac_modes': {4: True, 3: True, 2: True, 1: True, 0: True}, 'fan_modes': {6: False, 5: False, 4: True, 3: True, 2: True, 1: False, 0: True}}, 1: {'ac_unit_name': 'Upstairs', 'ac_group_start': 4, 'ac_group_count': 4, 'ac_min_temp': 16, 'ac_max_temp': 32, 'ac_modes': {4: True, 3: True, 2: True, 1: True, 0: True}, 'fan_modes': {6: False, 5: False, 4: True, 3: True, 2: True, 1: False, 0: True}}}
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Group 4 belongs to AC 0
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Group 5 belongs to AC 1
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Group 6 belongs to AC 1
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Group 7 belongs to AC 1
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Group 8 belongs to AC 1
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 4 from AC 0 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 4 from AC 0 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 5 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 5 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 6 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 6 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 7 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 7 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 8 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 8 from AC 1 is 16
2021-10-30 23:26:19 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-30 23:26:19 ERROR (MainThread) [snitun.client.client_peer] Challenge/Response error with SniTun server (0 bytes read on a total of 32 expected bytes)
2021-10-30 23:26:19 ERROR (MainThread) [hass_nabucasa.remote] Connection problem to snitun server
2021-10-30 23:26:37 ERROR (MainThread) [snitun.client.client_peer] Challenge/Response error with SniTun server (0 bytes read on a total of 32 expected bytes)
2021-10-30 23:26:37 ERROR (MainThread) [hass_nabucasa.remote] Connection problem to snitun server

I think it was getting the wrong AC unit for Master, it’s set to Downstairs in the log but the correct one should be Upstairs right?

I’ve pushed v.1.1.2 which should assign correctly now. Sorry for making you test so much :slight_smile:

Yep, that’s correct. Master, Kyle, Kiara, Spare and Landing are Upstairs. I’ve updated to v.1.1.2 and per log Group 4 is now reported as belonging to AC 1. I’m still seeing the incorrect minimum behaviour on Downstairs unit.

I’ve noticed that it’s also affecting Upstairs as well but the behaviour ends up being slightly different. If we start with the same example setup as above.

  • Master 21 On
  • Kiara 21 On
  • Kyle 21 On
  • Spare 21 On
  • Landing 26 Off

In this situation, the official app will set the Upstairs unit set point to the highest ‘On’ group, so 21 in this case. If I try to adjust the the temperature of the Upstairs unit in HA, the minimum I can set it to is the highest of any group set point, so 26. Note, if all groups are set to ITC, you normally couldn’t actually make this change in the official app. As this isn’t a setting you could perform in the official app, it isn’t reflected in the app, it still shows as 21. If I now make any change in the official app, the set point of Upstairs is correctly reset to 21 in HA.

2021-10-31 09:25:10 WARNING (MainThread) [custom_components.polyaire.airtouch4] {0: 'Lounge', 1: 'Family', 2: 'Kitchen', 3: 'Study', 4: 'Master', 5: 'Kyle', 6: 'Kiara', 7: 'Spare', 8: 'Landing'}
2021-10-31 09:25:10 WARNING (MainThread) [custom_components.polyaire.airtouch4] {0: {'ac_unit_name': 'D/Stairs', 'ac_group_start': 0, 'ac_group_count': 0, 'ac_min_temp': 16, 'ac_max_temp': 32, 'ac_modes': {4: True, 3: True, 2: True, 1: True, 0: True}, 'fan_modes': {6: False, 5: False, 4: True, 3: True, 2: True, 1: False, 0: True}}, 1: {'ac_unit_name': 'Upstairs', 'ac_group_start': 4, 'ac_group_count': 4, 'ac_min_temp': 16, 'ac_max_temp': 32, 'ac_modes': {4: True, 3: True, 2: True, 1: True, 0: True}, 'fan_modes': {6: False, 5: False, 4: True, 3: True, 2: True, 1: False, 0: True}}}
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Group 4 belongs to AC 1
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Group 5 belongs to AC 1
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Group 6 belongs to AC 1
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Group 7 belongs to AC 1
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Group 8 belongs to AC 1
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 4 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 4 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 5 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 5 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 6 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 6 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 7 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 7 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 8 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] Temp min of group 8 from AC 1 is 16
2021-10-31 09:25:11 WARNING (MainThread) [custom_components.polyaire.climate] ==============================