# Ring Binding

This is an experimental binding to the Ring.com (opens new window) API. It currently supports a Ring account and is able to discover Ring Video Doorbells, Stick Up Cameras, Chimes, and other devices. 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 videos, if this service is enabled in the Ring account.

# Supported Things

The binding currently supports Ring Video Doorbell, Stick Up Cameras, Chimes, and others. Other is identified as any of the non-traditional types such as the intercom.

# Discovery

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

# Account Configuration

Account configuration is necessary. The easiest way to do this is from the 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 (opens new window) for events. If hardware ID is not specified, the MAC address of the system running OpenHAB is used.

Parameter Description Default
username The user name you use to subscribe to the Ring services. N/A
password The password you use to subscribe to the Ring services. N/A
twofactorCode 2 factor authentication code (Where enabled) N/A
hardwareId A unique hardware id N/A
refreshInterval Refresh interval 5
videoStoragePath Video Download Path N/A
videoRetentionCount Number of videos to keep 10

# 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):

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

# Device Status (Video Doorbell Binding Thing, Stickup Cam Binding Thing, Other Binding Thing only):

Channel Type ID Item Type Description
battery 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 bridge 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 Main UI.

ring.things:

ring:account:ringAccount                "Ring Account"           [ username="[email protected]", 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:stickupcam:<ring_device_id>        "Ring Stickup Camera"    [ refreshInterval=5, offOffset=0 ]
ring:other:<ring_device_id>             "Ring Other Device"      [ refreshInterval=5, offOffset=0 ]

ring.items:

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     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     RingChimeEnabled               "Ring Chime Polling Enabled"      { channel="ring:chime:<ring_device_id>:control#enabled" }

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

Switch     RingOtherEnabled            "Ring Other Polling Enabled"   { channel="ring:other:<ring_device_id>:control#enabled" }
Number     RingOtherBattery            "Ring Other Battery [%s]%"     { channel="ring:other:<ring_device_id>:status#battery"}