Redo the basement studio page on main dashboard with bubble cards

This commit is contained in:
2025-01-30 03:21:20 -05:00
parent 90b696f1d2
commit b3ff2ec1b7

View File

@ -138,6 +138,140 @@ streamline_templates:
- entity: sensor.[[gamertag]]_gamer_score - entity: sensor.[[gamertag]]_gamer_score
name: Gamer Score name: Gamer Score
show_header_toggle: false show_header_toggle: false
main_security_button:
defaults:
- name: ''
- columns: ''
card:
type: custom:bubble-card
card_type: button
button_type: state
entity: '[[entity]]'
name: '[[name]]'
card_layout: large
double_tap_action:
action: none
hold_action:
action: none
button_action:
double_tap_action:
action: none
hold_action:
action: none
columns: '[[columns]]'
styles: |-
.is-unavailable {
opacity: 0.5 !important;
}
.bubble-button-background {
opacity: 1 !important;
background-color: ${state === 'on' ? 'var(--error-color)' : 'var(--background-color-2)'} !important;
transition: background-color 1s !important;
}
.bubble-icon-container {
background: ${state === 'on' ? 'var(--error-color)' : 'var(--card-background-color)'} !important;
}
.bubble-icon-container::after {
opacity: ${state === 'on' ? 0.3 : 0} !important;
transition: all 1s !important;
}
.bubble-icon {
display: flex !important;
opacity: 0.5 !important;
}
.is-on .bubble-icon {
opacity: 1 !important;
}
main_accent_color_button:
defaults:
- name: ''
- columns: ''
card:
type: custom:bubble-card
card_type: button
button_type: state
entity: '[[entity]]'
name: '[[name]]'
show_state: true
card_layout: large
tap_action:
action: more-info
double_tap_action:
action: none
hold_action:
action: none
button_action:
double_tap_action:
action: none
hold_action:
action: none
columns: '[[columns]]'
styles: |-
.bubble-button-background {
opacity: 1 !important;
background-color: ${state === 'on' ? 'var(--accent-color)' : 'var(--background-color-2)'} !important;
}
.bubble-icon {
color: ${state === 'on' ? 'var(--accent-color)' : 'var(--text-color)'} !important;
}
main_temperature_button:
defaults:
- name: ''
- columns: ''
card:
type: custom:bubble-card
card_type: button
button_type: state
entity: '[[entity]]'
name: '[[name]]'
show_attribute: false
card_layout: large
columns: '[[columns]]'
styles: |
.is-unavailable {
opacity: 0.5 !important;
}
.bubble-button-background {
opacity: 1 !important;
background-color: ${hass.states['[[hot_entity]]'].state === 'on' ? 'var(--error-color)' : 'var(--background-color-2)'} !important;
transition: background-color 1s !important;
}
.bubble-icon-container {
background: ${hass.states['[[hot_entity]]'].state === 'on' ? 'var(--error-color)' : 'var(--card-background-color)'} !important;
}
.bubble-icon-container::after {
opacity: ${hass.states['[[hot_entity]]'].state === 'on' ? 0.3 : 0} !important;
transition: all 1s !important;
}
main_room_header:
defaults:
- name: ''
- icon: ''
- scene_text: ''
- power_entity: ''
- light_entity: ''
card:
type: custom:bubble-card
card_type: separator
name: '[[name]]'
icon: '[[icon]]'
card_layout: large
sub_button:
- name: Scene
entity: '[[scene_text]]'
show_state: true
state_background: false
icon: mdi:palette
tap_action:
action: none
visibility:
- condition: state
entity: '[[light_entity]]'
state: 'on'
- name: Power
entity: '[[power_entity]]'
show_state: true
state_background: false
background: var(--background-image) background: var(--background-image)
title: Stratton Ave title: Stratton Ave
views: views:
@ -2513,8 +2647,14 @@ views:
sections: sections:
- type: grid - type: grid
cards: cards:
- type: heading - type: custom:decluttering-card
heading: Basement Studio template: main_room_header
variables:
- name: Basement Studio
- icon: mdi:twitch
- scene_text: input_text.basement_studio_selected_scene
- power_entity: sensor.basement_studio_total_power_sensor
- light_entity: light.basement_studio_lights
- type: horizontal-stack - type: horizontal-stack
cards: cards:
- type: custom:mushroom-light-card - type: custom:mushroom-light-card
@ -2534,87 +2674,33 @@ views:
option: Adaptive option: Adaptive
target: target:
entity_id: input_select.basement_studio_scenes entity_id: input_select.basement_studio_scenes
primary_info: none
layout: vertical layout: vertical
- type: vertical-stack - type: custom:bubble-card
cards: card_type: separator
- type: custom:mushroom-template-card name: Lights
primary: Current Scene icon: mdi:lightbulb
secondary: '{{ states(''input_text.basement_studio_selected_scene'') }}' card_layout: large
tap_action:
action: none
hold_action:
action: none
double_tap_action:
action: none
layout: vertical
- type: custom:mushroom-template-card
entity: sensor.basement_studio_lights_power_sensor
primary: Power Usage
secondary: '{{ states(''sensor.basement_total_power_sensor'') }} W'
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
fill_container: false
layout: vertical
visibility:
- condition: state
entity: light.basement_studio_lights
state: 'on'
- type: custom:timer-bar-card
filter: true
entities:
- entity: timer.basement_studio_door_timer
sync_issues: ignore
tap_action:
action: none
hold_action:
action: more-info
double_tap_action:
action: none
layout: hide_name
modifications:
- elapsed: 40%
bar_foreground: orange
- elapsed: 80%
bar_foreground: red
extend_paper_buttons_row:
position: right
buttons:
- icon: mdi:check-circle
tap_action:
action: call-service
service: timer.finish
target:
entity_id: timer.basement_studio_door_timer
visibility:
- condition: or
conditions:
- condition: state
entity: timer.basement_studio_door_timer
state: running
- condition: state
entity: timer.basement_studio_door_timer
state: paused
- type: custom:bubble-card - type: custom:bubble-card
card_type: button card_type: button
button_type: slider button_type: slider
entity: light.basement_led_strip_1 entity: light.basement_led_strip_1
name: LED Strip 1
show_state: true
show_attribute: true show_attribute: true
show_state: true
attribute: brightness attribute: brightness
show_icon: true
tap_action: tap_action:
action: toggle action: toggle
double_tap_action: double_tap_action:
action: none action: none
hold_action: hold_action:
action: more-info action: more-info
columns: 2 icon: hue:lightstrip
name: LED Strip 1
styles: >-
${icon.setAttribute("icon", state === 'off' ? 'hue:lightstrip-off'
: 'hue:lightstrip')}
card_layout: large card_layout: large
columns: 2
- type: custom:bubble-card - type: custom:bubble-card
card_type: button card_type: button
button_type: slider button_type: slider
@ -2623,32 +2709,36 @@ views:
show_state: true show_state: true
show_attribute: true show_attribute: true
attribute: brightness attribute: brightness
show_icon: true
tap_action: tap_action:
action: toggle action: toggle
double_tap_action: double_tap_action:
action: none action: none
hold_action: hold_action:
action: more-info action: more-info
columns: 2 styles: >-
${icon.setAttribute("icon", state === 'off' ?
'hue:floor-shade-off' : 'hue:floor-shade')}
card_layout: large card_layout: large
columns: 2
- type: custom:bubble-card - type: custom:bubble-card
card_type: button card_type: button
button_type: slider button_type: slider
entity: light.basement_short_lamp entity: light.basement_short_lamp
name: Short Lamp
show_state: true
show_attribute: true show_attribute: true
show_state: true
attribute: brightness attribute: brightness
show_icon: true
tap_action: tap_action:
action: toggle action: toggle
double_tap_action: double_tap_action:
action: none action: none
hold_action: hold_action:
action: more-info action: more-info
columns: 2 name: Short Lamp
styles: >-
${icon.setAttribute("icon", state === 'off' ?
'hue:floor-shade-off' : 'hue:floor-shade')}
card_layout: large card_layout: large
columns: 2
- type: custom:bubble-card - type: custom:bubble-card
card_type: button card_type: button
button_type: slider button_type: slider
@ -2657,111 +2747,255 @@ views:
show_state: true show_state: true
show_attribute: true show_attribute: true
attribute: brightness attribute: brightness
show_icon: true
tap_action: tap_action:
action: toggle action: toggle
double_tap_action: double_tap_action:
action: none action: none
hold_action: hold_action:
action: more-info action: more-info
columns: 2 styles: >-
${icon.setAttribute("icon", state === 'off' ?
'hue:floor-shade-off' : 'hue:floor-shade')}
card_layout: large card_layout: large
- type: entities columns: 2
- type: custom:timer-bar-card
filter: true
entities: entities:
- type: custom:paper-buttons-row - entity: timer.basement_studio_door_timer
buttons: name: Door Timer
- entity: input_boolean.recliner_mode sync_issues: ignore
layout: icon|name_state tap_action:
name: Recliner Mode action: call-service
state_icons: service: timer.finish
unavailable: mdi:map-marker-question target:
state: entity_id: timer.basement_studio_door_timer
case: first hold_action:
- entity: input_boolean.basement_studio_entertainment_control action: more-info
layout: icon|name_state double_tap_action:
name: Entertainment action: none
state_icons: modifications:
unavailable: mdi:map-marker-question - elapsed: 40%
state: bar_foreground: orange
case: first - elapsed: 80%
state_color: true bar_foreground: red
show_header_toggle: false compressed: true
- type: entities - type: custom:bubble-card
entities: card_type: separator
- type: custom:paper-buttons-row name: Media
buttons: icon: mdi:volume-high
- entity: fan.basement_fan card_layout: large
name: Fan - type: custom:bubble-card
layout: icon|name_state card_type: media-player
state_icons: entity: media_player.basement_tv
'on': mdi:fan name: TV
'off': mdi:fan-off show_state: true
unavailable: mdi:map-marker-question show_last_changed: false
state: show_attribute: true
case: first attribute: app_name
- entity: input_boolean.do_not_enter_basement_studio force_icon: false
name: Do Not Enter hide:
layout: icon|name_state play_pause_button: false
state_icons: volume_button: false
'on': mdi:minus-circle power_button: false
'off': mdi:minus-circle-off-outline card_layout: large
unavailable: mdi:map-marker-question - type: custom:bubble-card
state: card_type: separator
case: first name: Environment
- entity: input_boolean.studio_quiet icon: mdi:thermometer
name: Quiet card_layout: large
layout: icon|name_state - type: conditional
state_icons: conditions:
unavailable: mdi:map-marker-question - condition: state
state: entity: input_boolean.basement_studio_heat_allowed
case: first state: 'on'
- entity: input_boolean.gaming_mode card:
name: Gaming type: custom:stack-in-card
layout: icon|name_state cards:
state_icons: - features:
unavailable: mdi:map-marker-question - style: icons
state: type: climate-hvac-modes
case: first hvac_modes:
state_color: true - 'off'
show_header_toggle: false - heat
- type: custom:versatile-thermostat-ui-card - type: target-temperature
- style: dropdown
type: climate-preset-modes
preset_modes:
- none
- frost
- eco
- comfort
- boost
type: tile
entity: climate.basement_studio_vtherm entity: climate.basement_studio_vtherm
disable_circle: false vertical: false
disable_name: true show_entity_picture: false
powerEntity: sensor.basement_studio_heater_power hide_state: false
disable_auto_fan_infos: true name: Basement Studio Heater
- type: custom:mushroom-select-card - type: custom:bubble-card
entity: input_select.basement_studio_scenes card_type: button
layout: horizontal button_type: state
name: Scenes entity: switch.basement_studio_heater
secondary_info: none name: Heater Running
- type: custom:mushroom-select-card show_attribute: false
entity: select.basement_led_strip_1_theme tap_action:
layout: horizontal action: none
name: LED Strip Theme double_tap_action:
secondary_info: none action: none
- type: glance hold_action:
show_name: true action: none
show_icon: true button_action:
tap_action:
action: none
double_tap_action:
action: none
hold_action:
action: none
styles: |-
.bubble-button-background {
opacity: 1 !important;
background-color: ${state === 'on' ? 'var(--accent-color)' : 'var(--background-color-2)'} !important;
}
.bubble-icon {
color: ${state === 'on' ? 'var(--accent-color)' : 'var(--text-color)'} !important;
}
visibility:
- condition: state
entity: input_boolean.basement_studio_heat_allowed
state: 'on'
card_layout: large
- type: custom:bubble-card
card_type: button
button_type: switch
entity: fan.basement_fan
name: Fan
show_state: true show_state: true
state_color: true tap_action:
entities: action: toggle
- entity: binary_sensor.basement_studio_door double_tap_action:
name: Door action: none
- type: glance hold_action:
show_name: true action: more-info
show_icon: true button_action:
double_tap_action:
action: none
styles: |-
.bubble-icon {
animation: ${state === 'on' ? 'slow-rotate 2s linear infinite' : ''};
}
@keyframes slow-rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
card_layout: large
columns: 2
- type: custom:bubble-card
card_type: button
button_type: switch
entity: input_boolean.white_noise_basement
name: White Noise
show_state: true show_state: true
state_color: true tap_action:
entities: action: toggle
double_tap_action:
action: none
hold_action:
action: more-info
button_action:
double_tap_action:
action: none
card_layout: large
columns: 2
- type: custom:bubble-card
card_type: separator
name: Modes
icon: mdi:toggle-switch
card_layout: large
- type: custom:bubble-card
card_type: button
entity: input_boolean.studio_quiet
name: Studio Quiet
show_state: true
tap_action:
action: toggle
double_tap_action:
action: none
hold_action:
action: more-info
button_action:
double_tap_action:
action: none
card_layout: large
columns: 2
- type: custom:bubble-card
card_type: button
button_type: switch
entity: input_boolean.gaming_mode
name: Gaming Mode
show_state: true
tap_action:
action: toggle
double_tap_action:
action: none
hold_action:
action: more-info
button_action:
double_tap_action:
action: none
card_layout: large
columns: 2
- type: custom:bubble-card
card_type: separator
name: Status
icon: mdi:list-box
card_layout: large
- type: custom:decluttering-card
template: main_temperature_button
variables:
- name: Temp
- entity: sensor.basement_studio_temperature - entity: sensor.basement_studio_temperature
name: Temp - hot_entity: binary_sensor.basement_studio_hot
- entity: sensor.basement_studio_illuminance - columns: 2
grid_options:
columns: 6
rows: auto
- type: custom:bubble-card
card_type: button
button_type: state
entity: sensor.basement_studio_illuminance
name: Lux name: Lux
show_state: true
tap_action:
action: more-info
double_tap_action:
action: none
hold_action:
action: none
button_action:
double_tap_action:
action: none
hold_action:
action: none
card_layout: large
columns: 2
- type: custom:decluttering-card
template: main_accent_color_button
variables:
- name: Motion
- entity: binary_sensor.basement_studio_motion - entity: binary_sensor.basement_studio_motion
name: Motion - columns: 2
grid_options:
columns: 6
rows: auto
- type: custom:decluttering-card
template: main_accent_color_button
variables:
- name: Occupied
- entity: binary_sensor.basement_occupied - entity: binary_sensor.basement_occupied
name: Occupied - columns: 2
grid_options:
columns: 6
rows: auto
- type: custom:fold-entity-row - type: custom:fold-entity-row
show_header_toggle: false show_header_toggle: false
state_color: true state_color: true
@ -2820,15 +3054,6 @@ views:
name: Sync Issue name: Sync Issue
- entity: input_button.basement_led_strip_reset - entity: input_button.basement_led_strip_reset
name: LED Strip Reset name: LED Strip Reset
visibility:
- condition: or
conditions:
- condition: state
entity: input_boolean.studio_quiet
state: 'off'
- condition: user
users:
- c3909d27048140729f002aaef0391775
- type: grid - type: grid
cards: cards:
- type: heading - type: heading
@ -7076,3 +7301,339 @@ views:
name: Sync Issue name: Sync Issue
- entity: input_button.basement_led_strip_reset - entity: input_button.basement_led_strip_reset
name: LED Strip Reset name: LED Strip Reset
- type: grid
cards:
- type: heading
heading: Basement Studio
- type: horizontal-stack
cards:
- type: custom:mushroom-light-card
entity: light.basement_studio_lights
name: Lights
icon: mdi:twitch
fill_container: true
use_light_color: true
show_brightness_control: true
show_color_temp_control: true
show_color_control: true
collapsible_controls: true
double_tap_action:
action: call-service
service: input_select.select_option
service_data:
option: Adaptive
target:
entity_id: input_select.basement_studio_scenes
layout: vertical
- type: vertical-stack
cards:
- type: custom:mushroom-template-card
primary: Current Scene
secondary: '{{ states(''input_text.basement_studio_selected_scene'') }}'
tap_action:
action: none
hold_action:
action: none
double_tap_action:
action: none
layout: vertical
- type: custom:mushroom-template-card
entity: sensor.basement_studio_lights_power_sensor
primary: Power Usage
secondary: '{{ states(''sensor.basement_total_power_sensor'') }} W'
tap_action:
action: more-info
hold_action:
action: none
double_tap_action:
action: none
fill_container: false
layout: vertical
visibility:
- condition: state
entity: light.basement_studio_lights
state: 'on'
- type: custom:timer-bar-card
filter: true
entities:
- entity: timer.basement_studio_door_timer
sync_issues: ignore
tap_action:
action: none
hold_action:
action: more-info
double_tap_action:
action: none
layout: hide_name
modifications:
- elapsed: 40%
bar_foreground: orange
- elapsed: 80%
bar_foreground: red
extend_paper_buttons_row:
position: right
buttons:
- icon: mdi:check-circle
tap_action:
action: call-service
service: timer.finish
target:
entity_id: timer.basement_studio_door_timer
visibility:
- condition: or
conditions:
- condition: state
entity: timer.basement_studio_door_timer
state: running
- condition: state
entity: timer.basement_studio_door_timer
state: paused
- type: custom:bubble-card
card_type: button
button_type: slider
entity: light.basement_led_strip_1
name: LED Strip 1
show_state: true
show_attribute: true
attribute: brightness
show_icon: true
tap_action:
action: toggle
double_tap_action:
action: none
hold_action:
action: more-info
columns: 2
card_layout: large
- type: custom:bubble-card
card_type: button
button_type: slider
entity: light.basement_stairwell
name: Stairwell
show_state: true
show_attribute: true
attribute: brightness
show_icon: true
tap_action:
action: toggle
double_tap_action:
action: none
hold_action:
action: more-info
columns: 2
card_layout: large
- type: custom:bubble-card
card_type: button
button_type: slider
entity: light.basement_short_lamp
name: Short Lamp
show_state: true
show_attribute: true
attribute: brightness
show_icon: true
tap_action:
action: toggle
double_tap_action:
action: none
hold_action:
action: more-info
columns: 2
card_layout: large
- type: custom:bubble-card
card_type: button
button_type: slider
entity: light.basement_tall_lamp
name: Tall Lamp
show_state: true
show_attribute: true
attribute: brightness
show_icon: true
tap_action:
action: toggle
double_tap_action:
action: none
hold_action:
action: more-info
columns: 2
card_layout: large
- type: entities
entities:
- type: custom:paper-buttons-row
buttons:
- entity: input_boolean.recliner_mode
layout: icon|name_state
name: Recliner Mode
state_icons:
unavailable: mdi:map-marker-question
state:
case: first
- entity: input_boolean.basement_studio_entertainment_control
layout: icon|name_state
name: Entertainment
state_icons:
unavailable: mdi:map-marker-question
state:
case: first
state_color: true
show_header_toggle: false
- type: entities
entities:
- type: custom:paper-buttons-row
buttons:
- entity: fan.basement_fan
name: Fan
layout: icon|name_state
state_icons:
'on': mdi:fan
'off': mdi:fan-off
unavailable: mdi:map-marker-question
state:
case: first
- entity: input_boolean.white_noise_basement
name: White Noise
layout: icon|name_state
state_icons:
'on': mdi:volume-high
'off': mdi:volume-off
unavailable: mdi:map-marker-question
state:
case: first
- entity: input_boolean.studio_quiet
name: Quiet
layout: icon|name_state
state_icons:
unavailable: mdi:map-marker-question
state:
case: first
- entity: input_boolean.gaming_mode
name: Gaming
layout: icon|name_state
state_icons:
unavailable: mdi:map-marker-question
state:
case: first
state_color: true
show_header_toggle: false
- type: custom:simple-thermostat
entity: climate.basement_studio_vtherm
header: false
decimals: 0
step_size: 1
layout:
mode:
headings: false
names: true
icons: true
step: row
control:
hvac:
heat: true
preset:
none: false
frost:
name: Minimum
eco:
name: Eco
comfort:
name: Comfort
boost:
name: Extra
- type: custom:mushroom-select-card
entity: input_select.basement_studio_scenes
layout: horizontal
name: Scenes
secondary_info: none
- type: custom:mushroom-select-card
entity: select.basement_led_strip_1_theme
layout: horizontal
name: LED Strip Theme
secondary_info: none
- type: glance
show_name: true
show_icon: true
show_state: true
state_color: true
entities:
- entity: binary_sensor.basement_studio_door
name: Door
- type: glance
show_name: true
show_icon: true
show_state: true
state_color: true
entities:
- entity: sensor.basement_studio_temperature
name: Temp
- entity: sensor.basement_studio_illuminance
name: Lux
- entity: binary_sensor.basement_studio_motion
name: Motion
- entity: binary_sensor.basement_occupied
name: Occupied
- type: custom:fold-entity-row
show_header_toggle: false
state_color: true
head:
type: section
label: More Settings
entities:
- type: custom:paper-buttons-row
buttons:
- entity: switch.adaptive_lighting_basement_studio
name: Adaptive Lighting
layout: icon|name_state
state:
case: first
- entity: switch.adaptive_lighting_sleep_mode_basement_studio
name: Night Mode
layout: icon|name_state
state:
case: first
- type: custom:paper-buttons-row
buttons:
- entity: switch.adaptive_lighting_adapt_brightness_basement_studio
name: Adapt Brightness
layout: icon|name_state
state:
case: first
- entity: switch.adaptive_lighting_adapt_color_basement_studio
name: Adapt Color
layout: icon|name_state
state:
case: first
- entity: input_boolean.basement_studio_dynamic_scenes
name: Dynamic Scenes
layout: icon|name_state
state:
case: first
- entity: input_boolean.basement_studio_heat_allowed
name: Heat Allowed
- entity: automation.basement_lights_handling
name: Auto Handling
- entity: automation.basement_lights_adaptive_resync
name: Adaptive Resync
- entity: input_number.daytime_colortemp_basement_studio
name: Day Colortemp
- entity: input_number.nighttime_colortemp_basement_studio
name: Night Colortemp
- entity: input_number.nighttime_brightness_basement_studio
name: Night Brightness
- entity: input_number.basement_studio_lights_off_delay
name: Lights Off Delay
- entity: counter.basement_studio_door_opened_today
name: Door Opened Today
- entity: counter.basement_led_strip_resets
name: LED Strip Resets
- entity: binary_sensor.basement_studio_sync_issue
name: Sync Issue
- entity: input_button.basement_led_strip_reset
name: LED Strip Reset
visibility:
- condition: or
conditions:
- condition: state
entity: input_boolean.studio_quiet
state: 'off'
- condition: user
users:
- c3909d27048140729f002aaef0391775