Introducing GaragePi

Overengineer your garage door with your Raspberry Pi!

Update Feb 2016! New support for IFTTT Maker Channel

I just released a project I’ve been playing with for a while. With it, you can use a Raspberry Pi to open or close your garage door and to sense whether it’s currently open. You can do this from the comfort of your couch or anywhere in the world (with an appropriate VPN connection). Your spouse may think you’re crazy, but it’s so cool!

I started with this guide by Chris Driscoll at Driscosity. Chris has an awesome guide with step-by-step instructions, pictures, and even a video of the system in operation. (I use this same setup for GaragePi.)

What he has is great for a simple opener and status display, but the second time I used it my relay got stuck closed because of a connection issue (it’s javascript based). I also wanted more features and more control over what was going on.

So I wrote a Flask app (Python) with some JSON/jQuery for keeping the status updated. I also used Bootstrap for the front end.


The whole project with installation instructions are on GitHub.

    GaragePi on GitHub


Here are some screenshots of it in action.

Here is a sequence of finding the door open, confirming the close, and then the final state after closing.

This is a sample of the history logs in portrait and landscape.

15 thoughts on “Introducing GaragePi

  1. I think the instructions you gave are missing a few pieces. I followed them but haven’t gotten to where I can see the screen shots you speak of. I got WebIOPi pages to work, but not yours. Can you help?

  2. The first time I used the online version, I’ve tried the offline version too. When I run source setup/, it starts to show problems with lighttpd.
    Configuring lightpd to run fastcgi…
    sudo: lighty-enable-mod: command not found
    mode of ‘/home/pi/garage_pi/start_webserver.fcgi’ retained as 0755 (rwxr-xr-x)
    Adding fastcgi server to lighttpd.conf…
    \Starting ‘garagepi’ service…
    Restarting lighttpd to pick up changes…
    Failed to restart lighttpd.service: Unit lighttpd.service failed to load: No such file.

    I will gladly send files or screenshots if there is a prefered method. I also sent you an email via other method. I truly appreciate your help.

  3. Update: With a new SD card, I successfully installed a new WebIOPi (0.7.0 doesn’t include Weaved) and installed your online script without ANY errors. Port 8000 takes me to the WebIOPi homepage, but still cannot figure out how to access any of the screen shots you show.
    You’ve done such a great job on building this that I really want to see it in action.
    Thanks in advance.

  4. Updated Update:
    Wiped old 16GB SD.
    Loaded Driscosity’s instructions UP TO (but NOT INCLUDING) WebIOPI.
    Ran Offline install per instructions.
    I think it’s a lighttpd problem in the install script.
    Shell showed errors at lighttpd install. (Version 1.4.35-4 is no longer available on mirror.)
    Ran wget on the 1.4.41 version of the lighttpd “gz” file then ran the tar on it.
    Tried to follow script manually by the command “sudo lighty-enable-mod” but got “command not found message”.
    Not sure how to get past this point. I fear my NOOB attempts may mess thing up further.
    Please advise. Thanks.

  5. Hi,
    Im in the same situation of HughMorris1, can’t get the webpage to load. I use the online installation and updated the configuration with my username and password and also rebooted the pi. I already have the Chris Driscoll version working on another SD card but I want the ifttt notifications of your version. Any way to troubleshoot this problem?


  6. If lighttpd has changed since I made the script that may explain it. I’ll check it out later when I get a chance. In the meantime, can you create an issue on the GitHub project and paste in the warnings you got? Thanks!

  7. Update to my updated update:
    I got it working! The setup script can’t follow the change in lighttpd versions. I went out to the lighttpd website and did a “wget lighttpd” ( then ran Nathan’s setup again. I ran “apt-get lighttpd” followed by Nathan’s setup, and it worked!
    Now I’m onto the next step which is to figure out how to make it operate for a second door (relay and reed switch) and a third relay (wired as a 4way switch to toggle the garage lights) and read the state of a third input (for power failure status). After that, I’ll add RealTime clock, and camera.

  8. @HughMorris1: Not sure why that would work and the script wouldn’t. I wonder if this would happen if you started from scratch and never did an apt-get update. That’s what downloads a current list of installable packages. I’ll add that to the script since it’s a good thing to do before installing anything.

  9. I still have a ways to go before I can utilize this and I need your help. We’ve got two garage doors so I’m trying to figure out what to tweak to get this working for the second door. I had an html page setup for webiopi (and not working) but I prefer the monitoring and security of your code. I already have the cat5 run and the interface board made. However, I don’t have the coding part worked out. I’m using GPIO 7 & 8 as the reed switches at the doors, and 17 & 18 as the pushbuttons. Do I just add lines to garage_control.html and to the config in instance?
    Thanks again,

  10. I am lost on where to access the pages from? I am really intrigued by this project and also want to see it in action. Do I have to point my browser to a certain port?

    Thank you!

  11. Hi Jones,

    I’ve used my garagepi a LOT ! I added a picam to it and it’s showing between the button.

    I also worked my way through a push notification using “pushetta” (I know you worked hard on making IFTTT working but I was using pushetta before and I found it easy and reliable.

    My Python skills are close to none and I have a little script running but it’s not efficient at all.

    I’d like to have my pushetta functions integrated within GaragePi

    Notification generated when the door is changing state,
    Notification generated when the door is opened for 10 seconds and then one minute and so on for about 5 minutes or till it close and then I’d get a notification that the door is closed successfully.

    I am trying to make this work as I would like to get that installed in my car, someone just walked the neighborhood looking for unlocked car and cleaned my girlfriend and neighbor’s car. Well if it’s getting into a car I already have my infinite loop ready to burst the hell out of my phone and tablet.


  12. I too am looking for the instructions to add additional buttons to web site for using a second relay to control the garage door lights.I have the wiring figured out just need the code.

  13. Works perfect for me. Also like @Hughmorris1 I am looking code to run a second relay. Mine is to run the lights on the garage door.

  14. I have not had time to work on any of this due to a cancer situation in the family, so I’m looking for someone to finish the code for my design. I have the web view diagrammed and the hardware interface built. I just need the web page built. I would rather pay and have it usable than let it sit unfinished. Send me an email if this sounds simple and you can help. Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *

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