I'm offering up the Indigo plugins I've written to be downloaded/used by whoever wants to. I am not a programmer, and you accept full liability if you use these plugins and anything goes wrong. But hey, they're free. (Unless you want to sell them or copy them and resell what you copy. That's not allowed.)
I welcome any feedback you may have.
In this implementation, you define the serial connection in the main config dialog box, and then the spa, pool, lights, cleaner, etc... are all set up as devices.
There's a couple of included actions. There is "All Lights On" and "All Lights Off" which use the interfaces native command for such. Useful because turning on the spa light, then the pool light can let the Intellibrite light modes get slightly out of sync. Also, there is an action to change the mode of the Intellibrite lights (but it is never reported as a state, as that is not maintained by the serial interface).
The System's air temp sensor is reported in a variable that the plugin will create.
Finally, when setting up Pool and Spa, you have a choice of device type. Custom, or Relay. They both control on/off and have states for heat set point and current temp. These states are visible in Indigo if you choose Custom, but hidden if you use Relay (they are still accessible for triggers/etc though). The advantage to setting the devices up as Relay is that you can use the on/off buttons in Indigo and Indigo Touch to control them directly - which is something I was interested in for myself.
UPDATE: April 2015. I was tired of seeing every temperature update (for pool, spa and air temp) clog up my Event Log, so I added an option to suppress the logging. The temps still update, they just don't log every time they change.
The plugin is pretty simple to use: Choose a serial port in the main config dialog box, and optionally rename some of your source inputs.
Each Zone in your home can be represented as a device. You have your choice of setting it up as a 'Custom' device (which displays the state, source and volume in the Indigo main window), or as a 'Relay' device, which still carries those states, but appears as a simple on off device and then affords you control of those using the native controls in Indigo and Indigo Touch. You cannot setup any zone as both kinds of devices.
What the plugin does:
Basically, this is in no way a replacement for NuVo's full featured control app. With my plugin, you can monitor and control the plugin's state, input and volume.
This is really why I built this plugin. There are two key actions:
Send Text Alert - This flashes a text message (up to 50 characters) of your choice onto the control keypads of your choice. Use it for mild alerts, system state changes, whatever.
Speak Announcement - This speaks an announcement of your choosing over whichever zones you choose. It will log the current state, volume, etc... interrupt with the announcement and set everything back to how it was. You will need your computer audio hooked up to the Grand Concerto for this, either directly, or with Airfoil/Airport Express.
At this point I have no handling of any of the zone metadata (track info, etc...). For my purposes it was unnecessary, but something I may look into in the future.
UPDATE: December 2014. Plugin version 1.2 now has a small change so that when changing the volume, less information is logged to Indigo. Prior versions reported zone status, input and volume on every state change, so changing the volume reported 3 lines of data for every increment of volume change. Now volume changes report only the new volume (volume is 31, volume is 32, etc...)
UPDATE: March 2015. Plugin version 1.4 now has the option to manually specify how long a zone should stay active when speaking an announcement. If not specified, the plugin should simply 'wait' until the announcement has finished being spoken before deactivating the zone, but I've had some inconsistent behavior here where the system doesn't follow the 'wait' command. In the event this is an issue, you can now simply specify and arbitrary amount of seconds in which to make the announcement. Other small tweaks and bug fixes.
This plugin is based on the NuVo Grand Concerto plugin (since they do relatively similar things) except it's even simpler with no accessory actions.
Basically, you specify your matrix switch at the plugin configuration level, with each output zone being configured as a 'device'. Each of these devices will have only one state, and that is which input is playing.
The plugin allows you to change the input playing on any zone, and reports any changes made on the switch itself back to the plugin. One note: The serial protocol for the matrix does not automatically report any state changes made, so in order to track them, the plugin polls the matrix at regular intervals (I think currently every 10 sec). As a result, there may be some lag between when you change the input on one zone and when it shows up in the plugin.
I built the plugin for an 8x8 switch, but should work ok for a 4x4 switch. One of the larger switches (16x16 or 32x32) would need a slight modification to the plugin.