The HCS-L (Home Control System - Linux based) is an expandable, network based (IP, RS485, Onewire, etc.), supervisory control system (central processor controlled distributed processing). The HCS-L incorporates direct and remote digital IO, analog IO, near real-time boolean decision event triggering, PLC communications (such as X10, Insteon and/or UPB), remote displays, telephone line interface and text-to-speech functions.
The HCS-L system architecture consists of a central supervisory controller, the HCS-L (or SC), connected up to other functional modules (called comm-links) via a network.
Requirements:
- Single Board Computer
- Single purpose network appliance
- Low power
- No moving parts to fail
- flash file system (SD, Compact Flash, etc).
- Hardware watchdog
- minimal visual indicators
- No direct video necessary
- Accessible via RS232 (Console), telnet/SSH and HTTP (IP network)
- Comm-link support for 9.6 baud via an RS485, half duplex communication
- Full IP network (IPV4 and/or IPv6) - this includes DHCP client, name resolution, etc.
- Dynamic load support for XPRESS
- API for software development
- (opt) Ability to have soft comm-links (network daemons to interface to USB attached X10 controllers, for instance)
- (opt) IP networked comm-links
The user interfaces to the HCS-L will be like that of a modern day firewall/router. There will be support for telnet, ftp, sftp, SSH, HTTP, SNMP (?) and network daemon support. SNMP is currently a question as it may require a large amount of resources to implement. Those daemons not required can be disabled. In addition support for port/IP blocking will be provided by iptables.
Because this is Linux rebooting will not be necessary unless the kernel has been modified. Linux already supports dynamic device drivers and applications can be stopped and restarted as needed. Support for automatic start-up of applications is provided.
Currently there should be no need to place limits on the number of digital, analog or other devices supported by XPRESS. I think I'd like to call it XPRESS32. It will be an interpreter for the XPRESS code. Initially it will support the current XPRESS code. Additional features will be needed to support multiple serial ports, software comm-links, remote serial comm-links and IP comm-links. Also I want to see an API to what's running under XPRESS so that outside programs can access the information from the HTTP daemon (maybe for an AJAX Host application). Even applications outside the HCS-L.
Initially I'd like to see an HCS-L (fully functional with Linux) talk to one of the current comm-links, then two comm-links, then bring up XPRESS and run some simple XPRESS code to communicate to those comm-links. Once that goal has been reached the next step will be decided.
For those not familiar with network daemons, think of it as being like telnet or directl accesing a serial port to communicate with a modem. The code is simple to write and you can use ASCII to communicate so you can test by using telnet and manually typing the commands.
