Ring Binding [3.2.0;4.0.0)

logo

NOTE: This is an early beta pulling the original Ring binding from OH2.5 into OH3/OH4. All original author credit goes to Wim Vissers who originally wrote the OH2.5 binding.

Ring

This is an experimental binding to the Ring.com API. It currently supports a Ring account
and is able to discover Ring Video Doorbells and Chimes. They need to be registered in
the Ring account before they will be detected.

It currently does not support live video streaming, but you can view recorded video’s,
if this service is enabled in the Ring account.

Supported Things

The binding currently supports Ring Video Doorbell and Chimes.

Discovery

Auto-discovery is applicable to this binding. After (manually) adding a Ring Account thing,
registered doorbells and chimes will be auto discovered.

Binding Configuration

There is binding configuration necessary. The easiest way to do this is from the Paper UI. Just
add a new thing, select the Ring binding, then Ring Account Binding Thing, and enter username and password.
Optionally, you can also specify a unique hardware ID and refresh interval for how often to check ring.com for
events. If hardware ID is not specified, the MAC address of the system running OpenHAB is used.

Channels

Control group (all things):

Channel Type ID Item Type Description
Enabled Switch Enable polling of this device/account

Events group (Ring Account Binding Thing only):

Todo: Move these to the device thing

Channel Type ID Item Type Description
URL to recorded video String The URL to a recorded video (only when subscribed on ring.com)
When the event was created DateTime The date and time the event was created
The kind of event String The kind of event, usually ‘motion’ or ‘ding’
The id of the doorbot String The internal id of the doorbot that generated the currently selected event
The description of the doorbot String The description of the doorbot that generated the currently selected event (e.g. Front Door)

Device Status (Video Doorbell Binding Thing and Stickup Cam Binding Thing only):

Channel Type ID Item Type Description
Battery level Number Battery level in %

Full Example

NOTE 1: Replace <ring_device_id> with a valid ring device ID when manually configuring. The easiest way to currently get that is to define the account thing and pull the device ID from the last event channel.

NOTE 2: Text configuration for the Things ONLY works if you DO NOT have 2 factor authentication enabled. If you are using 2 factor authentication, Things MUST be set up through PaperUI

ring.things:

ring:account:ringAccount "Ring Account"     [ username="user@domain.com", password="XXXXXXX", hardwareId="AA-BB-CC-DD-EE-FF", refreshInterval=5 ]
ring:doorbell:<ring_device_id>          "Ring Doorbell"    [ refreshInterval=5, offOffset=0 ]
ring:chime:<ring_device_id>             "Ring Chime"       [ refreshInterval=5, offOffset=0 ]
ring:stickup:<ring_device_id>           "Ring Stickup Camera"       [ refreshInterval=5, offOffset=0 ]

ring.items:

Switch     RingAccountStatus              "Ring Account Status"             { channel="ring:account:ringAccount:control#status" }
Switch     RingAccountEnabled             "Ring Account Polling Enabled"    { channel="ring:account:ringAccount:control#enabled" }
String     RingEventVideoURL              "Ring Event URL"                  { channel="ring:account:ringAccount:event#url" }
DateTime   RingEventCreated               "Ring Event Created"              { channel="ring:account:ringAccount:event#createdAt" } 
String     RingEventKind                  "Ring Event Kind"                 { channel="ring:account:ringAccount:event#kind" }
String     RingEventDeviceID              "Ring Device ID"                  { channel="ring:account:ringAccount:event#doorbotId" }
String     RingEventDeviceDescription     "Ring Device Description"         { channel="ring:account:ringAccount:event#doorbotDescription" }

Switch     RingDoorbellStatus             "Ring Doorbell Status"            { channel="ring:doorbell:<ring_device_id>:control#status" }
Switch     RingDoorbellEnabled            "Ring Doorbell Polling Enabled"   { channel="ring:doorbell:<ring_device_id>:control#enabled" }
Number     RingDoorbellBattery            "Ring Doorbell Battery [%s]%"     { channel="ring:doorbell:<ring_device_id>:status#battery"}

Switch     RingChimeStatus                "Ring Chime Status"               { channel="ring:chime:<ring_device_id>:control#status" }
Switch     RingChimeEnabled               "Ring Chime Polling Enabled"      { channel="ring:chime:<ring_device_id>:control#enabled" }

Switch     RingStickupStatus             "Ring Stickup Status"            { channel="ring:stickup:<ring_device_id>:control#status" }
Switch     RingStickupEnabled            "Ring Stickup Polling Enabled"   { channel="ring:stickup:<ring_device_id>:control#enabled" }
Number     RingStickupBattery            "Ring Stickup Battery [%s]%"     { channel="ring:stickup:<ring_device_id>:status#battery"}

Changelog

Version 0.2 (c32ebe1)

  • Updates from review
  • Fixes multiple exceptions

Version 0.1 (363a2f6)

  • initial release

Resources

https://github.com/morph166955/openhab-addons/releases/download/ring/org.openhab.binding.ring-3.2.0-4.0.0-SNAPSHOT-c32ebe1.jar

1 Like

Reserved for future use.

I’m posting this as a test jar for anyone who is using this binding. This includes several updates from the recent review. There are no new features in this, but it gets us closer to this getting through the PR process. I would greatly appreciate if people could test and let me know if there are any regressions. I’m specifically concerned about the refresh tokens. I’ve done some updates in the way that we store and update the persistent data and I need to know that we haven’t done anything to break that. Once we get some positive feedback I’ll update the main thread. Also to note, anyone using a text based configuration needs to be aware that you could have issues storing the refresh tokens through reboots. I have this on the to-do list to fix.

EDIT: Removed due to regression. Updated jar posted to main thread.

I was able to install the binding and link to my ring account using 2FA. I only see the channels below.

Is this the new jar or the one posted on the main thread? What kind of ring device is it? What OH version are you on?

If its a battery powered camera thats normal. The status channel is actually not implemented and is going to be removed shortly. You should see the event channels under the account thing.

I found the events under account - sorry was looking under the device. Everything seems to be working!

Binding version immediate above, 5397c5

Ring camera

Awesome! Thank you!

1 Like

I’ve identified a regression happening when restarting OH with the new code when 2fa is enabled. I’ll be pushing an updated jar shortly.

Version 0.2 (c32ebe1) now posted. This fixes the regression with 2fa I mentioned. This also aligns with what is currently in the PR. Please post any issues identified or just general success so we know everything is working as expected. Thanks!

EDIT: just to note, there seems to be a problem with battery level on stickup cams. I’ll try to work through that in the next week. I’m also going to try to push some more things to the thing properties (like the user set description) to make it easier to identify and manage the devices.

OH 3.2 with 2 different locations, one wired and one battery. So far so good with your changes.

Thanks for the battery level now!

Capture

Best, Jay

What kind of device is that? My doorbells are working but my stickups are null.

Video Doorbell (2nd Gen). Removable battery unit.

Best, Jay

Cool. I have the same one.

Hi morph166955

thank you for all your work, appreciate it.
My device is a Video Doorbell 3, secured with MFA.
As stated, file-based configuration is not working, used the GUI way instead and was able to bring the account as well as the device online.
The only channel I see working on the device:

  • Battery Level

The only channel I see working on the account thing:

  • Account Polling Enabled (on=yes, off=no)
  • The description of the Ring device

When the button is pressed on the bell, no other channels are updated, the remain NULL.

If I can help, please let me know.

Best
Marcus

That’s expected behavior at this time.

To make sure I’m understanding, the event channels arent updating at all when you have motion or a doorbell press?