Ryobi modular smart garage door opener

Same here Steve! Mine was jacked up all day yesterday and came back on yesterday evening. I think it was Ryobi because I couldn’t even log into the app. I was kinda wondering if they updated anything but sadly it doesn’t look like it. Same crappy Ryobi app we all love…

Thank you for this thread - I was on the fence between a Wink and a Smartthings hub and this was the scale-tipper for me - so excited to get started with this integration!

Thank you very much for this awesome DTH and Node sever. We had Ryobi in HomeAssistant for a bit last year but it was then removed. But thanks to the latest ST integration with HomeAssistant I now have control of my GDO once again. Thank you very much.

I know i am missing something here but i cannot seem to figure out how to get google home to allow me to open/close the garage door. I can operate the door in the smarthings app in the home app i was only given the light switch to the GDO which does work through google home. Can anyone point me to where i can figure out how to get the door to be able to open and close please?
Thank you

I finally figured it out. Anyone else looking to figure it out just search for google home assistant for smathings. The guy that made the app is a genius!!!

@madj42 - Out of curiosity, why did you go the route of using a separate device as a proxy rather than building this stuff into the handler directly? Do device handlers lack websockets support?

That’s exactly the reason. Not sure if anything has changed in terms of support.

I’m trying to get this going with my Ryobi GD200. I have the Device Handler setup and the proxy running on a CentOS 7 box and it appears to be getting requests. Every time I push a button on the app, I’m seeing a request come through on the proxy, but I am not getting good data back and the opener is not responding to requests. I uncommented a few of the console.writeline lines to see what was going on and apparently it doesn’t seem to be finding the door ID or the API key. Here’s what I’m seeing from the URL line:

/?name=status&doorid=null&apikey=null&email=XXXXXX@XXXXXXX&pass=XXXXXXXXXX

I did run the GetInfo.js script to see if it would pull data and it is pulling an API key and the other information that the script pulls.

What am I missing? Thanks!

I was able to figure it out. I had added/removed my openers from the Ryobi app a few times for troubleshooting something else, so the index for the doorid was higher than I thought…
var doorid = someValue.result[4].varName

Hey, this is fantastic but I need a few pointers. I have Raspberry Pi running in a virtual box (waiting for a real one to arrive). I got the proxy server running (I think) but the README doesn’t say how to use that getinfo.js. How do I “use getinfo” to get the details. And where do I put them after that? I’m rereading the entire thread because I wasn’t sure if getinfo was still needed after all the additional enhancements.

I think the README might need to be updated… When I got to step 3 it gave an error saying npm was unknown (or something similar). I noticed that the installs from step 2 gave a message that npm would still need to be installed. I forget what command I used to do it, maybe “sudo apt-get install -y npm” ???

Sorry I didn’t take notes. I may redo the VM just to get specific instructions if that’s helpful.

There were also errors about something not supporting node.js v10. ??

Ok… so I thought I had the proxy running but now I’m thinking I don’t… When I run the proxy I get the following:

pi@raspberry:~ $ node RyobiGDOProxy.js
/home/pi/RyobiGDOProxy.js:7

^

SyntaxError: Unexpected token <
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:657:28)
at Object.Module._extensions…js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:283:19)

Here is my GDOProxy.service file in /home/pi/myscript

[Unit]
Description=Ryobi GDO Proxy Service
After=network.target remote-fs.target

[Service]
Type=simple
Enviroment=NODE_ENV=production
ExecStart=/usr/bin/node RyobiGDOProxy.js
Restart=always
RestartSec=10
KillMode=process
WorkingDirectory=/home/pi

[Install]
WantedBy=multi-user.target

And here is the first few lines of my RyobiGDOProxy.js file (there are 6 blank lines before the first line…

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">

Second question…
I have two GDO’s. What would I need to do to get two of them working? Do I create two device handlers in graph.api.smartthings.com? Do I need to modify the handler code (Ryobi_GDO200_DH.groovy) after pasting it so they aren’t identical? thx.

for the proxy file, looks like you did what I initially did, a wget on the link to it in github. you need to wget the raw file:

wget https://raw.githubusercontent.com/Madj42/RyobiGDO/master/RyobiGDOProxy.js

1 Like

Crackyn! Thank you. that fixed the errors! Looks like the instructions need to be updated.

Now I have another issue. The instructions in the readme here (https://github.com/Madj42/RyobiGDO) are very vague around step 8. There it says “Open the Smartthings app on your mobile device and open the new device.” but I can’t find “the new device”. I’ve looked in both the new and classic versions of the app but when I open the app I’m not sure how to add or find “the new device”. What’s it called? what are the steps to find and open it?

I’ve looked at the “My Home” tab and don’t see any new items (I have 110 in my list). If I click the plus icon to add a new item it does’t find anything. How do I “open the new device”?

Thanks

@C0recollector Not sure if you’re still looking for help, but for anyone else unsure about what to do from step 8, it’s easier when done from the web. Phogh mentions it further up.

At this point they suggest going to the app, but what worked for me was:
-Select the newly created device from the list of devices on the web.
-Find “Preferences” in the first column and click “edit
-Fill in the fields and hit “Save”

Open up the app on your phone and you should be good to go.

For those with 2 or more units, I had to do the following:
-Each GDO needs its own proxy service with unique port
-Each proxy service needs to reference the index of the door id you want it to control
-When creating the devices, be sure to use the respective ports from the proxy services you created.

I’m working on cleaning up the changes I made to the device handler as well as the proxy service, once done I can post them if anyone would like them.

Also, if i’m making things overly complicated and the original proxy service works with multiple GDO’s please let me know!

Hey Jabdo79 - just found this thread, have had the Ryobi GDO for a while, but never thought to look if anyone had integrated it with Smartthings. I’m definitely interested in you posting any changes you’ve made.

I don’t have a spare Pi, so I attempted to run this on a Windows node server, which I got running, but my device doesn’t show up. Anyone else try this?

I

I’m interested in modifying the device handler to incorporate a module. Did you happen to have success with this?

Sorry guys, I just noticed that people have posted replies to this thread. I’m glad some of you have found it useful and I’m glad that others have modified it. Unfortunately I’ve switched from SmartThings to Home Assistant since I wanted more local control of my devices. If I can be of any help, just ask.

I know this is an old (mostly abandoned) project, but has anyone made a way to add the GDO to the new app? I can’t add it with just the device type, it needs a SmartApp.