Hopefully this fits here? Its self hosted, but not quite what the usual self hosted post would be. I’ve not seen any real reviews of these, so I figured I’d post

  • Dreadino
    link
    fedilink
    English
    14
    edit-2
    1 year ago

    I connected my sectional garage door using a Shelly 1, an Aqara vibration sensor and the contact sensor from my alarm system (but you can use an Aqara door sensor), using Home Assistant to create a “virtual” door that does all the things.

    Put the vibration sensor around the bottom of the door. Connect the Shelly to the hardware button you have somewhere in your garage, set it to toggle off after 1 second (simulating a button click basically). In Home Assistant do something like this:

    - platform: template
      covers:
        garage_door:
          device_class: garage
          friendly_name: "Garage Door"
          value_template: >-
            {% if is_state( "binary_sensor.garage_door_contact_sensor", "off") %}
              closed
            {% elif states( "sensor.garage_door_vibration_sensor_angle_y") | int < 10 %}
              open
            {% elif is_state( "binary_sensor.garage_door_vibration_sensor_vibration", "on") %}
              opening
            {% else %}
              open
            {%- endif %}
          open_cover:
            service: script.disarm_alarm_if_armed_then_open_garage_door
          close_cover:
            service: switch.turn_on
            data:
              entity_id: switch.garage_door_shelly_1
          stop_cover:
            service: switch.turn_on
            data:
              entity_id: switch.garage_door_shelly_1
          icon_template: >-
            {% if is_state( "binary_sensor.garage_door_contact_sensor", "off") %}
              mdi:garage
            {% elif states( "sensor.garage_door_vibration_sensor_angle_y") | int < 10 %}
              mdi:garage-open
            {% elif is_state( "binary_sensor.garage_door_vibration_sensor_vibration", "on") %}
              mdi:garage-alert
            {% else %}
              mdi:garage-open
            {%- endif %}
    

    Basically if the contact sensor is off (means there is contact), the door is closed. If the vibration sensor angle is < 10 (check your values, this works for me), the door is open (the sections are now horizontal). If the vibration sensor senses vibrations, the door is currently moving. Otherwise report “open”, because that’s the worst state and if something doesn’t work, I want the worst state to be reported. Now you have a “cover”, which in Home Assistant is a class that has custom UIs and logic to handle the door. Whenever I click the open button or call the command from anywhere, “disarm_alarm_if_armed_then_open_garage_door” is called, meaning I can’t make the alarm go off by accident.

    I have an automation that when I get near my house, it checks if my alarm is on and sends me a notification with 2 actions:

    • disarm alarm
    • disarm alarm and open garage door

    PS: Looking back at my code, I should add a condition to both “open_cover” and “close_cover”, to check if the door is opening, making it fail (or just do nothing), because while moving, pressing the button would stop the door, not make it go in the reverse direction. But it’s been 4 months with this integration and it works great.