#------------------------------------------- # Garadget Configuration # Description: Setup for Garadget garage door opener/sensor # # Integration: MQTT # Hardware: Garadget (https://amzn.to/2jQLpVQ) # # Features: # - Garage door status monitoring # - Remote open/close control # - Door brightness sensing # # Documentation: # - Integration Guide: https://www.vcloudinfo.com/2019/03/how-to-add-garadget-to-home-assistant.html # - Access Token Update: https://www.vcloudinfo.com/2020/05/fixing-garadget-in-home-assistant.html # # Original Repository: https://github.com/CCOSTAN/Home-AssistantConfig # Follow me on https://www.vcloudinfo.com/click-here #------------------------------------------- mqtt: cover: - name: "Large Garage Door" device_class: 'garage' command_topic: "garadget/GLarge/command" state_topic: "garadget/GLarge/status" value_template: >- {% if value_json.status == 'closed' %} closed {% else %} open {% endif %} payload_open: "open" payload_close: "close" payload_stop: "stop" - name: "Small Garage Door" device_class: 'garage' command_topic: "garadget/GSmall/command" state_topic: "garadget/GSmall/status" value_template: >- {% if value_json.status == 'closed' %} closed {% else %} open {% endif %} payload_open: "open" payload_close: "close" payload_stop: "stop" sensor: - name: "Large Garage Door Since" state_topic: "garadget/GLarge/status" value_template: '{{ value_json.time }}' - name: "Large Garage Door Brightness" state_topic: "garadget/GLarge/status" unit_of_measurement: '%' value_template: '{{ value_json.bright }}' - name: "Small Garage Door Since" state_topic: "garadget/GSmall/status" value_template: '{{ value_json.time }}' - name: "Small Garage Door Brightness" state_topic: "garadget/GSmall/status" unit_of_measurement: '%' value_template: '{{ value_json.bright }}' input_text: last_person_home: name: Last Person Home initial: 'Carlo' group: garage_doors: # This group is used to check if doors are open or Closed. name: Garage Doors entities: - cover.large_garage_door - cover.small_garage_door ###################################################################### ## Send a notification to anyone coming home asking if they want to open the garage door. ###################################################################### automation: - alias: 'Garage Helper' id: 365adc21-5e96-4e78-9e94-089901a29430 mode: parallel trigger: - platform: state entity_id: - person.carlo - person.stacey from: 'not_home' to: 'home' condition: - condition: state entity_id: cover.large_garage_door state: 'closed' action: # - variables: # person_triggered: "{{ trigger.to_state.entity_id.split('.')[1] }}" - service: input_text.set_value target: entity_id: input_text.last_person_home data: value: "{{ trigger.to_state.entity_id.split('.')[1] }}" - service: script.notify_engine_two_button data: title: 'Welcome Home!' value1: 'Open Large Garage door?' title1: 'Yes' action1: 'OPEN_LARGE_GARAGE' icon1: 'sfsymbols:arrow.up.circle' destructive1: 'false' title2: 'No' action2: 'NO_OPEN_LARGE_GARAGE' icon2: 'sfsymbols:house.circle' destructive2: 'true' who: "{{ states('input_text.last_person_home') }}" group: 'Welcome_Home' - alias: 'Open Large Garage Door Action' id: 85e02a74-2ecc-4815-95a6-db864a6dffd7 trigger: platform: event event_type: mobile_app_notification_action event_data: action: OPEN_LARGE_GARAGE condition: - condition: state entity_id: cover.large_garage_door state: 'closed' - condition: state entity_id: group.family state: 'home' action: - service: cover.open_cover entity_id: cover.large_garage_door - alias: 'Prompt to Open Front Door' id: ece2b4a8-af21-41f4-a8fc-480a4d1ddabc trigger: platform: event event_type: mobile_app_notification_action event_data: action: NO_OPEN_LARGE_GARAGE condition: - condition: state entity_id: group.family state: 'home' action: - service: script.notify_engine_two_button data: title: 'Unlock Front Door?' value1: 'Do you want to unlock the front door instead?' title1: 'Yes' action1: 'UNLOCK_FRONT_DOOR' icon1: 'sfsymbols:unlock' destructive1: 'false' title2: 'No' action2: 'KEEP_FRONT_DOOR_LOCKED' icon2: 'sfsymbols:lock' destructive2: 'true' who: "{{ states('input_text.last_person_home') }}" group: 'Welcome_Home' - alias: 'Unlock Front Door Action' id: c3106db1-f2c4-4800-b1a3-76d440228600 trigger: platform: event event_type: mobile_app_notification_action event_data: action: UNLOCK_FRONT_DOOR action: - service: lock.unlock entity_id: lock.front_door ###################################################################### ## Garage Status Announcements - Only during normal hours. ###################################################################### - alias: 'Update Garage Get-Status' id: 2b9e8359-c189-4399-b415-50107513fe90 trigger: - platform: time_pattern minutes: '/1' action: - service: mqtt.publish data: topic: "garadget/GSmall/command" payload: "get-status" - service: mqtt.publish data: topic: "garadget/GLarge/command" payload: "get-status" - alias: 'Garage Door State Change' id: afec0987-edb1-4341-a524-a00ae4df9fb7 mode: restart trigger: - platform: state entity_id: - cover.large_garage_door - cover.small_garage_door from: 'open' to: 'closed' for: '00:02:00' - platform: state entity_id: - cover.large_garage_door - cover.small_garage_door from: 'closed' to: 'open' for: '00:10:00' action: - choose: - conditions: "{{ is_state('cover.large_garage_door','closed') }}" sequence: - service: script.speech_engine data: DoorClosed: "The {{ trigger.entity_id.split('.')[1]|replace('_', ' ') }} is now {{ (trigger.to_state.state)|replace('_', ' ') }}." call_garage_check: 1 - delay: "00:10:00" - service: script.garage_lights_off default: - service: script.speech_engine data: DoorClosed: "The {{ trigger.entity_id.split('.')[1]|replace('_', ' ') }} is now {{ (trigger.to_state.state)|replace('_', ' ') }}." call_garage_check: 1 ################################### ## Garadget Wind Door Checks - [Garadget](https://amzn.to/2jQLpVQ) ################################### - alias: 'Wind Speed Garage Door Check' id: 2819207a-1716-4552-be34-a8e0f7af004e trigger: - platform: numeric_state entity_id: sensor.pirateweather_wind_speed above: 30 condition: - condition: or conditions: - condition: state entity_id: cover.large_garage_door state: 'open' - condition: state entity_id: cover.small_garage_door state: 'open' action: - service: input_boolean.turn_on entity_id: input_boolean.alert_mode - service: script.notify_engine data: title: 'Check/Close Garage Doors - High Speed Wind Alert:' value1: "Small: {{ states('cover.small_garage_door')}}" value2: "Large: {{ states('cover.large_garage_door')}}" group: 'information' who: 'parents' - service: script.speech_engine data: value1: > "The wind speed is {{ states('sensor.pirateweather_wind_speed')|round}} miles per hour. For safety, please close the garage doors. {% if is_state('cover.large_garage_door', 'open') -%} The Large Garage Door is open {% endif -%} {% if is_state('cover.small_garage_door', 'open') -%} {% if is_state('cover.large_garage_door', 'open') -%}and {%- endif %} The small Garage Door is open. {% endif %}" ############################################################################## - alias: Is the Garage door Open at night - Checks every 30 minutes or 5 minutes after we drive away. id: 4eb3e83e-4484-4102-a4ca-6bacd5b3cbdd trigger: - platform: time_pattern minutes: '/45' - platform: state entity_id: group.family to: not_home for: 00:05:00 - platform: state entity_id: input_boolean.tv_time to: 'on' from: 'off' condition: condition: or conditions: - condition: and conditions: - condition: state entity_id: group.family state: not_home for: 00:05:00 - condition: or conditions: - condition: template value_template: "{{ states('cover.large_garage_door') == 'open' }}" - condition: template value_template: "{{ states('cover.small_garage_door') == 'open' }}" - condition: and conditions: - condition: state entity_id: sun.sun state: 'below_horizon' - condition: or conditions: - condition: template value_template: "{{ states('cover.large_garage_door') == 'open' }}" - condition: template value_template: "{{ states('cover.small_garage_door') == 'open'}}" action: - service: script.notify_engine data: title: 'Check Garage Doors:' value1: "Small: {{ states('cover.small_garage_door')}}" value2: "Large: {{ states('cover.large_garage_door')}}" who: "family" camera_entity: "camera.birdseye" group: 'information' - service: script.speech_engine data: value1: "Check the garage doors. The Small garage is {{ states('cover.small_garage_door')}} and the large garage is {{ states('cover.large_garage_door')}} [Only mention the garage door that is open and remind us to close it for the night]"