j’ai une automatisation qui gère le courrier et les paquets avec remise à zéro lorsque j’ai ouvert la boite aux lettres et la porte d’entrée dans les 3 minutes
Ce n’est pas de moi, je l’ai adapté à mes besoins mais je n’ai pas noté où je l’ai récupéré.
ensuite lorsque quelqu’un rentre à la maison, j’ai un script pour dire bonjour, qui, si le courrier ou paquet est présent l’indique au nouvel arrivant.
le package boite aux lettres
---
#
input_boolean:
### Input boolean courrier boite aux lettres ###
boite_aux_lettres:
name: Boîte aux Lettres
icon: mdi:mailbox-outline
courier_bal:
name: Courrier BAL
icon: mdi:email-outline
colis_bal:
name: Colis BAL
icon: mdi:package-variant-closed
sensor:
- platform: template
sensors:
# Quoi dans la boite aux lettres pour le widget courrier colis
boite_aux_lettres_quoi:
friendly_name: "Quoi dans la boîte aux lettres"
value_template: >-
{% if is_state('input_boolean.boite_aux_lettres', 'on') and is_state('input_boolean.courier_bal', 'on') and is_state('input_boolean.colis_bal', 'off') %}
courrier
{% elif is_state('input_boolean.boite_aux_lettres', 'on') and is_state('input_boolean.courier_bal', 'off') and is_state('input_boolean.colis_bal', 'on') %}
colis
{% elif is_state('input_boolean.boite_aux_lettres', 'on') and is_state('input_boolean.courier_bal', 'on') and is_state('input_boolean.colis_bal', 'on') %}
colis_courrier
{% else %}
rien
{% endif %}
automation:
- alias: '[Boîte aux lettres] Courrier reçu'
trigger:
- entity_id: switch.courrier
from: 'off'
platform: state
to: 'on'
condition:
- condition: state
entity_id: input_boolean.courier_bal
state: 'off'
action:
- data:
entity_id: input_boolean.courier_bal
service: input_boolean.turn_on
- data:
entity_id: input_boolean.boite_aux_lettres
service: input_boolean.turn_on
- data:
message: 'Le facteur vient de déposer du courrier'
service: notify.home
- data:
message: 'Le facteur vient de déposer du courrier'
service: notify.echo_cuisine
- data:
message: 'Le facteur vient de déposer du courrier'
service: notify.echo_bureau
- data:
message: 'Le facteur vient de déposer du courrier'
service: notify.echo_salon
- data:
message: 'Le facteur vient de déposer du courrier'
service: notify.ios
- service: persistent_notification.create
data:
title: "courrier reçu"
message: >-
Le facteur a déposé du courrier à
{{ as_timestamp(now()) | timestamp_custom(" %H:%M",True) }}
notification_id: 'courrier reçu'
- alias: '[Boîte aux lettres] Colis reçu'
trigger:
- entity_id: switch.paquet
from: 'off'
platform: state
to: 'on'
condition: []
action:
- delay:
seconds: 120
- service_template: >-
{% set mailbox_last_changed = as_timestamp(states.switch.paquet.last_changed) %}
{% set front_door_last_changed = as_timestamp(states.binary_sensor.porte_entree.last_changed) %}
{% if (mailbox_last_changed - front_door_last_changed)|abs < 180 %}
script.boite_aux_lettres_releve_courrier
{% else %}
script.boite_aux_lettres_colis_recu
{% endif %}
- alias: '[Boîte aux lettres] RAZ'
trigger:
- at: 00:01
platform: time
condition: []
action:
- data:
entity_id: input_boolean.boite_aux_lettres
service: input_boolean.turn_off
- data:
entity_id: input_boolean.colis_bal
service: input_boolean.turn_off
- data:
entity_id: input_boolean.courier_bal
service: input_boolean.turn_off
##################################################################################
##################################################################################
script:
##################################################################################
boite_aux_lettres_releve_courrier:
sequence:
- service: input_boolean.turn_off
entity_id: input_boolean.boite_aux_lettres
- service: input_boolean.turn_off
entity_id: input_boolean.colis_bal
- service: input_boolean.turn_off
entity_id: input_boolean.courier_bal
- service: notify.home
data:
message: "le courrier vient d'être relevé"
- service: notify.echo_cuisine
data:
message: "le courrier vient d'être relevé"
- service: notify.echo_bureau
data:
message: "le courrier vient d'être relevé"
- service: notify.echo_salon
data:
message: "le courrier vient d'être relevé"
##################################################################################
boite_aux_lettres_colis_recu:
sequence:
- service: notify.home
data:
message: "le facteur vient de déposer un paquet"
- service: notify.echo_cuisine
data:
message: "le facteur vient de déposer un paquet"
- service: notify.echo_bureau
data:
message: "le facteur vient de déposer un paquet"
- service: notify.echo_salon
data:
message: "le facteur vient de déposer un paquet"
- service: notify.ios
data:
message: "le facteur vient de déposer un paquet"
- service: persistent_notification.create
data:
title: "paquet reçu"
message: >-
Le facteur a déposé un paquet à
{{ as_timestamp(now()) | timestamp_custom(" %H:%M",True) }}
notification_id: 'paquet reçu'
le package notification bonjour
# # https://community.home-assistant.io/t/how-to-create-multiple-phrases-to-send-at-random-to-tts/19807/28
automation:
- id: dire_bonjour
alias: Dire Bonjour
trigger:
platform: state
entity_id:
- device_tracker.presence_1
- device_tracker.presence_2
- device_tracker.presence_3
from: 'not_home'
to: 'home'
for: '00:01:45'
condition:
condition: and # toutes les conditions doivent être vraies "TRUE" avant que l'action ne soit exécutée.
conditions:
- condition:
time
after: '08:00:00'
before: '22:00:00'
- condition: template # redeclenchement seulement si le dernier changement est > duration_minutes
# # ## https://community.home-assistant.io/t/sensor-trigger-last-changed/59065
value_template: >
{% set duration_minutes = 30 %}{# défini le délai sans nouvelle notification #}
{% set last_changed_seconds = (trigger.from_state.last_changed | as_timestamp(default=0)) | int %}{# Récupération de l'heure du dernier changement d'état au format timestamp #}
{% set current_time_seconds = (now() | as_timestamp(default=0)) | int %} {# maintenant au format timestamp #}
{{ last_changed_seconds + duration_minutes * 60 < current_time_seconds }}
action:
- wait_template: "{{ is_state('script.dis_bonjour', 'off') }}"
- service: script.dis_bonjour
data:
courtesy_formula: >
{% if now().strftime('%T') < '17:30:00' %}
{{[
"Bonjour ",
"Bienvenue ",
] | random }}
{% else %}
{{[
"Bonsoir ",
"Bonne soirée ",
] | random }}
{% endif %}
person: >
{{ trigger.to_state.name }}
{%- for s in states.device_tracker
|rejectattr('entity_id', 'in', ['device_tracker.presence_pascal', 'device_tracker.applewatchpascal'])
|rejectattr('entity_id','eq',trigger.entity_id)
|selectattr('state','eq','home')
if ('presence_' in s.entity_id or 'applewatch' in s.entity_id or 'all_' in s.entity_id)
and (now() - s.last_changed).total_seconds() < 105 -%}
{{ (' et ' if loop.last else ', ') ~ s.name }}
{%- endfor %}
message: >
{% if states('sensor.87_weather_alert') == 'Jaune' or states('sensor.87_weather_alert') == 'Orange' or states('sensor.87_weather_alert') == 'Rouge' %}
"PERSON ! aujourd'hui nous sommes en alerte météo
{%- for attr in ['Vent violent', 'Pluie-inondation', 'Orages', 'Inondation', 'Neige-verglas',
'Canicule', 'Grand-froid', 'Avalanches', 'Vagues-submersion'] -%}
{%- if state_attr('sensor.87_weather_alert', attr) != 'Vert' and state_attr('sensor.87_weather_alert', attr) != None %}
- {{state_attr('sensor.87_weather_alert', attr)}},{{attr}},
{%- endif -%}
{% endfor -%}"
{% elif (now().strftime('%T') > '15:00:00') and (now().strftime('%T') < '17:30:00') and (states('sensor.temperature_jacuzzi') | float | round() > 30) %}
{{ [
"PERSON ! la température du jacuzzi est de {{states('sensor.temperature_jacuzzi') | round()}} degrés",
"PERSON ! Une petite baignade? la température du jacuzzi est de {{states('sensor.temperature_jacuzzi') | round()}} degrés",
"PERSON ! Est-ce que {{states('sensor.température_jacuzzi') | round()}} degrés est une température d'eau acceptable pour aller dans le jacuzzi?",
"PERSON ! Est-ce que {{states('sensor.température_jacuzzi') | round()}} degrés est une température d'eau acceptable pour se rafraichir dans le jacuzzi?",
"PERSON ! Perception du maillot de bain, la température du jacuzzi est de {{states('sensor.temperature_jacuzzi') | round()}} degrés",
] | random }}
{% elif is_state('sensor.boite_aux_lettres_quoi', 'courrier') or is_state('sensor.boite_aux_lettres_quoi', 'colis') or is_state('sensor.boite_aux_lettres_quoi', 'colis_courrier')%}
"PERSON ! il y a des {{states('sensor.boite_aux_lettres_quoi')}} dans la boites aux lettres"
{% else %}
{{ [
"PERSON ! Fait comme chez toi",
"PERSON ! la vie est plus belle quand tu es là",
"PERSON ! Mazette, je me demande combien de personnes nous pourrons encore loger dans cette petite maison?",
"PERSON ! Bienvenue chez toi",
"PERSON ! Heureux de te revoir",
"PERSON ! Que la force soit avec toi",
"PERSON ! Il est bon de te voir rentrer",
"PERSON ! Vraiment heureux de te savoir à la maison",
"PERSON ! Super, tu es rentré",
"PERSON ! Super, tu es enfin rentré",
"PERSON ! Enfin rentré",
"PERSON ! Enfin. Nous avons failli attendre.",
"PERSON ! Enfin à la maison.",
"PERSON ! Enfin de retour",
"PERSON ! Ravie que tu sois de retour",
"PERSON ! Cool, tu es déjà de retour",
"PERSON ! Chouette, tu est de retour",
"PERSON ! Tu nous as manqué.",
"PERSON ! Sourie, même sans raison, juste pour donner l'exemple.",
"PERSON ! C'est à cette heure ci que tu rentres?",
] | random }}
{% endif %}