SDK/Architecture Questions

I’ve read both docs available and have a few more questions on the upcoming SDK.

  1. Is it possible to get a nice diagram of how you intend on connecting all these pieces together.  How are pieces are communicating, what pieces are communicating, what’s going to be open, what’s not, etc.  Things might be a little easier to digest if we could see your roadmap in a picture.

  2. I’m looking at not just integrating everything into SmartThings, but also the other way around so I’m particularly interested in how we can get data out of SmartTags.  For example I already have a Flex/Flash front end for my home automation system that I want to be able to incorporate SmartTags into. I’ll need to be able to handle events, send events, configure devices, make triggers, etc.

Without some type of server software that you have direct API hooks into it looks like there could be a few options.

Direct Socket Connection - this seems the best option. Maintaining a persistent connection to receive events. However, what would you connect to... the hub, the cloud server?  If a SmartApp is running on the hub, do I have the ability to communicate directly to the SmartApp?  Do all SmartApps communicate to some piece of software (which I'd connect to) running on the hub which then pushes everything out to the cloud? Do I have to rely on something running in the cloud to push the data out to me?
Web Services - Since pretty much anything can use or consume them, they work well except for one thing.  Unless every device or SmartApp has some central way of notifying a change of status via a web service, it seems like if you want the status of all your devices, you'd have to be constantly polling for a state change. Obviously, that's less than ideal.

So that’s my question - could we get a little more detail on how we’ll get access to data if we want to write our own front ends, phone apps, etc. to integrate into our existing systems?  Or is the answer that we’ll have to use your apps for everything.

 

Also, would there be a provision for local storage of data? Let’s say for some reason you don’t have internet access or for various other reasons, you want all data stored on a local server instead of the cloud.  Would this be possible?

I have a similar question too. I think the network they have going of collecting that data is great.  How do I get the data out to make my own UI or smart analysis of the data?  API Hooks, REST API, Socket Connections etc???