###############################################################################
#   @author         :   Mahasri Kalavala
#   @date           :   04/15/2017
#   @package        :   Scripts
#   @description    :   Nothing but Notification Stuff!
###############################################################################
homeassistant:
  customize:

    group.tts_announcements:
      order: 52

    # Script Stuff
    script.home_status:
      friendly_name: Home Status (Hourly Report)
    script.home_mode_away:
      friendly_name: Set Home Mode to AWAY
    script.good_night_tts:
      friendly_name: Good Night TTS Report

    script.voice_notify:
      hidden: true
    script.voice_greeting:
      hidden: true
    script.ifttt_leeo_color_change:
      hidden: true
    script.ifttt_notify:
      hidden: true
    script.notify_me:
      hidden: true

ifttt:
  key: !secret ifttt_key

notify:
  - name: ios_devices
    platform: group
    services:
      - service: ios_ipad
      - service: ios_suresh
      - service: ios_mallika
      - service: ios_srinika
      - service: ios_hasika
  
  # make sure you generate app password for your email if you have 2FA enabled!
  - name: notify_smtp
    platform: smtp
    server: smtp.gmail.com
    port: 587
    timeout: 15
    username: !secret smtp_username
    password: !secret smtp_password
    sender: !secret smtp_sender 
    recipient: !secret smtp_recipient

  - name: notify_aws_sns
    platform: aws_sns
    aws_access_key_id: !secret aws_access_key_id
    aws_secret_access_key: !secret aws_secret_access_key
    region_name: 'us-east-1'

  - name: file_notify
    platform: file
    filename: debug.log

tts:
  - platform: amazon_polly
    aws_access_key_id: !secret aws_access_key_id
    aws_secret_access_key: !secret aws_secret_access_key
    region_name: 'us-east-1'
    text_type: ssml
    voice: Joanna

script:

###############################################################################
# Notify Related Scripts
###############################################################################
  ifttt_notify:
    sequence:
      - condition: template
        value_template: '{{ message | trim != "" }}'
      - service: ifttt.trigger
        data_template:
          event: "Smart_Home"
          value1: "{{ message }}"
          value2: ""

  ifttt_leeo_color_change:
    sequence:
      - condition: template
        value_template: '{{ value1 | trim != "" }}'
      - service: ifttt.trigger
        data_template: 
          event: "LEEO_COLOR_CHANGE"
          value1: '{{ value1 }}'

  notify_me:
    sequence:
      - condition: state
        entity_id: input_boolean.text_alerts
        state: 'on'
      - condition: template
        value_template: '{{ message | trim != "" }}'
      - service: script.ifttt_notify
        data_template:
          message: "{{ message }}"

  good_night_tts:
    sequence:
      - service: script.voice_notify
        data_template:
          message: !include ../templates/goodnight.yaml

###############################################################################
# Voice Notify
# Conditions:
#   => Only Announce when people are home. Except in emergency mode!
#   => Only Announce when Music is NOT being played
###############################################################################
  voice_notify:
    sequence:
      - condition: template
        value_template: '{{ states.input_boolean.voice_notifications.state == "on" }}'
      - condition: template
        value_template: '{{ states.input_boolean.do_not_disturb.state | lower == "off" }}'
      - condition: template
        value_template: '{{ states.media_player.gstreamer.state == "idle" }}'
      - condition: template
        value_template: '{{ states.media_player.mpd.state != "playing" }}'
      - condition: template
        value_template: '{{ message | trim != "" }}'
      - condition: state
        entity_id: group.all_devices
        state: 'home'
      - condition: template
        value_template: >
          {% if states.input_boolean.emergency_mode.state == "on" %}
            true
          {% else %}
            {{ states.group.all_devices.state == "home" }}
          {% endif %}
      - condition: template
        value_template: >
          {% if only_at_night | default('no', true ) == "yes" %}
            {% if states.sun.sun.state == "above_horizon" %}
              false
            {% else %}
              true
            {% endif %}
          {% else %}
            true
          {% endif %}
      - service: media_player.volume_set
        entity_id: media_player.gstreamer
        data_template:
          volume_level: >
            {% if states.input_boolean.emergency_mode.state == "on" %}
              {{ states.input_number.tts_volume_level_alert.state }}
            {% else %}
              {% if now().hour | int < 12 and now().hour | int > 6 %}
                {{ states.input_number.tts_volume_level_morning.state }}
              {% elif now().hour|int > 12 and now().hour|int < 20 %}
                {{ states.input_number.tts_volume_level_afternoon.state }}
              {% else %}
                {{ states.input_number.tts_volume_level_evening.state }}
              {% endif %}
            {% endif %}
      - service: tts.amazon_polly_say
        data_template:
          entity_id: media_player.gstreamer
          cache: true
          message: >
            {% set msg = "" %}
            {% macro getGreeting() %}
              {% if greeting | default('yes', true ) == "yes" %}
                {% if now().hour|int < 12 %}
                  Good morning.
                {% elif now().hour|int < 18 %}
                  Good afternoon.
                {% else %}
                  Good evening.
                {% endif %}
              {% endif %}
            {% endmacro %}
            {%- macro getEndGreeting() -%}
              {%- if greeting |default('yes', true ) == "yes" -%}
                Thank you!
              {%- endif -%}
            {%- endmacro -%}
            {% set msg = msg + "<speak> " %}
            {% set msg = msg + getGreeting() %}
            {% set msg = msg + ". " + message %}
            {% set msg = msg.replace(".", " <break time='0.5s'/> ") %}
            {% set msg = msg + " " + getEndGreeting() %}
            {% set msg = msg + " </speak>" %}
            {{ msg }}

###############################################################################
# Greeting
###############################################################################
  voice_greeting:
    sequence:
      - service: tts.amazon_polly_say
        data_template:
          entity_id: media_player.gstreamer
          cache: true
          message: >
            {% set msg = "" %}
            {% macro getGreeting() %}
              {% if greeting | default('yes', true ) == "yes" %}
                {% if now().hour|int < 12 %}
                  Good morning.
                {% elif now().hour|int < 18 %}
                  Good afternoon.
                {% else %}
                  Good evening.
                {% endif %}
              {% endif %}
            {% endmacro %}
            {% set msg = msg + "<speak> " %}
            {% set msg = msg + " " + getGreeting() %}
            {% set msg = msg.replace(".", " <break time='0.5s'/> ") %}
            {% set msg = msg + " </speak>" %}
            {{ msg }}

###############################################################################
# Status around the house
###############################################################################
  home_status:
    sequence:
      - service: script.voice_notify
        data_template:
          message: !include ../templates/home_status.yaml