diff --git a/packages/announcements.yaml b/packages/announcements.yaml
index 1dcd419..fadcc2c 100644
--- a/packages/announcements.yaml
+++ b/packages/announcements.yaml
@@ -142,5 +142,22 @@ automation:
- service: script.turn_on
entity_id: script.weather_report
- service: script.voice_reports_off
-
+ - id: guest_mode_feedback
+ alias: Guest Mode Audio Feedback
+ trigger:
+ - platform: state
+ entity_id:
+ - input_boolean.guest_mode
+ from: 'off'
+ to: 'on'
+ action:
+ - service: script.jarvis_voice
+ data_template:
+ message: >
+ {{ [
+ "Guest Mode has been enabled as you requested.",
+ "I have switched to the system to guest mode",
+ "I have enabled guest mode. ",
+ "System Guest Mode has been enabled."
+ ] | random }}
diff --git a/packages/disney.yaml b/packages/disney.yaml
index c85d77b..0d1e5fd 100644
--- a/packages/disney.yaml
+++ b/packages/disney.yaml
@@ -1,8 +1,8 @@
###############################################################################
# @author : Jeffrey Stone
# @date : 03/13/2019
-# @package : Disney
-# @description : A little Imaginering to bring disney into our home.
+# @package : Security
+# @description : Everything related to security functions.
###############################################################################
input_boolean:
diff --git a/packages/events.yaml b/packages/events.yaml
new file mode 100644
index 0000000..6a78521
--- /dev/null
+++ b/packages/events.yaml
@@ -0,0 +1,165 @@
+###############################################################################
+# @author : Jeffrey Stone
+# @date : 02/19/2019
+# @package : Events
+# @description : Special Events.
+###############################################################################
+automation:
+ - id: refresh_special_event_sensors
+ alias: Refresh special event sensors
+ initial_state: true
+ trigger:
+ - platform: time
+ at: '00:00:01'
+ - platform: homeassistant
+ event: start
+ action:
+ - service: python_script.special_events
+ data:
+ name: Skylar
+ type: birthday
+ date: 26/02/2014
+ - service: python_script.special_events
+ data:
+ name: Jeff
+ type: birthday
+ date: 02/09/1975
+ - service: python_script.special_events
+ data:
+ name: Kat
+ type: birthday
+ date: 18/09/1978
+ - service: python_script.special_events
+ data:
+ name: Our wedding
+ type: anniversary
+ date: 28/04/2001
+ - service: python_script.special_events
+ data:
+ name: Christmas
+ type: holiday
+ date: 25/12/2001
+ - service: python_script.special_events
+ data:
+ name: Halloween
+ type: holiday
+ date: 31/10/2001
+ - service: python_script.special_events
+ data:
+ name: Roadtrip
+ type: trip
+ date: 30/08/2019
+ - service: python_script.special_events
+ data:
+ name: Disney World
+ type: trip
+ date: 01/02/2020
+ - service: python_script.special_events
+ data:
+ name: Camping
+ type: trip
+ date: 09/10/2019
+
+ - id: first_day_info
+ alias: First Day Info
+ initial_state: true
+ trigger:
+ - platform: time
+ at: '00:10:00'
+ condition:
+ - condition: template
+ value_template: >
+ {% set day=states("sensor.date").split('-')[2] | int %}
+ {%- if day == 1 -%}
+ true
+ {%- endif -%}
+ action:
+ - delay: '0{{ (range(1, 5)|random|int) }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00'
+ - service: script.twitter_github
+ data_template:
+ message: >-
+ "Its a new month, so this is a good time to remind you that I am powered by @homeassistant and configured by @thejeffreystone. Find my code at https://github.com/thejeffreystone/home-assistant-configuration"
+
+ - id: tweet_new_ha_version
+ alias: Tweet New HA Version
+ trigger:
+ - platform: state
+ entity_id: updater.updater
+ action:
+ - service: script.twitter_new_ha
+
+ - id: tweet_some_snark
+ alias: Tweet Some Snark
+ initial_state: true
+ trigger:
+ - platform: time
+ at: '08:00:00'
+ action:
+ - delay: '0{{ (range(1, 5)|random|int) }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00'
+ - service: script.twitter_snark
+
+ - id: bot_info
+ alias: Bot Info
+ initial_state: true
+ trigger:
+ - platform: time
+ at: '10:00:00'
+ condition:
+ - condition: template
+ value_template: >
+ {% set day=states("sensor.date").split('-')[2] | int %}
+ {%- if day == 15 -%}
+ true
+ {%- endif -%}
+ action:
+ - delay: '0{{ (range(1, 5)|random|int) }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00'
+ - service: script.twitter_notift
+ data_template:
+ message: >-
+ "This is a good time to remind you that I am a bot powered by @home_assistant and configured by @thejeffreystone. Find my code at https://github.com/thejeffreystone/home-assistant-configuration"
+
+ - id: rex_manning_day_tweet_1
+ alias: Rex Manning Day Tweet One
+ initial_state: true
+ trigger:
+ - platform: time
+ at: '08:00:00'
+ condition:
+ - condition: state
+ entity_id: calendar.anchorage_holidays
+ state: "on"
+ - condition: template
+ value_template: >
+ {%- set event=states.calendar.anchorage_holidays.attributes.message %}
+ {%- if event == 'Rex Manning Day' %}
+ true
+ {%- endif -%}
+ action:
+ - delay: '0{{ (range(1, 5)|random|int) }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00'
+ - service: script.twitter_notify
+ data_template:
+ message: >-
+ "Happy Rex Manning Day! https://www.youtube.com/watch?v=30fw5My1QJM #damntheman #savetheempire"
+
+ - id: rex_manning_day_tweet_2
+ alias: Rex Manning Day Tweet Two
+ initial_state: true
+ trigger:
+ - platform: time
+ at: '13:00:00'
+ condition:
+ - condition: state
+ entity_id: calendar.anchorage_holidays
+ state: "on"
+ - condition: template
+ value_template: >
+ {%- set event=states.calendar.anchorage_holidays.attributes.message %}
+ {%- if event == 'Rex Manning Day' %}
+ true
+ {%- endif -%}
+ action:
+ - delay: '0{{ (range(1, 5)|random|int) }}:{{ range(0,5) | random | int }}{{ range(0,9) | random | int }}:00'
+ - service: script.twitter_notify
+ data_template:
+ message: >-
+ "We mustn't dwell. No, not today. We can't. Not on Rex Manning day! https://www.youtube.com/watch?v=szvt8iWJ0oo #damntheman #savetheempire"
diff --git a/packages/notify.yaml b/packages/notify.yaml
index 9902dd2..ee5eb9f 100644
--- a/packages/notify.yaml
+++ b/packages/notify.yaml
@@ -15,6 +15,13 @@ tts:
cache: true
cache_dir: /tmp/tts
time_memory: 300
+ - platform: amazon_polly
+ aws_access_key_id: !secret aws_key
+ aws_secret_access_key: !secret aws_secret
+ region_name: 'us-east-1'
+ text_type: ssml
+ voice: Brian
+ cache: True
notify:
- platform: ios
@@ -104,6 +111,17 @@ script:
message: >
{{ message }}
+ jarvis_alert:
+ sequence:
+ - service: tts.amazon_polly_say
+ data_template:
+ entity_id: media_player.hass_speaker
+ message: >-
+
+ {{ message }}
+
+ cache: true
+
###############################################################################
# Voice Notify
@@ -131,6 +149,32 @@ script:
message: >
{{message }}
+ jarvis_voice:
+ sequence:
+ - condition: template
+ value_template: '{{ states.input_boolean.audible_notifications.state == "on" }}'
+ - condition: state
+ entity_id: sensor.family_status
+ state: 'Home'
+ - condition: state
+ entity_id: input_boolean.vacation_mode
+ state: 'off'
+ - wait_template: >-
+ {{ not is_state('media_player.hass_speaker', 'playing') }}
+ - service: tts.amazon_polly_say
+ data_template:
+ entity_id: media_player.hass_speaker
+ # entity_id: >
+ # {% if states.input_boolean.audible_notifications.state == 'on' %}
+ # media_player.hass_speaker
+ # {% else %}
+ # media_player.googlehome0715, media_player.googlehomehub3492
+ # {% endif %}
+ message: >-
+
+ {{ message }}
+
+ cache: true
###############################################################################
# Twitter
@@ -185,7 +229,7 @@ script:
###############################################################################
morning_report:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/morning_report.yaml
@@ -195,7 +239,7 @@ script:
###############################################################################
skylar_morning_greeting:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/skylar_morning.yaml
@@ -204,7 +248,13 @@ script:
###############################################################################
nightly_report:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
+ data_template:
+ message: !include ../templates/nightly_report.yaml
+
+ test_nightly_report:
+ sequence:
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/nightly_report.yaml
@@ -213,16 +263,25 @@ script:
###############################################################################
weather_report:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
+ data_template:
+ message: !include ../templates/jarvis_confirmations.yaml
+ - delay:
+ seconds: 3
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/weather_report.yaml
+ - delay:
+ minutes: 5
+ - service: scriot.turn_off
+ entity_id: script.weather_report
###############################################################################
# Traffic Report
###############################################################################
traffic_report:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/traffic_report.yaml
@@ -231,7 +290,7 @@ script:
###############################################################################
jeff_eta_report:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/jeff_eta.yaml
@@ -240,7 +299,7 @@ script:
###############################################################################
kat_eta_report:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/kat_eta.yaml
@@ -249,7 +308,7 @@ script:
###############################################################################
prebed_routine:
sequence:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/skylar_night.yaml
# message: >
diff --git a/packages/presence.yaml b/packages/presence.yaml
new file mode 100644
index 0000000..66bc451
--- /dev/null
+++ b/packages/presence.yaml
@@ -0,0 +1,109 @@
+###############################################################################
+# @author : Jeffrey Stone
+# @date : 02/19/2019
+# @package : Presence
+# @description : A Collection of Presence Related Trackers and Sensors
+###############################################################################
+
+sensor:
+ - platform: template
+ sensors:
+ jeff_location:
+ friendly_name: "Jeff's Current Location"
+ unit_of_measurement: ''
+ value_template: >-
+ {%- if is_state('device_tracker.jeffreystonesiphone', 'not_home') %}
+ {%- if states.device_tracker.life360_jeffrey_stone.attributes.moving == True %}
+ Flue Network
+ {%- elif states.device_tracker.life360_jeffrey_stone.attributes.driving == True %}
+ Flue Network
+ {% else %}
+ Lost
+ {%- endif %}
+ {% elif is_state('device_tracker.jeffreystonesiphone', 'Sprouts') %}
+ Grocery Store
+ {% elif is_state('device_tracker.jeffreystonesiphone', 'Kroger Grayson') %}
+ Grocery Store
+ {% elif is_state('device_tracker.jeffreystonesiphone', 'Kroger Snellville') %}
+ Grocery Store
+ {% elif is_state('device_tracker.jeffreystonesiphone', 'Home Depot') %}
+ Home Improvement Store
+ {% elif is_state('device_tracker.jeffreystonesiphone', 'Lowes') %}
+ Home Improvement Store
+ {% elif is_state('device_tracker.jeffreystonesiphone', 'Walmart') %}
+ Super Store
+ {% elif is_state('device_tracker.jeffreystonesiphone', 'Target') %}
+ Super Store
+ {% else %}
+ {{ states.device_tracker.jeffreystonesiphone.state }}
+ {%- endif %}
+ - platform: template
+ sensors:
+ skylar_location:
+ friendly_name: "Skylar's Current Location"
+ unit_of_measurement: ''
+ value_template: >-
+ {%- if is_state('device_tracker.jeffreystonesiphone', 'home') and is_state('device_tracker.katherinestonesiphone', 'home')%}
+ home
+ {% else %}
+ Mortal Peril
+ {%- endif %}
+ - platform: template
+ sensors:
+ kat_location:
+ friendly_name: "Kat's Current Location"
+ unit_of_measurement: ''
+ value_template: >-
+ {%- if is_state('device_tracker.katherinestonesiphone', 'not_home') %}
+ {%- if states.device_tracker.life360_kat_stone.attributes.moving == True %}
+ Flue Network
+ {% elif states.device_tracker.life360_kat_stone.attributes.driving == True %}
+ Flue Network
+ {% else %}
+ Lost
+ {%- endif %}
+ {% elif is_state('device_tracker.katherinestonesiphone', 'Sprouts') %}
+ Grocery Store
+ {% elif is_state('device_tracker.katherinestonesiphone', 'Kroger Grayson') %}
+ Grocery Store
+ {% elif is_state('device_tracker.katherinestonesiphone', 'Kroger Snellville') %}
+ Grocery Store
+ {% elif is_state('device_tracker.katherinestonesiphone', 'Home Depot') %}
+ Home Improvement Store
+ {% elif is_state('device_tracker.katherinestonesiphone', 'Lowes') %}
+ Home Improvement Store
+ {% elif is_state('device_tracker.katherinestonesiphone', 'Walmart') %}
+ Super Store
+ {% elif is_state('device_tracker.katherinestonesiphone', 'Target') %}
+ Super Store
+ {% else %}
+ {{ states.device_tracker.katherinestonesiphone.state }}
+ {%- endif %}
+ - platform: mqtt
+ name: "Family Status"
+ state_topic: "house/family/status"
+ payload_available: "online"
+ payload_not_available: "offline"
+ - platform: template
+ sensors:
+ jeff_home:
+ value_template: >-
+ {{ is_state('device_tracker.jeffreystonesiphone', 'home')
+ or is_state('device_tracker.hass_jeffsiphone', 'home')
+ or is_state('device_tracker.life360_jeffrey_stone', 'home') }}
+ - platform: template
+ sensors:
+ kat_home:
+ value_template: >-
+ {{ is_state('device_tracker.katherinestonesiphone', 'home')
+ or is_state('device_tracker.life360_kat_stone', 'home') }}
+ - platform: template
+ sensors:
+ family_home:
+ value_template: >-
+ {{ is_state('device_tracker.jeffreystonesiphone', 'home')
+ or is_state('device_tracker.hass_jeffsiphone', 'home')
+ or is_state('device_tracker.life360_jeffrey_stone', 'home')
+ or is_state('device_tracker.katherinestonesiphone', 'home')
+ or is_state('device_tracker.life360_kat_stone', 'home')
+ or is_state('sensor.family_status', 'Home') }}
diff --git a/packages/security.yaml b/packages/security.yaml
index e29e853..f083093 100644
--- a/packages/security.yaml
+++ b/packages/security.yaml
@@ -120,38 +120,13 @@ automation:
- id: door_chime
alias: Door Chine
trigger:
- - entity_id: binary_sensor.front_door_contact_2
+ - platform: state
+ entity_id:
+ - binary_sensor.front_door_contact_2
+ - binary_sensor.laundry_room_door_contact_2
+ - binary_sensor.attic_door_contact_2
+ - binary_sensor.back_door_contact_2
from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.front_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.laundry_room_door_contact_2
- from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.laundry_room_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.attic_door_contact_2
- from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.attic_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.back_door_contact_2
- from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.back_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
condition:
- condition: state
entity_id: input_boolean.audible_notifications
@@ -166,51 +141,21 @@ automation:
- id: security_breach_door
alias: Security Breach Doors
trigger:
- - entity_id: binary_sensor.front_door_contact_2
+ - platform: state
+ entity_id:
+ - binary_sensor.front_door_contact_2
+ - binary_sensor.laundry_room_door_contact_2
+ - binary_sensor.attic_door_contact_2
+ - binary_sensor.back_door_contact_2
from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.front_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.back_door_2
- from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.back_door_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.laundry_room_door_contact_2
- from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.laundry_room_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.side_door_contact_2
- from: 'off'
- platform: state
- to: 'on'
- - entity_id: binary_sensor.side_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.attic_door_contact_2
- from: 'on'
- platform: state
- to: 'off'
- - entity_id: binary_sensor.garage_door
- from: 'on'
- platform: state
- to: 'off'
condition:
- condition: state
entity_id: input_boolean.sentry_mode
state: 'on'
action:
+ - service: script.jarvis_notify
+ data_template:
+ message: "The {{ trigger.to_state.attributes.friendly_name }} has been opened."
- service: input_boolean.turn_on
entity_id: input_boolean.security_issue
initial_state: true
diff --git a/packages/space.yaml b/packages/space.yaml
index 05d8651..cc62d9e 100644
--- a/packages/space.yaml
+++ b/packages/space.yaml
@@ -81,8 +81,12 @@ automation:
- binary_sensor.iss
to: 'on'
from: 'off'
+ condition:
+ - condition: state
+ entity_id: input_boolean.audible_notifications
+ state: 'on'
action:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: !include ../templates/iss_report.yaml
diff --git a/packages/weather_alerts_nws.yaml b/packages/weather_alerts_nws.yaml
index 5e9b6d8..0a065be 100644
--- a/packages/weather_alerts_nws.yaml
+++ b/packages/weather_alerts_nws.yaml
@@ -118,7 +118,7 @@ automation:
- condition: template
value_template: "{{ (('Severe' in states.sensor.nws_alerts.attributes.title) or ('Thunderstorm' in states.sensor.nws_alerts.attributes.title)) and 'Warning' in states.sensor.nws_alerts.attributes.title }}"
action:
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: >
{% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %}
@@ -140,7 +140,7 @@ automation:
"The weather outside is getting intense, so I just made a weather announcement.",
"Anchorage House monitors the NWS using #HomeAssistant just for these occasions. Thanks for the heads up @NWSAtlanta " ] | random }}'
- delay: '00:00:15'
- - service: script.voice_notify
+ - service: script.jarvis_voice
data_template:
message: >
{% if states.sensor.nws_alerts.attributes.spoken_desc.split('\n\n-\n\n')[5] is defined %}
@@ -170,7 +170,7 @@ automation:
- condition: template
value_template: "{{ 'Tornado Warning' in states.sensor.nws_alerts.attributes.title}}"
action:
- - service: script.alert_notify
+ - service: script.jarvis_alert
data_template:
message: "Attention!,,,Attention!,,,The National Weather Service Has issued a Tornado Warning for our area."
- service: script.twitter_notify
@@ -179,7 +179,7 @@ automation:
"Anchorage House is heading to the closet because the NWS just issued a tornado warning for our area.",
"I just activated the internal Tornado Alarm at the request of the NWS. Thanks for the heads up @NWSAtlanta " ] | random }}'
- delay: '00:00:15'
- - service: script.alert_notify
+ - service: script.jarvis_alert
data_template:
message: "Attention!,,,Attention!,,,The National Weather Service Has issued a Tornado Warning for our area."
- delay: '00:00:15'