The CQC Automation System
What It Is
CQC is a commercial quality, software based automation system, suitable for residential or commercial applications. If you aren't familiar with automation systems, this read me isn't the place to learn about that fairly large subject. There's a lot of information out there about them. You can also read through the broad overview in the CQC documentation (which will be available locally if you install it or build it, but it's also available online until then) at:
See the 'Automation Overview' topic on the left. You can also get a lot of information from the CQC Youtube channel as well. This will be CQC specific content but a lot of it will be generally applicable.
But, just to give a very simple list of the types of functionality CQC provides:
- Obviously control over devices is at the core of automation, to get information from them (and make it available internally in a consistent form) and to send out commands to devices.
- Powerful touch screen UI design which lets you visually expose device functionality to your users in a highly customized way.
- React to changes in device state and do things (turn on the lights when a motion sensor triggers, etc...)
- Invoke operations on a scheduled basis (turn on outside lights just before sunset, arm security system after a particular time, remind you to take out the trash on tuesday, etc...)
- Control devices via various means, e.g. phones, computers, remote controls, voice, wall mounted panels, motion, etc...)
- Have the system speak to you with important information.
- Manage media and media systems.
- Create your own custom clients that consume device data or control devices in some useful way.
- To combine multiple device states into single composite values so that they are much more convenient to react to or deal with.
- Send e-mails or texts when important changes in devices occur
- Create custom logic, which can be invoked in the various ways mentioned above
CQC is Windows based, but it supports non-Windows touch screen clients, which is where cross platform support is important. You will though need a Windows machine to install it on and for management. CQC has a Windows based flagship touch screen client, and it has a browser based client for phones and non-Windows tablets. The same interfaces are available on both, so you don't need separate UI designers.
CQC is a network distributed system, and you can install various parts of it on multiple machines in your local network, and manage them all from any CQC enabled Windows machine.
The back end could be available on Linux, but that requires that the work to get the underlying CIDLib system available on Linux to be completed. It used to be available, but that wasn't used for a long time and so that support sort of atrophied and needs to be redone. See the next section.
CQC is based on our very powerful CIDLib C++ development system, and it demonstrates the power and cleanliness of CIDLib as a development platform. There are no standard C++ or third party interfaces involved, it's all in terms of CIDLib APIs.
- Well, there are a few small places that haven't been abstracted down to CIDLib yet, but it's 99% in terms of CIDLib APIs.
This means that, if you want to build CQC, you will also need to load the CIDLib repository and build that first. They are separate repositories but designed to work together very easily. They both use the CIDLib build tool which fully understands all of the tools and requirements of CIDLib based development.
The build process will be documented in the Wiki (link above.) You will first need to build CIDLib of course. The environmental setup for CQC will point to the CIDLib system you've already built, and all of the needed interfaces will be picked up.
When you set up the Git repositories, put them both under a common sub-directory. That's the easiest way to do it and it's how I have them set up. So something like:
Their respective Git repositories should end up in these directories. Directly under these directories will be a Source directory that has all of the source. An Output directory will be created by the build process. In the case of CQC, there will a RawIntfImgs directory that has the raw PNG files from which the shipped image sets of CQC are built.
You will also want to create a CQCData directory there. CQCData is where the CQC backend puts its content. In a normal installed system, that's under the CQC installation directory. But, for development purposes, it's here under the CQC repository directory (though it is ignored by Git since everything in there is your own content.)
The only preparatory step you need to take, after you have built CQC, is to generate the standard set of images. There is a tool to convert all of the raw images into the form CQC uses, and put them under the CQCData directory in the right place. That's covered in the build instructions.
Since we have two separate Git repositories, you can't use Git from within Visual Studio Code since it can only understand one Git repository, but you definitely want it to see both code bases for all the obvious practical purposes. So I set my VSC project directory in the shared directory above the two code bases (the CQSL directory in the example above.)
So all Git operations are done outside of the IDE, at least if you use VSC. Visual Studio Code is available on Windows and Linux and provides an identical experience on both, so I'd definitely recommend looking into it. Whatever anyone uses we need to make sure Git ignores any housekeeping files they generate.
CQC builds on the history of CIDLib, so see the Readme.md in the CIDLib repository. CQC was initially started just to have something to do with the massive amount of general purpose code provided by CIDLib. It was also started as a commercial undertaking. Though, being business impaired, it was not because of any actual proof that this would be a good business venture. I just was interested in automation.
In retrospect, being business impaired isn't probably a good thing if you are going to go into business. We were never really albe to grow a viable market for CQC. It was too powerful for the average user, and the professional installers are extremely sensitive to the long term viability of the products they depend on, and the automation system is at the core of the business. Then of course a lot of large companies got into the lower end of automation, and the traditional high end, proprietary hardware based systems started migrating downwards as well.
After a couple decades of ever declining prospects, we open sourced the product. Hopefully it will attract developers who can help to leverage the massive power inherent in this system. It could be much more than just an automation system.
Both CQC and CIDLib are available under the MIT open source license.