Successful HomeLink Integration


I found a number of posts on here with folks looking to connect HomeLink or garage door opener remotes with SmartThings, but no real good solution other than using a garage door open/close sensor on the door itself. I don’t have a garage you can park a car in, so obviously, I have no garage door on which I could use a sensor. I wanted to be able to directly trigger a routine from the HomeLink button in my car. I used some info from here and bits from other places around the internet and put together a solution that is working well for me. It was really very simple. Details below.

In short, I used a universal garage door opener receiver and wired it to the contact terminals on a standard Z-Wave open/close sensor. I then used a universal garage door opener remote to program my HomeLink button. The sensor sits normally open. Now, when I press the HomeLink button, it triggers the receiver, which closes a relay and momentarily changes the open/close switch to closed. I use the change in state of the open/close switch to run a routine. All in, this setup cost me $55

Now for the details:

I purchased:
(1) Chamberlain 955D Universal Receiver ($15, including shipping on ebay)
(2) Chamberlain 953EV Universal Remote ($21 including shipping on ebay)
(3) EcoLink Z-Wave Door and Window Sensor - DWZWAVE2.5-ECO ($19 on Amazon)

(1) Remove the cover on the universal receiver (“Receiver”) to expose 2 screw terminals. Attach a separate piece of high gauge wire to each of the two screw terminals and run both wires out the bottom of the receiver using the indicated channels and notch. I used some standard bell wire (24 gauge solid wire), but any high gauge wire should work. You only need about 6"of wire.
(2) Connect the open/close sensor (“Sensor”) to your SmartThirngs hub and test it with the included magnet to confirm that it works.
(2) Remove the cover on the Sensor to expose two contact screw terminals.
(3) Feed the two wires from the receiver into the Sensor housing. There is a small, square hole on the back of the Sensor housing and a notch in the circuit board at the same location that allows you to run high gauge wire to the screw terminals. I found it was difficult to get the wire into terminals in this very tight space, so I removed the circuit board from the Sensor housing to give myself more room to work. To remove the circuit board, take out the battery. Loosen the metal tab that the positive end of the batter terminal touches by GENTLY prying / pushing it up off the plastic tab on which is rests. Then pull back on the retaining tabs that hold the board in place. Don’t remove the board completely as this will likely cause a problem with the wire / coil that runs down the side of the Sensor and touches the negative end of the battery.
(4) Connect the wires from the receiver to the screw terminals on the Sensor. I found it did not matter which wire was connect to which screw terminal. It worked either way.
(5) Close up the Sensor and plug in the Receiver. Test the Receiver / Sensor connection. Put the cover on Receiver and press it in to trigger the Receiver. When the Receiver is trigger, it should make a slight clicking sound, the LED on the Sensor should flash, and the Sensor should very briefly show as closed in the SmartThings App.
(6) Program the universal remote to the Receiver using the instructions available on Chamberlain’s website. Test to make sure the universal remote works and causes the Sensor to show as closed.
(7) Program the HomeLink buttons in your car using the universal remote
(8) Program a routine to trigger when the Sensor indicates closed.

There are some very real limits on this system.

(1) There is no two way communication.

(2) The button only works for one routine. I use mine for when I arrive home. If you want a second HomeLink button to do something different, for instance you want to run a routine as you leave home, you have to do a whole second set up (There are multi channel garage door receivers. You could buy one these and multiple Sensors to make the connection if you knew you wanted multiple HomeLink buttons.)

I suspect there are MANY variations on the the products with which this will work, but this is what worked for me.

Here are a few pictures of the final setup. Yes, I really did just use all those words to say, “Use wire to connect two sets of screws together in any manner.”


I want to do something similar so I can prevent my garage doors opening at night (i.e if someone breaks into my car). Thanks for the write up!

1 Like

There’s actually a much easier and cheaper product you can use to receive the signal from HomeLink.

I used this combined with a contact sensor as well. This one however, is a little easier to wire since the screw terminals are exposed. They also sell units like this that have 2 channels in one box. That way you could program 2 buttons to do different actions. These paired easily with homelink. All I had to do was use the remote and it paired almost instantly.


Nice. So how did you determine this would work with HomeLink? Wish I had used this.

1 Like

Just took a shot. It only cost $10 and the first Chamberlain universal I received was DOA so I decided to give it a shot.

1 Like

And 4 channel is only a $1 more…not bad! Maybe I can tie this into ST Anything as a pushbutton!

1 Like

I tied it in as a contact sensor. Buttons don’t work as cleanly and don’t show as separate devices. While they are still available to WebCore, a button won’t offer you the same options as a contact or motion sensor would.

Here’s the modified child DTH for ST_Anything. Now, it will be auto-created as a normal contact sensor. Then you just have to assign it to this DTH instead of the default one, after installing and publishing it. No other mods necessary. Then it will say “inactive” when it’s not pushed and “PUSHED” when your homelink button is pushed.

metadata {
	definition (name: "Child Contact Sensor-Modified", namespace: "", author: "") {
		capability "Contact Sensor"
		capability "Sensor"

		attribute "lastUpdated", "String"

		command "generateEvent", ["string", "string"]

	tiles(scale: 2) {
		multiAttributeTile(name:"contact", type: "generic"){
			tileAttribute ("", key: "PRIMARY_CONTROL") {
				attributeState "closed", label:'pushed', icon:"", backgroundColor:"#e86d13"
				attributeState "open", label:'inactive', icon:"st.Lighting.light99-hue", backgroundColor:"#cccccc"
 			tileAttribute("device.lastUpdated", key: "SECONDARY_CONTROL") {
    				attributeState("default", label:'    Last updated ${currentValue}',icon: "st.Health & Wellness.health9")


def generateEvent(String name, String value) {
	//log.debug("Passed values to routine generateEvent in device named $device: Name - $name  -  Value - $value")
	// Update device
	sendEvent(name: name, value: value)
   	 // Update lastUpdated date and time
    def nowDay = new Date().format("MMM dd", location.timeZone)
    def nowTime = new Date().format("h:mm a", location.timeZone)
    sendEvent(name: "lastUpdated", value: nowDay + " at " + nowTime, displayed: false)

I’m new to home automation and I’m just now exploring beyond the basics. I’m interested in giving this a shot and would like to know how you wired it and what sensor did you use.

I used a ST_anything ESP board because I also have a relay for the outside light and the contact sensor for my garage door all tied into the same board. It’s mains powered so it won’t have trouble when the weather gets cold and was a lot cheaper than individual sensors.

I just wanted to confirm that I bought this device and got it working with my non-homelink garage door opener. I have a car that supports HomeLink and the car read the remote just fine and now can operate my garage door. The company never sent me any documentation but I was able to figure it out through google searches. I wired it with an old 12v wall wort power supply. I did not experience the distance problems that some people have complained about. I just pulled the antennae out to maximum length. Contact me if you have questions.

1 Like

Glad you got it working! I have actually modified mine with a long ~0.5m antenna. I get quite a bit better range than I did before. Also, I found that if I mounted the antenna above the garage door I got a much better signal. When it was mounted to the wall, I didn’t realize that the signal was trying to pass through my metal garage door which is quite a bit harder. I’m also going to look at mounting an antenna outside the garage door to see if I can get better reception.

1 Like