My Automated Home: Delmar Faddens Event Control System (ECS)


This months ‘My Automated Home’ comes from Delmar Fadden, a man that’s no stranger to electronics.  As a retired avionics and flight deck engineer he’s spent a lifetime at the sharp end of control systems.  Now with a passion for home automation, he takes us on a tour of his Seattle smart home system which runs on ECS.

Submission by: Delmar M. Fadden – That’s it!  I’ve tried every trick there is to improve X-10 communications, but this time the functional reliability of my system has dropped below the level that even I can tolerate.  And that is well below the level that my wife sees as barely functioning!  The final straw was not being able to turn off our wake up lights.

I’ve used X-10 since the 1980s, first to control lighting and then some HVAC and finally part of our AV system.  When we moved to our present home in 1992, I had a chance to start from scratch with an overall plan for inside and outside lighting, coordinated control of three and later four HVAC units, two heat recovery ventilators, a heat circulation system, and some hot water controls.  The home was equipped with a simple audio distribution system but the controls were inflexible and didn’t extend to video at all.  So AV additions were needed.

At that time the JDS ‘Stargate’ controller offered integrated control of all the equipment types I had in mind.  It has proven to be an excellent choice; extremely reliable and readily expandable.

Our home is in a rural area and while the power service to the house is under ground, the main distribution line serving our community runs for several miles through forest.  This makes on-site emergency power a must.  Unfortunately the house was not wired with that in mind.  A careful assessment of the existing circuits showed that with limited changes we could have reasonable heating and lighting with enough extra power for necessities like computers, cooking, and entertainment.  An 8kVA propane generator now provides power through two new standby circuit breaker panels.  By putting the main air handler on standby power along with the boiler controls, we have good heating without the need to cope with the heavy startup load of a heat pump compressor.

4 FMR1-20 devices used to control exterior lighting circuits attached to an 8 X 8 junction box.
The blue light on outside surface of each device is a programmable LED indicator of status.
The red program button is used to enter the programming mode or the test mode.

The added complication of the standby power distribution system was too much for the original passive X-10 couplers forcing me to add amplified couplers to the 3 main distribution panels.  When the PCS line of X-10 compatible products came out in the early 90s, they offered 200 step dimming and brightening from off.  That made it possible to do long fade ups.  I thought this would be much more pleasant for morning wake-up.  And indeed it was a great improvement over the big brightness steps that most X-10 products supported.

My wife liked the smooth transition of light levels and wanted it used in more places and for more reasons.  Within a year nearly a third of our lighting had been switched to that style of control.  For several of the applications the built-in fade rates weren’t adequate.  Stargate supports sending the small increment steps and thus allows one to customize any style of fade in or out while retaining the fine control that makes each step nearly imperceptible.

JDS StarGate controller with two I/O expander units in the middle of the picture
and the IR expander unit below. The units on the right are the network
patch panel and two of the network switches.

The only downside is that the level of X-10 traffic on the power line became an issue.  Basically I had to build in pauses in any communication intense tasks that would allow other X-10 traffic to get through.  At first this was just a minor inconvenience but after adding a number of indicator switches, this problem became much more serious.  Many of the Leviton DHC devices did monitor the power line and would retransmit if a data collision occurred.  Better, yes but not a real solution if the person hitting the switch was in a hurry or didn’t understand that a delay was “normal.”


FMR1-20 devices used to control exterior lighting circuits are installed in two 8 X 8 junction
boxes mounted between studs in the equipment center in the crawl space.  The blue light on
outside surface of each device is a programmable LED indicator of status.
The red program button is used to enter the programming mode or the test mode.

As more devices were added to our system, it was inevitable that certain circuits attracted more X-10 use than others.  These circuits become more noise sensitive as the available signal level decreased.  Judicious use of filters and devices with adjustable sensitivity circumvented the consequences of this problem for a long time.

But now intermittent operation has become the norm and, short of re-wiring the house, there is nothing I can do to make the system healthy again.  It is time to reassess the system.  Fortunately there are many more options available now.

A few years ago I helped a friend spec his new home with Vantage controls.  Together we took the factory course to make sure we understood what was possible and how to apply it.  We learned that a hard wired system is still best for a new home and that a new RF-based system could provide close to hard-wired performance for retrofit situations.  The programmability of the Vantage system makes it very flexible but clearly targeted for a professional installer.  Since my friend was building a new home and had an electrical contractor who was familiar with Vantage, it was a good fit for him.  I did a design for part of my home using the RF-based version.  It would have handled our needs very well but the projected cost was very much high end.

KPCW6 6-button wall mounted controller.  The label sheet below the switch plate
allow us to try out the lighting controls before we commit to engraved
labels that mount directly over the buttons.


Sorting through other retrofit capable systems, lead me to the PCS PulseWorx line.  These devices do use the power line for communication but the protocol is Universal Powerline Bus (UPB) instead of X-10.  This protocol is much faster than X-10 with a wider signal range, better noise immunity, and a design that supports true two-way communication.

Each UPB device can be controlled directly using its native address or by using a “link.”  Links allow multiple devices to be controlled using a single command.  Each UPB device can have as many as 16 links.  The link concept is similar to X-10 scenes—a capability that several X-10 device manufacturers support.  My experience with scenes suggested that links would be highly useful, particularly given the higher speed of UPB.

As useful as links are there are times when a more flexible controller is necessary.  I could add UPB capability to Stargate but did not want to give up the audio and telephone interface.  Furthermore my Stargate program was running right at its memory limit.  If I moved the lighting control out of Stargate to another controller there would be more space for the HVAC and sensor I/O that Stargate handles very well.

An Internet search led me to a program called Event Control System (ECS)   This program was developed by Mark Gilmore, the principal of Omnipotence Software.  Mark has been involved in home automation for a long time and has an amazing grasp of what home automation should be able to do.  He developed and sold an early version of ECS that supported an X-10 controller called System 1400e.  That box and the early version of ECS had been my first step into serious home automation.  I downloaded the trial version of the current ECS and took a careful look at its capability.  In addition to UPB it included an interface for Stargate that would facilitate tight integration of the two systems.  The only drawback was the lack of built-in support for links.

An exchange of e-mails with Mark and a few phone conversations led to a new version of ECS that provided link support!  That sold me and I went to work on a new design built around PCS PulseWorx devices and ECS control.  My local PulseWorx distributor, Devine Systems, recommended that I buy a couple of plug-in light controllers and a plug-in switch along with a powerline interface module (PIM) to verify that communication was good enough everywhere in the house.  It was a great recommendation.

PCS and other UPB manufacturers provide a free utility program called UPStart.  In addition to handling the programming of UPB devices, UPStart provides a well thought out series of test functions that monitor noise and signal level at every device and check communication between any pairs of devices; it also reports the phase of the power at each local device.  I found that signal levels were excellent for all of the devices so long as they were on the same phase of the powerline.  The signal on the opposite phase was present but the level was marginal.  By moving the PIM to a circuit on the opposite phase, I confirmed that the results were symmetrical.

PCS offers three styles of passive phase couplers and a split phase repeater that provides amplification as well as phase coupling.  I elected to add a split phase repeater to give us the best possible signal margin.  With that unit installed the test results were excellent, no matter what circuits were involved.

The design for the new installation evolved from the original X-10 setup with a number of simplifications made possible using links and the flexibility of the UPB addressing system.  Planning the sequence of installation was complicated by two factors.  My day job allowed little time during the week but I could count on generally free weekends.  The devices that would be controlled directly at the device could be installed first.  Next came devices controlled by links but that did not require ECS inputs.

Together installation of these devices gave me a good opportunity to become well acquainted with UPStart.  PCS offers factory and on-line training for the use of UPStart in addition to a thorough manual.  For most function I found the software easy to use and understand without any extra help.  When I did have a question, the manual had clear, easy to find answers.  In a couple of weekends I had a number of devices installed and a first cut at programming for the various links.

ECS offers two basic programming alternatives.  For controls that are based only on time of day, ECS Schedules are very easy to set up.  Controls that need to respond to events or manual inputs are implemented using Scripts.  The power and versatility of Scripts means that some study and experimentation will be necessary to use them to their best effect.  Rest assured that the leaning time is well worth it.  Originally I thought that I would have a few devices that were Schedule controlled.  But I found Scripts to be so much more useful that all of my Schedules have been replaced.

The sheer number of functions (ECS calls them Classes) supported by ECS appears daunting.  The online help manual covers every Class with the fundamentals needed to use the Class.  ECS also provides some sample Scripts to demonstrate how the Classes can be used to accomplish a function.  For my first foray into ECS Script programming I selected a reasonably simple function that uses a single output device and three types of inputs.  This function controls the hot water recirculation system for the master bath.  The system responds to a manual or an event input and runs until the return line water temperature exceeds a specific temperature or undergoes a defined temperature increase.  To avoid continuous operation, the run time for the pump is limited and a manual shutoff is provided.

A WS-1D-6 wall switch dimmer and a KPLD dimmer – controller replace two single
switches in an existing wall box. The KPLD provides additional flexibility for retrofit
situations by combining both dimmer and controller functions in a single unit.
As with the stand alone controllers all of the switch buttons are programmable using UPStart.

The temperature sensing is provided by an existing TS-111 temperature sensor interfaced through a StarGate analog input.  A PulseWorx AM1 appliance module controls AC power to the pump.  This module incorporates a settable timeout feature that shuts off the output and issues a link command when time out occurs.  Manual inputs come from either of two KPCD-6 desktop controllers in the master suite or a KPCW-6 wall controller in the master bath.

All of the controllers are illuminated and I wanted to ensure that the lights indicate the status of the system at all three locations.  UPB makes that very easy.  The UPStart “Receive Components” screen for the controllers allows each indicator light to be associated with any of 16 links.  The links do not have to be the ones associated with the switch function, though that is often most convenient.

Programming the recirculation system took two tries before in functioned correctly and the program has had several refinements since.  At first the temperature sensing did not work and appeared to cause the Script to timeout.  A comment in the help manual indicated that ECS updates StarGate analog data once a minute.  A quick experiment showed that adding a one minute delay between temperature checks eliminated the script timeout problem.  With this correction to the recirculation system Script I had my first operating function.

Section-by-section details of this Script are described in some detail in the paragraphs that follow since they provide a useful insight into the operations of ECS and UPB.  The actual Script is presented below.  Section titles have been added to facilitate the description which follows.

Section 1 – Initialization
If  Recirc Pump  Becomes  On            ; Cycle initialization
Or  Link Hot Water.Link  Becomes  Activate
Do  Link Hot Water.Link  Set  Activate        ; Activate link in case activation was direct
Do  Link RPump Auto Off.Link  Set  Deactivate    ; Reset auto timeout link
Do  PumpMinCount  Set  Reset
Do  PumpMinCount  Set  Start            ; Counter checks temp every minute
Do  NextPumpMin  Set  1                ; Set for first check
Do  Temp limit value  Set   Recirc Temp        ; Temp check is current temperature
Do  Temp limit value  Add  10            ;   plus 10 degrees
If  Temp limit value  >  100            ; Temp check is limited to 100 degrees
Then  Temp limit value  Set  100

Section 2 – Manual Deactivation

If  Link Hot Water.Link   Becomes  Deactivate    ; Manual pump turnoff
Then  PumpMinCount  Set  Stop
Then  PumpMinCount  Set  Reset            ; Prepare counter for next cycle

Section 3 – Module Auto Off Deactivation
; The next 5 steps must precede the temp check since the deactivate in that procedure will
;   not be effective until the next cycle through this code.

If  Link RPump Auto Off.Link  Becomes  Activate         ; Non normal but OK pump
;   turnoff by UPB module
;   timeout
Then  PumpMinCount  Set  Stop
Then  PumpMinCount  Set  Reset            ; Prepare counter for next cycle
Then  Messages  Set  Recirc pump timeout    ; Means to detect abnormal turnoff
Then  Link Hot Water.Link  Set  Deactivate    ; Turn off link

Section 4 – Temperature Check & Normal Deactivation
If  PumpMinCount  Becomes  NextPumpMin    ; True then temp check interval
Do  NextPumpMin  Add  1                ; Set for next temp check interval
If  Recirc Pump  Is  On                ; If pump is on and
And  Recirc Temp  >  Temp limit value        ; If water temp exceeds limit value
Then  Recirc Pump  Set  Off            ; turn off pump
Then  PumpMinCount  Set  Stop        ; stop counter
If  Link Hot Water.Link  Is Not  Deactivate    ; if link is not known to be off
Then  Link Hot Water.Link  Set  Deactivate    ; Turn off link

Names    ECS Class    Description
Recirc-Pump    UPB Appliance Module    Device that directly controls the recirculation pump.
Link Hot Water    UPB Link    Link used to turn the function on or off.
This link is assigned to one wall and two desktop controllers.
Link RPump Auto Off    UP Link    Link transmitted by the UPB pump module if the module’s auto-off timer has activated.
PumpMin-Count    Minute Counter    Counts in 1 minute intervals since the function was turned on
NextPump-Min    Integer Variable    Used as a reference for the PumpMinCounter
Recirc Temp    SarGate Analog Input    Temperature sensed at the end of the return line.  This value is digitized by StarGate and transmitted to ECS.
Temp limit value    Integer Variable    Used to create and store the value that determines an appropriate temperature rise has occurred.
Messages    ECS text variable providing access to the system message log.
UPB appliance or lamp modules entered into ECS can be designated as modules or links at the time they are defined.  In Scripts a link name is designated by appending “.Link” to the device name.  This works fine for ECS but I need a way to know that a device name applies to a link rather than a module, so I have adopted the convention of prefixing all link device names with the term Link.  Within Scripts this double marking appears unnecessary but it makes finding the proper name in the Class lists much easier.

Section 1 begins the recirculation cycle in response to either direct RecircPump control or a manual input that activates Link Hot Water.  Since these two states are tested using the “Becomes” conditional, this section of the Script will be processed only once for each recirculation cycle.  The curly brackets enclose all of the steps that are to be processed if either of the two preceding conditionals is true.  The UPB “Link Hot Water” actually turns on the UPB Appliance that controls the pump without any action by ECS.  It also turns on the indictor lights in all three Hot Water switches.  If the pump is activated directly at the module, the link is activated to ensure the indicators will be turned on and ECS will properly recognize the link status.  If the function was started by a link message from one of the keypad controllers, this step is redundant but has no effect.

The PumpMinCounter is started and NextPumpMin value is set to 1 so that the first check will occur 1 minute after the cycle is started.  The final steps in this section establish the reference temperature that will be used to determine that the heating cycle is complete.  The temperature in the return water line can vary from quite cool to very hot depending on the time since the cycle was last run and the season of the year.  By experiment I found that if the measured temperature is over 100 degrees F, the water temperature in the master bath will be fine.  On extremely cold winter days it is possible that the return line temperature may not make it to 100 degrees.  To cover that possibility and to minimize unnecessary pump run time, I have the system check for a short term temperature rise of 10 degrees.  To calculate this value the system checks the current temperature and stores it in the integer variable named “Temp limit value.”  The system then adds 10 degrees to that value and checks to see that the result is not over 100 degrees.  If the value is over 100 degrees, the variable is reset to 100.

Section 2 does the necessary clean up if the recirculation cycle is stopped manually.  The only action required is to stop and reset the PumpMinCount counter.  The Link Hot Water deactivate command turns off the UPB Appliance directly.

The Sure Action drive in-out sensor is interfaced to the UPB system and StarGate
using an input control module and an output control module. The input control module
converts the drive in and drive out relay outputs into UPB link commands for use by ECS.
The output control module converts the related ECS-generated link
commands into low voltage inputs to Stargate.

Section 3 handles the clean up actions if the UPB Appliance device times out and shuts off the pump.  If the timeout feature is enabled for a UPB device and a timeout link has been defined the device will transmit that link when timeout occurs.  For this application I named the timeout link “Link RPump Auto Off.”  When ECS recognizes that link, it stops and resets the PumpMinCount counter, records a message indicating that the pump was stopped by timeout, and sends the Link Hot Water deactivate command so that the indicator lights in the switches will be turned off.

Finally in Section 4 we get to the primary reason for having ECS involved with this function.  This section checks the water temperature once each minute and if heating is satisfactory, the pump is shut off.  The first step in this section ensures that the check only occurs once in any one minute period.  As soon as the PumpMinCount becomes equal to the NextPumpMin value, the next pump value is increased by one setting it up for the next check.  Then if the recirculation pump is still on, the current return line water temperature is checked against the limit.  If it is higher, the pump is turned off, the PumpMinCount is stopped, and if “Link Hot Water” remains in the activate state, it is set to deactivate.  This final step turns off the indicator lights as discussed in section 3.

There are some interesting aspects to this Script.  First the recirculation function will work even if ECS is offline at the time.  The cycle will be somewhat longer since the temperature check will not occur and the auto timeout feature of the UPB device will ensure that the pump is shut off even if manual shut off does not occur.  The indicator lights will not be shut off, so I have to handle that in the ECS startup script.  I try to use links in this manner as often as possible to make sure that lighting and equipment control is not lost if the ECS computer has a failure or I have taken ECS is offline for updating or other maintenance action.

ECS monitors all devices and confirms the actual state of the device when needed in a Script.  This is a big improvement over X-10.  ECS also builds a table of all links and keeps track of the links that have been activated or deactivated.  If a link has not been used, then its status is “unknown.”  Once it has been used ECS tracks the link state.  When using the ECS tracked link state in a Script it is important to consider what will happen if the state is “unknown.”  In the last two lines of the Recirculation Pump Script we do want the Link Hot Water deactivate command to be transmitted if the link state is either activate or unknown.  That is why the “Is Not” form of the conditional if statement is used.

Once I felt comfortable writing Scripts, I completed the rest of the device installation work, dividing it into groups that would have a common Script.  This one-step-at-a-time approach took more time but made troubleshooting easy.  It also satisfied my wife’s desire to minimize the time when significant light groups or functions would be unavailable.  Interestingly the only problems that occurred during installation were associated with external lighting circuits.  In both cases the signal level was significantly lower than anywhere else and the noise level was measurable.  The devices worked properly but I suspected that as other devices were installed, these controls might not be reliable.

After swapping devices to confirm device functionality, I took a look at the circuits involved.  Both involved significant lengths of buried 110 volt UF wire.  One circuit powers florescent bulbs and the other a series of halogen spots.  Both circuits are powered through a common circuit breaker; but that breaker powers other external lighting circuits that showed entirely normal indications.  That meant the problem was likely downstream of the controllers.  Adding a PCS In-Line Choke Filter (ILC) at the output of two controllers cured the problem.

3 input control modules interface discrete digital signals from the security system
and other sensors into UPB link commands for use by ECS.  Each ICM has 2 independent channels.
It is necessary to find an AC power strip with wider than normal spacing between
the sockets, if ICM devices are to be mounted next to each other

When I got to the master suite lights, implementing the slow fade wake up function was remarkably easy.  I created a series of UPB links targeting different lights and with different fade rates.  (UPB supports fade rates from less than one second to a full hour and different rates can be set for each link.)

ECS determines when wake up should start based on a daily schedule coded into the Script or a day-at-a-time manual override we can set from any computer, using the ECS Main menu.  ECS selects the proper set of UPB links based on how dark it is outside and the proximity to the calculated time for dawn or daylight.  This same Script trigger a Stargate input that fades up morning music on our favorite satellite radio channel.  The Script also turns on selected main floor and exterior lights after a suitable delay if it is not yet daylight.

Probably the most successful Script is the one that handles the lighting when we return to the house at night.  It is a two stage Script that works for whether we are arriving or a guest.  The first stage detects directional vehicle motion in the driveway using a Sure Action P8000C magnetic sensor system.  An arriving vehicle triggers an interior chime and at night, driveway and parking area lights.  A subsequent opening of the front door or the door from the garage to the house turns on more lighting in the respective entry areas.  If it is dark, additional interior lighting provides a pathway to the main common area; very nice on a rainy night with an arm load of groceries.

So far my ECS wok has focused on Scripts, but ECS also supports creation of very flexible browser pages that can support a wide variety of graphic input and output functions.  These pages have the potential to make system control highly visual.  This is an exciting capability AI plan to explore.
Currently ECS supports a long list of AV and I/O equipment.  The Omnipotence Software website,, says that they will consider adding support for other new equipment when it is reasonable to do so.  This is consistent with my experience and is a strong indication that ECS will be kept up to date as new automation opportunities arise.


Want More? – Follow us on Twitter, Like us on Facebook, or subscribe to our RSS feed. You can even get these news stories delivered via email, straight to your inbox every day


Related Articles – My Automated Home : Soitjes Soit’s Digital Home Server

My Automated Home : Richard Farthing’s Green Open Source House

My Automated Home : Martyn Wendon’s Four Nodes

More Node Zero Photos : Send us YOUR ‘My Automated Home’ Story This e-mail address is being protected from spam bots, you need JavaScript enabled to view it


Delmar Fadden is an avionics and flight deck engineer.  He worked on most Boeing commercial airplanes between 1969 and 2000.  Since retiring he has been a technical consultant for a number of avionics and airplane companies.  His interest in home automation began with design and installation of a low voltage controlled exterior lighting system using diode logic in 1980.  He went through basic X-10 and three generations of X-10 controllers until making the switch to UPB and ECS in 2009.  His automated home is in the hills east of Seattle, WA.

1 Comment on "My Automated Home: Delmar Faddens Event Control System (ECS)"

  1. interesting approach – and great to see an install that’s not cramped for space, which must make ongoing development a whole lot easier !

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.