Turning our phones into garage door remotes


Jeroen Boeye

Head of Machine Learning

When Faktion moved to larger offices we received some remotes for the underground parking space but not nearly enough for every colleague commuting by car. So, whenever a remoteless colleague arrived, they would send a Slack message kindly asking someone to open the gate for them. A helpful colleague would then run to the single corner of the office where the garage door responds and push the button on one of these coveted remotes.

One interruption too many

For an engineer, to get in the mental coding zone takes quite some time; it's like putting all pieces of a puzzle on the table before you can start putting them together. Interruptions while in the zone can hurt productivity big time, especially if they are to perform such a boring, unrelated task as opening a garage. So, during one of the walks to that remote corner of the office, an idea was born.

The plan was to connect a remote to the network and to emulate a person pushing the button on a microchip that hosts an HTTP server. We could then just send a request to this server to open the gate.


Ok, so what hardware did we need to make this work? Turns out, not much! Here’s a summary of the components:

  • Remote key duplicator: just buying a lot of these would have solved our problem too but wasn’t nearly as cool. 
  • ESP8266 dev board: a low-cost Wi-Fi microchip. 
  • Transistor: these are commonly used in circuits as on/off switches.
  • Resistor: limits the base current protecting both the transistor and the ESP8266’s output. 
  • 5V power supply: to power the ESP8266.

Remote key duplicator 

To avoid damaging the original remotes, we first copied the signal sent to a cloner remote. Cloning devices can easily be found online and learn the signal from the original remote by listening in when you push the button to open the door. The data is transferred via radio waves, mostly in the frequency range of 300 to 400 MHz depending on the system used. 

WIFI on a chip 

The ESP8266 is a low-cost Wi-Fi microchip, with a full TCP/IP stack and microcontroller capability. It allowed us to create a small web server that can accept requests and run some code in return. 

We used the development board version which has a USB interface and pin headers soldered to the chip for easy access. 

The code we wrote was simple, it activates the output pin for a couple of seconds so we can emulate the button push. This is the signal that we send out to let the next step in the circuit, a transistor, know we want the button to be pushed. 

void handleButton() {
  Serial.println("Garage Open");
  digitalWrite(BUTTON, HIGH);
  server.send(200, "text/html", "Done");
  delay(3000); // 3s button push
  digitalWrite(BUTTON, LOW);

Pushing the button

We used a transistor to make the cloned remote think someone is pushing the button. When you push a button, you’re really just making a connection between 2 points, allowing electricity to flow. A transistor can do just that. 

All transistors have 3 legs. You could think of it as 2 input gates and 1 output gate (emitter), where one of the input gates is for controlling the switch. This gate will connect to our ESP8266 on a General Purpose Input/Output (GPIO) pin allowing it to control the switch. The voltage on the base pin should be around 0.8V to emulate the button push.

The other input is the current we want to pass through the load. We made a bridge in parallel over the original switch for that. At that point, our main circuit is closed and the remote starts emitting until we drop the input signal.


Putting things together 

In the picture below, the remote's button is replaced by the output pin of the ESP8266. In series with the transistor, we placed a resistor to limit the voltage to the base. 

The remote is connected to the collector and emitter of the transistor which in turn is connected to a common ground. 

In this schema of the circuit, the (software) button is pushed in the upper left, triggering the transistor in the center to close the loop containing the 12V battery and the remote on the right.

Slack integration 

The cool thing is that we can now connect this setup to anything on the internet. For example, we can use Slack to trigger opening the garage using a Slack app called Slash Commands

You can choose which command it should listen to and then configure the endpoint to receive the HTTP call. In addition to the configuration above, an authentication key was added.

At this point, the system was ready to automate the old, boring, process. Just like before, a colleague wanting to enter or leave the parking space without a remote would grab their phone and open Slack. But instead of pleading for help to a colleague, they would simply type /go in any Slack channel and magic would ensue. 


The automated process was such an improvement that it was immediately adopted by all. However, heavy use exposed a weakness in our setup. Just like a regular remote, ours was powered by a battery. Unlike a regular remote, ours was used up to a hundred times a day, quickly draining the battery and bringing down the service. Since we don’t like downtime nor wasting batteries, we decided to upgrade the circuit with a step-up converter. 

This component can increase the 5-volt from our power supply to 12-volt, just like the remote's battery which can now be replaced.


This geeky side project of our engineering team ended up truly improving everyone's morning routine at the office. Instead of being interrupted by an endless stream of garage door requests our engineers can start their day in peace, automating the processes of our customers. 

Get in touch!

Inquiry for your POC

Scroll to Top