Zeta Engineering Home Automation
Currently HCS_C supports X10 and Insteon powerline control, HCS_NET RS485 networks, ethernet internet connectivity, analog and digital inputs and outputs, and relay switching of devices. Keyboards, LCD displays, touchscreen displays, video (LCD computer monitors) and other devices are supported both at the base station or can be connected to remote modules.
HCS_C operation is managed with a simple but very powerful command language called HCS_C Xpress. It permits easy time or date control of any sensor or any action for any length of time. Random actuation (for example of house lighting while on vacation) is easy to do.
If you want to bring your house safety and management into the 21st century, HCS_C is the only system that brings all home control functions into one integrated system under your control!
Support for the original Circuit Cellar HCS2 is being maintained by William Maton and can be found here: http://www.wfms.org/hcs/ NOTE: If you are using an HCS2, consider adding the HCS Combo card to your setup! It is accessible via network string commands and should also be accessible using the Host network command, but I haven't tried it yet, too busy getting these cards shipped out!
Zeta Engineering HCS_C Status
7/17/2008: Ahhh!!! Sometimes HCS_C, and all the interesting pathways it takes, is just a source of indescribable fun! It turns out DarkBasic was too slow for my 3D virtual house--so I spent an entire weekend coming up to speed on the Dark GDK, which is free at http://gdk.thegamecreators.com/. You can get it to work with the free Visual Studio C++ Express from Microsoft, along with the Free DirectX SDK, to create C++ programs that are far faster than DarkBasic Pro. One thing--it ONLY works with the Aug 2007 version of Visual Studio, don't get a newer version, it will not work and is a bit ugly to clean up. You can't beat DarkBasic Pro for quick prototyping, but it is performance limited, whereas so far the Visual Studio and Dark GDK, while rather more painful to get the serial port connection working (took hours!), cant be beat for performance (I just couldn't keep DarkBasic Pro from dropping characters, and the serialport plugin wouldn't support the binary transfers that HCS_C does). And now I have learned the ability to create a simple 3D windows app! Stay posted, I'll try to put up a simple demo that should talk to your HCS_C (with only a very limited feature set) that will show you why I'm so excited! I'll put some pictures up shortly--it won't look like much, but hopefully you'll see the potential, and this should make it very easy for any of you to create your own customized host program. Note, you will need 1.09 HCS_C firmware to make the demo work (that version will also require a new 1.09 host.exe that talks the new protocol). I should be putting up an alpha version of 1.09 this weekend or maybe into next week just so you can try out the new host app demo... but be prepared for some major code turmoil, if you don't want to do that, you'll want to stay on the sidelines for another couple of weeks.
What's really great about this, is now the serial port protocol is fairly clean, so you can write your own app (C++, Visual Basic, Linux app, etc) to talk to the serial port. I've removed all the timed round-trip protocol stuff that was in HCS2, so now the interface is very simple--basically, HCS_C continuously sends data in binary format with a device header. You can receive these packets and display them however you want. If you need a particular packet, you can send a command on the serial port, and eventually a packet will come back with the data you want (there's no timed connection, and other packets may arrive before that one, but eventually you will get what you requested).
I'm just about ready to turn on ethernet, cross your fingers--it should go smoothly, I hope...
I was sickened to see DarkBasic cracked, these guys have created an incredible environment for the cost of a computer game. Do us all a favor and buy it, support these guys...
7/13/2008: Well, as I fix the HCSNet support, I have been unable to get the host program to keep up--it's an ancient DOS program that we've been stuck with because it uses a bunch of intrinsic functions provided by the old Borland 3.0 compiler. It's long been time to replace it, but no-one stepped up to the plate, so now I need to do it. I need something much more extensible to handle status for all of the HCSNet cards that I have (4 mini's, 1 combo (probably going to be two, shortly), and the new camera card coming out shortly). In fact, as I said, the host program wont work at all--as I tried to fix the HCSNet stuff so it is cleaner and more capable, I keep running out of memory, it will only compile the whole program and data into 64K. I could change the memory options, but when I tried that before, it never worked. Soooo.... I decided to look at some options.
I have wanted to make a 3D virtual house, placing virtual sensors throughout. The idea was to be able to "walk" through the house, looking at the actual sensors being communicated to the HCS_C main board by clicking on the virtual sensors, and turning on lights, etc, by clicking on "virtual" switches. Since DarkBasic is a relatively easy prototyping language that talks 3D, I gave it a try, and was successful at making a simple display of a portion of the HCS_C status in real time on a very simple host program (in 3D!). Not very impressive, but a huge amount of future potential.
DarkBasic has a serial port plugin DLL that makes easy work of connecting DarkBasic to the HCS_C. It has one drawback, though, it is a DirectX 9.0c wrapper--which means to run this application as host, you have to have a moderately fast machine with a good video chip set. And, I found out, you have to have the very latest DirectX 9.0C. Foolish me, I thought there was only one DirectX 9.0C, but there's a zillion versions of it, you have to get the very latest. And, now the Microsoft site wont let you download it unless you run their WGA program that checks your machine that it has a non-pirated OS--it worked OK, but it was a long effort to get this all working.
That wasn't the end of it, though--I had swapped my desktop computer to a much more powerful one with no external serial ports, but fortunately the motherboard happened to have a standard 10 pin connector for a COM1 port. Much to my annoyance, ASUS used a standard connector but an non-standard pinout, and it's not documented in their user manual, the motherboard website, or anywhere else that I could find!! Serial ports are definitely going away. To keep HCS_C going, I'm going to get a USB to serial port adapter (any recommendations?) but for now, I had to manually figure out the pinout and make a special connector--that took around 6 hours of precious weekend time! arrrg.
Anyway, in the end, I got it working, and then I discovered that the DarkBasic DLL absorbs some special characters, and will only accept 7 bit format, meaning that the 8 bit data that HCS_C sends to the console must be encoded. Arrrg. I quit there, but it was a very productive day--and the potential for a really fun interface (finnnnaaaalllly) for HCS_C is definitely there. Even better, I will standardize and hopefully document the interface so you can write your own host app... but there's a very large amount of work here, I'm time sharing between this and the network card. Fun stuff, but I hope you all don't run out of patience...
7/6/2008: Oops. sorry, false alarm on the wait statement, it's working fine. The host compiler change to accept a larger status word was causing some console statements to be dropped, making it look like the wait statement was broken. But I'm still working on the legacy HCSNet device support...
7/5/2008: Took a short break from the ethernet card to do some HCSNET firmware cleanup. The legacy RS485 query commands have quit working, found several problems, especially when multiple DIO devices attached. I'm redoing the receive string storage, it was a dynamic scheme before, and was too complex with too many corner cases. Instead, I'm going to have a dedicated configuration space in front of the token list, that will make life much easier to get working and test--but it means now 256 bytes, rather than the old HCS2 47 bytes, will be allocated for the config space. Since the the token array is now 4 times bigger (16384 tokens rather than the old HCS2 limit of 4096), I think I can live with that. I'm working on fixes for that... and I seem to have caught a failure case with the WAIT statement. Fixing these, should have new bits before too long.
7/4/2008: Happy Independence day for you USA readers! I've got part of the network card turned on, here's a picture with indicated features. So far, the board is looking good, the FPGA loads up correctly and refreshes the SDRAM. Turns out I got the wrong DRAM pinout, so I had to use some old 256Mbit parts rather than the 512Mbit I intended. The boards have jumper configurable standard IO, you can set each 8 bits to be inputs or outputs. It will be a long time before everything gets turned on, especially the Cirrus and Microchip DSP coprocessor code--so I will upload the Gerber files if you want to make your own. Since ethernet will be brought up first (hopefully wont take very long since this code is already running on the prototype that uses a different FPGA), I probably could have my arm twisted to make you an ethernet only board... But as always, assume everything will take a long time...

6/28/2008: Well, I'm back! And so is the network PC board. It's just getting turned on now, it's got a couple of small mistakes on the powerplane that require a small cut (a via that crossed two powerplanes, I have no idea why the layout design rule checks didn't catch that). But--I'm going to be gone again in a couple of months! However, I'll just be doing what I can when I can. I now have the Avnet eval kit--it doesn't come with any software at all, so it's not as good a deal as I thought for you all to migrate to for the next generation of HCS. I don't know what the answer is, but I do know HCS_C is showing its age and I'm doubting the wisdom of pouring large amounts of efforts, HW and SW, into the current platform. It just takes too long for me to get stuff done--I've already had one customer move on because of that, so I'm thinking that some radical rethinking is needed that is quicker and more supportable by you all.
5/5/2008: Down to the final stretch on PC layout for the network card. I want to get this done before taking my leave shortly, don't know if I'll finish in time. The board is coming nicely and will provide a good migration path for updating the HCS_C main board in the short run. The limitation of 16 bit processing and the need for better display formats made me realize that a better math package for HCS_C would be valuable, so the network card will have a Cirrus 9302 for coprocessing support. It also has a MAC, but I have had such good luck with the Microchip EN28J60 prototype that it will be the ethernet path for now.
NOTE: due to the increasing need for better and more consistent math support, more memory, and a variety of other issues that are coming up, and my ability to manage only one path, HCS_C standalone development has come to a stop. The network card will become a requirement for future revisions of the HCS_C FW. The standalone HCS_C needs other players besides me to carry on the FW! It's not hard, but I have more than I can manage with just one path. Be aware that the old parts on the HCS_C main board are getting hard to find, so it will be replaced before too long with an updated version. Take a look at the Xilinx Virtex-5 development board designed by Avnet for $395: onboard processor, DRAM, ethernet, RS232, Flash, USB. This is a great deal and a nice integrated module for the next generation HCS_CX. Go to the avnet.com site and select the Programmable Logic page, FPGA, then go to the bottom of the Design Center page, it is the AES-V5FXT-EVL30-G evaluation kit.
In summary, the future of HCS_C (at least as I see it, unless someone takes over, or if you all persuade me otherwise!)
1: Thruough 2008: Network card daughtercard, full system now called HCS_CE. FW for HCS_C standalone has stopped at version 1.09. Standalone HCS_C will no longer be shipped (but existing HCS_C boards will work with this ethernet card and new FW versions will support that combination). Estimated ethernet boards back and ready for turn-on and FW development in June, 2008. FW development shouldn't be too bad unless problems require another layout (it's a different FPGA and new processor, so a PC layout spin is probable), you may be able to get boards end of summer or fall 2008, although I would be prepared for considerable instability until the end of 2008.
2a: Targeted for early 2009: Update the HCS_C main board. Two approaches being considered: Re-layout of the HCS_C and ethernet daughtercard into one board called HCS_CX. This approach will be quickest and probably would begin in fall of 2008.
2b: A more forward looking approach is replacing HCS_C altogether with the virtex-5 eval board and an additional add-on PC board with the HCS IO capabilities on it. Since there is a learning curve, new tools, and different processor, this is a big change. Only one or the other of these two options will happen. I'm leaning a little toward the virtex board option.
Send me your opinions and thoughts! One thing for sure--HCS_C is showing its age, and we need to think about its replacement...
4/24/2008: I've been in PC layout for the network card--don't have enough pins on the Xilinx FPGA! Xilinx uses a 208 pin PQFP, whereas Altera uses a PQFP 240. Cheap low cost pcboards and assembly preclude the use of BGAs. My prototype network card has been online for close to a month, so I think I got most of the issues out of that implementation.
4/5/2008: Wow. This is the first time that having an installed HCS_C paid off big time. I've got a network of machines here that I keep running, and this morning, HCS_C was reporting abnormal network activity. I say, what the heck? and found one of my machines was a zombie, emitting thousands of packets continuously. I'm fairly fanatic about safe computing, so I was astonished to see this--AVG antivirus reported no virus, yet clearly the machine was obviously badly misbehaving. HCS_C reported that all the packets were "unknown" type, and would stop as soon as I disabled the offending machine's network connection. I checked all active processes, and found nothing suspicious--but that particular machine is a gaming machine, I don't get email or even do browsing on it (and only play local single player games) so I'm guessing that one of the game updates had a virus attached. There was no recourse but to format the hard drive. Unfortunately, I have no idea what caused the problem (I'm the only user on that machine), but what an enormous comfort to have a powerful unexpected benefit to HCS_C--continuous monitoring of internet activity. Even AVG couldn't catch this one--I've heard that antivirus software can't outsmart the latest breed of viruses, but HCS_C is like having a continuously running version of wireshark checking network behavior!
All is quiet on the network now--but I'm going to immediately put in local and web alarms for abnormal ethernet activity. I'm currently installing several more HCS_Mini and HCS_Combo cards, the Combo card has voice, and HCS_C is going to speak various alerts on our intercom. If the bad activity occurs at night, it will just wait until morning to report so it won't wake us up.
HCS_C INDEX
HCS_C_Photos (updated!)
PC_BOARD A.02 to A.03 update list
Here are the various HCS_C pages.
HCS_C Main Board Block Diagram
HCS_C Bill of Materials parts list HCS_C_schematics