Frustrated that MyQ is now blocking Home Assistant, I thought I would try coming up with something on my own.
I started mentioning my project on this post: Removal of MyQ integration - #123 by briadelour
Here is the full detail.
Two items I purchased:
Ewelink wifi smart relay (1CH version, KR0548-1CH) $9.99 - https://www.amazon.com/gp/product/B0C7QQHMCX/?th=1
Sonoff wifi door sensor (DW2-L model) $12.99 -
https://www.amazon.com/gp/product/B08BC98RKR/
Modified LiftMaster 883LM to adapt Security+ 2.0 yellow button garage door opener to work with dry contact - Ebay modified switch for $29.97 I could have saved a few bucks as I found the instructions online on what needed to be soldered to modify the 883LM. It was just easier to buy the modified one on Ebay and it worked out fine. If you don’t have a Security+ 2.0 garage door you might not need this part as you might be able to tap the dry contact on the garage door opener directly or to a wall switch to connect to the relay.
Other parts:
- I had a USB wire and 1A 5V old phone charger that I plugged into an outlet off a light socket
- I also had spare low voltage wire used for the garage door sensors that I was able to run from the dry contact output to the relay. On the relay I’m using Normally Open (NO) and Common (COM)
- I also had a spare outside outlet box lying around, but experimented with other housings as well.
My plan is to leave the MyQ in place for Amazon in-garage deliveries and maybe if the car app integration looks promising for the future. In the meantime I wanted to restore the functionality I had by opening and closing the garage door in HA as well as Apple CarPlay and see what else I can do.
I’m pretty happy with the result. I can now control my garage door from HA, Apple Home, Apple CarPlay, and Alexa without paying for any subscriptions.
I could not have done it so easily without this HACS integration that works great! GitHub - AlexxIT/SonoffLAN: Control Sonoff Devices with eWeLink (original) firmware over LAN and/or Cloud from Home Assistant
All I had to do was set up the two devices in the ewelink phone app, install the HACS integration above, then add this to my configuration.yaml
In the eWeLink app I configured the device to act as a switch, enabled LAN control, and turned on the inching settings set to 0.5sec. This gives me a chance to toggle the switch just log enough to make the contact to act as if the button was pushed.
sonoff:
username: !secret sonoff_username
password: !secret sonoff_password
scan_interval: 60 #(optional, lower values than 60 won't work anymore!)
grace_period: 600 #(optional)
api_region: "us" #(optional)
entity_prefix: True #(optional)
debug: False #(optional)
Once I got the entities to show up in HA, the rest was easy.
The finished HA Card on my dashboard looks like this . . .
With the door closed:
With the door open:
type: entities
entities:
- entity: switch.sonoff_1001exxxxx
name: Virtual Garage Door Button
icon: mdi:remote
- entity: binary_sensor.sonoff_1001dxxxx
name: Garage door sensor
- entity: cover.garage_door
- entity: sensor.sonoff_1001dxxxx_battery
- type: weblink
name: last garage door snapshot
url: >-
http://X.X.X.X:8123/media-browser/browser/app%2Cmedia-source%3A%2F%2Fmedia_source
title: Garage
state_color: true
I’m using a very old IP camera that FTPs screenshots on motion to the /media folder on my HA. GitHub - hassio-addons/addon-ftp: FTP - Home Assistant Community Add-ons
This is how I set up the Cover in my configuration.yaml:
cover:
- platform: template
covers:
garage_door:
device_class: garage
friendly_name: "DIY Garage Door Button"
unique_id: DIYgaragedoor
value_template: >
{% if is_state('binary_sensor.sonoff_1001dxxxx', 'off') %}
false
{% else %}
true
{% endif %}
open_cover:
- condition: state
entity_id: binary_sensor.sonoff_1001dxxxx
state: "off"
- service: switch.turn_on
target:
entity_id: switch.sonoff_1001exxxxx
close_cover:
- condition: state
entity_id: binary_sensor.sonoff_1001dxxxx
state: "on"
- service: switch.turn_on
target:
entity_id: switch.sonoff_1001exxxxx
stop_cover:
- service: switch.turn_on
target:
entity_id: switch.sonoff_1001exxxxx
Also modified the blueprint I got from here to work with a binary sensor: 📸 Send camera snapshot notification on motion
Modified blueprint:
blueprint:
name: Send a camera snapshot when motion is detected
description:
"This automation blueprint creates a camera snapshot if motion is detected and
sends a notification to your phone with the picture.
"
domain: automation
input:
binary_sensor:
name: Binary sensor
description: The sensor wich triggers the snapshot creation
selector:
entity:
domain: binary_sensor
device_class: door
multiple: false
camera:
name: Camera
description: The camera which creates the snapshot
selector:
entity:
domain: camera
multiple: false
notify_device:
name: Device to notify
description:
Device needs to run the official Home Assistant app to receive
notifications
selector:
device:
integration: mobile_app
multiple: false
is_ios:
name: Is it an iOS device?
description: Toggle if your selected device runs iOS, default is Android
selector:
boolean: {}
default: false
notification_title:
name: Notification title (Optional)
description: 'Default: "Motion detected!"'
default: Motion detected!
notification_message:
name: Notification message (Optional)
description: 'Default: "{{ motion_sensor_name }} detected movement!"'
default: "{{ motion_sensor_name }} detected movement!"
delay:
name: Delay (Optional)
description: Wait before creating camera snapshot
default: ""
selector:
number:
min: 0.0
max: 60.0
unit_of_measurement: seconds
mode: slider
step: 1.0
source_url: https://community.home-assistant.io/t/send-camera-snapshot-notification-on-motion/254565
trigger:
platform: state
entity_id: !input binary_sensor
from: "off"
to: "on"
variables:
motion_sensor: !input binary_sensor
motion_sensor_name: "{{ states[motion_sensor].name }}"
camera: !input camera
notify_device: !input notify_device
is_ios: !input is_ios
notification_title: !input notification_title
notification_message: !input notification_message
delay: !input delay
snapshot_create_file_path: /media/doorshot.jpg
snapshot_access_file_path:
"{{ snapshot_create_file_path | replace('/media','/local')
}}"
action:
- delay: "{{ delay }}"
- service: camera.snapshot
entity_id: !input camera
data:
filename: "{{ snapshot_create_file_path }}"
- device_id: !input notify_device
domain: mobile_app
type: notify
title: "{{ notification_title }}"
message: "{{ notification_message }}"
data:
'{% set android_data = {"image": "%s"} | format(snapshot_access_file_path)
%} {% set ios_data = {"attachment": {"url": "%s", "content_type": "JPEG"}} | format(snapshot_access_file_path)
%} {{ ios_data if is_ios else android_data }}'
The automation:
alias: garage door was opened
description: ""
use_blueprint:
path: vorion/send-camera-snapshot-notification-on-motion.yaml
input:
binary_sensor: binary_sensor.sonoff_1001dxxxx
camera: camera.garage_cam
notify_device: [id for my phone]
delay: 2
is_ios: true
The blueprint and automation notification above works, but I’m still figuring out how to get the thumbnail to show.
I’m using HomeKit Bridge with two entries, one for my phone and one for my wife’s that I added to Apple Home for a separate QR code each: HomeKit Bridge - Home Assistant HomeKit Mode is bridge, Inclusion Mode is include, and I select Cover in the Domains to include, then specifically added my cover.garage_door. “Siri, open the garage door” and “Siri, close the garage door” both work.
This is what it looks like in my phone closed:
This is from Apple CarPlay:
I added the eWeLink Smart Home skill to Alexa and was able to create a routine that toggles the relay that is like pushing the garage door button. “Alexa, push the garage door button” works.
Alexa routine:
Relay in Alexa:
Sensor in Alexa:
Here are some pictures of the hardware.
Powered ewelink board:
Close up of board in box:
Modified dry contact 883LM switch:
Wifi magnetic reed sensor for door status, currently powered by 2 AAA batteries:
Not sure that I like the idea of AAA batteries for the sensor. If they drain quickly I was thinking of getting a AC to DC step down converter and hardware power, or I found this that looks a little easier with no soldering required: https://www.amazon.com/dp/B0873Y5MQ5/?th=1
The one thing I don’t like is that the Sonoff DW2-Wi-Fi-L requires the ewelink cloud to get it’s status. The Ewelink 1CH relay board can operating on LAN or Cloud. If the DW2 could operate on LAN only, then I could just connect to the cloud to get the initial configuration of the devices and then operate in local mode exclusively.
So that’s it, a DIY garage door opener that works with no subscriptions, integrated with HA and is Siri and Alexa compatible. The added bonus, I don’t get loud beeping and flashing when I want to close the door.