MyAir AC Zoning System, climate and Room Association for Components

@Brett_Adams Wow that is exactly what I want to do. Are you able to show your full node red code?
Thanks Mark

How do you style your input numbers? I actually like them.

I have a different setup (a custom appdaemon app to control zones based on localised temperatures, while also allowing individual manual overrides and conditions), my target temp sensor uses the custom number-box card - but I find it a little to compact.

image

Inside a vertical stack and entities card, also using the number-box card. I want the vertical spacing to be a bit more compact but the input number and +/- need to have some larger font and padding. Unfortuantely some of my styling changes play with margins/padding and increase vertical spacing, but it is ok for now… (open to improvements if you are bette with CSS than I am!)

  - entity: input_number.bedroom
	name: Bedroom
	icon: mdi:thermometer-lines
	type: custom:numberbox-card
	style: |
	  .info{font-size:15px !important}
	  .cur-num{font-size:20px !important}
	  .cur-unit{font-size:60% !important}
	  .padr{padding:12px !important}
	  .padl{padding:12px !important}
1 Like

If you have temp sensors in your Zones the integration creates both climate entities (which has target and current temp values) but also creates a sensor entity with the current temp (which is disabled by default). The current temp should work all the time but I can’t actually confirm that as I don’t have sensors in my zones.

Would people be interested in me creating a second integration which can perform the zone damper control for systems without the official temperature sensors? Basically take the existing Node Red implementations, but create new climate entities that control the Advantage Air ones?

I could just add it as a feature to Advantage Air, but figure a separate integration could then be used to control other systems too.

2 Likes

yes please. I am building my own system, using a mixture of KNX dampers, ESPhome/DHT22 temperature sensors and 2 Daikin duckted systems. I am tring to bring it all together is a similiar way to advantage air using Hassio and node Red.

Hi folks, I have a full eZone setup. I have it coming on automatically with the following automation

alias: A/C weekday am below 17
description: ''
trigger:
  - platform: time
    at: input_datetime.mfac
condition:
  - condition: time
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
  - condition: state
    entity_id: device_tracker.sm_n986b
    state: home
  - type: is_temperature
    condition: device
    device_id: 1990b5268896c6bf42030ad343a1aff6
    entity_id: sensor.openweathermap_temperature
    domain: sensor
    below: 17
action:
  - scene: scene.ac_heat_22_living_hobby_bed2
mode: single

That works well - at a set time (5.45am on weekdays), if I’m home and the temperature is less than 17, set a scene. The scene is:

- id: '1629031991153'
  name: AC Heat 22 Living Hobby Bed2
  entities:
    climate.ac:
      hvac_modes:
      - 'off'
      - cool
      - heat
      - fan_only
      - dry
      min_temp: 16
      max_temp: 32
      target_temp_step: 1
      fan_modes:
      - auto
      - low
      - medium
      - high
      current_temperature:
      temperature: 22
      fan_mode: auto
      friendly_name: AC
      supported_features: 9
      state: heat
    climate.main_living:
      hvac_modes:
      - 'off'
      - fan_only
      min_temp: 16
      max_temp: 32
      target_temp_step: 1
      current_temperature: 22.5
      temperature: 22
      friendly_name: Main Living
      supported_features: 1
      state: fan_only

snip...

    climate.hobby_room:
      hvac_modes:
      - 'off'
      - fan_only
      min_temp: 16
      max_temp: 32
      target_temp_step: 1
      current_temperature: 22.2
      temperature: 22
      friendly_name: Hobby Room
      supported_features: 1
      state: fan_only
    climate.bed_2:
      hvac_modes:
      - 'off'
      - fan_only
      min_temp: 16
      max_temp: 32
      target_temp_step: 1
      current_temperature: 22.1
      temperature: 22
      friendly_name: Bed 2
      supported_features: 1
      state: fan_only
 
snip

That is working well - A/C comes on to heat in the mornings.

The issue:

I then have a separate automation to turn heat OFF when the temperature outside reaches 20. This one is NOT working:

- id: '1629080642358'
  alias: Turn off AC heating at 20
  description: ''
  trigger:
  - type: temperature
    platform: device
    device_id: 1990b5268896c6bf42030ad343a1aff6
    entity_id: sensor.openweathermap_temperature
    domain: sensor
    above: 19
  condition:
  - condition: device
    device_id: 1dbccea58212998fcd77ae2ac04b398f
    domain: climate
    entity_id: climate.ac
    type: is_hvac_mode
    hvac_mode: heat
  action:
  - device_id: 1dbccea58212998fcd77ae2ac04b398f
    domain: climate
    entity_id: climate.ac
    type: set_hvac_mode
    hvac_mode: 'off'
  mode: single

The trace shows it firing OK at the time the temp hit 19+, but it is failing on the AC check:

Trace step:

condition: device
device_id: 1dbccea58212998fcd77ae2ac04b398f
domain: climate
entity_id: climate.ac
type: is_hvac_mode
hvac_mode: heat

Result:

Executed: August 17, 2021, 9:53:36 AM
Result:
result: false

Yet the eZone entity is showing:

image

…so I would think this should work… what am I doing wrong?

Fixed it myself…

For posterity, this appears to work OK:

alias: Turn off AC heating at Temp
description: ''
trigger:
  - platform: state
    entity_id: sensor.openweathermap_temperature
condition:
  - condition: state
    entity_id: climate.ac
    state: heat
  - condition: numeric_state
    entity_id: sensor.openweathermap_temperature
    above: input_number.ac_winter_trigger_temp_off
action:
  - service: climate.turn_off
    target:
      entity_id: climate.ac
mode: single

Hey @Brett_Adams
I have installed the system today - working a treat!
Thanks heaps for all your work.

FYI - I have the temp sensors in each zone and can see the current temp even with the system off. I moved them around and they update even when the system is off also.

1 Like

Thanks heaps for this!
Exactly what I was aiming to get running.

@Tockers I am pulling my hair out trying to get my dashboard card to look like yours.
I have all the zone set points adjusting with input numbers and automations.

I am struggling a bit with the zone on/off control
I have used a switch template to give me the on/off status and control

switch:
  - platform: template
    switches:
      living_zone_control:
#        value_template: "{{ is_state_attr('climate.living', 'hvac_mode', 'fan_only') }}"
        turn_on:
          service: climate.set_hvac_mode
          data:
            entity_id: climate.living
            hvac_mode: fan_only
        turn_off:
          service: climate.set_hvac_mode
          data:
            entity_id: climate.living
            hvac_mode: 'off'

My issue is, when the hvac_mode gets changed from the air cond app (wife uses this :slight_smile: ) the switch status does not update. I tried the line commented out in the above template but it results in the switch turning the hvac_mode to fan-only but it won’t turn it off and the switch status remains off.

Any help would be much appreciated

@zacolly I just used simple button entities with a toggle tap action to open/close a zone. It also receives state updates from the ezone system if that is used (through the integration). Full ezone card:

- cards:
  - type: vertical-stack
    cards:
      - type: entities
        entities:
          - entity: climate.ac
            type: custom:simple-thermostat
            style:
              .: |
                #states > * {
                  margin: -1px -15px !important;
                }
                ha-card {
                  height: 100%;
                  box-shadow: none;
                background: none;
                  background-color: rgba(255, 255, 255, 0);
                }
            layout:
              step: row
            header:
              name: Toshiba
              icon: mdi:fan
            hide:
              temperature: true
            step_size: 1
            decimals: 0
            sensors:
              - entity: sensor.temperature_158d00054047c7
                name: Current
          - type: buttons
            entities:
              - entity: cover.lounge
                name: Lounge
                icon: mdi:air-filter
                tap_action:
                  action: toggle
              - entity: cover.bedroom
                name: Bedroom
                icon: mdi:air-filter
                tap_action:
                  action: toggle
              - entity: cover.study
                name: Study
                icon: mdi:air-filter
                tap_action:
                  action: toggle
              - entity: cover.wineroom
                name: Wineroom
                icon: mdi:air-filter
                tap_action:
                  action: toggle
          - type: divider
          - entity: input_number.lounge
            name: Lounge
            icon: mdi:thermometer-lines
            type: custom:numberbox-card
            style: |
              .info{font-size:15px !important}
              .cur-num{font-size:20px !important}
              .cur-unit{font-size:60% !important}
              .padr{padding:12px !important}
              .padl{padding:12px !important}
          - entity: input_number.bedroom
            name: Bedroom
            icon: mdi:thermometer-lines
            type: custom:numberbox-card
            style: |
              .info{font-size:15px !important}
              .cur-num{font-size:20px !important}
              .cur-unit{font-size:60% !important}
              .padr{padding:12px !important}
              .padl{padding:12px !important}
          - entity: input_number.study
            name: Study
            icon: mdi:thermometer-lines
            type: custom:numberbox-card
            card_mod: null
            style: |
              .info{font-size:15px !important}
              .cur-num{font-size:20px !important}
              .cur-unit{font-size:60% !important}
              .padr{padding:12px !important}
              .padl{padding:12px !important}
          - entity: input_number.wineroom
            name: Wineroom
            icon: mdi:thermometer-lines
            type: custom:numberbox-card
            style: |
              .info{font-size:15px !important}
              .cur-num{font-size:20px !important}
              .cur-unit{font-size:60% !important}
              .padr{padding:12px !important}
              .padl{padding:12px !important}

Thanks heaps!
Now I know what the difference is. I have a MyAir not a eZone so I have a climate entity for each zone, not a cover.

Do you know how I can use a button to toggle the entity attribute hvac_mode from fan_only and ‘off’?
My switch template above does it but the switch on/off status doesn’t update when the hvac_mode is changed using the MyAir App.

Cheers,

In case someone else needs it…

I ended up using the custom:paper-buttons-row to give me icon states, and running scripts to set each climate.zone_name to hvac_mode fan_only or off

Section of my card:

type: custom:paper-buttons-row
buttons:
  - entity: climate.living
    layout: icon_name
    style:
      button:
        font-size: 20px
      icon:
        '--mdc-icon-size': 60px
    state_icons:
      fan_only: hass:fan
      'off': hass:fan-off
    state_styles:
      fan_only:
        button:
          color: '#329dcf'
      'off':
        button:
          color: '#82898c'
    tap_action:
      action: call-service
      service: script.aircond_living_zone_on
    hold_action:
      action: call-service
      service: script.aircond_living_zone_off

Scripts

aircond_living_zone_on:
  alias: AirCond Living Zone ON
  sequence:
  - service: climate.set_hvac_mode
    target:
      entity_id: climate.living
    data:
      hvac_mode: fan_only
  mode: single
  icon: hass:fan

aircond_living_zone_off:
  alias: AirCond Living Zone OFF
  sequence:
  - service: climate.set_hvac_mode
    target:
      entity_id: climate.living
    data:
      hvac_mode: 'off'
  mode: single
  icon: hass:fan-off
1 Like

After a few days of setting up automations and scripts…

Main page:

Settings page:

And a TRUCK-LOAD of automation coding… lol

Full climate control setup… still some tweaks to do though.

Thanks for this integration - it’s awesome…

2 Likes

Interesting little wrinkle overnight for my climate automation. Part of my automation triggers on a temperature change request - so even if the system is inactive, changing climate.ac temperature triggers the system to come on, assuming that you want a change based on the input.

That’s working very well - until last night we had a 1am 1 minute power-out and climate.ac temperature went to null… That change was ignored as it was not to a valid value, but when the power came back on, and climate.ac temperature was reset to 22, automation saw this as a change to 22 (correctly), and the air-con came on. :smiley:

I need a condition in the automation to check if the trigger’s previous state was numerically valid (and not empty), so it does not interpret recovery from a power-out as a temp change request.

The trigger is this:

trigger:
  - platform: state
    entity_id: climate.ac
    attribute: temperature

From searching on here, I think I need a condition to check the previous state, i.e. trigger.from_state.state, but I’m not sure on the best way to do this.

Would this work, or is there a better way to check (the minimum settable temperature on the system is 16, so the test should pass if it’s set).

condition: template
  value_template: "{{ trigger.from_state.state | int >= 16 }}"

Open to better solutions!

Haven’t had another power-cut to test this, but one thing I have worked out is that the value_template for a trigger based on the AC unit’s temperature on a change needs to be (in case anyone else runs into this):

value_template: '{{ trigger.from_state.attributes.temperature | int >= 16 }}'

not…

value_template: "{{ trigger.from_state.state | int >= 16 }}"

Brett_Adams

Aug 11

Would people be interested in me creating a second integration which can perform the zone damper control for systems without the official temperature sensors? Basically take the existing Node Red implementations, but create new climate entities that control the Advantage Air ones?

I could just add it as a feature to Advantage Air, but figure a separate integration could then be used to control other systems too.

yes please! Has this been done anywhere?

I have a 5 zone system but not the eZone sensors. I have the Xiaomi temperature sensors in each zone and would desperately like to be able to change the dampers or master zone temp to prevent the rooms from over/under cooling

Second this - NodeRed works great but needs some work to get it going.
If you do decide to add damper control with external temp sensors, would be great to include confgurables like min/max cover positions, degrees C range, and cover change amount. E.g. I updated your NodeRed config to increase the cover chance %age to get quicker results.

1 Like

Only via a NodeRed config so far - as mentioned in the multiple posts above.

1 Like