mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-09 18:40:14 -04:00
Out with the old and in with the new
This commit is contained in:
@@ -9,7 +9,6 @@ trigger:
|
|||||||
- binary_sensor.from_street_vehicle_occupancy
|
- binary_sensor.from_street_vehicle_occupancy
|
||||||
- binary_sensor.driveway_person_occupancy
|
- binary_sensor.driveway_person_occupancy
|
||||||
- binary_sensor.front_yard_person_occupancy
|
- binary_sensor.front_yard_person_occupancy
|
||||||
- binary_sensor.front_yard_animal_occupancy
|
|
||||||
- binary_sensor.garage_door
|
- binary_sensor.garage_door
|
||||||
from: "off"
|
from: "off"
|
||||||
to: "on"
|
to: "on"
|
||||||
@@ -20,7 +19,6 @@ trigger:
|
|||||||
- binary_sensor.from_street_vehicle_occupancy
|
- binary_sensor.from_street_vehicle_occupancy
|
||||||
- binary_sensor.driveway_person_occupancy
|
- binary_sensor.driveway_person_occupancy
|
||||||
- binary_sensor.front_yard_person_occupancy
|
- binary_sensor.front_yard_person_occupancy
|
||||||
- binary_sensor.front_yard_animal_occupancy
|
|
||||||
- binary_sensor.garage_door
|
- binary_sensor.garage_door
|
||||||
from: "on"
|
from: "on"
|
||||||
to: "off"
|
to: "off"
|
||||||
|
|||||||
@@ -7,18 +7,20 @@ trigger:
|
|||||||
webhook_id: "synology_doorbell_actionrule"
|
webhook_id: "synology_doorbell_actionrule"
|
||||||
local_only: true
|
local_only: true
|
||||||
|
|
||||||
- id: button_pressed
|
# - id: button_pressed
|
||||||
platform: event
|
# platform: event
|
||||||
event_type: "amcrest"
|
# event_type: "amcrest"
|
||||||
event_data:
|
# event_data:
|
||||||
camera: "Front Porch"
|
# camera: "Front Porch"
|
||||||
event: "AlarmLocal"
|
# event: "AlarmLocal"
|
||||||
|
|
||||||
- id: button_pressed
|
- id: button_pressed
|
||||||
platform: state
|
trigger: event
|
||||||
entity_id: binary_sensor.front_porch_button_pressed
|
event_type: amcrest
|
||||||
from: "off"
|
event_data:
|
||||||
to: "on"
|
event: "CallNoAnswered"
|
||||||
|
payload:
|
||||||
|
action: "Start"
|
||||||
|
|
||||||
- id: door_opened
|
- id: door_opened
|
||||||
platform: state
|
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}}'
|
|
||||||
@@ -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_3: !secret master_bedroom_right_preset_3
|
||||||
master_bedroom_right_preset_4: !secret master_bedroom_right_preset_4
|
master_bedroom_right_preset_4: !secret master_bedroom_right_preset_4
|
||||||
master_bedroom_right_preset_5: !secret master_bedroom_right_preset_5
|
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
|
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
notify:
|
# notify:
|
||||||
name: DreamBox
|
# name: DreamBox
|
||||||
platform: hass_agent_notifier
|
# platform: hass_agent_notifier
|
||||||
resource: !secret dreambox_hassagent
|
# resource: !secret dreambox_hassagent
|
||||||
|
|
||||||
# media_player:
|
# # media_player:
|
||||||
# - name: DreamBox
|
# # - name: DreamBox
|
||||||
# platform: hass_agent_mediaplayer
|
# # platform: hass_agent_mediaplayer
|
||||||
# host: !secret dreambox_ip
|
# # host: !secret dreambox_ip
|
||||||
# port: 5115
|
# # port: 5115
|
||||||
|
|
||||||
template:
|
template:
|
||||||
- trigger:
|
- trigger:
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
notify:
|
# notify:
|
||||||
name: DreamSurface
|
# name: DreamSurface
|
||||||
platform: hass_agent_notifier
|
# platform: hass_agent_notifier
|
||||||
resource: !secret dreamsurface_hassagent
|
# resource: !secret dreamsurface_hassagent
|
||||||
|
|
||||||
mqtt:
|
# mqtt:
|
||||||
light:
|
# light:
|
||||||
- name: "DreamSurface: Screen Brightness"
|
# - name: "DreamSurface: Screen Brightness"
|
||||||
unique_id: "dreamsurface_screen_brightness"
|
# unique_id: "dreamsurface_screen_brightness"
|
||||||
object_id: "dreamsurface_monitor_brightness"
|
# object_id: "dreamsurface_monitor_brightness"
|
||||||
command_topic: "homeassistant/light/DREAMSURFACE/DREAMSURFACE_screen_brightness/action"
|
# command_topic: "homeassistant/light/DREAMSURFACE/DREAMSURFACE_screen_brightness/action"
|
||||||
brightness_command_topic: "homeassistant/light/HASSAGENT/dreamsurface_monitor_brightness/action"
|
# brightness_command_topic: "homeassistant/light/HASSAGENT/dreamsurface_monitor_brightness/action"
|
||||||
brightness_command_template: "%PROGRAMFILES(X86)%\\Monitorian\\Monitorian.exe /set {{ value }}"
|
# brightness_command_template: "%PROGRAMFILES(X86)%\\Monitorian\\Monitorian.exe /set {{ value }}"
|
||||||
brightness_scale: 100
|
# brightness_scale: 100
|
||||||
on_command_type: "brightness"
|
# on_command_type: "brightness"
|
||||||
icon: mdi:monitor-shimmer
|
# icon: mdi:monitor-shimmer
|
||||||
|
|
||||||
# media_player:
|
# # media_player:
|
||||||
# - name: Dreamsurface
|
# # - name: Dreamsurface
|
||||||
# platform: hass_agent_mediaplayer
|
# # platform: hass_agent_mediaplayer
|
||||||
# host: !secret dreamsurface_ip
|
# # host: !secret dreamsurface_ip
|
||||||
# port: 5115
|
# # port: 5115
|
||||||
|
|
||||||
template:
|
template:
|
||||||
- trigger:
|
- trigger:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
notify:
|
notify:
|
||||||
- platform: group
|
- platform: group
|
||||||
name: "Hass Agent Group"
|
name: "Dream Computers"
|
||||||
services:
|
services:
|
||||||
- service: dreambox
|
- service: dreambox
|
||||||
- service: dreamsurface
|
- service: dreamsurface
|
||||||
|
|||||||
@@ -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 %}"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
substitutions:
|
substitutions:
|
||||||
sensor_gpio_left: GPIO10
|
sensor_gpio_left: GPIO34
|
||||||
sensor_gpio_right: GPIO20
|
sensor_gpio_right: GPIO35
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
diagnostics: !include
|
diagnostics: !include
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam01_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -70,11 +76,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam01_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: sensor.furnace_room_person_count
|
entity: sensor.furnace_room_person_count
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam03_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -69,11 +75,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam03_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: sensor.great_room_person_count
|
entity: sensor.great_room_person_count
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam04_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam04_speech_sound
|
|
||||||
style:
|
|
||||||
left: 22%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: sensor.east_side_vehicle_count
|
entity: sensor.east_side_vehicle_count
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam06_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam06_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: sensor.master_bed_person_count
|
entity: sensor.master_bed_person_count
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam07_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam07_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: sensor.master_bed_person_count
|
entity: sensor.master_bed_person_count
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam08_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam08_speech_sound
|
|
||||||
style:
|
|
||||||
left: 24%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: binary_sensor.black_bed_occupied
|
entity: binary_sensor.black_bed_occupied
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam12_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam12_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: input_boolean.kitchen_occupied
|
entity: input_boolean.kitchen_occupied
|
||||||
tap_action:
|
tap_action:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam13_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam13_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: sensor.dining_room_person_count
|
entity: sensor.dining_room_person_count
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam14_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam14_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: sensor.back_yard_animal_count
|
entity: sensor.back_yard_animal_count
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam18_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam18_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: binary_sensor.frigate_cam18_vehicle_occupancy
|
entity: binary_sensor.frigate_cam18_vehicle_occupancy
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
type: vertical-stack
|
type: conditional
|
||||||
cards:
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity: sensor.frigate_cam19_camera_fps
|
||||||
|
state_not: "0"
|
||||||
|
card:
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
- type: custom:advanced-camera-card
|
- type: custom:advanced-camera-card
|
||||||
cameras_global:
|
cameras_global:
|
||||||
dimensions:
|
dimensions:
|
||||||
@@ -67,11 +73,6 @@ cards:
|
|||||||
style:
|
style:
|
||||||
left: 8%
|
left: 8%
|
||||||
top: 95%
|
top: 95%
|
||||||
- type: state-icon
|
|
||||||
entity: binary_sensor.frigate_cam19_speech_sound
|
|
||||||
style:
|
|
||||||
left: 30%
|
|
||||||
top: 95%
|
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: binary_sensor.frigate_cam19_vehicle_occupancy
|
entity: binary_sensor.frigate_cam19_vehicle_occupancy
|
||||||
style:
|
style:
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ elements:
|
|||||||
# left: 60%
|
# left: 60%
|
||||||
# top: 9%
|
# top: 9%
|
||||||
- type: state-icon
|
- type: state-icon
|
||||||
entity: group.traverse
|
entity: device_tracker.chevrolet_traverse_location
|
||||||
style:
|
style:
|
||||||
left: 68%
|
left: 68%
|
||||||
top: 9%
|
top: 9%
|
||||||
@@ -123,7 +123,6 @@ elements:
|
|||||||
action: toggle
|
action: toggle
|
||||||
hold_action:
|
hold_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
|
|
||||||
# 12,31,50,69,88
|
# 12,31,50,69,88
|
||||||
# 14,38,62,86
|
# 14,38,62,86
|
||||||
# 25,50,75
|
# 25,50,75
|
||||||
|
|||||||
@@ -1182,10 +1182,6 @@ cards:
|
|||||||
action: toggle
|
action: toggle
|
||||||
hold_action:
|
hold_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
- entity: switch.deck_power_plug
|
|
||||||
name: Deck Plug
|
|
||||||
state_filter:
|
|
||||||
- "off"
|
|
||||||
- entity: switch.outdoor_power_monitor_plug
|
- entity: switch.outdoor_power_monitor_plug
|
||||||
name: Outdoor PM Plug
|
name: Outdoor PM Plug
|
||||||
state_filter:
|
state_filter:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ sequence:
|
|||||||
- action: google_generative_ai_conversation.generate_content
|
- action: google_generative_ai_conversation.generate_content
|
||||||
metadata: {}
|
metadata: {}
|
||||||
data:
|
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
|
response_variable: response
|
||||||
|
|
||||||
- action: media_player.play_media
|
- action: media_player.play_media
|
||||||
|
|||||||
Reference in New Issue
Block a user