So, I’ve been using SmartThings a long time and have hundreds of devices. Almost weekly, I have to go around and fix bad devices (dropped off network, etc)… After getting the devices reconnected, often times as a new device, the biggest PITA is getting all of the SmartApps re-associated… both very specific apps & routines as well as all of the general ones like Alexa, IFTTT, Tiles, etc… then to get those linkages fixed… huge PITA! So, my smarthome feels 10% broken all of the time…
It seems to me that one of the biggest deficiencies of ST is the hard links between the devices and the apps. It’s very constraining and prevents all kinds of useful functionality (grouping, role based devices, easy replacement/changing of devices, etc). So, I’d like to get opinions about creating some kind of universal device abstraction functionality.
There are many solutions out there for virtual devices that are great, but they are mostly designed to solve point problems. The Universal Device Type Handler (uDTH) is probably at the basis of a solution like this. I think there needs to be a SmartApp to manage the creation of new devices, mapping between virtual and physical devices (including groupings), attribute/capability translation and sync. I suspect that an implementation like this could get complex fairly fast, so I’d image that you’d need a webCoRE-like design and web based interface (outside of ST app) (perhaps this could be built into webCoRE). ActionTiles could do a lite version of this at the presentation layer…
I’d imagine that the physical devices would have some kind of prefix like zzz (to keep them grouped and out of the way)… they would have only 1 SmartApp, the virtual device manager (VDM)… all of their events would be sent to the VDM, translated and sent to the virtual device(s). The Virtual Devices would subscribe to all of the unique SmartApps like webCoRE, Alexa, IFTTT, etc… When those apps trigger an action on the virtual device, the VDM would translate that accordingly back the the physical device…
Use cases:
- back up your ST installation… you could backup the virtual device configurations (i.e. webCoRE)… if you need to replace a hub, it would be much easier to only have to repair the devices (yeah, still a huge PITA, but maybe 50% better)
- group lights (3 smart bulbs for uplighting) to keep in sync
- translate capabilities/attributes (switch to alarm or motion), just like the uDTH
- aggregate functionality of multiple devices (smart lock+contact sensor=door: opened/closed/locked) (garage door open/close/position) (I realize I’m mixing states and actions, but you know what I mean)
- replace a smart bulb with a smart switch, etc (zigbee, zwave, wifi, etc)
- halloween or holidays when we want to temporarily repurpose devices, you can keep the original functionality programmed (so you don’t have to figure it out when you put things back) (i.e. I repurpose some smart outlets between hallway lamps and Christmas lights and you want it to do different things in each case… I have to figure out what it was doing before when I move it back… very time consuming and error prone) I’d label this role-based functionality… you can plug and unplug the virtual devices and the physical devices from each other…
- once you configure your SmartTiles or Alexa or IFTTT, etc, with the virtual device, there isn’t a need to reconfigure/rediscover when you change the underlying infrastructure… (BTW, I’m an IT Infrastructure guys and the best thing that ever happened to us was virtualization, now cloud… all layers of abstraction that solved real world problems/limitations)
- could be used to assign alternate names to the devices (similar to groups is Alexa, but would apply universally)
- … I’m sure there are many more real work uses cases, but these are off the top of my head …
I feel like I might be missing something fundamental here… some smart apps talk in specific ways to devices (i.e. lock manager and locks) What are the other technical challenges? Are they show stoppers or do they only reduce 100% universal adoption? Perhaps a fair amount of overhead on the ST platform? Cloud only, I’m sure.
I would love to hear that something like this already exists… I’ve only seen it in many parts through the great work of the community… please advise.
I am no match to develop a solution like this, but this community has some great minds and skills. I’d be interested in your thoughts… seems like this should be core to the ST platform, but so does a rules engine, a dashboard, etc… perhaps the next big functionality for CoRE?