I am trying to understand how to setup devices so their state is controlled by ARI.
Per the ARI deviceState doc, you can control a device state with ARI, but it seems to imply that you can only control device state when that device is an ARI controlled device. So, how do you make a device ARI controlled?
You can’t. Channel driver device states (like PJSIP/200) are calculated and controlled by the channel driver. There is no way to overrule that. The only way you could “control” them is to not use them in hints at all, but have an ARI application subscribe and calculate its own device state for an ARI controlled virtual device. That is: Subscribe to PJSIP/200, do what you want with the info, and update the ARI virtual device.
It’s equivalent functionality to the DEVICE_STATE[1] dialplan function. It gives you the ability to make your own virtual devices how you want. For example if you wrote a queue application in ARI you could have a virtual device to represent the state of the queue. Same goes for a conference bridge.
And like I said previously, you could certainly control a virtual device state and make it the authority for another device provided it is used elsewhere in place of “PJSIP/200”.