Ryobi modular smart garage door opener


(Gardiner) #124

My garage has 2 Ryobi GDOs. Is there a way in the DTH to select which door to control?

I had been running them in Home Assistant, but recently the module has broken and nobody can figure out how to fix the code. @madj42 Thanks for your work.


(Gardiner) #125

I wound up creating a 2nd GDOProxy on port 3043 for door#2. I modified one line in the GDOProxy2.js to var doorid = someValue.result[2].varName. I did not have to modify the Api key. Now I have 2 working doors.


(Justin Dybedahl) #126

Glad you got it working. I was going to recommend the exact thing you ended up doing. Thanks for sharing that it worked too.


(Justin Dybedahl) #127

@DEANE is there something that isn’t working currently? I don’t have the new app and most likely won’t be switching unless I’m forced to due to time.


(Justin Dybedahl) #128

Sorry for the delay, if you are still having issues with a delay, there are some debug logging lines in the DTH code. I’m wondering if you uncomment these in the light routines, is there a delay before they show up in the logs in the developer IDE console? That should help rule out the smartthings end if it’s quick to show in the logs. I doubt this would show any sort of delay. If it’s quick, it’s most likely something to do with the connection between your hub and the pi. Try completely removing the DTH from the IDE console and publishing it again.


#129

@madj42 yes, the new app doesn’t work at all. It just says can’t communicate with device. I actually started looking into the code and was making progress to get it working but other priorities have taken over for the moment. Hopefully I’ll be able to get back to it soon.


(Trent M) #130

Everything was working fine and dandy but about a week ago it just stopped working and I have no idea where to look first.

When looking at that service status I do see the following though

trent@h-maherutility:~$ sudo service GDOProxy status

● GDOProxy.service - Ryobi GDO Proxy Service
Loaded: loaded (/etc/systemd/system/GDOProxy.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-11-10 06:57:31 CST; 2s ago
Main PID: 27530 (node)
CGroup: /system.slice/GDOProxy.service
└─27530 /usr/bin/node RyobiGDOProxy.js

Nov 10 06:57:31 h-maherutility systemd[1]: Started Ryobi GDO Proxy Service.
Nov 10 06:57:31 h-maherutility node[27530]: server is listening on 3042
Nov 10 06:57:34 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
trent@h-maherutility:~$ sudo service GDOProxy status
● GDOProxy.service - Ryobi GDO Proxy Service
Loaded: loaded (/etc/systemd/system/GDOProxy.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-11-10 06:57:31 CST; 1min 1s ago
Main PID: 27530 (node)
CGroup: /system.slice/GDOProxy.service
└─27530 /usr/bin/node RyobiGDOProxy.js

Nov 10 06:58:13 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:16 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:16 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:16 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:18 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:18 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:21 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:21 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:21 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’
Nov 10 06:58:23 h-maherutility systemd[1]: [/etc/systemd/system/GDOProxy.service:7] Unknown lvalue ‘Enviroment’ in section ‘Service’

Any help would be appriciated.


(Nate Schwartz) #131

@madj42 First off thanks for creating this. I attempted to set it up the other day and couldn’t get it working. I really don’t know how to tell if I have the old or the new app, but I am wondering if I have the new one and that is why it doesn’t work for me. I have been using your code to play around a bit and have been able to successfully get status and send commands. I may try to rework some things and share it if you are ok with that.

One other question…does your light status work? I see the code for checking it, but no matter what I do, light on or off, the lightstate value is always false for me. The app I have noticed also does not accurately reflect whether my light is on or off. I am wondering if it just doesn’t work or if I have an issue with my opener itself. Thanks!

Nate


(Chris) #132

If you have the new version that has a separate hub for the door sensor than this is what we found in the time I was able to help get basic functions.
" We were unable to find the light status so this is always shown as off but the button in the DTH works."


(Nate Schwartz) #133

I do have the new version with the seperate door sensor. I have it basically working with the mods I made. I just need to put it all back together now.

The light thing is annoying. I have the same experience, I can control it, but can’t get status. It’s there, but it doesn’t seem to update like it should. That’s probably why the app also doesn’t correctly reflect the light being on/off. I contacted Ryobi about it so we’ll see what they say.


(Justin Dybedahl) #134

The IOS and android apps, if the old version, should have Classic in the names in the app/play store. If it’s the new one, I have yet to convert my account and most likely will never due so until forced due to lack of time. Regardless the proxy script file should be able to control the door if you have everything setup correctly. Try using the Debug js files I have in the github repo and see if it returns the correct light and door status.

Ultimately the DTH depends on exact timing for the various door status updates and when the door is shut, it verifies this with another status call to the api. It’s not the best way to do this and if I had the time and knowledge of smartapps, I would create the proper dth and smartpp combo to better reflect the status.


(Nate Schwartz) #135

Ohh wait! We are talking about the Smartthings app? I was thinking there was an old garage door opener app. In that case, yes I am using the classic ST app and am in the same boat that I have zero plans to move to the new one unless forced.

I will have to play around with it some more, but when I set it up straight from the github script it would appear to run but I couldn’t get status or make anything happen. I will mess around with the debugging and see if I can figure out my issue. Thanks for the reply!


(Nate Schwartz) #136

I agree the updating based on waiting a certain amount of time isn’t ideal, but I don’t know that there is a better way with the current api we have. I have been curious what method the api uses to update the app, I assume it is through the websocket. I spent several hours last night trying to sniff traffic to see, but that was a big fail. However today I have been able to dive into the android apk and see commands that are being used. I think there is a way to subscribe to things with the websocket and then get notifications of changes. I am not at home to try it at the moment, but plan to give it a shot. If it works you could move all the status update logic and code to the proxy and then push any updates to ST when they happen. You don’t need a smartapp to do that either. I’ll let you know what I find.


(Justin Dybedahl) #137

Websocket to turn on the lights and open the doors. Https for all status updates. Look at the proxy js and you’ll see the URLs and methods.


(Nate Schwartz) #138

Yea, that actually isn’t the case. Well it is with the bit of API that was figured out, but I was pretty certain that there was no way the app was making an http call every time it wanted to update. There had to be a websocket method that pushed the data across. I was in fact right and have gotten it working. Now as soon as something changes with the garage door (opens/closes) or even the modules (I only have the parking assist module at the moment but it works) I get instant notifications from the websocket.

I am still refining everything and working on a few other things, but I hope to release something soon. I need to update the DTH as well like I mentioned above so that the proxy service pushes changes to it as soon as they occur rather than have it ask for status updates. All in all I think this will be a nice update to our Ryobi GDO/ST integration.