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