282 lines
11 KiB
YAML
Executable File
282 lines
11 KiB
YAML
Executable File
###############################################################################
|
|
# @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 }}"
|
|
|
|
- platform: template
|
|
sensors:
|
|
mail_deliveries_message:
|
|
friendly_name: "Deliveries Summary"
|
|
value_template: >
|
|
{# Deliveries Sentence #}
|
|
{% macro deliveries_sentence() -%}
|
|
{%- if states("sensor.mail_usps_mail")|int == 0 -%}
|
|
No
|
|
{%- else -%}
|
|
{{states("sensor.mail_usps_mail")|int}}
|
|
{%- endif -%}
|
|
{{' '}}
|
|
{%- if states("sensor.mail_usps_mail")|int <= 1 -%}
|
|
piece of mail
|
|
{%- else -%}
|
|
pieces of mail
|
|
{%- endif -%}
|
|
{{' '}}will be delivered.{{' '}}
|
|
{%- if states("sensor.mail_usps_delivering")|int == 0 -%}
|
|
No
|
|
{%- else -%}
|
|
{{states("sensor.mail_usps_delivering")|int}}
|
|
{%- endif -%}
|
|
{{' '}}
|
|
{%- if states("sensor.mail_usps_delivering")|int == 1 -%}
|
|
USPS package is
|
|
{%- else -%}
|
|
USPS packages are
|
|
{%- endif -%}
|
|
{{' '}}in transit.{{' '}}
|
|
{%- if states("sensor.mail_fedex_delivering_2")|int == 0 -%}
|
|
No
|
|
{%- else -%}
|
|
{{states("sensor.mail_fedex_delivering_@")|int}}
|
|
{%- endif -%}
|
|
{{' '}}
|
|
{%- if states("sensor.mail_fedex_delivering_2")|int == 1 -%}
|
|
FedEx package is
|
|
{%- else -%}
|
|
Fedex packages are
|
|
{%- endif -%}
|
|
{{' '}}in transit.{{' '}}
|
|
{%- if states("sensor.mail_ups_delivering")|int == 0 -%}
|
|
No
|
|
{%- else -%}
|
|
{{states("sensor.mail_ups_delivering")|int}}
|
|
{%- endif -%}
|
|
{{' '}}
|
|
{%- if states("sensor.mail_ups_delivering")|int == 1 -%}
|
|
UPS package is
|
|
{%- else -%}
|
|
UPS packages are
|
|
{%- endif -%}
|
|
{{' '}}in transit.{{' '}}
|
|
{%- if states("sensor.mail_amazon_packages")|int == 0 -%}
|
|
No
|
|
{%- else -%}
|
|
{{states("sensor.mail_amazon_packages")|int}}
|
|
{%- endif -%}
|
|
{{' '}}
|
|
{%- if states("sensor.mail_amazon_packages")|int == 1 -%}
|
|
Amazon package is
|
|
{%- else -%}
|
|
Amazon packages are
|
|
{%- endif -%}
|
|
{{' '}}in transit.{{' '}}
|
|
{%- endmacro %}
|
|
{{deliveries_sentence()}}
|
|
|
|
camera:
|
|
- platform: generic
|
|
name: USPS Mail Pictures
|
|
still_image_url: !secret usps_camera_url
|
|
|
|
- platform: local_file
|
|
file_path: /config/images/mail_today.gif
|
|
name: mail_usps
|
|
|
|
automation:
|
|
|
|
- id: update_usps_camera_path
|
|
alias: "Update USPS Mail Camera"
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.mail_usps_mail
|
|
action:
|
|
- service: local_file.update_file_path
|
|
data_template:
|
|
entity_id: camera.mail_usps
|
|
file_path: >
|
|
{% if state_attr('sensor.mail_usps_mail','image') == None %}
|
|
/config/custom_components/mail_and_packages/mail_none.gif
|
|
{% else %}
|
|
/config/www/mail_and_packages/{{ state_attr('sensor.mail_usps_mail','image') }}
|
|
{% endif %}
|
|
|
|
# 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.status_annc
|
|
data:
|
|
who: '{{ states.sensor.room_audio.state }}'
|
|
call_interuption: 1
|
|
speech_message: >-
|
|
{%- if states.sensor.usps_mail.state | int == 1 -%}
|
|
{{ [
|
|
"USPS is delivering",
|
|
"The postal service will be leaving",
|
|
"The nice lady in the mail truck is bringing us ",
|
|
"I have scanned the incoming mail, eliminated the junk, and determined there is"
|
|
] | random }}
|
|
{{ states.sensor.usps_mail.state }} piece of mail today.
|
|
{%- else -%}
|
|
{{ [
|
|
"USPS is delivering",
|
|
"The postal service will be leaving",
|
|
"The nice lady in the mail truck is bringing us ",
|
|
"I have scanned the incoming mail, eliminated the junk, and determined there are"
|
|
] | random }}
|
|
{{ states.sensor.usps_mail.state }} pieces of mail today.
|
|
{%- endif -%}
|
|
- 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
|
|
- service: script.twitter_notify
|
|
data_template:
|
|
message: >-
|
|
{{ [
|
|
"I just let Anchorage House know how much mail the USPS is leaving in the mailbox today. For the code checkout https://github.com/thejeffreystone/usps2mqtt #automation",
|
|
"One of the things I know is how much mail is being delivered because I am integrated with USPS Informed Delivery using https://github.com/thejeffreystone/usps2mqtt #automation.",
|
|
"There is a letter in the mailbox. Or will be when the USPS gets here. If you want to know how I know checkout https://github.com/thejeffreystone/usps2mqtt #automation.",
|
|
"Neither snow nor rain nor heat nor gloom of night prevents me from letting Anchorage House know what to expect from the USPS thanks to https://github.com/thejeffreystone/usps2mqtt #automation."
|
|
] | random }}
|
|
|
|
# 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_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.status_annc
|
|
data_template:
|
|
who: '{{ states.sensor.room_audio.state }}'
|
|
call_interuption: 1
|
|
speech_message: >
|
|
{%- 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 -%}
|
|
|
|
- alias: "Mail Notif - Mail Delieveries"
|
|
trigger:
|
|
- platform: time
|
|
at: '10:00:00'
|
|
#Trigger if mail or packages get updated
|
|
# - platform: state
|
|
# entity_id: sensor.mail_usps_mail
|
|
# - platform: state
|
|
# entity_id: sensor.mail_usps_delivering
|
|
#send only if mail or packages are more than 0
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ states('sensor.mail_usps_mail') | int > 0 }}"
|
|
- condition: template
|
|
value_template: "{{ states('sensor.mail_usps_delivering') | int > 0 }}"
|
|
action:
|
|
- service: script.text_notify
|
|
data_template:
|
|
who: "jeff"
|
|
title: "Delivering Today"
|
|
message: "{{ states('sensor.mail_deliveries_message')}}"
|
|
- service: script.status_annc
|
|
data_template:
|
|
who: '{{ states.sensor.room_audio.state }}'
|
|
call_interuption: 1
|
|
speech_message: >-
|
|
{%- if states.sensor.mail_usps_mail.state | int == 1 -%}
|
|
{{ [
|
|
"USPS is delivering",
|
|
"The postal service will be leaving",
|
|
"The nice lady in the mail truck is bringing us ",
|
|
"I have scanned the incoming mail,and there is"
|
|
] | random }}
|
|
{{ states.sensor.mail_usps_mail.state }} piece of mail today.
|
|
{%- else -%}
|
|
{{ [
|
|
"USPS is delivering",
|
|
"The postal service will be leaving",
|
|
"The nice lady in the mail truck is bringing us ",
|
|
"I have scanned the incoming mail, and determined there are"
|
|
] | random }}
|
|
{{ states.sensor.mail_usps_mail.state }} pieces of mail today.
|
|
{%- endif -%}
|
|
|
|
|
|
- alias: "Delivered Package Notification"
|
|
initial_state: true
|
|
trigger:
|
|
- platform: state
|
|
entity_id: sensor.mail_fedex_delivered_2
|
|
- platform: state
|
|
entity_id: sensor.mail_ups_delivered
|
|
#send only if mail or packages are more than 0
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: template
|
|
value_template: "{{ states('sensor.mail_fedex_delivered_2') | int > 0 }}"
|
|
- condition: template
|
|
value_template: "{{ states('sensor.mail_ups_delivered') | int > 0 }}"
|
|
action:
|
|
- service: script.text_notify
|
|
data_template:
|
|
who: "jeff"
|
|
title: "Package Delivered"
|
|
message: "Fedex/UPS just made a delivery"
|
|
- service: script.status_annc
|
|
data_template:
|
|
who: '{{ states.sensor.room_audio.state }}'
|
|
speech_message: >-
|
|
A package was just left on the porch.
|
|
call_interuption: 1 |