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.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"
|
||||
|
||||
@@ -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}}'
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
sensor_gpio_left: GPIO10
|
||||
sensor_gpio_right: GPIO20
|
||||
sensor_gpio_left: GPIO34
|
||||
sensor_gpio_right: GPIO35
|
||||
|
||||
packages:
|
||||
diagnostics: !include
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -70,11 +76,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -69,11 +75,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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.frigate_cam18_vehicle_occupancy
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
type: vertical-stack
|
||||
cards:
|
||||
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:
|
||||
@@ -67,11 +73,6 @@ cards:
|
||||
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:
|
||||
|
||||
@@ -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,7 +123,6 @@ elements:
|
||||
action: toggle
|
||||
hold_action:
|
||||
action: more-info
|
||||
|
||||
# 12,31,50,69,88
|
||||
# 14,38,62,86
|
||||
# 25,50,75
|
||||
|
||||
@@ -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,7 +20,7 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user