The Trials And Tribulations Of Building An IOT Garage Door Opener

Garage doors can be frustrating things, being a chore to open manually and all. Many people opt to install a motorized opener, but for some, even this isn’t enough. Hooking up a garage door to the Internet of Things has long been a popular project, and [Simon Ludborzs] decided to give it a shot. Naturally, there were some obstacles to be overcome along the way.

[Simon]’s build is relatively straight down the lines, using an ESP-12 as the brains of the operation, which connects to the internet over WiFi. However, robustness was a major goal of the project, and being reliant on shaky cloud-based services wouldn’t do. This opener is set up to work independently of an internet connection, too. There’s a nifty control panel with glowing buttons to operate the opener, in addition to the webpage served up on the network.

During the development, [Simon] ran into several roadblocks. A set of roller door motors were inadvertently killed, and there were issues in getting the web interface working as expected. None of these were showstoppers, though, and with a little work and some new parts, everything came together in the end. The project was then given a proper commercial-grade case, sourced from AliBaba. This is a great step to take for a project expected to hold up to daily use for years on end. He also took the time to document his tips for easier ESP8266 development, which may prove useful to those just getting started with the platform.

Garage door openers remain a common theme around here, but every project has its own story to tell. If you’ve developed a particularly unique solution to your garage access problems, you know who to call.

18 thoughts on “The Trials And Tribulations Of Building An IOT Garage Door Opener

  1. It seems to me that given most garage door openers operate on simple contact-closure, it would make far more sense (and consume a lot less effort) to add IOT capability to an existing opener solution. Hats off to this guy for solving all the other problems that are definitely a challenge, but my intent when I get to this stage in my home automation efforts is to make a better IOT solution that integrates with existing openers by activating a relay for the appropriate time closing the contacts fed from a traditional opener.

    The advantage to this solution is that it can be wired in parallel with any other controllers (e.g. if you one of the smart controllers, you can also parallel a simple contact switch for an additional button as well as this relay-based solution).

    The simple button(s) can facilitate operating the garage door from multiple locations within the garage.

    Something also worthy of consideration when implementing this as an IOT, the door could be activated when one can’t observe the area in question. As a result, safety dictates that an appropriate warning should precede automated activation of the equipment via the IOT channel.

    1. Exactly my thoughts! The professional garage door makers have figured out the safety interlocks and other features so that a closing door is unlikely to cause injury, and they’ve debugged those safety features better than most of us are likely to, at least on our first attempts.

      The “Shelly 1” (found via your favorite search engine) is a tiny device with a Wifi enabled relay, that can easily “push” a garage door’s button. It comes with fairly capable software, but if you flash it with the open source Tasmota software or something similar, you can control it fully without trusting someone else’s cloud server. The Tasmota software speaks http as well as MQTT. For power, it can accept 12VDC, 24-48VDC, or mains AC (110-256VAC at 50/60Hz). You can configure the relay to make a momentary contact for whatever time you deem appropriate.

      I already have a home automation system using various switches (Sonoff and similar, as well as the Shelly1) with Tasmota firmware, and they work very well. I also have a Raspberry Pi based camera looking at my garage, which I can easily access over the web (but it’s not cloud enabled).

      Even though everything I currently use works well and is reliable, I’m still a bit afraid to make my garage door controllable over the Internet, even if ssh is the only way to punch through the firewall. It’s one thing to risk have some lights turn on accidentally while I’m away, but quite another thing to risk having my garage door left open. I definitely wouldn’t want to push the button without first checking the state of the door via the security camera, and then confirming the state of the door after the command was executed. But even then, I think about the number of times I would have found an Internet enabled garage door useful in the past twenty years, and it’s just not something that comes up often enough to make the risk worthwhile for me, even if the risk is tiny.

      But to those who weigh the risk/benefits differently than I do, go for it!

      1. The shelly 1 is a cute package, but it’s a bit overpriced ($10.09 each at current exchange rate) for what you get.

        Check out the WEMOS D1 or compatibles. You can pick up a 5 pack of the IZOKEE version from Amazon for $17.99 ($3.60 per unit) including a nice assortment of headers.

        If you’re good with solder paste, the raw AI Thinker ESP-12F module can be had for $1.75 in reasonable quantities. (both products appear to be ESP-12F based), but you’ll need a couple of dollars worth of supporting components to talk to it.

        One big advantage to the ESP-12F (and other ESP8266 based chips) is that it has usable IPv6 support in the Arduino IDE.

    2. Having just installed a new garage door and having been a long time fan of the ESP series, I had plans to do the same: WiFi-enabled opener (just cause I can). My garage came with a great controller so I couldn’t imagine building anything more than something that just plugged in it, sending it an up, down, or stop signal.


      I do understand the joy of re-inventing the wheel. Sometimes it just fun to learn how to do it all on your own. The pride and fulfillment of being able to step back and say: look at that, I made that, from scratch. And it works.

  2. Here’s my keep-it-simple solution: I wired a mechanical relay in parallel to my existing garage door opener button. The relay is powered from a Wemo outlet so I can toggle it remotely. A ifttt script shuts off the wemo after each use.

    It has cloud dependencies, but it only took me like 20 minutes to build.

    1. I strongly encourage you to consider the security implications of this approach. If you can’t figure out what I mean, find a friend who understands the risks of “Open SCADA on the Internet” and have them explain it to you.

  3. I am curently doing a makeover in my home and i will have window shields that will be motorized and an alarm system, that i will develop. Over the years i have done many projects that something is controlling something and the best solution that i have done is to communicate with all these arduinos and esp’s over simple UDP, there is not much data to transmit to this small device, the Arduino/ESP code is simple and the rest of the stuff you can write with more civilized alternative like Python on other Linux machine which have apache and other fancy things. Trust me, i have ESP on the edge of the wifi range working like a charm being interrogated each minute or couple of times a second…
    But i do not say that this approach is bad, my linux server have a big WAF so i can do something like that….

    1. If you have a very secure perimeter where nobody can war-drive your ESP network, that probably works well. Otherwise your simple UDP might provide great entertainment to some hackers at your expense. I suggest at least using some form of authenticated UDP Payload.

      1. I would say “if you are in range of my wifi, you are in range of my rifle too” but i live in Poland and i have to step out and beat trespassers by manually… By the other hand, you can meet people this way

        1. Sure, if your “IOT” garage door opener is providing its own local WiFi that doesn’t have an internet connection, then it’s limited to those war-driving in your locale and your nearby neighbors and hackers with good dish antennas on relatively nearby hilltops and…

          But, if your IOT garage door opener is actually attached to the I part — this means “Internet”, then things get far more interesting… Especially when you consider that the ESP8266 chipset now has functional IPv6 support available in the Arduino IDE.

  4. I did mine with an Electric Imp. The original Imp001 along with my own website as my “UI”. I have two physical switches on each end of the door (fully opened, fully closed). A simple relay pulses in parallel with the standard pushbutton on the garage wall. I view my website from anywhere and can see whether it’s opened or closed. I can only pulse the relay if I enter an ID code first. I really only use to see the “status”. After I drive away on vacation, my wife asks, “did you close the garage door”? Ahhhhh ….. “oh, yes I did, as I can see with my internet app (website page)”.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.