NOTE: Below, I mention that they don’t have a feature that sends a message when the condition no longer exists. Well it got added shortly after I wrote this. So you don’t need to do that fancy automation to do that. Just use the ‘done_message’ parameter.

This is an update to my post about the Garage Door Notification which was based on my Wifi Garage Door Controller .

About a week after my post about sending a repeating notification through Home Assistant, the developers created a new ‘Alert’ component that basically made my post obsolete. So I decided to switch over to the Alert component and add some extra features.

One thing I was disappointed about with the alert component was the fact that it didn’t have a built in way to send a notification when the alert condition no longer exists. So I added that in using an automation. I also added the ability to acknowledge the alert via telegram so that you can stop getting the repeating notifications.

Here is the Home Assistant yaml code to accomplish all this. There are plenty of tutorials out there on how to get your API key and chat ID for telegram. But let me know if you need any help with that:

#Setup Telegram to send notifications
notify:
  - platform: telegram
    name: telegramBot1
    api_key: <apiKey>
    chat_id: <chatID1>
  - platform: telegram
    name: telegramBot2
    api_key: <apiKey>
    chat_id: <chatID2>
  - platform: telegram
    name: telegramBot3
    api_key: <apiKey>
    chat_id: <chatID3>
  - name: telegramBotGroup
    platform: group
    services:
      - service: telegrambot1
      - service: telegrambot2
      - service: telegrambot3

#Setup Telegram to allow you to reply to your chat Bot  
telegram_bot:
  platform: polling
  api_key: <apiKey>
  allowed_chat_ids:
    - <chatID1>
    - <chatID2>
    - <chatID3>

#If the garage has been open for at least 15 minutes, send a notification when it is finally closed
automation: 
  - id: GarageClosed
    alias: Notify when garage door is closed after an alert
    trigger:
    platform: state
    entity_id: binary_sensor.garage_door_open_for_15mins
    from: 'on'
    to: 'off'
    action:
    service: notify.telegramBotGroup
    data:
      message: '{{now().strftime("%H:%M:%S %Y-%m-%d")}}: Garage has been closed.' 

#Turn the alert off when a telegram message of /ackGarage is received.       
  - id: replyAckGarage
    alias: 'Telegram bot to ack the garageDoor being open'
    hide_entity: true
    trigger:
    platform: event
    event_type: telegram_command
    event_data:
      command: '/ackGarage'
    action:
    - service: alert.turn_off
      entity_id: alert.garage_door

#send a repeating alert if the garage door is left open. I put '/ackGarage' at the end of the message to allow the 
#recipient to easily acknowledge it by tapping on it. 
alert:
  garage_door:
    name: '{{now().strftime("%H:%M:%S %Y-%m-%d")}}: Garage door open for {{ relative_time(states.cover.garage_door.last_changed) }}. /ackGarage'
    entity_id: cover.garage_door
    state: 'open'  
    repeat:
    - 15
    - 30
    can_acknowledge: True  
    skip_first: True  
    notifiers:
    - telegramBot1
    - telegramBot2
    - telegramBot3

binary_sensor:
  - platform: template
    sensors:
      garage_door_open_for_15mins:
        value_template: '{{ is_state("cover.garage_door", "open") and (as_timestamp(now()) - as_timestamp(states.cover.garage_door.last_changed) > 15 * 60 ) }}'
        entity_id: sensor.time

sensor:
  - platform: time_date

And as always, if you have any questions feel free to contact me.

Leave a Reply