Files
hassio-configuration/configuration/ui-lovelace/070-bedroom-olivia.yaml
Alexander Savin 26d86dec90
Some checks failed
Savin's Home Assistant / build (push) Failing after 1m45s
Update to the current version
2025-05-11 16:07:21 -04:00

662 lines
26 KiB
YAML

---
title: "Olivia's Bedroom"
icon: 'mdi:bed'
panel: true
visible:
- user: 1614b22cbef54f979741cf8a6b3413ec
- user: 76e8af2547254ef0ab523ae1ad0bf81a
cards:
- type: 'custom:layout-card'
layout_type: 'custom:vertical-layout'
layout:
max_cols: 3
cards:
- type: vertical-stack
cards:
- type: horizontal-stack
cards:
- type: 'custom:mushroom-chips-card'
chips:
- type: template
icon: >-
{% if
is_state('binary_sensor.presence_bedroom_olivia_sensor_1',
'on') -%}mdi:account-multiple{%- else
-%}mdi:account-off-outline{%- endif %}
icon_color: >-
{% if
is_state('binary_sensor.presence_bedroom_olivia_sensor_1',
'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}
badge_icon: 'mdi:numeric-1-circle'
badge_color: green
entity: binary_sensor.presence_bedroom_olivia_sensor_1
tap_action:
action: more-info
- type: template
icon: >-
{% if
is_state('binary_sensor.window_bedroom_olivia_01_contact',
'on') -%}mdi:window-open{%- else -%}mdi:window-closed{%- endif
%}
icon_color: >-
{% if
is_state('binary_sensor.window_bedroom_olivia_01_contact',
'on') -%}#FFC107{%- else -%}#44739E{%- endif %}
entity: binary_sensor.window_bedroom_olivia_01_contact
tap_action:
action: more-info
- type: template
icon: >-
{% if is_state('binary_sensor.door_bedroom_olivia_01_contact',
'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}
icon_color: >-
{% if is_state('binary_sensor.door_bedroom_olivia_01_contact',
'on') -%}#FFC107{%- else -%}#44739E{%- endif %}
entity: binary_sensor.door_bedroom_olivia_01_contact
tap_action:
action: more-info
- type: template
icon: >-
{% if
is_state('binary_sensor.door_bedroom_olivia_closet_01_contact',
'on') -%}mdi:door-open{%- else -%}mdi:door-closed{%- endif %}
icon_color: >-
{% if
is_state('binary_sensor.door_bedroom_olivia_closet_01_contact',
'on') -%}#FFC107{%- else -%}#44739E{%- endif %}
entity: binary_sensor.door_bedroom_olivia_closet_01_contact
tap_action:
action: more-info
- type: template
icon: >-
{% if is_state('binary_sensor.smoke_bedroom_olivia_01_smoke',
'on') -%}mdi:smoke-detector-variant-alert{%- else
-%}mdi:smoke-detector-variant{%- endif %}
icon_color: >-
{% if is_state('binary_sensor.smoke_bedroom_olivia_01_smoke',
'on') -%}#D40909{%- else -%}#44739E{%- endif %}
entity: binary_sensor.smoke_bedroom_olivia_01_smoke
tap_action:
action: more-info
- type: custom:mushroom-chips-card
alignment: end
chips:
- type: template
entity: light.bedroom_olivia_ceiling_01
icon: mdi:ceiling-light
tap_action:
action: toggle
icon_color: "{% if is_state('light.bedroom_olivia_ceiling_01', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}"
- type: template
entity: fan.bedroom_olivia
icon: mdi:fan
icon_color: "{% if is_state('fan.bedroom_olivia', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}"
tap_action:
action: toggle
- type: 'custom:bubble-card'
card_type: separator
icon: 'mdi:bed'
sub_button:
- name: Temp
icon: 'mdi:thermometer-lines'
entity: sensor.climate_bedroom_olivia_01_temperature
show_name: false
show_icon: true
show_state: true
show_background: false
show_attribute: false
- name: Humidity
icon: 'mdi:water-percent'
entity: sensor.climate_bedroom_olivia_01_humidity
show_name: false
show_icon: true
show_state: true
show_background: false
show_attribute: false
- name: Light Level
icon: 'mdi:weather-sunny'
entity: sensor.presence_bedroom_olivia_light_level
show_name: false
show_icon: true
show_state: true
show_background: false
show_attribute: false
styles: |
.bubble-feedback-container {
margin: 0px;
}
- type: vertical-stack
cards:
- type: 'custom:bubble-card'
card_type: button
button_type: switch
name: Occupancy
entity: input_boolean.occupancy_bedroom_olivia
icon: 'mdi:account-multiple'
show_state: false
show_background: false
tap_action:
action: toggle
button_action:
tap_action:
action: more-info
sub_button:
- entity: sensor.bedroom_olivia_person_count
icon: 'mdi:account-group'
show_state: false
show_background: true
- entity: sensor.bedroom_olivia_cat_count
icon: 'mdi:cat'
show_state: false
show_background: true
- icon: 'mdi:brightness-auto'
entity: input_boolean.manually_operated_light_bedroom_olivia
show_state: false
show_background: true
tap_action:
action: toggle
styles: >
.bubble-button-background {
opacity: 1 !important;
background-color: ${ state === 'on' ? 'var(--light-theme-disabled-color)' : 'var(--light-theme-disabled-color)' } !important;
} .bubble-sub-button-1 {
background-color: white !important;
} .bubble-sub-button-1 > ha-icon {
color: ${ hass.states['sensor.bedroom_olivia_person_count'].state > 0 ? 'rgb(255, 152, 0)' : '' } !important;
} .bubble-sub-button-2 {
background-color: white !important;
} .bubble-sub-button-2 > ha-icon {
color: ${ hass.states['sensor.bedroom_olivia_cat_count'].state > 0 ? 'rgb(255, 152, 0)' : '' } !important;
} .bubble-sub-button-3 {
background-color: white !important;
}
${subButtonIcon[2].setAttribute("icon", hass.states['input_boolean.manually_operated_light_bedroom_olivia'].state === 'on' ? 'mdi:hand-front-right' : 'mdi:brightness-auto')}
- type: 'custom:bubble-card'
card_type: button
button_type: switch
name: Light
entity: input_boolean.bedroom_olivia_light_state
icon: 'mdi:lightbulb-group'
show_state: true
show_background: false
tap_action:
action: toggle
button_action:
tap_action:
action: navigate
navigation_path: '#popup-bedroom-olivia-light'
sub_button:
- icon: 'mdi:lightbulb-group'
entity: scene.bedroom_olivia_all
show_state: false
show_background: true
tap_action:
action: call-service
service: input_select.select_option
service_data:
entity_id: input_select.bedroom_olivia_scenes
option: All
- icon: 'mdi:ceiling-light-multiple'
entity: scene.bedroom_olivia_ceiling_only
show_state: false
show_background: true
tap_action:
action: call-service
service: input_select.select_option
service_data:
entity_id: input_select.bedroom_olivia_scenes
option: Ceiling Only
- icon: 'mdi:floor-lamp-torchiere'
entity: scene.bedroom_olivia_floor_only
show_state: false
show_background: true
tap_action:
action: call-service
service: input_select.select_option
service_data:
entity_id: input_select.bedroom_olivia_scenes
option: Floor Only
styles: |
.bubble-sub-button-1 > ha-icon {
color: ${hass.states['input_select.bedroom_olivia_scenes'].state === 'All' ? 'rgb(255, 152, 0)' : ''} !important;
}
.bubble-sub-button-2 > ha-icon {
color: ${hass.states['input_select.bedroom_olivia_scenes'].state === 'Ceiling Only' ? 'rgb(255, 152, 0)' : ''} !important;
}
.bubble-sub-button-3 > ha-icon {
color: ${hass.states['input_select.bedroom_olivia_scenes'].state === 'Floor Only' ? 'rgb(255, 152, 0)' : ''} !important;
}
- type: 'custom:bubble-card'
card_type: button
button_type: switch
name: Fan
entity: fan.bedroom_olivia
icon: 'mdi:fan'
show_state: true
show_background: false
tap_action:
action: toggle
button_action:
tap_action:
action: more-info
sub_button:
- icon: 'mdi:fan-speed-1'
entity: fan.bedroom_olivia
show_state: false
show_background: true
tap_action:
action: call-service
service: fan.set_preset_mode
service_data:
entity_id: fan.bedroom_olivia
preset_mode: low
- icon: 'mdi:fan-speed-2'
entity: fan.bedroom_olivia
show_state: false
show_background: true
tap_action:
action: call-service
service: fan.set_preset_mode
service_data:
entity_id: fan.bedroom_olivia
preset_mode: medium
- icon: 'mdi:fan-speed-3'
entity: fan.bedroom_olivia
show_state: false
show_background: true
tap_action:
action: call-service
service: fan.set_preset_mode
service_data:
entity_id: fan.bedroom_olivia
preset_mode: high
styles: |
.bubble-sub-button-1 > ha-icon {
color: ${hass.states['fan.bedroom_olivia'].attributes.percentage === 33 ? 'rgb(255, 152, 0)' : ''} !important;
}
.bubble-sub-button-2 > ha-icon {
color: ${hass.states['fan.bedroom_olivia'].attributes.percentage === 66 ? 'rgb(255, 152, 0)' : ''} !important;
}
.bubble-sub-button-3 > ha-icon {
color: ${hass.states['fan.bedroom_olivia'].attributes.percentage === 100 ? 'rgb(255, 152, 0)' : ''} !important;
}
- type: 'custom:layout-break'
- type: vertical-stack
cards:
- type: 'custom:webrtc-camera'
url: 'rtsp://10.10.11.110:8554/bedroom-olivia'
title: Olivia Bedroom
muted: true
mode: 'webrtc,mse'
- type: 'custom:layout-break'
- type: vertical-stack
cards:
- type: 'custom:mini-media-player'
entity: media_player.olivia_bedroom
artwork: cover
- type: 'custom:plotly-graph'
refresh_interval: 1
hours_to_show: current_day
config:
modeBarButtonsToRemove:
- select2d
- lasso2d
- toImage
displaylogo: false
layout:
height: 240
margin:
l: 40
r: 20
t: 20
b: 55
showlegend: true
xaxis:
showticklabels: true
dtick: 1000
visible: true
gridcolor: 'RGBA(200,200,200,0.15)'
zerolinecolor: 'RGBA(200,200,200,0.15)'
type: number
fixedrange: true
range:
- 4000
- -4000
yaxis:
showticklabels: true
dtick: 1000
visible: true
gridcolor: 'RGBA(200,200,200,0.15)'
zerolinecolor: 'RGBA(200,200,200,0.15)'
scaleanchor: x
scaleratio: 1
fixedrange: true
range:
- 7500
- 0
entities:
- entity: ''
fn_var1: $ex vars.sensor_id = "d158f4";
fn_var2: >-
$ex vars.sensor_name_prefix = "sensor.screek_human_sensor_2a_"
+ vars.sensor_id + "_";
fn_var3: >-
$ex vars.number_name_prefix = "number.screek_human_sensor_2a_"
+ vars.sensor_id + "_";
fn_var4: >-
$ex vars.is_inch_unit = hass.states[vars.sensor_name_prefix +
"target1_x"].attributes.unit_of_measurement == "in";
- entity: ''
name: Target1
marker:
size: 10
symbol: star-diamond
line:
shape: spline
width: 5
x:
- >-
$ex { var x = hass.states[vars.sensor_name_prefix +
"target1_x"].state; var y =
hass.states[vars.sensor_name_prefix + "target1_y"].state; if
(x == 0 && y == 0) { return -9999 }; if (vars.is_inch_unit)
{ x = x * 25.4 }; return x; }
'y':
- >-
$ex { var x = hass.states[vars.sensor_name_prefix +
"target1_x"].state; var y =
hass.states[vars.sensor_name_prefix + "target1_y"].state; if
(x == 0 && y == 0) { return -9999 }; if (vars.is_inch_unit)
{ y = y * 25.4 }; return y; }
- entity: ''
name: Target2
marker:
size: 10
symbol: star-diamond
line:
shape: spline
width: 5
x:
- >-
$ex { var x = hass.states[vars.sensor_name_prefix +
"target2_x"].state; var y =
hass.states[vars.sensor_name_prefix + "target2_y"].state; if
(x == 0 && y == 0) { return -9999 }; if (vars.is_inch_unit)
{ x = x * 25.4 }; return x; }
'y':
- >-
$ex { var x = hass.states[vars.sensor_name_prefix +
"target2_x"].state; var y =
hass.states[vars.sensor_name_prefix + "target2_y"].state; if
(x == 0 && y == 0) { return -9999 }; if (vars.is_inch_unit)
{ y = y * 25.4 }; return y; }
- entity: ''
internal: false
name: Target3
marker:
size: 10
symbol: star-diamond
line:
shape: spline
width: 5
x:
- >-
$ex { var x = hass.states[vars.sensor_name_prefix +
"target3_x"].state; var y =
hass.states[vars.sensor_name_prefix + "target3_y"].state; if
(x == 0 && y == 0) { return -9999 }; if (vars.is_inch_unit)
{ x = x * 25.4 }; return x; }
'y':
- >-
$ex { var x = hass.states[vars.sensor_name_prefix +
"target3_x"].state; var y =
hass.states[vars.sensor_name_prefix + "target3_y"].state; if
(x == 0 && y == 0) { return -9999 }; if (vars.is_inch_unit)
{ y = y * 25.4 }; return y; }
- entity: ''
name: Zone1
mode: lines
fill: toself
fillcolor: 'RGBA(20,200,0,0.06)'
line:
color: 'RGBA(20,200,0,0.2)'
shape: line
width: 2
x:
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_x_begin"].state
'y':
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone1_y_begin"].state
- entity: ''
name: Zone2
mode: lines
fill: toself
fillcolor: 'RGBA(200,0,255,0.06)'
line:
color: 'RGBA(200,0,255,0.2)'
shape: line
width: 2
x:
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_x_begin"].state
'y':
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone2_y_begin"].state
- entity: ''
name: Zone3
mode: lines
fill: toself
fillcolor: 'RGBA(200,120,55,0.06)'
line:
color: 'RGBA(200,120,55,0.2)'
shape: line
width: 2
x:
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_x_begin"].state
'y':
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zone3_y_begin"].state
- entity: ''
name: ExZone
mode: lines
fill: toself
fillcolor: 'RGBA(255,0,0,0.15)'
line:
shape: line
width: 1
color: 'RGBA(255,0,0,0.2)'
x:
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_x_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_x_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_x_begin"].state
'y':
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_y_end"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_y_begin"].state
- >-
$ex hass.states[vars.number_name_prefix +
"zout1_y_begin"].state
- entity: ''
name: Coverage
mode: lines
fill: tonexty
fillcolor: 'rgba(168, 216, 234, 0.15)'
hoverinfo: none
line:
shape: line
width: 0.7
dash: dot
x:
- 0
- $ex 7500 * Math.sin((2 * Math.PI)/360 * 60)
- 6500
- 5500
- 4500
- 4000
- 3000
- 2000
- 1000
- 0
- -1000
- -2000
- -3000
- -4000
- -4500
- -5500
- -6500
- $ex -7500 * Math.sin((2 * Math.PI)/360 * 60)
- 0
'y':
- 0
- $ex 7500 * Math.cos((2 * Math.PI)/360 * 60)
- $ex Math.sqrt( 7500**2 - 6500**2 )
- $ex Math.sqrt( 7500**2 - 5500**2 )
- $ex Math.sqrt( 7500**2 - 4500**2 )
- $ex Math.sqrt( 7500**2 - 4000**2 )
- $ex Math.sqrt( 7500**2 - 3000**2 )
- $ex Math.sqrt( 7500**2 - 2000**2 )
- $ex Math.sqrt( 7500**2 - 1000**2 )
- 7500
- $ex Math.sqrt( 7500**2 - 1000**2 )
- $ex Math.sqrt( 7500**2 - 2000**2 )
- $ex Math.sqrt( 7500**2 - 3000**2 )
- $ex Math.sqrt( 7500**2 - 4000**2 )
- $ex Math.sqrt( 7500**2 - 4500**2 )
- $ex Math.sqrt( 7500**2 - 5500**2 )
- $ex Math.sqrt( 7500**2 - 6500**2 )
- $ex 7500 * Math.cos((2 * Math.PI)/360 * 60)
- 0
raw_plotly_config: true
title: $ex "Human Sensor 2A " + vars.sensor_id + " Map"
- type: vertical-stack
cards:
- type: 'custom:bubble-card'
card_type: pop-up
hash: '#popup-bedroom-olivia-light'
name: Olivia Bedroom
icon: 'mdi:bed'
- type: 'custom:bubble-card'
card_type: button
button_type: slider
name: 'Ceiling #1'
entity: light.bedroom_olivia_ceiling_01
show_state: true
tap_action:
action: toggle
button_action:
tap_action:
action: toggle
- type: 'custom:bubble-card'
card_type: button
button_type: slider
name: 'Floor #1'
entity: light.bedroom_olivia_floor_lamp_01
show_state: true
tap_action:
action: toggle
button_action:
tap_action:
action: toggle