type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:button-card
color_type: label-card
color: rgba(244, 244, 244, 0.8)
name: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'cleaning') return "Bat "+states['vacuum.xiaomi_vacuum_1s'].attributes.battery_level+"%";
if (states['vacuum.xiaomi_vacuum_1s'].state == 'docked') return "Clean";
else return states['vacuum.xiaomi_vacuum_1s'].state;
]]]
tap_action:
action: call-service
service: script.turn_on
service_data:
entity_id: script.vacuum_clean_segment
icon: mdi:broom
styles:
card:
- color: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'cleaning') return "orange";
if (states['vacuum.xiaomi_vacuum_1s'].state == 'docked') return "green";
else return "red";
]]]
- type: custom:button-card
color_type: label-card
color: rgba(244, 244, 244, 0.8)
name: Homing
tap_action:
action: call-service
service: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'cleaning') return 'vacuum.pause';
if (states['vacuum.xiaomi_vacuum_1s'].state == 'paused') return 'vacuum.stop';
else return 'vacuum.return_to_base';
]]]
service_data:
entity_id: vacuum.xiaomi_vacuum_1s
icon: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'cleaning') return 'mdi

ause-circle';
if (states['vacuum.xiaomi_vacuum_1s'].state == 'paused') return 'mdi:stop-circle';
else return 'mdi:home';
]]]
styles:
card:
- color: green
- type: custom:button-card
color_type: label-card
color: rgba(244, 244, 244, 0.8)
name: Homing
tap_action:
action: call-service
service: vacuum.clean_spot
service_data:
entity_id: vacuum.xiaomi_vacuum_1s
icon: mdi:map-marker-path
styles:
card:
- color: green
- type: custom:button-card
color_type: label-card
color: rgb(224, 224, 209)
show_name: false
tap_action:
more_info: vacuum.xiaomi_vacuum_1s
show_icon: false
show_label: false
styles:
card:
- background-color: rgba(244, 244, 244, 0.8)
- border-radius: 10%
- padding: 5%
- color: green
- font-size: 16px
- font-weight: bold
- text-transform: capitalize
grid:
- grid-template-areas: '"bat bat" "cleantime cleantime" "cleanarea cleanarea"'
- grid-template-columns: 1fr 1fr
- grid-template-rows: 1fr min-content min-content min-content min-content
img_cell:
- justify-content: start
- align-items: start
- margin: none
custom_fields:
bat:
- align-self: middle
- justify-self: middle
- padding-bottom: 1px
- '--text-color-sensor': |-
[[[
if (states['vacuum.xiaomi_vacuum_1s'].attributes.battery_level >= 90) return "lime";
if (states['vacuum.xiaomi_vacuum_1s'].attributes.battery_level >= 50) return "orange";
if (states['vacuum.xiaomi_vacuum_1s'].attributes.battery_level < 50) return "red";
]]]
cleantime:
- padding-bottom: 1px
- align-self: middle
- justify-self: middle
cleanarea:
- align-self: middle
- justify-self: middle
custom_fields:
cleantime: |
[[[
var test = (states['sensor.xiaomi_vacuum_1s_last_clean_duration'].state/60).toFixed(1);
var value = (isNaN(test)) ? 'NA' : test;
return `<ha-icon
icon="mdi:clock-outline"
style="width: 16px; height: 16px; color: deepskyblue;">
</ha-icon><span><span style="color: var(--text-color-sensor);">${(value) } mins</span></span>`
]]]
bat: |
[[[
var value = states['vacuum.xiaomi_vacuum_1s'].attributes.battery_level;
return `<ha-icon
icon="mdi:battery"
style="width: 16px; height: 16px; color: var(--text-color-sensor)">
</ha-icon><span>${(value)}</span>%</span>`
]]]
cleanarea: |
[[[
var per = states['sensor.xiaomi_vacuum_1s_last_clean_area'].state;
return `<ha-icon
icon="mdi:map"
style="width: 16px; height: 16px; color: deepskyblue;">
</ha-icon><span><span style="color: var(--text-color-sensor);">${per}m2</span></span>`
]]]
- type: horizontal-stack
cards:
- type: custom:button-card
entity: input_boolean.vacuum_clean_livingroom
color_type: card
color: rgb(166, 134, 244)
icon: mdi:sofa
show_name: false
styles:
card:
- height: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'docked')
return "80px";
else
return "0px";
]]]
- type: custom:button-card
entity: input_boolean.vacuum_clean_kitchen
color_type: card
color: rgb(166, 134, 244)
icon: mdi:desk-lamp
show_name: false
styles:
card:
- height: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'docked')
return "80px";
else
return "0px";
]]]
- type: custom:button-card
entity: input_boolean.vacuum_clean_bedroom1
color_type: card
color: rgb(156, 184, 105)
icon: mdi:bed
show_name: false
styles:
card:
- height: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'docked')
return "80px";
else
return "0px";
]]]
- type: custom:button-card
entity: input_boolean.vacuum_clean_bedroom2
color_type: card
color: rgb(156, 184, 105)
icon: mdi:bunk-bed
show_name: false
styles:
card:
- height: |
[[[
if (states['vacuum.xiaomi_vacuum_1s'].state == 'docked')
return "80px";
else
return "0px";
]]]
card_mod:
style: |
ha-card {
-webkit-box-shadow: 0px 3px 6px 3px rgba(0,0,0,0.48);
-moz-box-shadow: 0px 3px 6px 3px rgba(0,0,0,0.48);
box-shadow: 0px 3px 6px 3px rgba(0,0,0,0.48);
background-color: rgba(0, 0, 0, 0.25);
border-radius: 10px;
}