[RELEASE] HubConnect - Share Devices across Multiple Hubs (no longer SmartThings!)

To be honest, I couldn't get it to ever work right either. The button implementation is completely different between Smartthings and Hubitat which is why I think that's the case. I actually got it working partially before but I gave up on using ST to HubConnect for my Ring devices and using the Unofficial Ring Integration located here instead created by @codahq :

I have it setup on my Server hub and using my own custom drivers so the devices are on my other hub that I use for the outdoor motion events so it triggers to turn lights on with motion and button events on my ring devices.

Below is the custom driver I created for myself for my Ring Doorbell:

/*
 *	Copyright 2019 Steve White
 *
 *	Licensed under the Apache License, Version 2.0 (the "License"); you may not
 *	use this file except in compliance with the License. You may obtain a copy
 *	of the License at:
 *
 *		http://www.apache.org/licenses/LICENSE-2.0
 *
 *	Unless required by applicable law or agreed to in writing, software
 *	distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 *	WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 *	License for the specific language governing permissions and limitations
 *	under the License.
 *
 *
 */
metadata 
{
	definition(name: "HubConnect Ring Doorbell Pro", namespace: "shackrat", author: "Steve White")
	{
        capability "Motion Sensor"
		capability "PushableButton"
        capability "Sensor"
        capability "Actuator"

        attribute "statusMessage", "string"
        attribute "active", "string"
		attribute "version", "string"
		
        command "sync"
	}
}


/*
	installed
    
	Doesn't do much other than call initialize().
*/
def installed()
{
	initialize()
}


/*
	updated
    
	Doesn't do much other than call initialize().
*/
def updated()
{
	initialize()
    sendEvent(name: "numberOfButtons", value: "1")
}


/*
	initialize
    
	Doesn't do much other than call refresh().
*/
def initialize()
{
	refresh()
}


/*
	parse
    
	In a virtual world this should never be called.
*/
def parse(String description)
{
	log.trace "Msg: Description is $description"
}

/*
	pushed
    
	Pushes button #<btn>.
*/
def pushed(btn)
{
	// The server will update pushed status
	parent.sendDeviceEvent(device.deviceNetworkId, "pushed", [btn], stateChange: true)
}

/*
	refresh
    
	Refreshes the device by requesting an update from the client hub.
*/
def refresh()
{
	// The server will update status
	parent.sendDeviceEvent(device.deviceNetworkId, "refresh")
}

/*
	sync
    
	Synchronizes the device details with the parent.
*/
def sync()
{
	// The server will respond with updated status and details
	parent.syncDevice(device.deviceNetworkId, "ringdoorbellpro")
    sendEvent(name: "numberOfButtons", value: "1")
	sendEvent([name: "version", value: "v${driverVersion.major}.${driverVersion.minor}.${driverVersion.build}"])
}
def getDriverVersion() {[platform: "Universal", major: 1, minor: 1, build: 1]}

Once stub driver is installed, create a custom driver like this:

You can remove Pro off of the name if you want, doesn't really matter since it's the same for Pro vs non Pro.

Here's an example when I pushed my doorbell button just now using this custom driver on my other hub using HubConnect: