Precisely. So can someone compose a jargon-free list of V3's strengths? Something understandable to new buyers, and not existing CQCers, would be ideal.
Just trying to be helpful; as a non-CQCer I can't find an easily digestible, official list of new features.
There isn't such a list yet. It'll be in the News area of the new web site content and in an announcement post of course when the release comes out. But I've not written those yet. Because of the nature of the changes in this release, many of them are pretty 'detaily' and wouldn't make much sense to a new user. That's the way the cookie crumbles sometimes. Some releases are all easily explainable stuff and some aren't. This one mostly isn't, other than the two I mentioned above. Those were very big ticket items that took months each to do because they required some fundamental changes.
I'll take a shot at a few of them, to try to make them sensible to non-users.
- In CQC, as in most automation systems, there are devices under control and each of those devices exposes various readale and writeable parameters. In CQC those are called fields. So each device is composed of a set of fields. Our user interface system is a very object oriented thing. You pick various types of interface elements, called Widgets in CQC-speak, and drop them on your interface and configure them to do what you want. One category of widgets are those that display some value or react to some value. Currently, those values can only be device fields.
And that was fine for a long time. But, as people started wanting to do fancier and fancier interfaces, it became a limitation because there was no way to have those widgets display or react to values that exist purely within each client machine running a user interface. So, for instance, if you had a set of buttons, each of which loads a new 'overlay' (an area inside an interface into which smaller interfaces can be loaded), and you wanted the one that was last pressed to light up or something like that, there was no convenient way to do that before, because that requires that the button be able to light up in response to some local value, not just in response to a field value.
There already existed 'variables', which are temporary value holders that are used within any automation logic in CQC to hold values as they are operated on. But these couldn't be used to drive such widgets. So, we completely swizzled the whole thing around so that variables are treated the same a fields (not 100% yet but pretty close), so that these variables can drive those types of widgets as well. And, as we were going, we also made 'static' versions of most of them as well, which aren't attached to anything but just maintain an internal value that can be set by the user any time, and used for whatever local purpose you want when the user interacts with it. Also variables can be fully typed and given legal value ranges now, instead of just all being generic text values, which allows for much more self-checking automation logic.
Another side effect of that is that, if you want to reuse an interface (called a template in CQC-speak, so I'll use template from here on out), that is now more powerful. If you have, say, an 8 zone audio system, and you want to reuse that template for each zone, then you need to (as it is loaded) remap any of the fields to the zone you want to control. Before that could be done only in a fairly simple way and only when the template is loading. Now, you can apply full automation logic to that remapping, and you can change the field or variable associated with a widget at any time if you want. This also makes for much more flexible and dynamic templates and better reusability.
That's all a bit wonky I know if you aren't already into it. But it makes a huge difference in terms of how programmable and flexible the user interfaces are, and this is all without writing any code, just point and click. Probably most folks who haven't used our system don't realize how powerful our interface system really is. We've gotten a number of requests from other companies to make it available as a standalone technology so they could use it, but that just wouldn't be possible. It really is a highly programmable user interface system, that allows you to create very sexy looking and smart interfaces with zero coding.
- Event System. As with most automation systems, CQC has triggered and scheduled events. Scheduled events are obvious, they do things at particular times. Triggered events respond to changes in a device or devices in the system and do something in response. Previously, the only control you had over scheduled events from your created user interfaces was to enable/disable them. We of coures provide an adminstrative screen to manage them all, but in your own created graphical interfaces you couldn't see and change the schedule. The ability to do that was added in this release, which a lot of people really wanted.
Also, there was previously no way in your user interfaces to react to such triggers and do something. Previously only the event server would see those events and react to them in configured ways. But folks wanted to be able to things like show an indicator if the doorbell was pushed and things like that, things that couldn't really done just by looking at the state of devices. So that was added as well.
- The remote viewer. Our product is of course Windows based. So we had no non-Windows client support for displaying our user interfaces. We provide our native Windows interface viewer, and we had a .Net viewer for CE devices. The .Net viewer was implemented in terms of our 'XML Gateway' protocol, which provides access to the CQC system via a XML based protocol over a socket. Other folks could have implemented clients on other platforms, but the problem with this is that implementing a full featured client could take 50,000 lines of code perhaps to do that, because our interface system is very full featured.
The XML Gateway is still there, and folks would still use it to interface third party systems to CQC if they want, or to build any fully customized client interfaces that they wanted to do. But we created the remote viewer system for 3.0. This is something like X-Windows if you are familiar with that. The actual work all happens on a server, and only the graphical commands to draw are sent to the client. So the client can be very thin, probably 2000 to 4000 lines of code and that includes all the general goop that is required to do the local system specific application stuff. This will make it far easier to implement a client on Linux, Mac, set top boxes, etc... And, since it only has to handle raw graphics commands, if we add new widget types, as long as it doesn't require new graphicsl commands (very unlikely), then the clients will automatically handle that, whereas with the previous scheme, all the clients would have to be updated to deal with this new stuff.
So this is a big one. It doesn't have huge immediate benefits, since no one has had time yet to implement a client on another platform. This was the last big bit done, so it is just now really fully stablized and ready to go. But the benefits will be significant down the road a bit.
- Media Stuff. A smaller one is the addition of support for both large and small cover art images, but people were really hot for that. We have a very generic media architcture that allows us to deal with many media repositories and have them all look exactly the same within CQC. So adding fundamental changes can be a bit of work. But before we only supported one image, which was used both for browsing and in preview and 'now playing' type screens. But folks wanted a large, high image for preview, so we added support to have the large one and a thumbnail, and let you use the one want.
Also a media type field was added to our media database, so that user logic can react to the media type and invoke the correct player for DVD, blu-ray, HD-DVD and so forth.
And support for playlists was added to our 'file tag repository', which is one of the forms of media repository we support that just pulls tag info from the files. Previously it didn't support .m3u/.m3u8 type playlist files.
Support for MyMovies was added in 3.0 as well, which a lot of folks wanted.
- We added support for encrypted drivers. Normally all our drivers are shipped with the product, no extra charge, and in readable form. But, some companies won't allow that, so we added support for encryption of drivers if it's necessary. Interestingly, it was the C-Bus driver that forced this issue, and a month after we went through the work to do it, they decided to openly release the protocol. Oh well... It's there should it be needed in the future and it probably will.
- Timed Field Changes. In order to support various operations where you want to set a device's field to one value, and then some relatively short period of time set it back to some other value, we implemented timed field writes. This means that the automation logic doesn't have to wait around for however long just to turn the sprinkler back off after 5 minutes or whatever. The first value is written and the second value is queued on the server for later writing. You can check to see if there's a value queued, and you can cancel that second value being written if you want. This is a small one in some ways, but very helpful for a lot of common operations.
- You can send HTML in CQC generated e-mails now, whereas before it was text only.
- We support a number of different types of IR devices, blasters, learners and receivers. You can now always use Pronto style commands for all of them, in addition to their native format if you want to paste in commands manually. Before, you had to either learn them via a learner/receiver that used their native format, or do a manual conversion from the Pronto/UIRT format to the native format. But now you can always use the UIRT/Pronto format, which makes it a lot easier to build up IR commands from places like RemoteCentral, and to get non-learnable commands from there as well.
- Timer in popups. In our interface system you can create 'popups' which are like modal dialog boxes in Windows, but they are completely graphical and part of our interface system. These are extensively used by most folks. One thing people wanted was the abiltiy to auto-timeout popups. So a timer was added. It can be set up to go off after a period of X minutes of inactivity or every X minutes. It can be used to update information on the popup like, shutting down the system in X minutes and that kind of thing, then eventually do the shutdown, or the other way around where you just let the popup close if the user takes no action after X minutes, that kind of stuff.
There are many more changes, but the others are more detailed and stuff that would not be interesting to read unless you are an existing user waiting for that change. For new users, you'll never know that wasn't there, so it's not much use to take the time to get into them. The end result of all these changes is a much more powerful system. We basically tried to knock out as much of the things that users were most wanting, so even if it's something small it was still probably much desired because it enabled some commonly needed functionality. And some of them, like the remote viewer, were driven by long term strategic needs of course.