Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rccoleman/2211351b6062cb3c41e238d0af09caf8 to your computer and use it in GitHub Desktop.
Save rccoleman/2211351b6062cb3c41e238d0af09caf8 to your computer and use it in GitHub Desktop.
Lovelace config
button_card_templates:
auto_on_off_template:
entity: switch.buzz_auto_on_off
show_label: true
show_name: true
show_icon: false
styles:
grid:
- grid-template-areas: '"l n"'
name:
- font-size: 20px
label:
- font-size: 20px
badge_template_parent:
show_icon: true
show_state: true
show_units: true
show_name: false
styles:
card:
- background-color: var(--primary-background-color)
- box-shadow: none
aspect_ratio: 1.8/1
size: 30%
badge_template_desktop:
template: badge_template_parent
aspect_ratio: 1.8/1
size: 30%
badge_template_mobile:
template: badge_template_parent
aspect_ratio: 1/1
size: 125%
styles:
state:
- font-size: 9px
name:
- font-size: 9px
glance_parent_template:
variables:
abnormal: "on"
normal: "off"
size: 30%
tap_action:
action: toggle
hold_action:
action: more-info
styles:
card:
- background-color: var(--primary-background-color)
- box-shadow: none
- padding: 0px
- margin: 0%
state:
- font-size: 14px
name:
- font-size: 14px
icon:
- margin-bottom: 20%
grid:
- grid-template-areas: '"n" "i"'
glance_template:
template: glance_parent_template
styles:
icon:
- color: >
[[[
if (entity.state === variables.normal) return "green";
else return "red";
]]]
glance_template_notap:
template: glance_parent_template
tap_action:
action: none
glance_light_template:
template: glance_template
state:
- value: 'on'
icon: 'mdi:lightbulb-group'
- value: 'off'
icon: 'mdi:lightbulb-group'
btle_template:
template: glance_parent_template
state:
- value: 0
color: red
icon: 'mdi:bluetooth-audio'
- value: 90
operator: '<='
color: yellow
icon: 'mdi:bluetooth-audio'
- operator: 'default'
color: green
icon: 'mdi:bluetooth-audio'
tap_action:
action: call-service
service: persistent_notification.create
service_data:
message: "[[[ return `${entity.attributes.friendly_name}` ]]]"
alarm_template:
template: glance_parent_template
variables:
armed_state: "disarmed"
action: "script.disarm_alarm"
icon: 'mdi:alarm-bell'
tap_action:
action: call-service
service: '[[[ return variables.action; ]]]'
styles:
icon:
- color: >
[[[
if (states['sensor.armed_status'].state == variables.armed_state) return "green";
else return "#696969";
]]]
color: &color |
:host {
--paper-item-icon-color:
{% if states(config.entity) == 'on' %} red;
{% else %} green;
{% endif %}
--paper-item-icon-active-color: red;
}
divider: &divider |
.card-content {
padding: 1px;
}
:host {
background-color: var(--primary-background-color);
box-shadow: none;
}
background: &background |
ha-card {
background-color: var(--primary-background-color);
box-shadow: none;
background: none;
}
red_background: &red_background |
ha-card {
background-color: red;
box-shadow: none;
}
coffee_cards: &coffee_cards |
ha-card {
background-color: var(--primary-background-color);
box-shadow: none;
background: none;
--st-font-size-xl: 20px;
--st-font-size-m: 15px;
--st-font-size-title: 19px;
--st-font-size-sensors: 15px;
--st-spacing: 2px;
--lamarzocco-config-elements-background-color: var(--primary-background-color);
}
views:
- badges: []
title: Home
icon: 'mdi:home'
panel: true
cards:
- type: vertical-stack
cards:
- type: custom:state-switch
entity: user
default: Desktop
states:
Desktop:
type: custom:layout-card
layout_type: horizontal
layout_options:
max_cols: 1
width: 800
cards:
- type: horizontal-stack
cards:
- type: conditional
card:
type: "custom:button-card"
entity: sensor.landscape
template: badge_template_desktop
name: Landscape
icon: "mdi:pine-tree"
show_name: true
show_state: false
tap_action:
action: call-service
service: homeassistant.turn_off
service_data:
entity_id: input_boolean.trash
state:
- value: "0"
color: red
- value: "1"
color: green
conditions:
- entity: sensor.landscape
state_not: '2'
- entity: input_boolean.trash
state: 'on'
- type: conditional
card:
type: "custom:button-card"
entity: sensor.recycling
template: badge_template_desktop
name: Recycling
icon: "mdi:recycle"
show_name: true
show_state: false
tap_action:
action: call-service
service: homeassistant.turn_off
service_data:
entity_id: input_boolean.trash
state:
- value: '0'
color: red
- value: '1'
color: green
conditions:
- entity: sensor.recycling
state_not: '2'
- entity: input_boolean.trash
state: 'on'
- type: custom:button-card
template: badge_template_desktop
entity: binary_sensor.updates_available
show_state: false
show_units: false
show_name: true
icon: mdi:home-assistant
name: >
[[[
if (states['binary_sensor.updates_available'].state === 'off') return "Current";
else return "Updates";
]]]
state:
- value: 'off'
operator: '=='
color: green
- operator: 'default'
color: red
tap_action:
action: navigate
navigation_path: /hassio/dashboard
- type: custom:button-card
entity: sensor.hacs
template: badge_template_desktop
show_state: false
show_units: false
show_name: true
name: >
[[[
if (states['sensor.hacs'].state === '0') return "Current";
else if (states['sensor.hacs'].state === 'unknown') return "Loading";
else return "Updates";
]]]
state:
- value: 0
operator: '=='
color: green
- operator: 'default'
color: red
tap_action:
action: navigate
navigation_path: /hacs
- type: custom:button-card
entity: sensor.occupancy
template: badge_template_desktop
show_state: false
show_units: false
show_name: true
state:
- value: "[[[ return states['automation.away_timer'].state === 'on'; ]]]"
operator: 'template'
name: "[[[ return parseInt(states['input_number.away'].state) + 's'; ]]]"
icon: "mdi:timer"
color: yellow
- value: "[[[ return parseInt(states['input_number.away'].state) === 0; ]]]"
operator: 'template'
name: "Away"
icon: "mdi:home-export-outline"
color: "red"
- operator: 'default'
color: green
name: "Home"
icon: "mdi:home"
- type: custom:button-card
entity: alarm_control_panel.area_001
template: badge_template_desktop
state:
- value: 'disarmed'
operator: '=='
icon: mdi:bell-off
color: green
- value: 'armed_night'
operator: '=='
icon: mdi:weather-night
color: red
- operator: 'default'
icon: mdi:bell
color: red
- type: custom:button-card
entity: sensor.washer_dryer
icon: mdi:washing-machine
template: badge_template_desktop
state:
- value: 'Idle'
operator: '=='
color: green
- operator: 'default'
color: red
- type: custom:button-card
entity: sensor.mbath_water_temp
name: Water Temp
icon: mdi:water
show_state: true
show_units: true
template: badge_template_desktop
styles:
icon:
- color: >
[[[
if (states['input_boolean.heat_water'].state === 'on')
return 'red';
else
return 'green';
]]]
tap_action:
action: call-service
service: homeassistant.toggle
service_data:
entity_id: input_boolean.heat_water
Mobile:
type: horizontal-stack
cards:
- type: conditional
card:
type: "custom:button-card"
entity: sensor.landscape
template: badge_template_mobile
name: Landscape
icon: "mdi:pine-tree"
show_name: true
show_state: false
tap_action:
action: call-service
service: homeassistant.turn_off
service_data:
entity_id: input_boolean.trash
state:
- value: "0"
color: red
- value: "1"
color: green
conditions:
- entity: sensor.landscape
state_not: '2'
- entity: input_boolean.trash
state: 'on'
- type: conditional
card:
type: "custom:button-card"
entity: sensor.recycling
template: badge_template_mobile
name: Recycling
icon: "mdi:recycle"
show_name: true
show_state: false
tap_action:
action: call-service
service: homeassistant.turn_off
service_data:
entity_id: input_boolean.trash
state:
- value: "0"
color: red
- value: "1"
color: green
conditions:
- entity: sensor.recycling
state_not: '2'
- entity: input_boolean.trash
state: 'on'
- type: custom:button-card
template: badge_template_mobile
entity: binary_sensor.updates_available
show_state: false
show_units: false
show_name: true
icon: mdi:home-assistant
name: >
[[[
if (states['binary_sensor.updates_available'].state === 'off') return "Current";
else return "Updates";
]]]
state:
- value: 'off'
operator: '=='
color: green
- operator: 'default'
color: red
tap_action:
action: navigate
navigation_path: /hassio/dashboard
- type: custom:button-card
entity: sensor.hacs
template: badge_template_mobile
show_state: false
show_units: false
show_name: true
name: >
[[[
if (states['sensor.hacs'].state === '0') return "Current";
else if (states['sensor.hacs'].state === 'unknown') return "Loading";
else return "Updates";
]]]
state:
- value: 0
operator: '=='
color: green
- operator: 'default'
color: red
tap_action:
action: navigate
navigation_path: /hacs
- type: custom:button-card
entity: sensor.occupancy
template: badge_template_mobile
show_state: false
show_units: false
show_name: true
state:
- value: "[[[ return states['automation.away_timer'].state === 'on'; ]]]"
operator: 'template'
name: "[[[ return parseInt(states['input_number.away'].state) + 's'; ]]]"
icon: "mdi:timer"
color: yellow
- value: "[[[ return parseInt(states['input_number.away'].state) === 0; ]]]"
operator: 'template'
name: "Away"
icon: "mdi:home-export-outline"
color: "red"
- operator: 'default'
color: green
name: "Home"
icon: "mdi:home"
- type: custom:button-card
entity: alarm_control_panel.area_001
template: badge_template_mobile
state:
- value: 'disarmed'
operator: '=='
icon: mdi:bell-off
color: green
- value: 'armed_night'
operator: '=='
icon: mdi:weather-night
color: red
- operator: 'default'
icon: mdi:bell
color: red
- type: custom:button-card
entity: sensor.washer_dryer
icon: mdi:washing-machine
template: badge_template_mobile
state:
- value: 'Idle'
operator: '=='
color: green
- operator: 'default'
color: red
- type: custom:button-card
entity: sensor.mbath_water_temp
name: Water Temp
icon: mdi:water
show_state: true
show_units: true
template: badge_template_mobile
styles:
icon:
- color: >
[[[
if (states['input_boolean.heat_water'].state === 'on')
return 'red';
else
return 'green';
]]]
tap_action:
action: call-service
service: homeassistant.toggle
service_data:
entity_id: input_boolean.heat_water
- type: 'custom:layout-card'
layout_type: horizontal
cards:
# Column 1
- type: vertical-stack
cards:
- entity: weather.dark_sky
# type: 'weather-forecast'
type: "custom:weather-card"
icons: "/hacsfiles/weather-icons/"
card_mod:
style: |
ha-card {
background-color: var(--primary-background-color);
background: none;
box-shadow: none;
}
- type: entities
show_header_toggle: false
entities:
- type: 'custom:mini-graph-card'
entities:
- entity: sensor.eagle_power_power
name: Power
show_fill: false
show_legend: false
- entity: sensor.zero
color: '#606060'
show_fill: false
show_points: false
show_legend: false
show:
name: false
icon: false
hours_to_show: 0.17
update_interval: 10
line_width: 3
points_per_hour: 3600
aggregate_func: last
smoothing: true
height: 170
color_thresholds_transition: hard
icon_adaptive_color: true
color_thresholds:
- value: -6.0
color: '#00ff00'
- value: 0.0
color: '#ff0000'
cache: false
card_mod:
style: |
ha-card {
padding: 0px;
margin: 0px;
background-color: var(--primary-background-color);
background: none;
box-shadow: none;
}
card_mod:
style:
.: |
.card-content {
padding: 0px;
margin: 0px;
background-color: var(--primary-background-color);
}
ha-card {
background: none;
box-shadow: none;
--secondary-text-color: var(--primary-text-color);
padding: 0px;
margin: 0px;
background-color: var(--primary-background-color)
}
- type: entities
card_mod:
style:
text-divider-row:
$: |
h2.text-divider {
margin: 0px;
padding: 0px;
}
.: |
.card-content {
padding: 0px;
margin: 0px;
}
ha-card {
background: none;
box-shadow: none;
--secondary-text-color: var(--primary-text-color);
padding: 0px;
margin: 0px;
}
entities:
- type: custom:text-divider-row
text: Presence
- type: custom:layout-card
layout_type: horizontal
layout_options:
width: 100
max_cols: 3
cards:
- type: 'custom:button-card'
name: Master
entity: sensor.iphone_msuite_btle
template: btle_template
- type: 'custom:button-card'
name: Garage
entity: sensor.iphone_garage_btle
template: btle_template
- type: 'custom:button-card'
name: Living Room
entity: sensor.iphone_lr_btle
template: btle_template
card_mod:
style: |
ha-card {
heigt: 0px;
}
- type: entities
card_mod:
style:
text-divider-row:
$: |
h2.text-divider {
margin: 0px;
padding: 0px;
}
.: |
.card-content {
padding: 0px;
margin: 0px;
}
ha-card {
background: none;
box-shadow: none;
--secondary-text-color: var(--primary-text-color);
padding: 0px;
margin: 0px;
}
entities:
- type: custom:text-divider-row
text: Roomba
- type: horizontal-stack
cards:
- type: 'custom:button-card'
name: Battery
entity: sensor.roomba_battery
template: glance_template_notap
size: 35%
styles:
icon:
- color: >
[[[
if (entity.state <= 30) return "red";
else return "green";
]]]
grid:
- grid-template-areas: '"i" "n"'
- type: 'custom:button-card'
name: Time
entity: sensor.roomba_cleaning_time
template: glance_template_notap
size: 35%
styles:
icon:
- color: green
grid:
- grid-template-areas: '"i" "n"'
- type: 'custom:button-card'
name: Area
entity: sensor.roomba_cleaned_area
template: glance_template_notap
size: 35%
styles:
icon:
- color: green
grid:
- grid-template-areas: '"i" "n"'
- type: 'custom:button-card'
name: >
[[[
if (entity.state === "docked") return "Start";
else return entity.state[0].toUpperCase() + entity.state.slice(1);
]]]
entity: vacuum.taileater_2_0
template: glance_template
size: 35%
show_state: false
tap_action:
action: call-service
service: vacuum.turn_on
service_data:
entity_id: vacuum.taileater_2_0
variables:
normal: "docked"
icon: >
[[[
if (entity.state === "docked") return "mdi:robot-vacuum-variant";
else if (entity.state === "error") return "mdi:alert";
else return "mdi:robot-vacuum";
]]]
styles:
grid:
- grid-template-areas: '"i" "n"'
# Column 2
- type: vertical-stack
cards:
- type: 'custom:auto-entities'
show_empty: false
filter:
include:
- entity_id: "sensor.wirelesstag_*"
state: unavailable
- entity_id: "sensor.*_temperature"
state: unavailable
card:
type: glance
title: Sensors Unavailable
show_state: true
card_mod:
style: *red_background
- type: conditional
card:
type: glance
title: Data Closet UPS Problem
entities:
- sensor.data_closet_ups_status
- sensor.data_closet_ups_load
- sensor.data_closet_ups_battery_runtime
card_mod:
style: *red_background
conditions:
- entity: sensor.data_closet_ups_status
state_not: 'Online'
- type: conditional
card:
type: glance
title: Office UPS Problem
entities:
- sensor.office_ups_status
- sensor.office_ups_load
- sensor.office_ups_battery_runtime
card_mod:
style: *red_background
conditions:
- entity: sensor.data_closet_ups_status
state_not: 'Online'
- type: 'custom:auto-entities'
filter:
include:
- entity_id: "lock.*"
state: unlocked
show_empty: false
card:
type: glance
title: Doors Unlocked
show_state: false
card_mod:
style: *red_background
- type: 'custom:auto-entities'
filter:
include:
- entity_id: "binary_sensor.*_leak_detected"
state: 'on'
show_empty: false
card:
type: glance
title: Leaks!
show_state: false
card_mod:
style: *red_background
- type: 'custom:auto-entities'
filter:
include:
- entity_id: "sensor.zone_*"
state: Violated
show_empty: false
card:
type: glance
title: Zone Violated
show_state: false
card_mod:
style: *red_background
- type: entities
card_mod:
style:
text-divider-row:
$: |
h2.text-divider {
margin: 0px;
padding: 0px;
}
.: |
.card-content {
padding: 0px;
margin: 0px;
}
ha-card {
background: none;
box-shadow: none;
--secondary-text-color: var(--primary-text-color);
padding: 0px;
margin: 0px;
}
entities:
- type: custom:text-divider-row
text: Alarm
- type: horizontal-stack
cards:
- type: 'custom:button-card'
name: Disarm
template: alarm_template
variables:
armed_state: "disarmed"
action: script.disarm_alarm
- type: 'custom:button-card'
name: Arm Away
template: alarm_template
variables:
armed_state: "armed_away"
action: script.arm_alarm_away
- type: 'custom:button-card'
name: Arm Night
template: alarm_template
variables:
armed_state: "armed_to_night"
action: script.arm_alarm_night
- type: entities
card_mod:
style:
text-divider-row:
$: |
h2.text-divider {
margin: 0px;
padding: 0px;
}
.: |
.card-content {
padding: 0px;
margin: 0px;
}
ha-card {
background: none;
box-shadow: none;
--secondary-text-color: var(--primary-text-color);
padding: 0px;
margin: 0px;
}
entities:
- type: custom:text-divider-row
text: Status
- type: custom:layout-card
layout_type: horizontal
layout_options:
width: 100
max_cols: 3
cards:
- type: 'custom:button-card'
entity: group.fr
name: Family Room
template: glance_light_template
- type: 'custom:button-card'
entity: group.kit_overhead
name: Kitchen
template: glance_light_template
- type: 'custom:button-card'
entity: group.lr
name: Living Room
template: glance_light_template
- type: 'custom:button-card'
entity: group.mbr
name: Master Bedroom
template: glance_light_template
- type: 'custom:button-card'
entity: group.mbath
name: Master Bathroom
template: glance_light_template
- type: 'custom:button-card'
entity: group.office
name: Office
template: glance_light_template
- type: 'custom:button-card'
entity: group.outside_lights
name: Outside
template: glance_light_template
- type: 'custom:button-card'
entity: switch.garage_landscape_lights
name: Landscape
template: glance_light_template
- type: 'custom:button-card'
entity: switch.whole_house_fan
name: >
[[[
return "Fan - " + states['sensor.master_bedroom_temperature'].state + "F";
]]]
template: glance_template
state:
- value: 'on'
icon: 'mdi:fan'
- value: 'off'
icon: 'mdi:fan'
- type: 'custom:button-card'
entity: automation.whole_house_fan_temp_shutoff
name: Fan Temp Shutoff
template: glance_template
variables:
abnormal: "off"
normal: "on"
icon: 'mdi:thermometer-lines'
- type: 'custom:button-card'
entity: cover.garage_door
name: Garage Door
template: glance_template
variables:
abnormal: "open"
normal: "closed"
tap_action:
action: call-service
service: switch.turn_on
service_data:
entity_id: switch.garage_door_switch
- type: 'custom:button-card'
entity: group.garage
name: Garage
template: glance_light_template
- type: 'custom:button-card'
entity: group.laundryrm
name: Laundry Room
template: glance_light_template
- type: 'custom:button-card'
entity: switch.garage_pump_switch
name: Pump
template: glance_template
icon: 'mdi:water-pump'
- type: 'custom:button-card'
entity: switch.mbath_valve_relay
name: Valve
template: glance_template
icon: 'mdi:valve'
- type: 'custom:button-card'
entity: switch.buzz_main
template: glance_template
name: >
[[[
return "Espresso - " + states['water_heater.buzz_coffee'].state + "F";
]]]
- type: markdown
content: >
{% set display = state_attr('switch.buzz_main', 'front_panel_display') %}
{{ "## " + display[:16] + " " + display[16:] }}
card_mod:
style: *background
# Column 3
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: custom:button-card
entity: group.upstairs_lights
template: glance_light_template
tap_action:
action: more-info
size: 30%
- type: custom:button-card
entity: group.downstairs_lights
template: glance_light_template
tap_action:
action: more-info
size: 30%
- type: custom:button-card
entity: group.fans
template: glance_template
tap_action:
action: more-info
size: 30%
state:
- value: 'on'
icon: 'mdi:fan'
- value: 'off'
icon: 'mdi:fan'
- type: entities
show_header_toggle: false
entities:
- type: 'custom:mini-graph-card'
entities:
- entity: sensor.water_usage
hours_to_show: 1
update_interval: 10
aggregate_func: last
smoothing: true
show:
name: false
icon: false
line_width: 3
cache: false
points_per_hour: 360
card_mod:
style: *background
- entity: sensor.water_usage_total
icon: 'mdi:water-pump'
card_mod:
style: |
ha-card {
background-color: var(--primary-background-color);
box-shadow: none;
}
- type: 'custom:upcoming-media-card'
entity: sensor.recently_recorded
title: Recently Recorded
image_style: fanart
max: 3
card_mod:
style: |
ha-card {
background-color: var(--primary-background-color);
background: none;
box-shadow: none;
}
- badges: []
title: La Marzocco
panel: true
icon: 'mdi:coffee-maker'
cards:
- type: custom:layout-card
layout: auto
# column_num: 3
cards:
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: markdown
content: >
{% set display = state_attr('switch.buzz_main', 'front_panel_display') %}
{{ "### " + display[:16] + " " + display[16:] }}
card_mod:
style: *background
- type: custom:button-card
entity: switch.buzz_main
template: glance_template
show_name: false
- type: 'custom:simple-thermostat'
entity: water_heater.buzz_coffee
header:
name: Coffee Temp
step_size: 0.1
card_mod:
style: *coffee_cards
hide:
temperature: true
state: true
layout:
step: row
mode:
headings: true
sensors:
- entity: water_heater.buzz_coffee
name: Current
unit: "°F"
- type: 'custom:simple-thermostat'
entity: water_heater.buzz_steam
header:
name: Steam Temp
step_size: 0.1
card_mod:
style: *coffee_cards
hide:
temperature: true
state: true
layout:
step: row
mode:
headings: true
sensors:
- entity: water_heater.buzz_steam
name: Current
unit: "°F"
- type: vertical-stack
cards:
- type: 'custom:lamarzocco-config-card'
card_type: auto
card_mod:
style: *coffee_cards
name: Auto On/Off Hours
- type: 'custom:lamarzocco-config-card'
card_type: prebrew
card_mod:
style: *coffee_cards
name: Prebrew Times
- type: 'custom:lamarzocco-config-card'
card_type: dose
name: Coffee Dose
card_mod:
style: *coffee_cards
- type: 'custom:lamarzocco-config-card'
card_type: hot_water_dose
name: Hot Water Dose
card_mod:
style: *coffee_cards
- !include view-climate.yaml
- !include view-cameras.yaml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment