I played around a bit more today, and got to this point. Iām pretty happy with it right now, it can be improvedā¦ But I have all the functionally (except fan speed which I think isnāt implemented in the integration yet) in a much smaller footprint.
Because its so much smaller nowā¦ i think instead of a slider, Iād prefer just a box with up and down arrows to change the temperatureā¦ i canāt seem to find the name of that though, so I canāt find the custom card!
Main Controls
type: 'custom:button-card'
custom_fields:
titlelabel: 'Airtouch 4:'
titlemode: '[[[ return `${states["climate.ac0"].state}` ]]] '
ac0auto:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].state != "auto") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:brightness-auto'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_hvac_mode
service_data:
entity_id: climate.ac0
hvac_mode: auto
ac0heat:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].state != "heat") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:white-balance-sunny'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_hvac_mode
service_data:
entity_id: climate.ac0
hvac_mode: heat
ac0cool:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].state != "cool") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:air-conditioner'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_hvac_mode
service_data:
entity_id: climate.ac0
hvac_mode: cool
ac0dry:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].state != "dry") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:hair-dryer'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_hvac_mode
service_data:
entity_id: climate.ac0
hvac_mode: dry
ac0fan:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].state != "fan_only") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:fan'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_hvac_mode
service_data:
entity_id: climate.ac0
hvac_mode: fan_only
ac0power:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: darkgreen
icon: 'mdi:power'
type: 'custom:button-card'
state:
- value: 'off'
color: red
tap_action:
action: call-service
service: >-
[[[ if (states["climate.ac0"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.ac0
ac0fanauto:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].attributes.fan_mode != "auto") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:fan'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_fan_mode
service_data:
entity_id: climate.ac0
fan_mode: auto
ac0fanlow:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].attributes.fan_mode != "low") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:fan-speed-1'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_fan_mode
service_data:
entity_id: climate.ac0
fan_mode: low
ac0fanmedium:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].attributes.fan_mode != "medium") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:fan-speed-2'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_fan_mode
service_data:
entity_id: climate.ac0
fan_mode: medium
ac0fanhigh:
card:
entity: climate.ac0
show_state: false
show_name: false
show_icon: true
color: |
[[[
if (states["climate.ac0"].attributes.fan_mode != "high") return 'grey';
else return 'darkgreen';
]]]
icon: 'mdi:fan-speed-3'
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: climate.set_fan_mode
service_data:
entity_id: climate.ac0
fan_mode: high
styles:
card:
- padding: 2%
- font-size: 15px
custom_fields:
titlelabel:
- align-self: middle
- justify-self: start
titlemode:
- align-self: middle
- justify-self: start
ac0auto: null
ac0heat: null
ac0cool: null
ac0dry: null
ac0fan: null
ac0power: null
ac0fanauto: null
ac0fanlow: null
ac0fanmedium: null
ac0fanhigh: null
grid:
- grid-template-areas: >-
"titlelabel titlelabel titlelabel titlemode titlemode titlemode" "l l l
l l l" "ac0auto ac0heat ac0cool ac0dry ac0fan ac0power" "ac0fanauto
ac0fanlow ac0fanmedium ac0fanhigh i i"
- grid-template-rows: 1fr 1fr 1fr 1fr
- grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr
img_cell:
- justify-content: start
- align-items: start
- margin: none
name:
- font-weight: bold
- font-size: 20px
- align-self: middle
- justify-self: start
- padding-bottom: 5px
show_icon: false
Zones
type: 'custom:button-card'
custom_fields:
column1: Zone
column2: Current
column3: Set
column4: On/Off
masterlabel: Master
bed2label: Bed 2
bed3label: Bed 3
bed4label: Bed 4
familylabel: Family
garagelabel: Garage
medialabel: Media
mastertemp: >-
[[[ return `${states["climate.master"].attributes.current_temperature} Ā°C`
]]]
bed2temp: >-
[[[ return `${states["climate.bed_2"].attributes.current_temperature} Ā°C`
]]]
bed3temp: >-
[[[ return `${states["climate.bed_3"].attributes.current_temperature} Ā°C`
]]]
bed4temp: >-
[[[ return `${states["climate.bed_4"].attributes.current_temperature} Ā°C`
]]]
familytemp: >-
[[[ return `${states["climate.family"].attributes.current_temperature} Ā°C`
]]]
garagetemp: >-
[[[ return `${states["climate.garage"].attributes.current_temperature} Ā°C`
]]]
mediatemp: >-
[[[ return `${states["climate.media"].attributes.current_temperature} Ā°C`
]]]
masterslider:
card:
entity: climate.master
full_row: true
hide_state: false
min: 16
max: 30
show_icon: false
type: 'custom:slider-entity-row'
bed2slider:
card:
entity: climate.bed_2
full_row: true
hide_state: false
min: 16
max: 30
show_icon: false
type: 'custom:slider-entity-row'
bed3slider:
card:
entity: climate.bed_3
full_row: true
hide_state: false
min: 16
max: 30
show_icon: false
type: 'custom:slider-entity-row'
bed4slider:
card:
entity: climate.bed_4
full_row: true
hide_state: false
min: 16
max: 30
show_icon: false
type: 'custom:slider-entity-row'
familyslider:
card:
entity: climate.family
full_row: true
hide_state: false
min: 16
max: 30
show_icon: false
type: 'custom:slider-entity-row'
garageslider:
card:
entity: climate.garage
full_row: true
hide_state: false
min: 16
max: 30
show_icon: false
type: 'custom:slider-entity-row'
mediaslider:
card:
entity: climate.media
full_row: true
hide_state: false
min: 16
max: 30
show_icon: false
type: 'custom:slider-entity-row'
masterbutton:
card:
entity: climate.master
show_state: false
show_name: false
show_icon: true
icon: 'mdi:power'
color: darkgreen
size: 25px
right: 10px
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: >-
[[[ if (states["climate.master"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.master
bed2button:
card:
entity: climate.bed_2
show_state: false
show_name: false
show_icon: true
icon: 'mdi:power'
color: darkgreen
size: 25px
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: >-
[[[ if (states["climate.bed_2"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.bed_2
bed3button:
card:
entity: climate.bed_3
show_state: false
show_name: false
show_icon: true
icon: 'mdi:power'
color: darkgreen
size: 25px
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: >-
[[[ if (states["climate.bed_3"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.bed_3
bed4button:
card:
entity: climate.bed_4
show_state: false
show_name: false
show_icon: true
icon: 'mdi:power'
color: darkgreen
size: 25px
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: >-
[[[ if (states["climate.bed_4"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.bed_4
familybutton:
card:
entity: climate.family
show_state: false
show_name: false
show_icon: true
icon: 'mdi:power'
color: darkgreen
size: 25px
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: >-
[[[ if (states["climate.family"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.family
garagebutton:
card:
entity: climate.garage
show_state: false
show_name: false
show_icon: true
icon: 'mdi:power'
color: darkgreen
size: 25px
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: >-
[[[ if (states["climate.garage"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.garage
mediabutton:
card:
entity: climate.media
show_state: false
show_name: false
show_icon: true
icon: 'mdi:power'
color: darkgreen
size: 25px
type: 'custom:button-card'
state:
- value: 'off'
color: grey
tap_action:
action: call-service
service: >-
[[[ if (states["climate.media"].state != "off") return
"climate.turn_off"; else return "climate.turn_on" ]]]
service_data:
entity_id: climate.media
styles:
card:
- padding: 2%
- font-size: 15px
custom_fields:
column1:
- justify-self: start
- padding-left: 30%
column2:
- justify-self: start
- padding-left: 30%
column3: null
column4: null
masterlabel:
- justify-self: start
- padding-left: 30%
bed2label:
- justify-self: start
- padding-left: 30%
bed3label:
- justify-self: left
- padding-left: 30%
bed4label:
- justify-self: left
- padding-left: 30%
familylabel:
- justify-self: left
- padding-left: 30%
garagelabel:
- justify-self: left
- padding-left: 30%
medialabel:
- justify-self: left
- padding-left: 30%
mastertemp:
- justify-self: left
- padding-left: 30%
bed2temp:
- justify-self: start
- padding-left: 30%
bed3temp:
- justify-self: start
- padding-left: 30%
bed4temp:
- justify-self: start
- padding-left: 30%
familytemp:
- justify-self: start
- padding-left: 30%
garagetemp:
- justify-self: start
- padding-left: 30%
mediatemp:
- justify-self: start
- padding-left: 30%
masterslider: null
bed2slider: null
bed3slider: null
bed4slider: null
familyslider: null
garageslider: null
mediaslider: null
masterbutton:
- padding-left: 25%
- padding-right: 25%
bed2button:
- padding-left: 25%
- padding-right: 25%
bed3button:
- padding-left: 25%
- padding-right: 25%
bed4button:
- padding-left: 25%
- padding-right: 25%
familybutton:
- padding-left: 25%
- padding-right: 25%
garagebutton:
- padding-left: 25%
- padding-right: 25%
mediabutton:
- padding-left: 25%
- padding-right: 25%
grid:
- grid-template-areas: >-
"column1 column2 column3 column4" "masterlabel mastertemp masterslider
masterbutton" "bed2label bed2temp bed2slider bed2button" "bed3label
bed3temp bed3slider bed3button" "bed4label bed4temp bed4slider
bed4button" "familylabel familytemp familyslider familybutton"
"garagelabel garagetemp garageslider garagebutton" "medialabel mediatemp
mediaslider mediabutton"
- grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr
- grid-template-columns: 1fr 1fr 1fr 1fr
img_cell:
- justify-content: start
- align-items: start
- margin: none
show_icon: false
edit: Worked out how to write labelsā¦ Iām an idiot! Cleaned it up a little
edit2: added fan modes + change some formatting