In the quest to automate as much of my house as possible, I thought it would be useful to be able to remotely control my garage door from my home automation system. If I suspected that I forgot to close it while leaving, I could check in my security cameras and then close it from anywhere. It's nice having this peace of mind, even if it almost never happens.
Instead of reverse engineering the wireless protocol, cracking the encryption, and sending my own commands, I figured it would be much easier to hack the hardware. I cracked open a spare remote to find that it contained a basic PCB with simple tactile switches.
My plan was to solder an Arduino controlled relay in parallel with the button that toggled the garage door. I would also power the remote from the 3 V pin. I soldered four wires on to the appropriate pins.
I drilled a hole in the plastic case and routed the wires through it while reassembling the remote. It's connected to an Adafruit ESP8266 Arduino with a relay module shield.
The Arduino joins my isolated home automation Wifi network and connects over MQTT, a simple messaging protocol, to my automation server. When it receives a command over MQTT it toggles the relay on for a quarter of a second and then off, simulating a button press.
Update: this system has been flawless for two months now. It's worked every time I've tried to toggle the door and has never opened by mistake.