rat-ratgdo board redesign (esphome)

We all agree that Chamberlain sucks. People who wanted to integrate their IoT garage door opener with a home automation system never wanted to have to connect to the internet to do that. Chamberlain whining that they have to shut down access to the API due to ‘too much load’ and the costs associated with that… That’s your own damn fault for designing it so poorly. You should have no one hitting up your servers to open a freaking garage door. If you want to try to turn a product into a re-occurring subscription fee and fail, expect no sympathy. With that out of the way, how do we solve this for the users who actually bought one of these things and expected it to work. 

Enter the RATGDO, this is the abbreviation for “Rage Against the Garage Door Opener” which has been developed to talk on the garage door opener local bus and make available controls you need for automations (or even just voice control). This little device has GPL v2.0 code and a reasonably simple interface for updating and installing it (although for some reason the interesting source code seems to only be in the release packages?). The developer makes the code available for people to use and maintain, but has repeatedly refused requests for board designs or schematics and from what I’ve read removes any github issues associated with that. I’m not gonna attack this guy because I like what he’s done, but now we have the inevitable…

Enter the RAT-RATGDO, a reverse engineered board for the RATGDO firmware. This came about from some people annoyed about international shipping, backorders, and generally the stuff that makes people go “that’s a pretty simple product, I’ll bet I could make one myself…”. The reverse engineering from someone who already purchased one resulted in this reddit thread and then this google sheets document with their findings. When looking through the resulting board designs and github documentation I ran across something else interesting. 

It runs esphome now. I’ve been using esphome with some friends for a number of years now and find that while it’s not optimal for some things, it does tend to work reliably and is easy to code for. The RAT-RATGDO page has a document about recommending using the esphome for of the RATGDO code and I tend to agree. I already use esphome for various sensors at places in my house, so why not one more. Part of the fun of esphome is being able to look at the pin definitions so easily and find out there are breaking changes between various versions of the official RATGDO boards. For some reason the Tx pin was changed… maybe it has better performance now? You can also program these boards easily with a web interface. Want to know the big secret of the schematic?

That’s it. I have even preserved the exact FETs used on the original boards here. The obstruction wire sends patterns (I think?) to describe its state and the control wire is just half duplex serial superimposed on the wire that powers the smart garage door opener button. So what do I have to contribute?

Well, I wanted one so I made one. I used the input contacts as buttons on the board and the state outputs to drive LEDs as outputs for a proof of concept, but it worked great. What I thought I could do was power it off the 12v bus, but that didn’t work so well. As it it my hacky boards now require a usb plug for power. I used some 2n7000 FETs I had lying around salvaged out of something and they work, but I hear there’s some off communication issues infrequently. This is great for making a couple boards for me and my friends, but I alluded to having one more esphome board in my network. Why do I need another one if it runs esphome and will be in the garage right next to another esphome sensor?

Enter my combined atmosphere sensor and garage door opener network interface. I’ve done a few things to this board design that I think push it forward beyond my other designs. The BME280 sensor that I have trouble keeping ambient and not heated by the project itself is now sticking out of the proposed enclosure. I dropped the motion sensor since I get to use the motion sensor in the garage door opener now (and it’s much less touchy). This design uses the same FETs as the OEM RATGDO, but you have the same footprint so I guess you could use 2x 2n7002 if that’s what you have. 

All the pins are labeled for writing your esphome config file and I think this makes a nice compact board design with expandability through the qwiic header. When I get these made I’ll have an esphome config available here and even right now the board designs are on github here. 

[UPDATE] I have added below the wiring I used to create the LED status indicators for the door and the obstruction sensor. The configuration with the red and green LEDs only works if the total voltage drop of the red LED and the green LED exceed 3.3v, otherwise both will light up when the pin there is floating (see this other post). Thankfully I thing that pin is basically always asserted so that should never come up. You are welcome to add those back into your own design, I would recommend gpio16 and either gpio1 or gpio3 which may screw with serial programming, but should not have adverse effects on booting. 

6 Responses to “rat-ratgdo board redesign (esphome)”

  1. Wags Says:

    Hi, which is the yaml for this?

  2. rat-ratgdo esphome sensor board build | Evan's Techie-Blog Says:

    […] Well, I built it. It took some modifications and the software was not as straightforward as I would have liked, but it all works now. This post is helpfully sponsored by PCBWay, and was in my recent order of four boards at once so this makes two. Two more to come. The Bracket is nothing special, same design as I have used before. I have started using slightly different design techniques though.  […]

Leave a comment