Update to the current version
Some checks failed
Savin's Home Assistant / build (push) Failing after 1m45s

This commit is contained in:
2025-05-11 16:06:31 -04:00
parent d45649f8b8
commit 26d86dec90
55 changed files with 10355 additions and 2245 deletions

View File

@ -0,0 +1,655 @@
---
title: "Olivia's Bedroom"
icon: mdi:bed
panel: true
visible:
- user: 1614b22cbef54f979741cf8a6b3413ec # Alex
- user: 76e8af2547254ef0ab523ae1ad0bf81a # Tanya
cards:
- type: custom:layout-card
layout: vertical
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.presence_01_presence', 'on') -%}mdi:account-multiple{%- else -%}mdi:account-off-outline{%- endif %}"
# icon_color: "{% if is_state('binary_sensor.presence_01_presence', 'on') -%} #FFC107 {%- else -%} #44739E {%- endif %}"
# badge_icon: mdi:numeric-1-circle
# badge_color: green
# - type: template
# icon: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_4', 'on') -%}mdi:motion-sensor{%- else -%}mdi:motion-sensor-off{%- endif %}"
# icon_color: "{% if is_state('binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_4', 'on') -%}#FFC107{%- else -%}#44739E{%- endif %}"
# entity: binary_sensor.dome_z_wave_plus_motion_detector_with_light_sensor_and_flexible_magnetic_mount_home_security_motion_detection_4
# 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:stack-in-card
cards:
- type: grid
columns: 2
square: false
cards:
- type: custom:mushroom-entity-card
entity: input_boolean.bedroom_olivia_light_state
name: Olivia Bedroom
icon: mdi:lightbulb-group
tap_action:
action: toggle
card_mod:
style: "ha-card { border: none; }"
- type: custom:paper-buttons-row
preset: mushroom
styles:
justify-content: flex-end
base_config:
styles:
button:
margin-top: 12px
margin-right: 12px
buttons:
- layout: icon
icon: mdi:lightbulb-group
tap_action:
action: call-service
service: input_select.select_option
service_data:
entity_id: input_select.bedroom_olivia_scenes
option: "All"
styles:
button:
color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'All') %}#FFC107{% else %}#44739E{% endif %}"
background-color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'All') %}#FFF3D7{% else %}#F4F4F4{% endif %}"
- layout: icon
icon: mdi:ceiling-light-multiple
tap_action:
action: call-service
service: input_select.select_option
service_data:
entity_id: input_select.bedroom_olivia_scenes
option: "Ceiling Only"
styles:
button:
color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Ceiling Only') %}#FFC107{% else %}#44739E{% endif %}"
background-color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Ceiling Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}"
- layout: icon
icon: mdi:floor-lamp-torchiere
tap_action:
action: call-service
service: input_select.select_option
service_data:
entity_id: input_select.bedroom_olivia_scenes
option: "Floor Only"
styles:
button:
color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Floor Only') %}#FFC107{% else %}#44739E{% endif %}"
background-color: "{% if is_state('input_boolean.bedroom_olivia_light_state', 'on') and is_state('input_select.bedroom_olivia_scenes', 'Table Only') %}#FFF3D7{% else %}#F4F4F4{% endif %}"
- type: horizontal-stack
cards:
- type: custom:mini-graph-card
# name: Temperature
line_color: orange
font_size: 75
font_size_header: 12
entities:
- entity: sensor.climate_bedroom_olivia_01_temperature
# name: Temperature
hours_to_show: 24
points_per_hour: 4
align_icon: state
align_state: left
show:
name: false
- type: custom:mini-graph-card
# name: Humidity
line_color: blue
font_size: 75
font_size_header: 12
entities:
- entity: sensor.climate_bedroom_olivia_01_humidity
# name: Humidity
hours_to_show: 24
points_per_hour: 4
align_icon: state
align_state: left
show:
name: false
- type: custom:mini-graph-card
# name: Illuminance
line_color: red
font_size: 75
font_size_header: 12
entities:
- entity: sensor.presence_bedroom_olivia_light_level
# name: Illuminance
hours_to_show: 24
points_per_hour: 4
align_icon: state
align_state: left
show:
name: false
- type: horizontal-stack
cards:
- type: custom:mushroom-light-card
entity: light.bedroom_olivia_ceiling_01
name: Ceiling Light
icon: mdi:ceiling-fan-light
show_brightness_control: true
collapsible_controls: true
use_light_color: true
- type: custom:mushroom-light-card
entity: light.bedroom_olivia_floor_01
name: Floor Light
icon: mdi:floor-lamp
show_brightness_control: true
collapsible_controls: true
use_light_color: true
- type: custom:mushroom-fan-card
entity: fan.bedroom_maxim
name: 'Ceiling Fan'
icon_animation: on
show_percentage_control: true
collapsible_controls: true
# - type: custom:stack-in-card
# cards:
# - type: grid
# columns: 2
# square: false
# cards:
# - type: custom:mushroom-entity-card
# entity: fan.bedroom_olivia
# name: Fan
# icon: mdi:ceiling-fan-light
# use_light_color: false
# tap_action:
# action: toggle
# card_mod:
# style: "ha-card { border: none }"
# - type: custom:paper-buttons-row
# preset: mushroom
# styles:
# justify-content: flex-end
# base_config:
# styles:
# button:
# margin-top: 12px
# margin-right: 12px
# buttons:
# - layout: icon
# icon: mdi:fan-speed-1
# tap_action:
# action: call-service
# service: fan.set_preset_mode
# service_data:
# entity_id: fan.bedroom_olivia
# preset_mode: low
# styles:
# button:
# color: "{% if is_state_attr('fan.bedroom_olivia', 'preset_mode', 'low') %}#FFC107{% else %}#44739E{% endif %}"
# - layout: icon
# icon: mdi:fan-speed-2
# tap_action:
# action: call-service
# service: fan.set_preset_mode
# service_data:
# entity_id: fan.bedroom_olivia
# preset_mode: medium
# styles:
# button:
# color: "{% if is_state_attr('fan.bedroom_olivia', 'preset_mode', 'medium') %}#FFC107{% else %}#44739E{% endif %}"
# - layout: icon
# icon: mdi:fan-speed-3
# tap_action:
# action: call-service
# service: fan.set_preset_mode
# service_data:
# entity_id: fan.bedroom_olivia
# preset_mode: high
# styles:
# button:
# color: "{% if is_state_attr('fan.bedroom_olivia', 'preset_mode', 'high') %}#FFC107{% else %}#44739E{% endif %}"
# - type: entities
# show_header_toggle: false
# entities:
# - type: custom:fan-mode-button-row
# entity: fan.bedroom_olivia
# name: Fan
# customTheme: false
- type: custom:layout-break
- type: vertical-stack
cards:
- type: custom:webrtc-camera
url: "rtsp://10.10.11.110:8554/bedroom-olivia"
title: "Olivia's Bedroom"
muted: true
mode: webrtc,mse
- type: custom:mushroom-chips-card
chips:
- type: entity
entity:
- type: entity
entity:
- type: entity
entity:
- type: custom:layout-break
- type: vertical-stack
cards:
# - type: entities
# title: Lights
# show_header_toggle: false
# entities:
# - entity: timer.app_lighting_bedroom_olivia
# - type: custom:flipdown-timer-card
# entity: timer.app_lighting_bedroom_olivia
# show_hour: false
# show_title: false
# show_header: false
# duration: "00:01:00"
# styles:
# rotor:
# width: 60px
# height: 80px
# button:
# width: 60px
# location: bottom
- type: horizontal-stack
cards:
- type: button
name: Occupancy
entity: input_boolean.occupancy_bedroom_olivia
- type: button
name: Operating Mode
entity: input_boolean.manually_operated_light_bedroom_olivia
- type: button
name: Occupants
entity: input_number.occupants_bedroom_olivia
# - type: custom:mini-media-player
# entity: media_player.kitchen_max
# 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";
# name: sensor_id
- 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"