this post was submitted on 10 Nov 2023
320 points (97.3% liked)

Selfhosted

40000 readers
780 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 1 year ago
MODERATORS
 

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

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 14 points 1 year ago* (last edited 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.