###############################################################################
#   @author         :   Jeffrey Stone 
#   @date           :   02/19/2019
#   @package        :   USPS
#   @description    :   Notifies us of mails and packages.
#                       Package modified from https://github.com/skalavala/smarthome/blob/master/packages/usps.yaml
###############################################################################

homeassistant:
  customize:
    sensor.usps_mail:
      friendly_name: USPS Mail
      icon: mdi:mailbox
    sensor.usps_packages:
      friendly_name: USPS Packages
      icon: mdi:package-variant

sensor:
  - platform: mqtt
    name: 'USPS Mail'
    state_topic: 'house/usps/mails'
    value_template: "{{ value }}"

  - platform: mqtt
    name: USPS Packages
    state_topic: 'house/usps/packages'
    value_template: "{{ value }}"

camera:
  - platform: generic
    name: USPS Mail Pictures
    still_image_url: !secret usps_camera_url

automation:
  - id: reset_usps
    initial_state: true
    alias: Reset USPS 
    trigger:
    - platform: time
      at: '00:00:10'
    action:
      - service: shell_command.usps
  
  - id: get_usps
    initial_state: true
    alias: Get USPS 
    trigger:
    - platform: time
      at: '10:00:00'
    action:
      - service: shell_command.usps

# Notify USPS mails via TTS, and iOS notification with attachment
###############################################################################
  - id: notify_usps_mail
    alias: Notify USPS Mail
    initial_state: true
    trigger:
      - platform: state
        entity_id: sensor.usps_mail
    condition:
      - condition: template
        value_template: '{{ states.sensor.usps_mail.state | int > 0 }}'
      - condition: template
        value_template: '{{ ((now().hour | int) > 7) and ((now().hour | int) < 16) }}'
    action:
      - service: script.ah_report
        data_template:
          usps: >-
            {%- if states.sensor.usps_mail.state | int == 1 -%}
              USPS is delivering {{ states.sensor.usps_mail.state }} piece of mail today.
            {%- else -%}
              USPS is delivering {{ states.sensor.usps_mail.state }} pieces of mail today.
            {%- endif -%}
          call_interuption: 1
      - service: script.text_notify
        data_template:
          who: "jeff"
          title: "USPS Delivering Today"
          message: "USPS will be delivering {{ states.sensor.usps_mail.state }} piece(s) of mail today."
          # data:
          #   push:
          #     category: camera
          #   entity_id: "camera.usps_mail_pictures"
          #   attachment:
          #     url: "{{ states.camera.usps_mail_pictures.attributes.entity_picture }}"
          #     content-type: jpg

# Notify USPS packages via TTS. Usually there are no pictures for packages
###############################################################################
  - id: notify_usps_packages
    alias: Notify USPS Packages
    initial_state: true
    trigger:
      - platform: state
        entity_id: sensor.usps_packages
    condition:
      - condition: template
        value_template: '{{ states.sensor.usps_packages.state | int > 0 }}'
      - condition: template
        value_template: '{{ ((now().hour | int) > 7) and ((now().hour | int) < 16) }}'
    action:
      - service: script.ah_report
        data_template:
          usps: >
            {%- if states.sensor.usps_packages.state | int == 1 -%}
              USPS is delivering {{ states.sensor.usps_packages.state }} package today.
            {%- else -%}
              USPS is delivering {{ states.sensor.usps_packages.state }} packages today.
            {%- endif -%}
          call_interuption: 1