From 950e8f582218bb8b9925e927544c49699667b94d Mon Sep 17 00:00:00 2001 From: Jeffrey Stone Date: Fri, 12 Jul 2019 16:35:11 -0400 Subject: [PATCH] Migrating to Amazon Polly --- packages/announcements.yaml | 19 +++++- packages/disney.yaml | 4 +- packages/notify.yaml | 75 ++++++++++++++++++--- packages/presence.yaml | 109 +++++++++++++++++++++++++++++++ packages/security.yaml | 85 +++++------------------- packages/space.yaml | 6 +- packages/weather_alerts_nws.yaml | 8 +-- 7 files changed, 220 insertions(+), 86 deletions(-) create mode 100644 packages/presence.yaml 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/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'