Open
Description
When defining device subscription handlers, you cannot name a common handler across subscriptions. The SDK design seems to impose a unique handler name for each subscription. If I want to support nearly all SmartThings capabilities, I would have a potentially LARGE number of subscriptions to handle, but the current design forces me to declare a unique handler for each, resulting in an unnecessary proliferation of code.
What I want to do is this:
context.api.subscriptions.subscribeToDevices(context.config.buttonList, 'button', 'button', 'commonhandler'))
context.api.subscriptions.subscribeToDevices(context.config.contactList, contactSensor', contact', 'commonhandler'))
.
.
.
context.api.subscriptions.subscribeToDevices(context.config.motionList, 'motionSensor', motion', 'commonhandler'))
subscribedEventHandler('commonHandler', (context, deviceEvent) => {
<do common stuff>
}
However, I get a subscriptionName conflict error if I try to do that. What I seem to be forced to do is define unique handlers for each like this:
context.api.subscriptions.subscribeToDevices(context.config.buttonList, 'button', 'button', 'buttonhandler'))
context.api.subscriptions.subscribeToDevices(context.config.contactList, contactSensor', contact', 'contacthandler'))
.
.
.
context.api.subscriptions.subscribeToDevices(context.config.motionList, 'motionSensor', motion', 'motionhandler'))
subscribedEventHandler('buttonHandler', (context, deviceEvent) => {
<do same stuff, or call a common do-stuff routine here>
}
subscribedEventHandler('contactHandler', (context, deviceEvent) => {
<do same stuff, or call a common do-stuff routine here>
}
.
.
.
subscribedEventHandler('motionHandler', (context, deviceEvent) => {
<do same stuff, or call a common do-stuff routine here>
}
Is there a better way to accomplish this or perhaps this is a needed design change in the SDK?