#------------------------------------------- # # @CCOSTAN # Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig ## Garadget_Stuff - [Garadget](https://amzn.to/2jQLpVQ) - Garage Door opener/sensor # Video and Write Up - https://www.vcloudinfo.com/2019/03/how-to-add-garadget-to-home-assistant.html # Switch to Access_Tokens - https://www.vcloudinfo.com/2020/05/fixing-garadget-in-home-assistant.html #------------------------------------------- # cover: # - platform: mqtt # 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" 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" 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 }}' # - platform: mqtt # name: "Small Garage Door Since" # state_topic: "garadget/GSmall/status" # value_template: '{{ value_json.time }}' # - platform: mqtt # name: "Small Garage Door Brightness" # state_topic: "garadget/GSmall/status" # unit_of_measurement: '%' # value_template: '{{ value_json.bright }}' 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: script.notify_engine_two_button data: title: 'Welcome Home!' value1: 'Open 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: "{{ person_triggered }}" 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 ###################################################################### ## 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:02:30' 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:20: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: ssensor.pirateweather_wind_speed above: 30 condition: - condition: or conditions: - condition: state entity_id: cover.large_garage_door state: 'opened' - condition: state entity_id: cover.small_garage_door state: 'opened' 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 winds are picking up outside. 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 %}" - service: script.tweet_engine_image data: tweet: > {{ [ "Wind speed is {{ states('sensor.pirateweather_wind_speed')|round}} miles per hour. For safety, I'm going to close the @garadget doors.", "Getting pretty windy! {{ states('sensor.pirateweather_wind_speed')|round}}MPH. Time to ask @Garadget to close the garage doors." ] | random + "(https://amzn.to/2jQLpVQ)"}} image: >- {{ [ "/config/www/custom_ui/floorplan/images/branding/windy.png" ] | random }} ############################################################################## - 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') == 'opened' }}" - condition: template value_template: "{{ states('cover.small_garage_door') == 'opened' }}" - condition: and conditions: - condition: state entity_id: sun.sun state: 'below_horizon' - condition: or conditions: - condition: template value_template: "{{ states('cover.large_garage_door') == 'opened' }}" - condition: template value_template: "{{ states('cover.small_garage_door') == 'opened'}}" 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.camera2" group: 'information' - service: script.speech_engine data: value1: "Please check the garage doors. The Small garage is {{ states('cover.small_garage_door')}} and the large garage is {{ states('cover.large_garage_door')}}"