Airtouch 4 integration (AUS)

@Zotech I’ll try to explain, HA can be complex.

Home Assistant (HA) doesn’t natively know how to communicate with every piece of equipment around. Each device needs an “Integration”, which is a piece of software that lets HA communicate with that device. Integrations can be “built in”, or “custom”. Custom integrations need to be added to Home Assistant, either manually or using the Home Assistant Community Store (HACS). I don’t use HACS so I don’t know much about it.

Home Assistant comes with a built in Airtouch 4 integration, this one here. There’s also this custom integration on github, which is the one I use. I don’t know if this thread is about one integration in particular, both are mentioned. I think both integrations can be installed using the HACS - only one at a time - but I run Home Assistant on docker on a Raspberry Pi rather than on Home Assistant OS so I don’t really know how that works.

I think you’re using the built in HA Airtouch 4 integration. I don’t know much about that one because I haven’t used it for quite a while. I use the custom integration linked above, which works well. With that I can change damper, zones, etc while the system is turned off.

For some reason your integration / control looks to be giving you a power button against each zone, rather than turning the zone / damper on and off it’s turning the whole system on or off. To work out why we’d have to dig into the user interface widget you’re using. First, create another dashboard and widget to control HA to see if it works better. I use Simple Themostat, which I installed manually into HA.

Alternately, uninstall your current AT4 integration and try the other one. The main way to tell them apart is (I think) either the icon or the word “Push” in the title of the one I use. Try the other integration with the simple thermostat widget and you may have more luck.

This screenshot shows my main Airtouch4 dashboard. It looks fairly simple, but it gives me good control over temperatures, dampers, has an off timer (written in AppDaemon), and does everything I need. I used another dashboard I found as the starting code, then modified it fairly heavily. It doesn’t use a simple instance of simple thermostat, it uses, multiple so it’s laid out in a way that works quite well.

You are a legend my friend. Thanks for taking the time to write the reply, I never realised there was two integrations, I was using the official one. I’ve now loaded the integration from HACS and I can see all the damper and climate entities.

1 Like

You’re welcome. There’s a bit of a learning curve for Home Assistant, and Airtouch with HA. I’ve been refining my automations for a couple of years as I learned HA. Now I’m occasionally writing AppDaemon Python code when I need more control than automations can provide.

I’ve changed my card to the one you posted but am having issues with the damper sliders showing.
They are showing fine before I click on Done but soon as I click on it they disappear. Am I missing something?

type: vertical-stack
cards:
  - type: custom:simple-thermostat
    entity: climate.ac_daikin
    layout:
      mode:
        headings: false
        icons: true
        names: true
    hide:
      temperature: true
      state: true
    setpoints:
      target_temp_low:
        hide: true
      target_temp_high:
        hide: true
    control:
      hvac: true
      fan:
        low:
          name: Low
        medium:
          name: Medium
        high:
          name: High
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-entity-card
        entity: climate.itc_room1
        icon: mdi:air-filter
        name: room1
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room1
        secondary_info: none
      - type: custom:mushroom-entity-card
        entity: climate.itc_room2
        icon: mdi:air-filter
        name: room2
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room2
        secondary_info: none
      - type: custom:mushroom-entity-card
        entity: climate.itc_room3
        icon: mdi:air-filter
        name: room3
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room3
        secondary_info: none
      - type: custom:mushroom-entity-card
        entity: climate.itc_room4
        icon: mdi:air-filter
        name: room4
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room4
        secondary_info: none
  - type: horizontal-stack
    cards:
      - type: custom:simple-thermostat
        entity: climate.itc_room1
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        step_size: '1'
        decimals: '0'
      - type: custom:simple-thermostat
        entity: climate.itc_room2
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        decimals: '0'
        step_size: '1'
      - type: custom:simple-thermostat
        entity: climate.itc_room3
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        decimals: '0'
        step_size: '1'
      - type: custom:simple-thermostat
        entity: climate.itc_room4
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        decimals: '0'
        step_size: '1'
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room1", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room1", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room1", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room1", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room1") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room1
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room1
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room2", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room2", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room2", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room2", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room2") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room2
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room2
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room3", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room3", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room3", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room3", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room3") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room3
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room3
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room4", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room4", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room4", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room4", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room4") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room4
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room4
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-entity-card
        entity: climate.itc_room5
        icon: mdi:air-filter
        name: room5
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room5
        secondary_info: none
      - type: custom:mushroom-entity-card
        entity: climate.itc_room6
        icon: mdi:air-filter
        name: room6
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room6
        secondary_info: none
      - type: custom:mushroom-entity-card
        entity: climate.itc_room7
        icon: mdi:air-filter
        name: room7
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room7
        secondary_info: none
      - type: custom:mushroom-entity-card
        entity: climate.itc_room4
        icon: mdi:air-filter
        name: room8
        layout: vertical
        tap_action:
          action: call-service
          service: fan.toggle
          service_data:
            entity_id: fan.damper_room4
        secondary_info: none
  - type: horizontal-stack
    cards:
      - type: custom:simple-thermostat
        entity: climate.itc_room5
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        step_size: '1'
        decimals: '0'
      - type: custom:simple-thermostat
        entity: climate.itc_room6
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        decimals: '0'
        step_size: '1'
      - type: custom:simple-thermostat
        entity: climate.itc_room7
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        decimals: '0'
        step_size: '1'
      - type: custom:simple-thermostat
        entity: climate.itc_room4
        layout:
          step: column
        hide:
          state: true
        control: false
        header: false
        sensors: false
        fallback: '%'
        style: |
          ha-card {
            --st-font-size-xl: 20px;
            --st-spacing: 1px;
          }
        decimals: '0'
        step_size: '1'
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room5", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room5", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room5", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room5", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room5") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room1
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room5
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room6", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room6", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room6", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room6", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room6") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room6
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room2
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room7", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room7", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room7", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room7", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room7") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room7
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room7
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
      - type: custom:mushroom-template-card
        primary: '{{ state_attr("climate.itc_room4", "current_temperature") }}°C'
        secondary: |-
          {% if state_attr("fan.damper_room4", "preset_mode") == "ITC" %}
            {% set hvacState = state_attr("climate.itc_room4", "hvac_action") | capitalize %}
            {% set state = state_attr("fan.damper_room4", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
          {% else %}
            {% set state = states("fan.damper_room4") | capitalize %}
          {% endif %} {{ state }}
        layout: vertical
        entity: room4
        tap_action:
          action: call-service
          service: input_select.select_next
          data: {}
          target:
            entity_id: input_select.dampermodeselect_room4
        card_mod:
          style: |
            ha-card {
              --card-primary-font-size: 16px;
              --card-secondary-font-size: 15px;
              --icon-size: 42px;
            }
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room1
            state: 'on'
          - entity: sensor.preset_mode_room1
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room1 Damper
          entity: fan.damper_room1
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room2
            state: 'on'
          - entity: sensor.preset_mode_room2
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room2 Damper
          entity: fan.damper_room2
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room3
            state: 'on'
          - entity: sensor.preset_mode_room3
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room3 Damper
          entity: fan.damper_room3
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room4
            state: 'on'
          - entity: sensor.preset_mode_room4
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room4 Damper
          entity: fan.damper_room4
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room5
            state: 'on'
          - entity: sensor.preset_mode_room5
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room5 Damper
          entity: fan.damper_room5
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room6
            state: 'on'
          - entity: sensor.preset_mode_room6
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room6 Damper
          entity: fan.damper_room6
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room7
            state: 'on'
          - entity: sensor.preset_mode_room7
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room7 Damper
          entity: fan.damper_room7
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: fan.damper_room4
            state: 'on'
          - entity: sensor.preset_mode_room4
            state: Damper
        card:
          type: custom:slider-entity-row
          name: room8 Damper
          entity: fan.damper_room4
          attribute: percentage
          min: 5
          max: 100
          step: 5
          grow: true
          toggle: false
          full_row: false

I don’t really know. You’d have to provide screenshots to help me understand what you mean.

Here’s my Airtouch Dashboard. It has a few integrated features, like calling a cooldown action so it turns off after a few minutes on fan, and it integrates with my AppDaemon “turn off in x minutes” plugin. It’s got a bit of dynamic UI changing based on state and actions.

I got the base code from a thread here somewhere, I’ve been evolving it for a year or two. It would probably take me a while to work out exactly how it works.

title: Ducted HVAC
views:
  - title: Home
    cards:
      - type: vertical-stack
        cards:
          - type: custom:simple-thermostat
            entity: climate.ac_daikin
            layout:
              mode:
                headings: false
                icons: true
                names: true
            header: false
            sensors:
              - entity: sensor.outside_temperature_current
                name: Temperature
                icon: mdi:sun-thermometer-outline
            hide:
              temperature: true
              state: true
            setpoints:
              target_temp_low:
                hide: true
              target_temp_high:
                hide: true
            control:
              hvac: true
              fan:
                high:
                  name: High
                low:
                  name: Low
                medium:
                  name: Medium
            style: |
              ha-card {
                  --st-font-size-xl: 60px;
                  --st-font-size-m: 30px;
                  --st-font-size-title: 15px;
                  --st-font-size-sensors: 20px;
                  --st-spacing: 3px;
              }
          - type: horizontal-stack
            cards:
              - type: custom:mushroom-template-card
                primary: Living
                icon: |
                  {% if is_state("climate.itc_living", "auto") %}
                    mdi:fan
                  {% else %}
                    mdi:circle-off-outline
                  {% endif %}
                icon_color: |
                  {% if is_state("climate.itc_living", "auto") %}
                    #1192f5
                  {% else %}
                    #aaaaaa
                  {% endif %}
                layout: vertical
                tap_action:
                  action: call-service
                  service: fan.toggle
                  service_data:
                    entity_id: fan.damper_living
                secondary_info: none
              - type: custom:mushroom-template-card
                primary: Master
                icon: |
                  {% if is_state("climate.itc_master", "auto") %}
                    mdi:fan
                  {% else %}
                    mdi:circle-off-outline
                  {% endif %}
                icon_color: |
                  {% if is_state("climate.itc_master", "auto") %}
                    #1192f5
                  {% else %}
                    #aaaaaa
                  {% endif %}
                name: Master
                layout: vertical
                tap_action:
                  action: call-service
                  service: fan.toggle
                  service_data:
                    entity_id: fan.damper_master
                secondary_info: none
              - type: custom:mushroom-template-card
                primary: Room2
                icon: |
                  {% if is_state("climate.itc_room2", "auto") %}
                    mdi:fan
                  {% else %}
                    mdi:circle-off-outline
                  {% endif %}
                icon_color: |
                  {% if is_state("climate.itc_room2", "auto") %}
                    blue
                  {% else %}
                    #aaaaaa
                  {% endif %}
                layout: vertical
                tap_action:
                  action: call-service
                  service: fan.toggle
                  service_data:
                    entity_id: fan.damper_room2
                secondary_info: none
              - type: custom:mushroom-template-card
                primary: Guest
                icon: |
                  {% if is_state("climate.itc_guest", "auto") %}
                    mdi:fan
                  {% else %}
                    mdi:circle-off-outline
                  {% endif %}
                icon_color: |
                  {% if is_state("climate.itc_guest", "auto") %}
                    blue
                  {% else %}
                    #aaaaaa
                  {% endif %}
                layout: vertical
                tap_action:
                  action: call-service
                  service: fan.toggle
                  service_data:
                    entity_id: fan.damper_guest
                secondary_info: none
          - type: horizontal-stack
            cards:
              - type: custom:simple-thermostat
                entity: climate.itc_living
                layout:
                  step: column
                hide:
                  state: true
                control: false
                header: false
                sensors: false
                fallback: '%'
                style: |
                  ha-card {
                    --st-font-size-xl: 20px;
                    --st-spacing: 1px;
                  }
                step_size: '1'
                decimals: '0'
              - type: custom:simple-thermostat
                entity: climate.itc_master
                layout:
                  step: column
                hide:
                  state: true
                control: false
                header: false
                sensors: false
                fallback: '%'
                style: |
                  ha-card {
                    --st-font-size-xl: 20px;
                    --st-spacing: 1px;
                  }
                decimals: '0'
                step_size: '1'
              - type: custom:simple-thermostat
                entity: climate.itc_room2
                layout:
                  step: column
                hide:
                  state: true
                control: false
                header: false
                sensors: false
                fallback: '%'
                style: |
                  ha-card {
                    --st-font-size-xl: 20px;
                    --st-spacing: 1px;
                  }
                decimals: '0'
                step_size: '1'
              - type: custom:simple-thermostat
                entity: climate.itc_guest
                layout:
                  step: column
                hide:
                  state: true
                control: false
                header: false
                sensors: false
                fallback: '%'
                style: |
                  ha-card {
                    --st-font-size-xl: 20px;
                    --st-spacing: 1px;
                  }
                decimals: '0'
                step_size: '1'
          - type: horizontal-stack
            cards:
              - type: custom:mushroom-template-card
                primary: >-
                  {{ state_attr("climate.itc_living", "current_temperature")
                  }}°C
                secondary: >-
                  {% if state_attr("fan.damper_living", "preset_mode") == "ITC"
                  %}
                    {% set hvacState = state_attr("climate.itc_living", "hvac_action") | capitalize %}
                    {% set state = state_attr("fan.damper_living", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
                  {% else %}
                    {% set state = states("fan.damper_living") | capitalize %}
                  {% endif %} {{ state }}
                layout: vertical
                entity: Lounge
                tap_action:
                  action: call-service
                  service: input_select.select_next
                  data: {}
                  target:
                    entity_id: input_select.dampermodeselect_living
                hold_action:
                  action: navigate
                  navigation_path: /airtouch-monitoring/lounge
                card_mod:
                  style: |
                    ha-card {
                      --card-primary-font-size: 16px;
                      --card-secondary-font-size: 15px;
                      --icon-size: 42px;
                    }
              - type: custom:mushroom-template-card
                primary: >-
                  {{ state_attr("climate.itc_master", "current_temperature")
                  }}°C
                secondary: >-
                  {% if state_attr("fan.damper_master", "preset_mode") == "ITC"
                  %}
                    {% set hvacState = state_attr("climate.itc_master", "hvac_action") | capitalize %}
                    {% set state = state_attr("fan.damper_master", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
                  {% else %}
                    {% set state = states("fan.damper_master") | capitalize %}
                  {% endif %} {{ state }}
                layout: vertical
                entity: Master
                tap_action:
                  action: call-service
                  service: input_select.select_next
                  data: {}
                  target:
                    entity_id: input_select.dampermodeselect_master
                hold_action:
                  action: navigate
                  navigation_path: /airtouch-monitoring/master
                card_mod:
                  style: |
                    ha-card {
                      --card-primary-font-size: 16px;
                      --card-secondary-font-size: 15px;
                      --icon-size: 42px;
                    }
              - type: custom:mushroom-template-card
                primary: '{{ state_attr("climate.itc_room2", "current_temperature") }}°C'
                secondary: >-
                  {% if state_attr("fan.damper_room2", "preset_mode") == "ITC"
                  %}
                    {% set hvacState = state_attr("climate.itc_room2", "hvac_action") | capitalize %}
                    {% set state = state_attr("fan.damper_room2", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
                  {% else %}
                    {% set state = states("fan.damper_room2") | capitalize %}
                  {% endif %} {{ state }}
                layout: vertical
                entity: Room2
                tap_action:
                  action: call-service
                  service: input_select.select_next
                  data: {}
                  target:
                    entity_id: input_select.dampermodeselect_room2
                hold_action:
                  action: navigate
                  navigation_path: /airtouch-monitoring/room2
                card_mod:
                  style: |
                    ha-card {
                      --card-primary-font-size: 16px;
                      --card-secondary-font-size: 15px;
                      --icon-size: 42px;
                    }
              - type: custom:mushroom-template-card
                primary: '{{ state_attr("climate.itc_guest", "current_temperature") }}°C'
                secondary: >-
                  {% if state_attr("fan.damper_guest", "preset_mode") == "ITC"
                  %}
                    {% set hvacState = state_attr("climate.itc_guest", "hvac_action") | capitalize %}
                    {% set state = state_attr("fan.damper_guest", "percentage") | lower + "%" if hvacState != "Off" else "Off" %}
                  {% else %}
                    {% set state = states("fan.damper_guest") | capitalize %}
                  {% endif %} {{ state }}
                layout: vertical
                entity: Guest
                tap_action:
                  action: call-service
                  service: input_select.select_next
                  data: {}
                  target:
                    entity_id: input_select.dampermodeselect_guest
                hold_action:
                  action: navigate
                  navigation_path: /airtouch-monitoring/guest
                card_mod:
                  style: |
                    ha-card {
                      --card-primary-font-size: 16px;
                      --card-secondary-font-size: 15px;
                      --icon-size: 42px;
                    }
          - type: horizontal-stack
            cards:
              - type: conditional
                conditions:
                  - entity: fan.damper_living
                    state: 'on'
                  - entity: sensor.preset_mode_living
                    state: Damper
                card:
                  type: custom:slider-entity-row
                  name: Lounge Damper
                  entity: fan.damper_living
                  attribute: percentage
                  min: 5
                  max: 100
                  step: 5
                  grow: true
                  toggle: false
                  full_row: false
          - type: horizontal-stack
            cards:
              - type: conditional
                conditions:
                  - entity: fan.damper_master
                    state: 'on'
                  - entity: sensor.preset_mode_master
                    state: Damper
                card:
                  type: custom:slider-entity-row
                  name: Master Damper
                  entity: fan.damper_master
                  attribute: percentage
                  min: 5
                  max: 100
                  step: 5
                  grow: true
                  toggle: false
                  full_row: false
          - type: horizontal-stack
            cards:
              - type: conditional
                conditions:
                  - entity: fan.damper_room2
                    state: 'on'
                  - entity: sensor.preset_mode_room2
                    state: Damper
                card:
                  type: custom:slider-entity-row
                  name: Room2 Damper
                  entity: fan.damper_room2
                  attribute: percentage
                  min: 5
                  max: 100
                  step: 5
                  grow: true
                  toggle: false
                  full_row: false
          - type: horizontal-stack
            cards:
              - type: conditional
                conditions:
                  - entity: fan.damper_guest
                    state: 'on'
                  - entity: sensor.preset_mode_guest
                    state: Damper
                card:
                  type: custom:slider-entity-row
                  name: Guest Damper
                  entity: fan.damper_guest
                  attribute: percentage
                  min: 5
                  max: 100
                  step: 5
                  grow: true
                  toggle: false
                  full_row: false
          - type: horizontal-stack
            cards:
              - type: entities
                show_header_toggle: false
                entities:
                  - entity: input_number.ducted_ac_off_timer
                    name: Off Timer
                    icon: mdi:play-outline
                    tap_action:
                      action: call-service
                      service: script.airtouch_off_with_delay
                      data:
                        seconds: '30'
                  - type: conditional
                    conditions:
                      - entity: sensor.countdown_timer_ducted
                        state: 'on'
                    row:
                      type: attribute
                      entity: sensor.countdown_timer_ducted
                      attribute: counter_minutes
                      name: Time until off
                      suffix: mins
                  - type: conditional
                    conditions:
                      - entity: sensor.countdown_timer_ducted
                        state: 'on'
                    row:
                      type: attribute
                      entity: sensor.countdown_timer_ducted
                      attribute: finish_time
                      name: Finish Time
          - type: horizontal-stack
            cards:
              - type: conditional
                conditions:
                  - entity: climate.ac_daikin
                    state: fan_only
                card:
                  type: custom:mushroom-template-card
                  primary: Cooldown running
                  icon: mdi:fan-chevron-down
                  icon_color: blue
                  layout: vertical
                  card_mod:
                    style: |
                      ha-card {
                        --card-primary-font-weight: medium;
                      }

I worked it out, its because my airtouch is not set to damper mode so the condition is not met. If I remove the condition for sensor.preset_mode it shows up

Yep, you can only change damper percentages in damper mode. I think you have to enable that option on the Airtouch first as well.

Hey everyone,

After finally finding the issue with my AirTouch 4 unit and why I couldn’t connect to it because I had local passwords on I disabled it and I can connect my HA to my AirTouch.

I was wondering if there is a way to have the local password on so I have a bit more security?

I’m not quite sure what you mean @thommo17 . Did you have passwords on the Android tablet user? What are you trying to secure? Do you want to prevent anyone in the house accessing the tablet running the Airtouch?

Is anyone else finding that AT4 is dropping off the wifi network randomly in recent time? Might have been a firmware update? Needs a reboot of the controller for it to be able to see any wifi networks again.

Nope. But my AT4 tablet was replaced with AT5 when it had Wi-Fi problems a year ago or so. Still an AT4 system just with newer tablet.

Same here. Is it on 2.4 or 5 GHz wifi?

For info:
https://github.com/mihailescu2m/hass-airtouch4-platform

Someone else raised an issue just recently. I don’t know if the developer is still active on this project though.

5Ghz Wi-Fi here.

I upgraded to HA 2023.12.3 this morning, and a few things aren’t working properly with my automations any more. In a couple of places I was using the wrong action or the wrong entity (fan vs damper) and it was working anyway, which I’ve fixed up.

One I haven’t solved yet. I often put a fan into damper mode, change its percentage, then set it back to ITC. The action to change the damper percentage doesn’t give an error but also doesn’t work any more. Does anyone know how to change the damper percentage with an action?

I logged a home assistant core bug here. When I rolled back to 2023.11.3 everything started working perfectly again.

  - service: climate.set_preset_mode
    data:
      preset_mode: Damper
    target:
      entity_id:
        - climate.itc_living
  - service: fan.turn_on
    data:
      percentage: 50
    target:
      entity_id: fan.damper_living
  - service: climate.set_preset_mode
    data:
      preset_mode: ITC
    target:
      entity_id:
        - fan.damper_living

After changing wifi infrastructure it was all going so well until recently, now the dreaded error messages are back:

2023-12-20 11:23:41.360 ERROR (MainThread) [custom_components.polyaire.airtouch4] Connection error in receiver!
2023-12-20 11:23:43.967 ERROR (MainThread) [custom_components.polyaire.airtouch4] Error sending message! Deleting existing connection and retry sending in 5 seconds...

The only thing that ever helped me with those error messages was replacing the console with a new one.

I’m still interested to hear if anyone is having problems with HA 2023.12 controlling damper percentages manually.

Yeah I already replaced the console with a new one :slight_smile:

I guess it’s time to learn Python so you can work out if it’s a bug! Given it was fixed when my hardware was replaced I wonder if it’s a run of bad hardware. Did you get the Airtouch4 tablet or the Airtouch5? Mine is AT5.

Another way of setting the damper percentage is using the fan.set_percentage service. You would first turn on the damper with service: fan.turn_on without any data and then call fan.set_percentage . I found this to work more reliably in general (although your method should work of course). I also tend to add a delay between service calls although this might not be required.

  - service: fan.turn_on
    target:
      entity_id: fan.damper_living
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 100
  - service: fan.set_percentage
    target:
      entity_id: fan.damper_living
    data:
      percentage: 50
1 Like