When we first moved into our house, the home builder installed a set of Chamberlain myQ enabled smart garage door openers. I was excited about the possibility of being able to use my phone to make sure that our doors were closed when we were away, or to be notified if they opened when they shouldn't. The only piece missing was that our builder did not include the network modules needed to enable the smart functionality. I put the necessary parts on the shopping list, but never got around to ordering them, and my garage doors remained not-so-smart.
Fast-forward a few years, and I'm now working at Control4. I've got most of my house wired up with audio, smart lighting, climate control, etc., but still haven't got around to taking care of those garage doors. So, I finally did something about it earlier this year. Using a couple of Control4's ZigBee IO devices, I was able to get both the status of my doors, as well as enable control of them via the Control4 OS.
First of all, a short disclaimer. While I do work for Control4, and am sharing how I did this, you shouldn't consider this any sort of official how-to guide. This is what worked for me, and your mileage may vary. It's been running for months with no issues, but if you're using Control4 at home, you should see your C4 dealer for details if you'd like to wire up your garage. They likely have a cleaner solution than this, and they'll support it. This… not as likely. That said, let's get going on how this all works.
About the ZigBee IO
Here's what I'm working with, from the product description:
Get the job done using Control4’s ZigBee IO. This easy-to-install solution can be configured to provide a combination of two relays or up to four contact sensors. Additionally, it provides two IR outputs, one magnetic contact sensor, and one temperature and humidity sensor, all packed into a single, small device. The ZigBee IO expands your Control4 home's automation capabilities, controlling devices in the home theater or garage, and anywhere inside and outside the home, with standard Control4 System Remote Controls, touch screens, or keypads.
So, this thing provides the ability to activate two relays, or monitor four contact sensors. I have two garage doors, which means that I'll have two contact sensors, one per door, and I'll need control of two relays, one for each opener. That means I needed two ZigBee IO devices. Luckily, they're small, and pretty affordable.
Door Status - Round One
The first goal of this project was to get the status of the doors, as that was my main concern. I just wanted to know if the doors were open or not, and be notified if they were open when they shouldn't be. My first attempt at this was getting a set of Nyce tilt sensors. One nice feature of these sensors is that they don't require any additional hardware, as they attach directly to the garage doors, and they can work with your C4 system's existing ZigBee network.
However, while these things were pretty easy to setup, I found that they didn't quite respond as quickly as I would have liked. I was seeing several seconds of lag time between when the door would open, and when that would be reported to the C4 OS. Sure, it's only a few seconds, but I like speed. The other cause for delay was that the threshold for when they would register a tilt seemed to be a bit high. I attached the sensors at the top of my doors, so that they would start tilting as soon as the door opened, but I found that I would have to open my door at least a foot before these would register an open event. Not good, as that was plenty of room for someone to crawl under the door, and I'd have no idea if the door was open or not. Ideally, I wanted to know even if doors were open by just a few inches.
Door Status - Round Two
For round two, that's when I moved to the ZigBee IO device (Z2IO). One Z2IO can be connected to up to four contact sensors, so I opted for a pair of magnetic reed switches that I picked up from Amazon. I mounted the wired side of the contact to the door frame, and the other side to the door itself. While I did have to run a wire from each magnetic switch to a Z2IO box, I liked that these things reported almost immediately, and that they would show that the door was open, even if it was only open by an inch or two. I mounted the Z2IO box to the ceiling of the garage, ran the wires up to it, and once it was added to the system, I was able to view the status of my garage doors both on the Control4 touchscreens in the house, as well as in the C4 iOS app. As an added bonus of using the Z2IO, I can also monitor the temperature of the garage, as the Z2IO has an embedded temperature and humidity sensor in it. I don't have HVAC in the garage, but knowing the temperature out there is still nice.
As easy as monitoring the state was, controlling the door turned out to be a bit trickier. My original plan was to splice some wires into the wall-mounted door buttons and use the relays on a Z2IO to toggle the door openers. When I climbed up to the openers and used some jumper wires to try and toggle the doors, simulating a closing relay, the lights of the opener would just blink, and nothing would happen. After doing some online research, that's when I found that I couldn't just jump the wire connections. The myQ system requires that I use the wall buttons supplied with the openers, as they actually send a unique signal to the opener, and they don't simply close a circuit like some other push buttons.
Enter the spare remote.
I had a spare remote button, as our builder gave us three remotes, but we only have two cars. The spare was paired with our openers, so I now had something that could send the appropriate signals to the openers. The trick was figuring out how to integrate this with Control4. But this is also where the fun really began.
I popped the cover off of the remote, and with a short length of wire, began poking at the circuit board to try and determine which solder joints matched up with the buttons on the remote. Once I figured out which joints would need to be connected in order to simulate a button press on the remote, I then soldered on a short length of wire to each button. Once the connections were made, all I had to do to get the remote to send a signal to a door was to simply touch the ends of the wires together. Pro tip - once you figure out where to solder your wires, remove the battery from the remote. Don't be like me and have the door opening and closing over and over because you forgot to do that.
At this point, wiring the remote to the Z2IO was pretty easy. The terminals inside the device are clearly labeled, so I just connected them to the R1 and R2 terminals. Once I powered up the Z2IO and added it to the Control4 system, I was able to use my phone to open and close the doors. It worked great, but honestly, still looked a bit cheesy.
Now that I had everything working, I disconnected the wires from the Z2IO terminals so that I could bundle things up with a bit of heatshrink tubing. I was able to get an empty shell of a Z2IO that turned out to be a perfect fit for the garage remote circuit board. Once I packaged everything up, I had a sort of stubby little nunchuck, but at least I didn't have any bare wires or exposed circuit boards. I took the contraption downstairs to the rack in the basement, and using a bit of adhesive velcro, stuck the thing to the side of my rack. The rack is easily in range of the garage doors, and I like that I have most of the automation gear all in one spot. And, as a bonus, I also now have a temperature sensor down in the room with the rack. While the Z2IO has its own power supply, the remote I hacked still relies on a battery, so it's also nice to have it in a location where accessing the battery is pretty easy.
So, not the fanciest solution, but it works, and it works well. While this setup is specific to a Control4 system, as the Z2IO will only work with Control4, if you were using a different automation system, you should still be able to use the magnetic switches or hack some wires onto a remote if you're so inclined, as at the end of the day, those wires are basically just extension cords for the buttons.
Why do this again?
As I mentioned earlier, there are a few reasons I wanted to do this project. In no particular order:
- Notifications. I have my Control4 system setup to send a push notification to my phone if a door is opened and stays open for more than 15 minutes. 99% of the time when I get these notifications, it's cool, because I'm the one that opened the door. But there has been a handful of times where one of the kids opened a door and didn't close it. Or, that we've gone somewhere, and while we were driving, got a notification that we had forgotten to close the door. That leads to…
- Remote Control. A door was left open? No problem. Use the app to close the door. Or, have a family member or friend that needs to borrow something? You don't have to share your garage code with them, instead you can just remotely open the door for them. We also use Control4's Intercom Anywhere, which allows us to answer our door from anywhere. Part of the Intercom Anywhere system allows you to setup some custom buttons that are bound to your doorstation. There have been a few times where I've been at work, and when the kids get home, they ring the doorbell to come in, and I can then remotely open the garage door to let the kids in. (This usually happens when the kids are too lazy to open the door themselves from the keypad.)
- Goodnight Status. When locking up the house for the night, I've got a keypad setup that displays a simple red/green LED status. When locking up the house at night, I can tell at a glance if the garage doors are closed.
- Temperature Monitoring. I'm a nerd, and I like to know what's going on. Now I can know the temperature in multiple locations throughout my home.
- Convenience. Sure, I still use a regular door remote when pulling into the driveway, but now that my home is smart enough to know that the doors are opening, I have some programming setup to turn the lights on in the garage at night. While the openers themselves have a lightbulb, it's not very bright. It's nice being able to pull into the garage, and have the lights turn on, and have the house welcome you home.
- It's fun.