Out with the old and in with the new

This commit is contained in:
CeeWeasel
2025-07-16 20:14:36 -04:00
parent f608ec2827
commit 51d35b46e9
25 changed files with 1703 additions and 2551 deletions
-2
View File
@@ -9,7 +9,6 @@ trigger:
- binary_sensor.from_street_vehicle_occupancy
- binary_sensor.driveway_person_occupancy
- binary_sensor.front_yard_person_occupancy
- binary_sensor.front_yard_animal_occupancy
- binary_sensor.garage_door
from: "off"
to: "on"
@@ -20,7 +19,6 @@ trigger:
- binary_sensor.from_street_vehicle_occupancy
- binary_sensor.driveway_person_occupancy
- binary_sensor.front_yard_person_occupancy
- binary_sensor.front_yard_animal_occupancy
- binary_sensor.garage_door
from: "on"
to: "off"
+12 -10
View File
@@ -7,18 +7,20 @@ trigger:
webhook_id: "synology_doorbell_actionrule"
local_only: true
- id: button_pressed
platform: event
event_type: "amcrest"
event_data:
camera: "Front Porch"
event: "AlarmLocal"
# - id: button_pressed
# platform: event
# event_type: "amcrest"
# event_data:
# camera: "Front Porch"
# event: "AlarmLocal"
- id: button_pressed
platform: state
entity_id: binary_sensor.front_porch_button_pressed
from: "off"
to: "on"
trigger: event
event_type: amcrest
event_data:
event: "CallNoAnswered"
payload:
action: "Start"
- id: door_opened
platform: state
@@ -1,264 +0,0 @@
blueprint:
name: Ask a Yes/No question
description: 'Ask a simple Yes/No question. Supports 50 different ways of confirming
or rejecting the question. Supports retries.
'
domain: script
author: JLo
homeassistant:
min_version: 2025.6.99
input:
question:
name: Question
description: The question that will be asked by the voice assistant.
selector:
text: {}
yes_section:
name: Confirmation ('Yes', 'Of course', ...)
description: Define what should happen if you reply positively to the question
asked.
icon: mdi:play
input:
yes_actions:
name: Actions
description: Actions to perform if you reply positively to the question
asked.
default: []
selector:
action: {}
yes_answer:
name: Answer
description: Answer of the voice assistant if you reply positively to the
question asked.
default: Done
selector:
text: {}
no_section:
name: Rejection ('No', 'Negative', ...)
description: Define what should happen if you reply negatively to the question
asked.
icon: mdi:stop
input:
no_actions:
name: Actions
description: Actions to perform if you reply negatively to the question
asked.
default: []
selector:
action: {}
no_answer:
name: Answer
description: Answer of the voice assistant if you reply negatively to the
question asked.
default: Action cancelled
selector:
text: {}
other_section:
name: Other responses
description: Define what should happen if the response is not understood.
icon: mdi:help
collapsed: true
input:
other_actions:
name: Actions
description: Actions to perform if the response is not understood.
default: []
selector:
action: {}
other_answer:
name: Answer
description: Answer of the voice assistant if the response is not understood.
default: Sorry, I couldn't understand that
selector:
text: {}
repeat_section:
name: Advanced parameters (Retries)
description: Define how many times the question should be asked if the answer
is not understood.
icon: mdi:cog
collapsed: true
input:
number_of_retries:
name: Number of retries
description: Number of times the question should be re-asked if the answer
is not understood.
default: 0
selector:
number:
min: 0.0
max: 10.0
mode: slider
step: 1.0
source_url: https://www.home-assistant.io/blueprints/blog/2025-07/ask_yes_no_question.yaml
fields:
voice_assistant:
name: Voice assistant
description: The voice assistant that will be used for that conversation.
required: true
selector:
entity:
multiple: false
filter:
- domain: assist_satellite
preannounce:
name: Preannounce
description: Play a sound before the question is asked.
required: true
default: true
selector:
boolean:
sequence:
- variables:
number_of_retries: !input number_of_retries
- repeat:
sequence:
- action: assist_satellite.ask_question
continue_on_error: true
data:
question: !input question
preannounce: '{{preannounce}}'
entity_id: '{{voice_assistant}}'
answers:
- id: 'yes'
sentences:
- 'Yes'
- Sure
- Absolutely
- Go ahead
- Please do
- Of course
- That's fine
- Do it
- Yep
- Yeah
- Ok
- Okay
- Affirmative
- I agree
- Sounds good
- You got it
- Definitely
- By all means
- Why not
- Indeed
- Confirmed
- Let's do it
- Certainly
- Right
- Fine
- All good
- Make it so
- I approve
- That's right
- I'm okay with that
- No problem
- Go for it
- Sounds fine
- I'm on board
- Proceed
- It's a yes
- I'm in
- Okay yes
- That's a yes
- Yeah go ahead
- I'm good with that
- Positive
- Do that
- It's okay
- Works for me
- I'm fine with that
- Yep do it
- Please go ahead
- That's what I want
- Exactly
- id: 'no'
sentences:
- 'No'
- Nope
- Don't
- Please don't
- No thank you
- I don't think so
- Not now
- That's a no
- I'd rather not
- No way
- Not really
- Cancel that
- Negative
- Stop
- Don't do it
- I said no
- No need
- Never mind
- Not necessary
- No that's not right
- I disagree
- Skip it
- Don't proceed
- I don't want that
- Don't go ahead
- Leave it
- That's incorrect
- I prefer not to
- No thanks
- I'm not okay with that
- I'm saying no
- Let's not
- Not this time
- I'm not in
- Please don't do that
- Don't take action
- I'd say no
- No action needed
- I'm against that
- I'd skip it
- Rather not
- Not today
- I'm not sure better not
- That's not what I want
- That won't be necessary
- I don't agree
- No that's wrong
- Let's skip that
- I'm not comfortable with that
response_variable: response
- choose:
- conditions:
- condition: template
value_template: '{{response.id == ''yes''}}'
sequence:
- sequence: !input yes_actions
- action: assist_satellite.announce
metadata: {}
data:
message: !input yes_answer
preannounce: false
target:
entity_id: '{{voice_assistant}}'
- conditions:
- condition: template
value_template: '{{response.id == ''no''}}'
sequence:
- sequence: !input no_actions
- action: assist_satellite.announce
metadata: {}
data:
message: !input no_answer
preannounce: false
target:
entity_id: '{{voice_assistant}}'
default:
- sequence: !input other_actions
- action: assist_satellite.announce
metadata: {}
data:
message: !input other_answer
preannounce: false
target:
entity_id: '{{voice_assistant}}'
until:
- condition: template
value_template: '{{ (response is defined and response.id in [''yes'',''no''])
or repeat.index > number_of_retries}}'
-598
View File
@@ -1,598 +0,0 @@
input_text:
camera14_status:
name: Camera14 Status
icon: mdi:cctv
input_select:
camera14_preset:
name: Camera14 Preset
options:
- Deck
- Sandbox
- Grove
- Grass
- Yard
- Stairs
- BesideStairs
input_button:
# PTZ Controls
cam14_ptz_up:
name: Cam14 PTZ Up
icon: mdi:arrow-up
cam14_ptz_right_up:
name: Cam14 PTZ Right Up
icon: mdi:arrow-top-right
cam14_ptz_right:
name: Cam14 PTZ Right
icon: mdi:arrow-right
cam14_ptz_right_down:
name: Cam14 Right Down
icon: mdi:arrow-bottom-right
cam14_ptz_down:
name: Cam14 PTZ Down
icon: mdi:arrow-down
cam14_ptz_left_down:
name: Cam14 PTZ Left Down
icon: mdi:arrow-bottom-left
cam14_ptz_left:
name: Cam14 PTZ Left
icon: mdi:arrow-left
cam14_ptz_left_up:
name: Cam14 Left Up
icon: mdi:arrow-top-left
cam14_ptz_zoom_in:
name: Cam14 Zoom In
icon: mdi:magnify-plus
cam14_ptz_zoom_out:
name: Cam14 Zoom Out
icon: mdi:magnify-minus
# Camera Preset
cam14_ptz_preset_1:
name: Cam14 Deck
icon: mdi:grill
cam14_ptz_preset_2:
name: Cam14 Sandbox
icon: mdi:pail
cam14_ptz_preset_3:
name: Cam14 Yard
icon: mdi:slide
cam14_ptz_preset_4:
name: Cam14 Grove
icon: mdi:forest
cam14_ptz_preset_5:
name: Cam14 Stairs
icon: mdi:stairs
cam14_ptz_preset_6:
name: Cam14 Preset 6
icon: mdi:stairs-down
cam14_ptz_preset_7:
name: Cam14 Preset 7
icon: mdi:grass
cam14_ptz_preset_8:
name: Cam14 Preset 8
icon: mdi:map-marker
cam14_ptz_preset_9:
name: Cam14 Preset 9
icon: mdi:map-marker
cam14_ptz_preset_10:
name: Cam14 Preset 10
icon: mdi:map-marker
automation:
# - id: automation_cam14_ptz_controls
# alias: Cam14 PTZ Controls
# mode: queued
# trigger:
# - id: up
# platform: state
# entity_id: input_button.cam14_ptz_up
# - id: right_up
# platform: state
# entity_id: input_button.cam14_ptz_right_up
# - id: right
# platform: state
# entity_id: input_button.cam14_ptz_right
# - id: right_down
# platform: state
# entity_id: input_button.cam14_ptz_right_down
# - id: down
# platform: state
# entity_id: input_button.cam14_ptz_down
# - id: left_down
# platform: state
# entity_id: input_button.cam14_ptz_left_down
# - id: left
# platform: state
# entity_id: input_button.cam14_ptz_left
# - id: left_up
# platform: state
# entity_id: input_button.cam14_ptz_left_up
# - id: zoom_in
# platform: state
# entity_id: input_button.cam14_ptz_zoom_in
# - id: zoom_out
# platform: state
# entity_id: input_button.cam14_ptz_zoom_out
# condition: []
# action:
# - service: amcrest.ptz_control
# data:
# entity_id: camera.frigate_cam14
# movement: "{{ trigger.id }}"
# travel_time: 0.5
# - delay: '00:00:01'
# - id: automation_manage_frigate_cam14_motion
# mode: single
# alias: Manage Frigate Cam14 Motion
# description: ""
# trigger:
# - platform: state
# entity_id: input_boolean.cycle_cam14
# - platform: homeassistant
# event: start
# - platform: event
# event_type: automation_reloaded
# action:
# - choose:
# - conditions:
# - condition: state
# entity_id: input_boolean.cycle_cam14
# state: 'off'
# sequence:
# - service: switch.turn_on
# target:
# entity_id: switch.frigate_cam14_motion
# default:
# - service: switch.turn_off
# target:
# entity_id: switch.frigate_cam14_motion
- id: automation_cycle_back_yard_camera
mode: single
alias: Cycle Back Yard Camera
description: ""
trigger:
- platform: state
entity_id: input_boolean.cycle_cam14
- platform: homeassistant
event: start
- platform: event
event_type: automation_reloaded
condition:
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
# - alias: "The input_boolean controlling the cycling of cam14 is on"
# condition: state
# entity_id: input_boolean.cycle_cam14
# state: "on"
# - alias: "No people or animals detected by Frigate for the last 5 seconds"
# condition: state
# entity_id: binary_sensor.frigate_cam14_all_occupancy
# state: "off"
# for:
# hours: 0
# minutes: 0
# seconds: 5
# # Either the camera isn't looking at the deck
# # or the camera is looking at the deck and the deck motion sensor has been off for at least 30 seconds
# # or the camera is looking at the deck and the patio door has been closed for at least 30 seconds
# - condition: or
# conditions:
# - alias: "The input_select isn't set to Deck"
# condition: not
# conditions:
# - condition: state
# entity_id: input_select.camera14_preset
# state: "Deck"
# - alias: "The input_select is set to Deck and there hasn't been motion detected on the deck for the last 30 seconds"
# condition: and
# conditions:
# - condition: state
# entity_id: input_select.camera14_preset
# state: "Deck"
# - condition: state
# entity_id: binary_sensor.deck_motion
# state: "off"
# for:
# seconds: 30
# - alias: "The input_select is set to deck and the patio door has been shut for at least 30 seconds"
# condition: and
# conditions:
# - condition: state
# entity_id: input_select.camera14_preset
# state: "Deck"
# - condition: state
# entity_id: binary_sensor.patio_door_contact
# state: "off"
# for:
# seconds: 30
action:
# - alias: "This always cycles the back yard camera every 45 seconds. It should stop cycling when a person is found, but this version doesn't"
# repeat:
# while: "{{ is_state('input_boolean.cycle_cam14', 'on') }}"
# sequence:
# - service: input_select.select_next
# data:
# cycle: true
# target:
# entity_id: input_select.camera14_preset
# - delay: "00:00:45"
- alias: "This should only cycle the back yard camera, if a person isn't found."
repeat:
while: "{{ is_state('input_boolean.cycle_cam14', 'on') }}"
sequence:
- choose:
# If the camera is looking at the deck and the deck motion sensor is on, then wait 5 seconds.
- conditions:
- condition: state
entity_id: input_select.camera14_preset
state: Deck
- condition: state
entity_id: binary_sensor.deck_motion
state: "on"
sequence:
- service: input_text.set_value
target:
entity_id: input_text.camera14_status
data:
value: "Deck"
- delay: 5
# If a person is not found, cycle to the next preset, then wait 30 seconds.
- conditions:
- condition: template
value_template: "{{ is_state('binary_sensor.frigate_cam14_person_occupancy','off') }}"
sequence:
- service: input_text.set_value
target:
entity_id: input_text.camera14_status
data:
value: "Cycling"
- service: input_select.select_next
data:
cycle: true
target:
entity_id: input_select.camera14_preset
- delay: 30
# If a person is found, check if the person is still present every 5 seconds
default:
- service: input_text.set_value
target:
entity_id: input_text.camera14_status
data:
value: "Focusing"
- repeat:
while: "{{ is_state('binary_sensor.frigate_cam14_person_occupancy','off') }}"
sequence:
- delay: 5
- service: input_text.set_value
target:
entity_id: input_text.camera14_status
data:
value: "Static"
- id: automation_look_at_deck
mode: restart
alias: "Look at deck"
description: "When the patio door is opened, set the camera to the deck preset, if frigate isn't currently detecting anything"
trigger:
- platform: state
entity_id: binary_sensor.patio_door_contact
from: "off"
to: "on"
condition:
- condition: numeric_state
entity_id: sensor.frigate_cam14_all_count
below: 2
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
action:
# We don't need to turn off cycling the back yard camera.
# - service: input_boolean.turn_off
# target:
# entity_id: input_boolean.cycle_cam14
- service: input_text.set_value
target:
entity_id: input_text.camera14_status
data:
value: "Deck"
- service: input_select.select_option
data:
option: Deck
target:
entity_id: input_select.camera14_preset
# the Cycle cam 14 automation already checks if something is detected. All we need to do is force cam14 to look at the deck
# - delay: "00:00:05"
# - repeat:
# while: "{{ is_state('binary_sensor.frigate_cam14_all_occupancy', 'on')}}"
# sequence:
# - delay: "00:00:05"
# - service: input_boolean.turn_on
# target:
# entity_id: input_boolean.cycle_cam14
- id: automation_back_yard_snapshot
mode: restart
alias: "Back Yard Snapshot"
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id: camera.frigate_cam14
to: "streaming"
action:
- service: camera.snapshot
target:
entity_id: camera.frigate_cam14
data:
filename: "/config/tmp/snapshots/cam14-{{states('input_select.camera14_preset')}}-{{now().strftime('%y%m%d-%H%M%S')}}.jpg"
- id: automation_cam14_ptz_preset
alias: Cam14 PTZ Presets
mode: single
max_exceeded: silent
trigger:
- id: Preset 1
platform: state
entity_id: input_button.cam14_ptz_preset_1
- id: Preset 2
platform: state
entity_id: input_button.cam14_ptz_preset_2
- id: Preset 3
platform: state
entity_id: input_button.cam14_ptz_preset_3
- id: Preset 4
platform: state
entity_id: input_button.cam14_ptz_preset_4
- id: Preset 5
platform: state
entity_id: input_button.cam14_ptz_preset_5
- id: Preset 6
platform: state
entity_id: input_button.cam14_ptz_preset_6
- id: Preset 7
platform: state
entity_id: input_button.cam14_ptz_preset_7
- id: Preset 8
platform: state
entity_id: input_button.cam14_ptz_preset_8
- id: Preset 9
platform: state
entity_id: input_button.cam14_ptz_preset_9
- id: Preset 10
platform: state
entity_id: input_button.cam14_ptz_preset_10
condition:
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
action:
- choose:
- conditions: >
{{ trigger.id|replace('Preset ','')|int(default=0) == 1}}
sequence:
- service: input_select.select_option
target:
entity_id: input_select.camera14_preset
data:
option: "Deck"
- conditions: >
{{ trigger.id|replace('Preset ','')|int(default=0) == 2}}
sequence:
- service: input_select.select_option
target:
entity_id: input_select.camera14_preset
data:
option: "Sandbox"
- conditions: >
{{ trigger.id|replace('Preset ','')|int(default=0) == 3}}
sequence:
- service: input_select.select_option
target:
entity_id: input_select.camera14_preset
data:
option: "Yard"
- conditions: >
{{ trigger.id|replace('Preset ','')|int(default=0) == 4}}
sequence:
- service: input_select.select_option
target:
entity_id: input_select.camera14_preset
data:
option: "Grove"
- conditions: >
{{ trigger.id|replace('Preset ','')|int(default=0) == 5}}
sequence:
- service: input_select.select_option
target:
entity_id: input_select.camera14_preset
data:
option: "Stairs"
- conditions: >
{{ trigger.id|replace('Preset ','')|int(default=0) == 6}}
sequence:
- service: input_select.select_option
target:
entity_id: input_select.camera14_preset
data:
option: "BesideStairs"
- conditions: >
{{ trigger.id|replace('Preset ','')|int(default=0) == 7}}
sequence:
- service: input_select.select_option
target:
entity_id: input_select.camera14_preset
data:
option: "Grass"
- service: "shell_command.back_yard_preset_{{ trigger.id|replace('Preset ','')|int(default=1) }}"
# - service: amcrest.goto_preset
# data:
# entity_id: camera.frigate_cam14
# preset: "{{ trigger.id|replace('Preset ','')|int(default=1) }}"
- delay: "00:00:2"
- id: automation_cam14_ptz_move
alias: Cam14 PTZ Move
mode: restart
trigger:
- platform: state
entity_id: input_select.camera14_preset
- platform: state
entity_id: camera.frigate_cam14
from: unavailable
- platform: homeassistant
event: start
- platform: time_pattern
minutes: /10
condition:
- "{{ states('camera.frigate_cam14') not in ['unknown', 'unavailable'] }}"
action:
- choose:
- conditions:
- condition: state
entity_id: input_select.camera14_preset
state: Sandbox
sequence:
- service: input_button.press
data: {}
target:
entity_id: input_button.cam14_ptz_preset_2
- conditions:
- condition: state
entity_id: input_select.camera14_preset
state: Yard
sequence:
- service: input_button.press
data: {}
target:
entity_id: input_button.cam14_ptz_preset_3
- conditions:
- condition: state
entity_id: input_select.camera14_preset
state: Grove
sequence:
- service: input_button.press
data: {}
target:
entity_id: input_button.cam14_ptz_preset_4
- conditions:
- condition: state
entity_id: input_select.camera14_preset
state: Stairs
sequence:
- service: input_button.press
data: {}
target:
entity_id: input_button.cam14_ptz_preset_5
- conditions:
- condition: state
entity_id: input_select.camera14_preset
state: BesideStairs
sequence:
- service: input_button.press
data: {}
target:
entity_id: input_button.cam14_ptz_preset_6
- conditions:
- condition: state
entity_id: input_select.camera14_preset
state: Grass
sequence:
- service: input_button.press
data: {}
target:
entity_id: input_button.cam14_ptz_preset_7
default:
- service: input_button.press
data: {}
target:
entity_id: input_button.cam14_ptz_preset_1
template:
- binary_sensor:
- name: Deck Person Occupancy
unique_id: templatebinarysensor.deck_person_occupancy
availability: "{{ states('binary_sensor.possible_deck_person_occupancy') not in ['unknown', 'unavailable'] }}"
state: "{{ is_state('binary_sensor.possible_deck_person_occupancy','on') and is_state('input_select.camera14_preset','Deck') }}"
icon: >
{% if is_state('binary_sensor.deck_person_occupancy','on') %}
mdi:motion-sensor
{% else %}
mdi:motion-sensor-off
{% endif %}
- name: Deck Animal Motion
unique_id: templatebinarysensor.deck_animal_occupancy
availability: "{{ states('binary_sensor.possible_deck_animal_occupancy') not in ['unknown', 'unavailable'] }}"
state: "{{ is_state('binary_sensor.possible_deck_animal_occupancy','on') and is_state('input_select.camera14_preset','Deck') }}"
icon: mdi:bird
- sensor:
- name: Deck Person Count
unique_id: templatesensor.deck_person_count
availability: "{{ states('sensor.possible_deck_person_count') not in ['unknown', 'unavailable'] }}"
unit_of_measurement: objects
state: >
{% if is_state('input_select.camera14_preset','Deck') %}
{{ states('sensor.possible_deck_person_count') }}
{% else %}
0
{% endif %}
icon: mdi:shield-account
- name: Deck Animal Count
unique_id: templatesensor.deck_animal_count
availability: "{{ states('sensor.possible_deck_animal_count') not in ['unknown', 'unavailable'] }}"
unit_of_measurement: objects
state: >
{% if is_state('input_select.camera14_preset','Deck') %}
{{ states('sensor.possible_deck_animal_count') }}
{% else %}
0
{% endif %}
icon: mdi:paw
@@ -10,11 +10,3 @@ shell_command:
master_bedroom_right_preset_3: !secret master_bedroom_right_preset_3
master_bedroom_right_preset_4: !secret master_bedroom_right_preset_4
master_bedroom_right_preset_5: !secret master_bedroom_right_preset_5
back_yard_preset_1: !secret back_yard_preset_1
back_yard_preset_2: !secret back_yard_preset_2
back_yard_preset_3: !secret back_yard_preset_3
back_yard_preset_4: !secret back_yard_preset_4
back_yard_preset_5: !secret back_yard_preset_5
back_yard_preset_6: !secret back_yard_preset_6
back_yard_preset_7: !secret back_yard_preset_7
+9 -9
View File
@@ -1,13 +1,13 @@
notify:
name: DreamBox
platform: hass_agent_notifier
resource: !secret dreambox_hassagent
# notify:
# name: DreamBox
# platform: hass_agent_notifier
# resource: !secret dreambox_hassagent
# media_player:
# - name: DreamBox
# platform: hass_agent_mediaplayer
# host: !secret dreambox_ip
# port: 5115
# # media_player:
# # - name: DreamBox
# # platform: hass_agent_mediaplayer
# # host: !secret dreambox_ip
# # port: 5115
template:
- trigger:
@@ -1,25 +1,25 @@
notify:
name: DreamSurface
platform: hass_agent_notifier
resource: !secret dreamsurface_hassagent
# notify:
# name: DreamSurface
# platform: hass_agent_notifier
# resource: !secret dreamsurface_hassagent
mqtt:
light:
- name: "DreamSurface: Screen Brightness"
unique_id: "dreamsurface_screen_brightness"
object_id: "dreamsurface_monitor_brightness"
command_topic: "homeassistant/light/DREAMSURFACE/DREAMSURFACE_screen_brightness/action"
brightness_command_topic: "homeassistant/light/HASSAGENT/dreamsurface_monitor_brightness/action"
brightness_command_template: "%PROGRAMFILES(X86)%\\Monitorian\\Monitorian.exe /set {{ value }}"
brightness_scale: 100
on_command_type: "brightness"
icon: mdi:monitor-shimmer
# mqtt:
# light:
# - name: "DreamSurface: Screen Brightness"
# unique_id: "dreamsurface_screen_brightness"
# object_id: "dreamsurface_monitor_brightness"
# command_topic: "homeassistant/light/DREAMSURFACE/DREAMSURFACE_screen_brightness/action"
# brightness_command_topic: "homeassistant/light/HASSAGENT/dreamsurface_monitor_brightness/action"
# brightness_command_template: "%PROGRAMFILES(X86)%\\Monitorian\\Monitorian.exe /set {{ value }}"
# brightness_scale: 100
# on_command_type: "brightness"
# icon: mdi:monitor-shimmer
# media_player:
# - name: Dreamsurface
# platform: hass_agent_mediaplayer
# host: !secret dreamsurface_ip
# port: 5115
# # media_player:
# # - name: Dreamsurface
# # platform: hass_agent_mediaplayer
# # host: !secret dreamsurface_ip
# # port: 5115
template:
- trigger:
@@ -1,6 +1,6 @@
notify:
- platform: group
name: "Hass Agent Group"
name: "Dream Computers"
services:
- service: dreambox
- service: dreamsurface
+14
View File
@@ -0,0 +1,14 @@
mqtt:
- device_tracker:
- name: "Location"
#state_topic: "clever_devices/67f7ffaa-723d-4a93-bd9a-3e97a466a468"
json_attributes_topic: "clever_devices/67f7ffaa-723d-4a93-bd9a-3e97a466a468/attributes"
source_type: gps
unique_id: clever_chevy_traverse
icon: mdi:car-estate
device:
identifiers: 67f7ffaa-723d-4a93-bd9a-3e97a466a468
name: Chevrolet Traverse
model: Traverse
manufacturer: Chevrolet
suggested_area: Garage
@@ -0,0 +1,2 @@
# device_tracker.chevrolet_traverse_location:
# icon: "{% if is_state('device_tracker.chevrolet_traverse_location', 'home') %}mdi:car-estate{% else %}mdi:road-variant{% endif %}"
+2 -2
View File
@@ -1,6 +1,6 @@
substitutions:
sensor_gpio_left: GPIO10
sensor_gpio_right: GPIO20
sensor_gpio_left: GPIO34
sensor_gpio_right: GPIO35
packages:
diagnostics: !include
+149 -148
View File
@@ -1,154 +1,155 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam01_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam01
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam01_sub
icon: mdi:yoga
title: Blue Room
id: blue_room
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam01
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam01_sub
icon: mdi:yoga
title: Blue Room
id: blue_room
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: "16:9"
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam01
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam01
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: "16:9"
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam01
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam01
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.blue_room_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam01_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: sensor.furnace_room_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.blue_room_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.blue_room_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.blue_room_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: sensor.furnace_room_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.blue_room_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.blue_room_occupied
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.blue_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.blue_room_person_occupancy
style:
top: 65%
left: 45%
- type: conditional
conditions:
- entity: binary_sensor.furnace_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.furnace_room_person_occupancy
style:
top: 22%
left: 83%
- type: conditional
conditions:
- entity: binary_sensor.blue_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.blue_room_person_occupancy
style:
top: 65%
left: 45%
- type: conditional
conditions:
- entity: binary_sensor.furnace_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.furnace_room_person_occupancy
style:
top: 22%
left: 83%
- type: conditional
conditions:
- entity: light.blue_room_closet
state: "on"
elements:
- type: state-icon
entity: light.blue_room_closet
style:
top: 7%
left: 60%
tap_action:
action: toggle
- type: conditional
conditions:
- entity: light.blue_room_closet
state: "on"
elements:
- type: state-icon
entity: light.blue_room_closet
style:
top: 7%
left: 60%
tap_action:
action: toggle
- type: conditional
conditions:
- entity: light.blue_room_hue
state: "on"
elements:
- type: state-icon
entity: light.blue_room_hue
style:
top: 7%
left: 50%
tap_action:
action: toggle
- type: conditional
conditions:
- entity: light.blue_room_hue
state: "on"
elements:
- type: state-icon
entity: light.blue_room_hue
style:
top: 7%
left: 50%
tap_action:
action: toggle
- type: conditional
conditions:
- entity: light.furnace_room
state: "on"
elements:
- type: state-icon
entity: light.furnace_room
style:
top: 7%
left: 82%
tap_action:
action: toggle
- type: conditional
conditions:
- entity: light.furnace_room
state: "on"
elements:
- type: state-icon
entity: light.furnace_room
style:
top: 7%
left: 82%
tap_action:
action: toggle
+143 -142
View File
@@ -1,148 +1,149 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam03_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam03
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam03_sub
icon: mdi:desktop-classic
title: Computer Area
id: computer_area
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam03
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam03_sub
icon: mdi:desktop-classic
title: Computer Area
id: computer_area
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam03
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam03
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.computer_area_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam03_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: sensor.great_room_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.computer_area_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.computer_area_occupied
style:
top: 95%
left: 92%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam03
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam03
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.computer_area_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: sensor.great_room_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.computer_area_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.computer_area_occupied
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.great_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.great_room_person_occupancy
style:
top: 20%
left: 25%
- type: conditional
conditions:
- entity: binary_sensor.great_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.great_room_person_occupancy
style:
top: 20%
left: 25%
- type: conditional
conditions:
- entity: binary_sensor.utility_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.utility_room_person_occupancy
style:
top: 17%
left: 57%
- type: conditional
conditions:
- entity: binary_sensor.utility_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.utility_room_person_occupancy
style:
top: 17%
left: 57%
- type: conditional
conditions:
- entity: binary_sensor.entryway_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.entryway_person_occupancy
style:
top: 25%
left: 97%
- type: conditional
conditions:
- entity: binary_sensor.entryway_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.entryway_person_occupancy
style:
top: 25%
left: 97%
- type: conditional
conditions:
- entity: binary_sensor.computer_area_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.computer_area_person_occupancy
style:
top: 87%
left: 80%
- type: conditional
conditions:
- entity: binary_sensor.computer_area_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.computer_area_person_occupancy
style:
top: 87%
left: 80%
- type: conditional
conditions:
- entity: binary_sensor.computer_chair_contact_occupied
state: "on"
elements:
- type: state-icon
entity: binary_sensor.computer_chair_contact_occupied
style:
top: 87%
left: 75%
- type: conditional
conditions:
- entity: binary_sensor.computer_chair_contact_occupied
state: "on"
elements:
- type: state-icon
entity: binary_sensor.computer_chair_contact_occupied
style:
top: 87%
left: 75%
+214 -213
View File
@@ -1,226 +1,227 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam04_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam04
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam04_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam04
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam04_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam04
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam04
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam04
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam04
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.garage_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam04_speech_sound
style:
left: 22%
top: 95%
- type: state-icon
entity: sensor.east_side_vehicle_count
style:
left: 36%
top: 95%
- type: state-icon
entity: sensor.workshop_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: sensor.west_side_vehicle_count
style:
left: 64%
top: 95%
- type: state-icon
entity: input_boolean.garage_occupied
tap_action:
action: toggle
style:
left: 78%
top: 95%
- type: state-icon
entity: binary_sensor.garage_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.garage_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: sensor.east_side_vehicle_count
style:
left: 36%
top: 95%
- type: state-icon
entity: sensor.workshop_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: sensor.west_side_vehicle_count
style:
left: 64%
top: 95%
- type: state-icon
entity: input_boolean.garage_occupied
tap_action:
action: toggle
style:
left: 78%
top: 95%
- type: state-icon
entity: binary_sensor.garage_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: light.garage_overhead
tap_action:
action: toggle
style:
top: 5%
left: 50%
- type: state-icon
entity: light.garage_overhead
tap_action:
action: toggle
style:
top: 5%
left: 50%
- type: state-icon
entity: cover.garage_door
tap_action:
action: toggle
style:
top: 40%
left: 83%
- type: state-icon
entity: cover.garage_door
tap_action:
action: toggle
style:
top: 40%
left: 83%
- type: conditional
conditions:
- entity: binary_sensor.parking_spot_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.parking_spot_vehicle_occupancy
style:
top: 43%
left: 40%
- type: conditional
conditions:
- entity: binary_sensor.parking_spot_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.parking_spot_vehicle_occupancy
style:
top: 43%
left: 40%
- type: conditional
conditions:
- entity: binary_sensor.from_street_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_vehicle_occupancy
style:
top: 40%
left: 60%
- type: conditional
conditions:
- entity: binary_sensor.from_street_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_vehicle_occupancy
style:
top: 40%
left: 60%
- type: conditional
conditions:
- entity: binary_sensor.driveway_east_side_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_east_side_vehicle_occupancy
style:
top: 50%
left: 63%
- type: conditional
conditions:
- entity: binary_sensor.driveway_east_side_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_east_side_vehicle_occupancy
style:
top: 50%
left: 63%
- type: conditional
conditions:
- entity: binary_sensor.driveway_center_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_center_vehicle_occupancy
style:
top: 50%
left: 55%
- type: conditional
conditions:
- entity: binary_sensor.driveway_center_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_center_vehicle_occupancy
style:
top: 50%
left: 55%
- type: conditional
conditions:
- entity: binary_sensor.driveway_west_side_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_west_side_vehicle_occupancy
style:
top: 50%
left: 47%
- type: conditional
conditions:
- entity: binary_sensor.driveway_west_side_vehicle_occupancy
state: "on"
- entity: binary_sensor.garage_door
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_west_side_vehicle_occupancy
style:
top: 50%
left: 47%
- type: conditional
conditions:
- entity: binary_sensor.walkway_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.walkway_person_occupancy
style:
top: 26%
left: 72%
- type: conditional
conditions:
- entity: binary_sensor.walkway_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.walkway_person_occupancy
style:
top: 26%
left: 72%
- type: conditional
conditions:
- entity: binary_sensor.workshop_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.workshop_person_occupancy
style:
top: 50%
left: 85%
- type: conditional
conditions:
- entity: binary_sensor.workshop_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.workshop_person_occupancy
style:
top: 50%
left: 85%
- type: conditional
conditions:
- entity: binary_sensor.east_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.east_side_vehicle_occupancy
style:
top: 80%
left: 63%
- type: conditional
conditions:
- entity: binary_sensor.east_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.east_side_vehicle_occupancy
style:
top: 80%
left: 63%
- type: conditional
conditions:
- entity: binary_sensor.west_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.west_side_vehicle_occupancy
style:
top: 80%
left: 30%
- type: conditional
conditions:
- entity: binary_sensor.west_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.west_side_vehicle_occupancy
style:
top: 80%
left: 30%
+110 -109
View File
@@ -1,112 +1,113 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam06_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam06
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam06_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam06
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam06_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam06
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam06
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam06
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam06
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.master_bedroom_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam06_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: sensor.master_bed_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.master_bedroom_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.master_bedroom_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.master_bedroom_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: sensor.master_bed_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.master_bedroom_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.master_bedroom_occupied
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.master_bedroom_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bedroom_person_occupancy
style:
top: 50%
left: 10%
- type: conditional
conditions:
- entity: binary_sensor.master_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bed_person_occupancy
style:
top: 50%
left: 70%
- type: conditional
conditions:
- entity: binary_sensor.master_bedroom_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bedroom_person_occupancy
style:
top: 50%
left: 10%
- type: conditional
conditions:
- entity: binary_sensor.master_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bed_person_occupancy
style:
top: 50%
left: 70%
+110 -109
View File
@@ -1,112 +1,113 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam07_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam07
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam07_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam07
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam07_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam07
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam07
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam07
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam07
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.master_bedroom_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam07_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: sensor.master_bed_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.master_bedroom_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.master_bedroom_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.master_bedroom_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: sensor.master_bed_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.master_bedroom_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.master_bedroom_occupied
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.master_bedroom_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bedroom_person_occupancy
style:
top: 22%
left: 90%
- type: conditional
conditions:
- entity: binary_sensor.master_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bed_person_occupancy
style:
top: 50%
left: 30%
- type: conditional
conditions:
- entity: binary_sensor.master_bedroom_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bedroom_person_occupancy
style:
top: 22%
left: 90%
- type: conditional
conditions:
- entity: binary_sensor.master_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.master_bed_person_occupancy
style:
top: 50%
left: 30%
+194 -193
View File
@@ -1,203 +1,204 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam08_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam08
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam08_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam08
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam08_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam08
image: /local/title-dark-double.png
aspect_ratio: 100%
# tap_action:
# action: navigate
# navigation_path: /ai-yml/ai-cam08
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam08
image: /local/title-dark-double.png
aspect_ratio: 100%
# tap_action:
# action: navigate
# navigation_path: /ai-yml/ai-cam08
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.nursery_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam08_speech_sound
style:
left: 24%
top: 95%
- type: state-icon
entity: binary_sensor.black_bed_occupied
style:
left: 40%
top: 95%
- type: state-icon
entity: binary_sensor.white_bed_occupied
style:
left: 60%
top: 95%
transform: scaleX(-1) translate(50%, -50%)
- type: state-icon
entity: input_boolean.nursery_occupied
tap_action:
action: toggle
style:
left: 76%
top: 95%
- type: state-icon
entity: binary_sensor.nursery_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.nursery_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.black_bed_occupied
style:
left: 40%
top: 95%
- type: state-icon
entity: binary_sensor.white_bed_occupied
style:
left: 60%
top: 95%
transform: scaleX(-1) translate(50%, -50%)
- type: state-icon
entity: input_boolean.nursery_occupied
tap_action:
action: toggle
style:
left: 76%
top: 95%
- type: state-icon
entity: binary_sensor.nursery_occupied
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.black_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.black_bed_person_occupancy
style:
top: 30%
left: 23%
- type: conditional
conditions:
- entity: binary_sensor.black_bed_occupied
state: "on"
elements:
- type: state-icon
entity: binary_sensor.black_bed_occupied
style:
top: 30%
left: 18%
- type: conditional
conditions:
- entity: binary_sensor.white_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.white_bed_person_occupancy
style:
top: 65%
left: 85%
- type: conditional
conditions:
- entity: binary_sensor.white_bed_occupied
state: "on"
elements:
- type: state-icon
entity: binary_sensor.white_bed_occupied
style:
top: 65%
left: 80%
- type: conditional
conditions:
- entity: binary_sensor.nursery_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.nursery_person_occupancy
style:
top: 50%
left: 50%
- type: conditional
conditions:
- entity: binary_sensor.black_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.black_bed_person_occupancy
style:
top: 30%
left: 23%
- type: conditional
conditions:
- entity: binary_sensor.black_bed_occupied
state: "on"
elements:
- type: state-icon
entity: binary_sensor.black_bed_occupied
style:
top: 30%
left: 18%
- type: conditional
conditions:
- entity: binary_sensor.white_bed_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.white_bed_person_occupancy
style:
top: 65%
left: 85%
- type: conditional
conditions:
- entity: binary_sensor.white_bed_occupied
state: "on"
elements:
- type: state-icon
entity: binary_sensor.white_bed_occupied
style:
top: 65%
left: 80%
- type: conditional
conditions:
- entity: binary_sensor.nursery_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.nursery_person_occupancy
style:
top: 50%
left: 50%
- type: state-icon
entity: media_player.nursery_hub
style:
left: 45%
top: 16%
- type: state-icon
entity: media_player.nursery_hub
style:
left: 45%
top: 16%
- type: state-icon
entity: light.nursery_ceiling_hue
style:
left: 50%
top: 3%
tap_action:
action: toggle
hold_action:
action: more-info
- type: state-icon
entity: light.nursery_ceiling_hue
style:
left: 50%
top: 3%
tap_action:
action: toggle
hold_action:
action: more-info
- type: state-icon
entity: light.nursery_closet
style:
left: 80%
top: 7%
tap_action:
action: toggle
hold_action:
action: more-info
- type: state-icon
entity: light.nursery_closet
style:
left: 80%
top: 7%
tap_action:
action: toggle
hold_action:
action: more-info
- type: state-icon
entity: light.black_bed_wled
style:
left: 8%
top: 7%
- type: state-icon
entity: light.black_bed_wled
style:
left: 8%
top: 7%
- type: state-icon
entity: select.black_bed_wled_preset
style:
left: 8%
top: 12%
- type: state-icon
entity: select.black_bed_wled_preset
style:
left: 8%
top: 12%
- type: state-icon
entity: light.white_bed_wled
style:
left: 98%
top: 65%
- type: state-icon
entity: select.white_bed_wled_preset
style:
left: 98%
top: 70%
- type: state-icon
entity: light.white_bed_wled
style:
left: 98%
top: 65%
- type: state-icon
entity: select.white_bed_wled_preset
style:
left: 98%
top: 70%
- type: state-icon
entity: binary_sensor.nursery_closet_motion_switch_home_security_motion_detection
style:
left: 84%
top: 22%
- type: state-icon
entity: binary_sensor.nursery_closet_motion_switch_home_security_motion_detection
style:
left: 84%
top: 22%
+117 -116
View File
@@ -1,122 +1,123 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam12_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam12
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam12_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam12
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam12_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam12
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam12
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam12
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam12
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.kitchen_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam12_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: input_boolean.kitchen_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.kitchen_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.kitchen_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: input_boolean.kitchen_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.kitchen_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: binary_sensor.pantry_door_contact
style:
top: 29%
left: 4%
- type: state-icon
entity: binary_sensor.pantry_door_contact
style:
top: 29%
left: 4%
- type: conditional
conditions:
- entity: binary_sensor.dishwasher
state: "on"
elements:
- type: state-icon
entity: binary_sensor.dishwasher
style:
top: 47%
left: 41%
- type: conditional
conditions:
- entity: binary_sensor.dishwasher
state: "on"
elements:
- type: state-icon
entity: binary_sensor.dishwasher
style:
top: 47%
left: 41%
- type: conditional
conditions:
- entity: binary_sensor.kitchen_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.kitchen_person_occupancy
style:
top: 70%
left: 41%
- type: conditional
conditions:
- entity: binary_sensor.kitchen_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.kitchen_person_occupancy
style:
top: 70%
left: 41%
- type: state-icon
entity: switch.shelly_sliding_glass_door
style:
top: 3%
left: 55%
tap_action:
action: toggle
- type: state-icon
entity: switch.shelly_sliding_glass_door
style:
top: 3%
left: 55%
tap_action:
action: toggle
+120 -119
View File
@@ -1,125 +1,126 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam13_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam13
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam13_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam13
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam13_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam13
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam13
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam13
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam13
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.front_room_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam13_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: sensor.dining_room_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.front_room_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.front_room_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.front_room_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: sensor.dining_room_person_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.front_room_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.front_room_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: binary_sensor.patio_door_contact
style:
top: 29%
left: 4%
- type: state-icon
entity: binary_sensor.patio_door_contact
style:
top: 29%
left: 4%
- type: state-icon
entity: switch.shelly_sliding_glass_door
style:
top: 34%
left: 4%
- type: state-icon
entity: switch.shelly_sliding_glass_door
style:
top: 34%
left: 4%
- type: conditional
conditions:
- entity: binary_sensor.front_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_room_person_occupancy
style:
top: 55%
left: 55%
- type: conditional
conditions:
- entity: binary_sensor.front_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_room_person_occupancy
style:
top: 55%
left: 55%
- type: conditional
conditions:
- entity: binary_sensor.dining_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.dining_room_person_occupancy
style:
top: 33%
left: 20%
- type: conditional
conditions:
- entity: binary_sensor.dining_room_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.dining_room_person_occupancy
style:
top: 33%
left: 20%
+110 -109
View File
@@ -1,112 +1,113 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam14_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam14
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam14_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam14
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam14_sub
live:
preload: true
draggable: true
show_image_during_load: false
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam14
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam14
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam14
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam14
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: group.back_yard_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam14_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: sensor.back_yard_animal_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.back_yard_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.back_yard_occupied
style:
top: 95%
left: 92%
- type: state-icon
entity: group.back_yard_motion
style:
left: 8%
top: 95%
- type: state-icon
entity: sensor.back_yard_animal_count
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.back_yard_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: binary_sensor.back_yard_occupied
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.back_yard_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.back_yard_person_occupancy
style:
top: 45%
left: 45%
- type: conditional
conditions:
- entity: binary_sensor.back_yard_animal_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.back_yard_animal_occupancy
style:
top: 45%
left: 55%
- type: conditional
conditions:
- entity: binary_sensor.back_yard_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.back_yard_person_occupancy
style:
top: 45%
left: 45%
- type: conditional
conditions:
- entity: binary_sensor.back_yard_animal_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.back_yard_animal_occupancy
style:
top: 45%
left: 55%
+194 -193
View File
@@ -1,207 +1,208 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam18_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam18
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam18_sub
live:
preload: true
draggable: true
show_image_during_load: true
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam18
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam18_sub
live:
preload: true
draggable: true
show_image_during_load: true
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam18
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam18
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam18
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam18
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: binary_sensor.front_yard_person_occupancy
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam18_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: binary_sensor.front_yard_person_occupancy
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam18_vehicle_occupancy
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.front_yard_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: cover.garage_door
style:
top: 95%
left: 92%
- type: state-icon
entity: binary_sensor.frigate_cam18_vehicle_occupancy
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.front_yard_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: cover.garage_door
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.driveway_east_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_east_side_vehicle_occupancy
style:
top: 35%
left: 65%
- type: conditional
conditions:
- entity: binary_sensor.driveway_east_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_east_side_vehicle_occupancy
style:
top: 35%
left: 65%
- type: conditional
conditions:
- entity: binary_sensor.driveway_center_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_center_vehicle_occupancy
style:
top: 45%
left: 55%
- type: conditional
conditions:
- entity: binary_sensor.driveway_center_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_center_vehicle_occupancy
style:
top: 45%
left: 55%
- type: conditional
conditions:
- entity: binary_sensor.driveway_west_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_west_side_vehicle_occupancy
style:
top: 55%
left: 45%
- type: conditional
conditions:
- entity: binary_sensor.driveway_west_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_west_side_vehicle_occupancy
style:
top: 55%
left: 45%
- type: conditional
conditions:
- entity: binary_sensor.parking_spot_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.parking_spot_vehicle_occupancy
style:
top: 35%
left: 2%
- type: conditional
conditions:
- entity: binary_sensor.parking_spot_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.parking_spot_vehicle_occupancy
style:
top: 35%
left: 2%
- type: conditional
conditions:
- entity: binary_sensor.from_street_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_vehicle_occupancy
style:
top: 17%
left: 12%
- type: conditional
conditions:
- entity: binary_sensor.from_street_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_vehicle_occupancy
style:
top: 17%
left: 12%
- type: conditional
conditions:
- entity: binary_sensor.from_street_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_person_occupancy
style:
top: 17%
left: 17%
- type: conditional
conditions:
- entity: binary_sensor.from_street_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_person_occupancy
style:
top: 17%
left: 17%
- type: conditional
conditions:
- entity: binary_sensor.front_porch_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_porch_person_occupancy
style:
top: 32%
left: 97%
- type: conditional
conditions:
- entity: binary_sensor.front_porch_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_porch_person_occupancy
style:
top: 32%
left: 97%
- type: conditional
conditions:
- entity: binary_sensor.front_yard_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_yard_person_occupancy
style:
top: 12%
left: 76%
- type: conditional
conditions:
- entity: binary_sensor.front_yard_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_yard_person_occupancy
style:
top: 12%
left: 76%
# - type: conditional
# conditions:
# - entity: binary_sensor.front_yard_animal_occupancy
# state: "on"
# elements:
# - type: state-icon
# entity: binary_sensor.front_yard_animal_occupancy
# style:
# top: 12%
# left: 71%
# - type: conditional
# conditions:
# - entity: binary_sensor.front_yard_animal_occupancy
# state: "on"
# elements:
# - type: state-icon
# entity: binary_sensor.front_yard_animal_occupancy
# style:
# top: 12%
# left: 71%
- type: state-icon
entity: light.front_porch_overhead
style:
top: 12%
left: 98%
tap_action:
action: toggle
- type: state-icon
entity: light.front_porch_overhead
style:
top: 12%
left: 98%
tap_action:
action: toggle
- type: state-icon
entity: light.driveway
style:
top: 80%
left: 98%
tap_action:
action: toggle
- type: state-icon
entity: light.driveway
style:
top: 80%
left: 98%
tap_action:
action: toggle
+177 -176
View File
@@ -1,188 +1,189 @@
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
type: conditional
conditions:
- condition: state
entity: sensor.frigate_cam19_camera_fps
state_not: "0"
card:
type: vertical-stack
cards:
- type: custom:advanced-camera-card
cameras_global:
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam19
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam19_sub
live:
preload: true
draggable: true
show_image_during_load: true
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
layout:
fit: fill
status_bar:
style: none
cameras:
- camera_entity: camera.frigate_cam19
live_provider: go2rtc
go2rtc:
modes:
- webrtc
stream: rtsp_cam19_sub
live:
preload: true
draggable: true
show_image_during_load: true
lazy_load: false
controls:
title:
mode: none
timeline:
mode: none
thumbnails:
mode: none
menu:
buttons:
frigate:
enabled: false
style: none
media_viewer:
draggable: false
lazy_load: false
dimensions:
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam19
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam19
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
aspect_ratio_mode: static
aspect_ratio: '16:9'
elements:
- type: image
image: /local/title-dark-double.png
style:
transform: initial
top: 90%
left: 0px
width: 100%
height: 10%
opacity: 70%
- type: image
entity: camera.frigate_cam19
image: /local/title-dark-double.png
aspect_ratio: 100%
tap_action:
action: navigate
navigation_path: /ai-yml/ai-cam19
style:
transform: initial
top: 0px
left: 0px
width: 100%
height: 100%
opacity: 0%
- type: state-icon
entity: binary_sensor.front_porch_person_occupancy
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam19_speech_sound
style:
left: 30%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam19_vehicle_occupancy
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.front_porch_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: input_boolean.doorbell
style:
top: 95%
left: 92%
- type: state-icon
entity: binary_sensor.front_porch_person_occupancy
style:
left: 8%
top: 95%
- type: state-icon
entity: binary_sensor.frigate_cam19_vehicle_occupancy
style:
left: 50%
top: 95%
- type: state-icon
entity: input_boolean.front_porch_occupied
tap_action:
action: toggle
style:
left: 70%
top: 95%
- type: state-icon
entity: input_boolean.doorbell
style:
top: 95%
left: 92%
- type: conditional
conditions:
- entity: binary_sensor.driveway_center_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_center_vehicle_occupancy
style:
top: 60%
left: 14%
- type: conditional
conditions:
- entity: binary_sensor.driveway_center_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_center_vehicle_occupancy
style:
top: 60%
left: 14%
- type: conditional
conditions:
- entity: binary_sensor.driveway_east_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_east_side_vehicle_occupancy
style:
top: 60%
left: 20%
- type: conditional
conditions:
- entity: binary_sensor.driveway_east_side_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.driveway_east_side_vehicle_occupancy
style:
top: 60%
left: 20%
- type: conditional
conditions:
- entity: binary_sensor.parking_spot_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.parking_spot_vehicle_occupancy
style:
top: 52%
left: 15%
- type: conditional
conditions:
- entity: binary_sensor.parking_spot_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.parking_spot_vehicle_occupancy
style:
top: 52%
left: 15%
- type: conditional
conditions:
- entity: binary_sensor.from_street_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_vehicle_occupancy
style:
top: 50%
left: 40%
- type: conditional
conditions:
- entity: binary_sensor.from_street_vehicle_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_vehicle_occupancy
style:
top: 50%
left: 40%
- type: conditional
conditions:
- entity: binary_sensor.from_street_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_person_occupancy
style:
top: 53%
left: 37%
- type: conditional
conditions:
- entity: binary_sensor.from_street_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.from_street_person_occupancy
style:
top: 53%
left: 37%
- type: conditional
conditions:
- entity: binary_sensor.front_porch_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_porch_person_occupancy
style:
top: 88%
left: 37%
- type: conditional
conditions:
- entity: binary_sensor.front_porch_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_porch_person_occupancy
style:
top: 88%
left: 37%
- type: conditional
conditions:
- entity: binary_sensor.front_yard_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_yard_person_occupancy
style:
top: 60%
left: 65%
- type: conditional
conditions:
- entity: binary_sensor.front_yard_person_occupancy
state: "on"
elements:
- type: state-icon
entity: binary_sensor.front_yard_person_occupancy
style:
top: 60%
left: 65%
# - type: conditional
# conditions:
# - entity: binary_sensor.front_yard_animal_occupancy
# state: "on"
# elements:
# - type: state-icon
# entity: binary_sensor.front_yard_animal_occupancy
# style:
# top: 60%
# left: 70%
# - type: conditional
# conditions:
# - entity: binary_sensor.front_yard_animal_occupancy
# state: "on"
# elements:
# - type: state-icon
# entity: binary_sensor.front_yard_animal_occupancy
# style:
# top: 60%
# left: 70%
- type: state-icon
entity: light.front_porch_overhead
style:
top: 3%
left: 50%
tap_action:
action: toggle
- type: state-icon
entity: light.front_porch_overhead
style:
top: 3%
left: 50%
tap_action:
action: toggle
+2 -3
View File
@@ -35,7 +35,7 @@ elements:
# left: 60%
# top: 9%
- type: state-icon
entity: group.traverse
entity: device_tracker.chevrolet_traverse_location
style:
left: 68%
top: 9%
@@ -123,9 +123,8 @@ elements:
action: toggle
hold_action:
action: more-info
# 12,31,50,69,88
# 14,38,62,86
# 25,50,75
# 33,66
# 50
# 50
-4
View File
@@ -1182,10 +1182,6 @@ cards:
action: toggle
hold_action:
action: more-info
- entity: switch.deck_power_plug
name: Deck Plug
state_filter:
- "off"
- entity: switch.outdoor_power_monitor_plug
name: Outdoor PM Plug
state_filter:
@@ -20,9 +20,9 @@ sequence:
- action: google_generative_ai_conversation.generate_content
metadata: {}
data:
prompt: Say something to help me wake up. Use a maximum of two sexy lines.
prompt: Say something to help me wake up and get ready for work. Use up to two sentences.
response_variable: response
- action: media_player.play_media
data:
media_content_id: media-source://media_source/local/Sounds/alarms/Alarm_Clock.mp3
@@ -50,7 +50,7 @@ sequence:
# media_player_entity_id: media_player.great_room
# options:
# voice: Callirrhoe
- delay:
hours: 0
minutes: 5