The ISY994i is great, but like the out-of-the-box AppleTV, it’s a little bit of a walled garden in the sense that you can’t deploy your own code to the device, and can’t really directly tweak the functionality of what’s available on it. But that doesn’t mean it’s not incredibly powerful – Universal Devices provides extensive APIs via web services or all of the major programming languages to extend the functionality from your desktop.
There’s also a somewhat hidden set of modules that you can purchase to extend the native functionality as well. To access these APIs, go to Help:Purchase Modules in your Admin Console, and you should end up at a not-so glamorous looking page like this:
There are no screen shots, no links to documentation, no graphics at all. It really feels like a forgotten corner of the Universal Devices web site but it does, in fact, work. After paying for your purchase using Google Checkout, the module automatically becomes available in your admin console the next time you fire it up. It is able to do this because the ISY’s unique identifier (the UUID) is sent along with the purchase, so the next time the ISY-994i starts up it checks with the server for modules available to it.
The key module that I’m recommending here is the Network Module, described simply as follows:
Use your ISY as a web server to serve up your own applications, pictures, and files. The module also includes Wake On Lan (turn your computers on using ISY progrmas) and Network Resources which enable you to call any network resource (TCP/UDP/HTTP/HTTPS).
In other words, there are a couple of key features with this module (the documentation can be found here):
- Wake On Lan. Turn on a computer in response to an event or program in the ISY
- Web Server. Serve basic HTML and image files and change the default home page for your ISY. Sorry, no ability to run CGI, Java, or PHP here – just regular old HTML.
- Network Services. Have the the ISY-994i make web requests to other applications, firing off specific external actions in response to events and programs.
- Dynamic File Generation. Have the ISY-994i dynamically create or append to files being served up via the web server (mostly useful for logging events).
While it would be nice to be able to use the Web Server to replace the existing UI, that just doesn’t seem possible because you can’t dynamically access the state of devices or scenes, so the web server seems to have pretty limited use.
The feature I do find very useful, however, is the Network Services component, which allows the ISY to make network requests to external services. Universal Devices even maintains a page on their wiki for sample services you can interact with. For example, applications like XBMC, TiVo (a module for this is available here), and Windows Media Center all have some form of network interface that allow you to send commands. So, for example, you could use the Network Module to tell XBMC on your AppleTV to play your favorite playlist when a certain scene is activated. The possibilities are endless, and I’ll provide some examples in an upcoming post.