CQC 1.5 Info

Dean Roddey

Senior Member
Charmed Quark Systems, Ltd is proud to announce the 1.5 release of CQC (the Charmed Quark Controller), its software-based control and automation system.

Charmed Quark System's automation products provide robust, flexible, and cost effective control of lighting, HVAC, security, home theater, media data, and other systems. It is available in various configurations, which will scale to meet your needs, whether large or small, open or secure, a single room or the whole home. Build your own hardware, or use our pre-built systems. Do it yourself or take advantage of our reasonable consulting and customization services, whatever fits your needs and budget.

In the remainder of this document some screen shots will be provided. These are of the interfaces created for various CQC-based automation solutions. Please note that there is nothing, visually or functionally, about these images that is intrinsic to CQC. They were created using the CQC interface designer, using arbitrary images chosen for their asethetics and the functionality provided is purely a matter of design, so they are not 'skins' providing alternate looks for a fixed set of functionality, nor are you in any way limited to a particular visual style. they are pretty significantly reduced in size and quality in order to avoid download overhead


Click here for a full sized version

What's New Overview

The list of new features for 1.5 is not long, but some of them are very important and greatly extend CQC's automation capabilities.
  • Web Server. CQC now incorporates a zero configuration web server, so that you can access CQC from devices that only have a web server as a client interface, or remotely via any web browser. It implements digest style authentication and page access can be controlled based on CQC security as desired. Dynamic content pages can be served up via our CML macro language, and images can be accessed from the CQC image repository, as well as from on-disk image and HTML content.
  • Event System. CQC now supports network wide event handling, which allows it to respond to changes in the system automatically, throughout the network. These new 'triggered events' which complement the existing scheduled events, allow you to create very powerful automation logic. There is a simple but powerful filtering language to tell CQC what events should trigger a given action.
  • Web Browser Widget. The user interface system now supports a web browser widget, so you can embed web pages into your user interfaces. The widget supports standard web navigation commands and URL setting commands, so you can allow for easy access to specific web sites.
  • Graphical Text. The user interface system now supports special 'graphical text' effects. So you can now create gradient text, reflected text, blurs, and blurred drop shadows. These effects contribute greatly to the ability to create serious 'eye candy' interfaces.
  • Web Access Classes. The CML language runtime has been expanded to provide HTTP and URL classes. These allow CML based drivers and macros to easily access web-based content.
  • Standalone Viewer Mode. You can now install CQC on a client in 'standalone viewer mode', which just installs the support libraries and the interface viewer, without any background services. This is intended for clients such as tablet PCs or laptops, where you just want to view interfaces, without the extra overhead of background services.
  • New/Improved Drivers. New drivers are available for the Aprilaire 8870 RS-485 thermostat system, the Proliphix NT10e and NT20e IP based thermostats, the Sherwood 965 A/V processor, caller ID modems, Neothings Avalong A/V switcher, and the Elk M1 driver has been expanded significantly.
  • .Net Viewer Updates. The .Net Viewer has been brought into sync with the 1.5 release and now implements almost all of the interface widget types and functionality.

Web Server

The CQC web server is our own, not an existing server that we licensed, so it is fully integrated into CQC. It allows you to access file based images and HTML content, and to generate dynamic HTML on the fly via our CML macro language. File based HTML can use a simple replacement tokens in order to embed live system status values into the HTML, which makes it very easy to use standard HTML editing tools to create nice interfaces which display device status.


Using CML, you can handle requests for pages and generate dynamic HTML on the fly, which can include device status or any other information you can get to and want to include in the HTML you generate. There is a CML base class that does most of the work, and you derive from it.

Security is based on CQC accounts. So you can limit particular pages to be available to users of particular privilege levels. This applies to both dynamic and file based content. In order to avoid the complexity of the .htaccess scheme used in servers like Apache, the CQC web server just has special areas of the 'URL space' that represent each user privilege level. Any URL not under these areas are freely accessible. Any URL under a particular user level area can be accessed by users of that level and above, as long as they have a valid CQC user name and web password. For security, separate passwords are assigned by the admin for web access. This allows the admin to both prevent any web access at all to particular users, and avoids the use of the CQC internal passwords during remote access over the net.

Event System

On the pure automation front, one way in which CQC always suffered in comparison to some of its competitors is that it did not offer an event system. It supported 'scheduled events', which run at given times, but not events that are triggered in response to some change in the state of the devices under control, i.e. things like "If the DVD player door closed and a DVD in in the drive, turn off the lights and switch everything to DVD viewing mode", and so forth. Partly this was due to the fact that CQC's networked architecture makes such event handling far more complex than in single box, single user architctures.


Click here for a full sized version

This architectural hole has now been filled, and you can define 'triggered events' that will fire based on criteria that you express using a simple but powerful filter language. These filters can be quite simple or quite complex, according to need. The DVD in teh driver example above would be a fairly simple one. Other uses include reacting to motion detectors, reacting to a change in security zone status, to a change in a moisture sensor, and so forth.

Web Access Features

The new web browser widget provides a lot of flexibility for including external content in your interfaces such as weather radar images, news pages, control pages for devices that only provide web-based interfaces, and so forth. Other interface buttons can send it commands to go back, to go to the home page, to load a new URL, and so forth. So you can provide controlled access to particular web pages via buttons on your interface.


Click here for a full sized version

The new CML runtime HTTP classes allow your macros or CML based drivers to access web based resources with minimal muss and fuss on your part. They provide nice, high level features for dealing with HTTP PUT/GET exchanges and handle all the parsing for you.

Graphical Text Effects

The new graphical text effects support in the interface system significantly increases your ability to create sexy interfaces. Though some of these effects could have been done previously by pre-drawing text as images and using the images, for dynamic text values gotten from devices, that wasn't possible since there was no way to know ahead of time what the text might be, or it might have so many values you couldn't possibly do all those images.


Click here for a full sized version

Gradient text effects and reflections are reasonably light weight and can be used very effectively in certain types of interfaces. They can be used subtly such as to blend text into the glare effect of a button image, or can be important visual elements of a particular interface style. Blurs are heavier weight in terms of CPU usage, but most modern multi-GHz systems wouldn't have any problem with them.

Give it a Whirl

The product is available in a 30 day unencumbered form, so you can use it to it's fullest extent during that time, in order to see if it works for you. If you decide to buy, you can just license your existing installation, so that you won't have any interruption of your work done during the trial period. To download the installer, click the Try/Buy tab of the main web site menu, or the Try It button in the upper right hand corner.


Then go to the Learn tab of the new web site, and select the Quick Tutorial link, which will talk you through the whole process. You might want to go through the Using CQC section (also under Learn) first, but if you are hands on person you can just dive right in and come back to the Using section later.

Our license is a site license, and all our device drivers are part of the package. So there's just one base package and a few optional packages to choose from. You can then run the client services on any other devices in your home network that you choose.
There's not a whole lot to see. Basically you use the 'field browser', which is just a window that provides you with generic access to all of the devices and their fields, to find the fields that you want events to be triggered for and you edit their event triggers. This is basically just three choices:

1 - Don't send events for this field
2 - Always send events if this field changes value
3 - Send events if the new value meets this criteria (where the criteria are things like IsTrue, IsFalse, IsEqual, IsGreaterThan, IsNull, ect...)

That handles the sending side. Doing it this way insures that you have no more event traffic on the network than required, since only those fields that you care about will generate events.

On the receiving side, which currently is just the event server but other stuff will be able to react to them in the future, such as the interface viewer, you define some action you want to happen, which is done the same as any other action you define in CQC, and then you define a filter that CQC uses to decide if a given event should trigger that action. It uses a simple filter language. The most common filter would look something like:


I.e. if the field AField in device MyDev changed value (which caused a field change event), then do the action. If you had a motion detector device and wanted to do something if it triggered after dark, it might look like:

IfAll(IsFldChangeFor("MyMD.Dect1"), IsNight())

So if it is both a field change event for Dect1 of MyMD and it's nighttime locally, then trigger the action. If you wanted to do something when the value of the A/V processor's is changed to the Satelitte source, it migth look like:

IsNewFldValFor(“MyDevice.Foobarâ€, “Satelliteâ€);

So this expression says, if it's a field change event, for the Foobar field of the MyDevice device, and the new value is "Satellite", then trigger the event.

If you want details, the whole system is documented in detail. Go to the web site, select the Learn tab, then Technical Documents, and then the Event System Guide document. It's a fairly short document. The expressions are generally going to be no more complex than the ones above, but they can get quite elaborate if you need them to be.
A new release, 1.5.7, is available now, which takes care of a few small but important things that slipped through the testing on the initial 1.5 release. If you are using the 1.5.6 release it's recommended that you upgrade.
I just uploaded a new user gallery (the galleries are under the Gallery tab of the web site.) This one is a good contrast to the existing ones in that it is purely driven via a PocketPC. It's a home theater oriented installation in this case. This new one is the The Palm of Your Hand gallery.
BTW, I forgot to mention that 1.5.7, in addition to small fixes, also includes a DVD Profiler driver, so we can now support on-disk DVD repositories via DVD Profiler's exported XML file and, in the next release in mid-January, changer-based ones as well with the Sony 777 changer (using the Location/Slot fields to indicate which changer and which slot the DVD is in.)

We use the same convention for disk based repositories as the My Movies MCE plugin (i.e. using the Notes field for indicating the file location, and in the same format as they use), so you could easily move such a repository over to CQC if you wanted.
FYI: The DVDProfiler driver is what drives the art on this screen below. [the denon driver handles the leftnav stuff]

I've converted my own system over to a Sony 777ES changer based scheme for the movies. I'm using DVD Profiler for the metadata. The CQC DVD Profiler driver allows you to browse the available titles:


And, in my setup anyway, when you select one it loads it up in the changer, selects all the right audio and video inputs, and then loads the current movie overlay, which has transport controls for the changer.


It's working out quite nicely. I've had a completely manual system before. Now with the movies in the changer and music on the hard drive (using J.River for the metadata there), it's basically the equiv of an Escient Fireball plus a Crestron automation system, for less than the cost of either. Once we have our own repository and metadata retrieval it will provide equivalent functionality to the Fireball, though you'll have to have a video switcher if you use more than one changer. CQC will manage multiple changers just fine and it can manage the switcher for you also.
BTW, we don't have a gallery for this system on our web site, but here is a gallery of users interfaces of another CQC user. I really like the style he's gone for here. He's using CQC to run multiple instances of Zoom Player, each of which is running on a separate channel of an M-Audio 4 channel card, and each one is feeding into his Xantech audio distirbution amplifier. So he can control any zone from any computer in the house and get full two way control over the whole thing. He's using our J.River integration to feed the meta data into CQC for browsing. And he's controlling his Outlaw A/V processor and serially controlled Denon 2910 DVD player and other equipment in the home theater.


The top level URL for his site, which contains all the info is at:

I've now added support for the Rad-IO system to CQC. You can now run 8 instances of the user interface viewer, using a /RadIO=x parameter, where x is 1 through 8, which will make it come up in a frameless style and position itself in the x'th octant of the 640x480 area available. Since you are running separate interface viewer instances, each one is completely independent, so there won't be any interference between the separate instances when invoking commands.

This will be available in the next release, which is about a week or so off at this point. No more features are going in, so it's a matter of hunkering down and doing unit, regression, and system testing, then I can get a beta out by the late weekend for some evaluation.
Yeh, that's the one. It's the RedRadio Rad-IO product. The one that supports the 8 small touch screens via the single graphics card.
Awesome! It seems like an interesting product. It might be perfect for audio controllers in each room.

ALso, just to let you know Dean, I am most likely going to be using CQC for my entire house automation. The framing is going up in two weeks, and so things are coming along.

I am going to be doing lighting/hvac/security/survellaince/intercom/whole house audio/HD video distribution/irrigation.

I have been researching a lot, and I really like CQC and its community. So maybe once things get further along, I could help to test all of the new drivers and such.

Thanks again Dean!