Updated the code in my repo to do some bug fixes. I removed the nextState parameters on the tiles as they were causing too many issues. Tweaked the times for the status checks after the garage door/light actions to be more consistent with actual times for my door. I left a little bit of padding on the times but you may have to adjust these if they do not work for you. Also added configurable scheduled polling.
@madj42 - Thanks for putting this together. I was able to finally get this installed on my Pi however I am now stuck at getting the device handler to show up in the ST app.
I successfully created the handler online however Step 8 in the DTH to SmartThings section is where I’m stuck. When you say “open the new device” what are you referring to? When I open the ST app, the Garage Door does not show up.
What am I missing?
Thanks - Steve
After creating the device handler, you will need to
Click on Devices at top of web page.
Click on + New Device
Name the device (up to you)
Set Device Network Id to whatever you want (this will be automatically be replaced by the device handler)
Change Type to Ryobi Garage Door (scroll to bottom of drop list)
Set Location and Hub
Save the device by clicking Create at the bottom.
Now go to your Phone App and it should now show.
When you select the device in the app, it should automatically update the Device Network Id. You can check that by going back to the SmartThings Devices web page and refreshing it.
Now in the app, select the device and click the gear icon for settings.
Input your Ryobi account login and password
Input the IP address of the Pi and default port of 3042
Save your changes.
It is recommended to reserve the IP address for the Pi device in your router/modem.
Keep in mind that this does require you to have a SmartThings hub as that is what communicates to your Pi.
So now when you view the device in the app, it will show you a display based on the device handler that was setup. it will send a status update to your Pi and display those results (open/close/light on/off / battery) and each time you make a selection it sends that on to the Pi, which sends it to Ryobi, which talks to the garage door opener.
Beat me to it. Follow the directions above and you should be set.
Is this allow me to control Ryobi garage with google mini?
I can setup this on my Raspberry Pi and control it via google home?
I am brand new to this. I just bought a GD201 and have SmartThings at home. Any suggestions of a working tutorial to be able to manage my Ryobi 201 through ST?
I tried to follow the thread but I got lost.
You will have to tell us where you got lost. Look at the ReadMe at
The instructions are pretty good but terms maybe confusing.
You will need to purchase a Raspberry Pi to be the bridge that communicates between the SmartThings app and Ryobi GDO.
I like this one because you can also play Retro arcade games, I also have it controlling WS2812B Led strip lights, so the Pi can be used for multiple purposes.
I got the up and running but don’t know what to do next. how do I instruct to open/close the garage ?
pi@raspberrypi:~/gdo $ node RyobiGDOProxy.js
server is listening on 3042
You only did the first part. You still need to do parts two and three.
- Starting proxy service at boot on Raspberry Pi:
- Installation of DTH to Smartthings
The instructions are here
Does require a SmartThings hub to make it all work. Unsure as far as Google Home but would image it should work fine if it is setup as a switch. I use Alexa so can’t really help.
Check this link, maybe it will help
Thanks for your response.
I Understood what you said about steps. I will figure out the google assistant part but tell me how do I open/close garage from the Raspberry Pi to test this is part is working correctly, what sequence of command or portion of code that communicates with RyobiGDO to open/close the garage
ipaddress = IP address of Raspberry Pi
email = Your Ryobi Email Address
password = Your Ryobi Password
Return Status shows as
Is Light On. true/false
Door Open. 0 = no. 1=yes
Battery Level. 0-100 or Not applicable
Phogh, Great help. thanks a lot…
I am able to get this running…
Any ideas if we could get the preset function built into smartthings?
Forgive me, could you be a little more specific on which preset function you’re referring to?
You can tell I rarely use the official app. I’ll see if the setting can be changed but it may be a while before I can look at it. I’ll get back to you on this when I have had chance to look at it.
Yeah me either but I wanted to have a little airflow in the garage and like the feature.
I’ve been able to access and change most of the available values but there are a few in the config section that I haven’t been able to figure out.
For the door and lights, just the way we have been doing them: moduletype=5 & portid=7
For the fan, the following need to be changed: moduletype=1 & portid=3
For the park assist, moduletype=3 & portid=1
I matched them up by checking the number after each of the devices
i.e. fan_1 --> module1
then looked at each of the modulePort devices for moduleid(moduletype) & portid
I’m unsure if all the GDOs use the same id convention so if someone could confirm if their GDO modules/ports match mine that would be helpful.
The ones I am having issues with are those that do not use the gdoModuleCommand method (as far as I know). An example is the Door Preset Function (in response to the above posts).
I can set the preset to anything between 0 to 72 by setting ‘presetPosition’ using the door/light moduletype and portid . But if I want something other than 5, 18, or 36 then I would also need to set metaData.customPreset field to true, which is not part of the door module. Actually, it will take any number and accept it, but then the Ryobi native app doesn’t show properly.
So what other methods are there besides ‘srvWebSocketAuth’ and 'gdoModuleCommand '?
I’ve left a post on https://yannipang.com/blog/ryobi-garage-door-api/
but it hasn’t shown up yet.
Implementing these changes into the SmartThings groovy file is another monster as I don’t want to stray to far from the original. Most are simple, but for the fan I want to use one button (like the lights) to switch from Off - On 100 - On 70 - On 30 - Off just like the control pad. I am still new to SmartThings so its been a learning experience.
I just spent a few minutes and was able to get the majority of the commands for the door by decompiling the Android apk. To use the preset, you need to send the doorCommand command to the websocket with a value of 2. You’re right about the presetPosition value. Whatever value is set there, the command will open the door to.
I have a working node server and DTH but I had to give up due to family. Should have some more time tomorrow or Monday. Figured I’d mention what I found in case it helps
Did anyone else have trouble accessing their garage door through either the app or through ST today? My app was giving me an error most of today and now works however my integration with ST is fickle. I am able to control the door (open/close) however the open/closed status is not being accurately reflected in ST.
As an FYI, it had been working just fine for the last 2-3 weeks, this is the first issue I’ve had.