top of page

Using Ring Keypad to Open Garage Door (SmartThings ecosystem) - Part 1

Situation

I have a short-term rental property in the mountains. During heavy snowfall, it is difficult to reach any entrance to the house until the snow is cleared -- except for the garage door. So, if guests arrive on a heavy snow day and snow hasn't been removed yet, they can't get into the property. I highly prefer that guests use their own unique code and no physical keys.

For a few years (starting in 2021?) I have been using a SmartThings setup where I could specify guest dates and unique codes in RBoyApps RLA, which would then program 2 Yale locks and a Ring keypad with those codes. In RBoyApps RLA I setup that "unlocking" the Ring keypad would open the garage door via the meross MSG100 unit, and "locking" the Ring keypad would close the garage door, thereby giving guests unique codes to access the property without having to deal with snow too much.


  • Specific Hardware & Software Details:

    • Aeotec SmartThings Hub

    • Yale Assure Lock SL Touchscreen Deadbolt w/ Z-Wave for the front door.

    • Yale YRL226 Touchscreen Lever Lock w/ Z-Wave for the garage-house door.

    • meross MSG100 Smart WiFi Garage Door Opener

    • Ring Gen2 Keypad

    • RBoyApps Device Handlers

      • Universal Enhanced Z-Wave Lock

      • Ring Alarm Keypad

    • RBoyApps Smart App

      • Rental Lock Automater (RLA)

Situation... Changed

In 2022 Samsung announced that the SmartThings platform would be deprecating support of Groovy-based tools, apps, and devices -- which is what a majority of RBoyApps is based upon. Things continued to work well until late Dec 2022 / Early Jan 2023 when SmartThings finally killed support for the RLA smart app, which renders my whole setup useless.


Solutions

There are lots of not-great solutions to consider:


  • Shared code for all guests (not as secure for all guests)

  • Physical Keys (not as secure for me & my property, as well as guests)

  • Pay more people to do more timely snow removal (good luck)

  • Have the guests call/text me to let them in (horrible experience for guests, annoying for me)

  • Find other industry solutions (commercial keypads, etc.... I've tried and there just aren't any good solutions that could find)

  • Install a "dummy" deadbolt like the Yale Assure Lock SL, and drive automation based on it.

  • SmartThings to migrate everything

    • This sort-of worked for the yale locks + the new Samsung-provided "Smart Lock Guest Access" app, but it does not support the Ring keypad -- a critical component since it is the only one accessible without snow blockers.

  • RBoyApps to migrate everything

    • I've been waiting, and maybe he is working on this diligently, but right now me and my guests are quite literally left out in the cold.

  • Learn more out the "migration from Groovy to Edge/lua" drivers and build it myself

Progress

Everything I've researched so far doesn't give me a great feeling, so I'm researching the last option.


Researching the edge drivers and building one for the Ring Keypad, hmortsi has a great start, but it isn't exactly what I need. It seems like most people using the ring keypad are using it for "security" (e.g. Disarmed and Armed modes and so forth), and as of this writing (Feb 5 2023), only one code is supported (I want multiple, hopefully controlled by date).


But, that is where I started.


I installed the hmortsi driver to my hub via the published channel invite. However, the Ring device isn't picking up the new driver (won't switch from cloud/groovy driver to local/edge driver). It appears I will have to exclude the Ring keypad device from the hub and re-pair it to have it pick up the new driver. That's not really possible since those actions require physical access to the devices and I am 800 miles away. I also tried deleting the RBoyApps driver but can't because it is in use by a device, and if I remove the device I won't be able to re-pair it from a distance.


So, I bought another Hub and Ring keypad to develop with locally.


Edge Driver Development

I don't remember exactly what order I've done these things in as I decided to do this writeup after it seemed plausible for me to do my own driver (and maybe even app) development for SmartThings.


  • Installed SmartThings app on iOS device & registered for a new/separate "dev" SmartThings account for the new hub and development purposes

  • Downloaded and installed the SmartThings cli (info)

    • poked around the commands, tried a few on both my new local and orignal/remote hub just to get a feel for how things are setup and work

  • Read up on SmartThings development, mostly from official sites & community blogs

  • Cloned hmortsi's repo, which itself is a fork of the main SmartThings Community repo.

  • Built the hmortsi driver locally and installed it on my local hub. I certainly did not do things in this order originally as I went through a lot of trial-and-error, but I think this is the order you'd have to do it in (*1):

    • Create Edge Channel & enroll hub in the channel

      • smartthings edge:channels:create

      • smartthings edge:channels:enroll

    • Build/Package the driver

      • smartthings edge:package <path to the zwave-keypad directory>

    • Assign Driver to the channel

      • smartthings edge:channel:assign <driver id>

    • Install Driver to Hub

      • smartthings edge:drivers:install <driver id>

  • Used iOS SmartThings app to pair Ring keypad with hub

  • Used iOS SmartThings app to confirm driver, settings, configuration -- all looks good!

  • Connected to hub from terminal in order to get log information to make sure I can do that

    • smartthings edge:drivers:logcat --hub-address=<my hub's ip address>

Continuing Development So, things look promising. I'm not a yml/lua expert (or even novice, but I have been doing software development for over 20 years so am confident I can pick up the the concepts and syntax), but I can associate what I see in the yml files with what I am seeing in the UI. Next Immediate Steps:

  • modify yml files to trim down the settings to be more "core" to what I need.

  • a little bit more tweaking of settings

  • a little bit of looking into the lua code to understand the basics better.

  • learn how versioning / updates / deployments really work

Long Term Steps:

  • look into the smartthings lockCodes capability to see if/how I can leverage that to support multiple codes

  • Make sure I can tap into "lock"/"unlock" events for the keypad to drive other automations.

  • Look into building an app (not a driver) that can do more of the calendar-management side of things (similar to RBoyApps RLA)

Next: Part 2


Footnotes

*1: That order is basically correct... I later found a community page that basically outlines those steps.


Recent Posts

See All

Comments


bottom of page