Keeping State between devices
Posted: Mon Dec 31, 2012 3:06 am
Hello,
I was wondering/hoping there was this little gem hidden in a place I have not found yet... so if it is, can someone direct me to it? If not, consider this a feature request!
I am in the development process of my first remote with DemoPad and realized that there will be a slight issue with multiple device use... So I wrote up this little use case to try and make sense to what I am trying to accomplish.
In my home there are 4 iOS devices (iPhone 4S, iPhone 5, iPad 2nd Gen, iPad Mini) and I am going to be designing an interface for each one for multi-room control in the new house I am getting ready to move into. In different rooms there will be different 'activities' that could be done in each, for example in the living room I will have TV (Roku + TV + AV Receiver) and games (PS3/Wii U + TV + AV Receiver). The PS3 and Wii U are on a HDMI switch so that has no baring on the setup. Now lets say I walk in and decide that I am going to do a bit of gaming and have my iPhone 4S handy. I whip out the iPhone, open DemoPad and hit a toggle button for gaming and as if by magic everything turns on and switches accordingly. I game and have a great time. I then decide to walk away for a few seconds, during this time my wife gets home and decides she wants to watch tv from the Roku. She pulls out her iPhone 5 (or grabs her iPad mini, doesn't really matter) and it has no knowledge of the fact that I have it set to gaming. So when she hits the Roku toggle the device sends a bunch of un-needed turn on commands which as long as all devices have discrete (is that the right word) commands for 'Power On' that is not a big deal. The issue comes in when a device doesn't support that...now that device is getting shut off.
Now that I have defined the problem (hopefully in terms that everyone understands) I would like to define a few solutions I have come up with, but again, if the system is already able to handle this then please just tell me how.
Solutions:
1. A 'State' server (This would be a solution I could design as a separate product from DemoPad). The idea would be have a simple web server setup with some type of database or storage backend. When the DemoPad system updates a flag, number, or dynamic label that the end user wants sync'd across their devices they add an action to send that info to this server. The server simply stores it and serves it up to devices that ask for an update to that flag, number, or dynamic label. Now this will work, just adds more un-needed complexity to the remote setup because now the remote needs to check the state server for updated values for all values that the user wants sync'd. Granted this could be a small task for simple remotes (like in the example I gave above) but this could make it very difficult in complex remotes. As such this solution is possible but not ideal
2. Ability to turn on sync on flags, numbers, dynamic labels in the DemoPad system. Now this should be an option as obviously you don't always want the variables sync'd. This would sync the data down to icloud, dropbox, or similar which all other devices would be setup to pickup updates and update accordingly. This would also have to give the ability to trigger actions based on when something is updated from a sync or not trigger an action based off a sync (for example if you have actions to take place automatically when a number changes...if a device updates the number and the actions trigger you will want to be able to keep those same actions from being trigged by the second, third, fourth, etc device that the number syncs to). This obviously would require some coding on DempPad but would be a more integrated system then solution 1 above.
I think that there needs to be a solution to this problem as it would allow for much more complex remotes to be designed for multi-device homes which would be great! Without a solution for this issue multi-device homes would be almost forced into a system that is not always aware of what is on and not unless every single device in the setup supports two-way feedback (which might eventually be the norm but I know for a fact that my house does not currently support two-way feedback throughout all devices)
If in all my mess of typing anything is not understood please let me know and I will try and clarify as I would love to see this feature implemented.
I was wondering/hoping there was this little gem hidden in a place I have not found yet... so if it is, can someone direct me to it? If not, consider this a feature request!
I am in the development process of my first remote with DemoPad and realized that there will be a slight issue with multiple device use... So I wrote up this little use case to try and make sense to what I am trying to accomplish.
In my home there are 4 iOS devices (iPhone 4S, iPhone 5, iPad 2nd Gen, iPad Mini) and I am going to be designing an interface for each one for multi-room control in the new house I am getting ready to move into. In different rooms there will be different 'activities' that could be done in each, for example in the living room I will have TV (Roku + TV + AV Receiver) and games (PS3/Wii U + TV + AV Receiver). The PS3 and Wii U are on a HDMI switch so that has no baring on the setup. Now lets say I walk in and decide that I am going to do a bit of gaming and have my iPhone 4S handy. I whip out the iPhone, open DemoPad and hit a toggle button for gaming and as if by magic everything turns on and switches accordingly. I game and have a great time. I then decide to walk away for a few seconds, during this time my wife gets home and decides she wants to watch tv from the Roku. She pulls out her iPhone 5 (or grabs her iPad mini, doesn't really matter) and it has no knowledge of the fact that I have it set to gaming. So when she hits the Roku toggle the device sends a bunch of un-needed turn on commands which as long as all devices have discrete (is that the right word) commands for 'Power On' that is not a big deal. The issue comes in when a device doesn't support that...now that device is getting shut off.
Now that I have defined the problem (hopefully in terms that everyone understands) I would like to define a few solutions I have come up with, but again, if the system is already able to handle this then please just tell me how.
Solutions:
1. A 'State' server (This would be a solution I could design as a separate product from DemoPad). The idea would be have a simple web server setup with some type of database or storage backend. When the DemoPad system updates a flag, number, or dynamic label that the end user wants sync'd across their devices they add an action to send that info to this server. The server simply stores it and serves it up to devices that ask for an update to that flag, number, or dynamic label. Now this will work, just adds more un-needed complexity to the remote setup because now the remote needs to check the state server for updated values for all values that the user wants sync'd. Granted this could be a small task for simple remotes (like in the example I gave above) but this could make it very difficult in complex remotes. As such this solution is possible but not ideal
2. Ability to turn on sync on flags, numbers, dynamic labels in the DemoPad system. Now this should be an option as obviously you don't always want the variables sync'd. This would sync the data down to icloud, dropbox, or similar which all other devices would be setup to pickup updates and update accordingly. This would also have to give the ability to trigger actions based on when something is updated from a sync or not trigger an action based off a sync (for example if you have actions to take place automatically when a number changes...if a device updates the number and the actions trigger you will want to be able to keep those same actions from being trigged by the second, third, fourth, etc device that the number syncs to). This obviously would require some coding on DempPad but would be a more integrated system then solution 1 above.
I think that there needs to be a solution to this problem as it would allow for much more complex remotes to be designed for multi-device homes which would be great! Without a solution for this issue multi-device homes would be almost forced into a system that is not always aware of what is on and not unless every single device in the setup supports two-way feedback (which might eventually be the norm but I know for a fact that my house does not currently support two-way feedback throughout all devices)
If in all my mess of typing anything is not understood please let me know and I will try and clarify as I would love to see this feature implemented.