--- 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