Vermont Energy Control Systems

Demo Application


This application is something we use at VECS to demonstrate the range of capabilities in the hardware and software of the Vesta system. The application is included with every system, although most users won't have all of the hardware that's used.

In this document, we'll walk through the process of building this application step by step. Since there are a lot of screenshots, we'll show them as thumbnails. In each case, clicking on the thumbnail will open the full-sized image in a new window (or tab).

Here's a picture of the hardware used in this application:


This is a demo system, so we want to demonstrate a wide range of hardware and software capabilities. Specifically, we want to use the following hardware:

  • Vesta Controller (bottom left)
  • VS-1108 Variable Speed Control Unit (top left)
  • CS-1145 Current sensor (just below the light bulb)
  • TS-1059 temperature sensor (clipped to light bulb)
  • TS-1058 temperature sensor (coiled to the right of the Vesta controller)
  • DB-1195 Discrete Breakout (mounted on board at right, without enclosure)
  • RM-1206 Relay Module (mounted on board at right, without enclosure)
  • TC-1125 Thermocouple Amplifier (mounted on board at right, without enclosure)
  • TS-1060 Thermistor temperature sensor (mounted on board at right)
  • HS-1146 Humidity Sensor (mounted on board at right)
  • PS-1147 Pressure Sensor (mounted on board at right, with clear plastic tube)
  • TS-1060 Type K thermocouple (coiled below board at right)

In addition to the hardware, we want to show the different types of rules tha the Vesta system can use to control outputs. We'll do the following:

  • Measure and control the temperature of a light bulb by varying the current flowing through it to try and maintain a user-selectable setpoint temperature - 140 degrees in this example.
  • Allow the user to enable or disable light bulb control via a clickable button on a graphical web page.
  • Show whether light bulb control is enabled by illuminating an LED.
  • Illuminate LEDs to indicate if the light bulb is above or below the setpoint by more than an allowable error margin - 5 degrees in this example.
  • Illuminate an 'Alarm' LED if light bulb control is selected and the light bulb temperature is out of the acceptable range for more than an acceptable amount of time - 60 seconds in this example.
  • Measure and display the current flowing through the light bulb.
  • Measure and display room temperature with a variety of other sensors as shown in the list above.
  • Measure and display the level of coffe in a coffee cup using a pressure sensor.
  • Measure and display relative humidity.
  • Allow the user to activate or deactivate each of the four relays in the RM-1206 via a clickable button on a graphical web page.
  • Detect and display the status of a red pushbutton switch connected to the DB-1195 breakout panel.
  • Obtain outdoor temperature from another remote Vesta and display it.

Connecting Hardware

In this section we'll configure the Vesta controller for the hardware we'll be using and physically connect all the sensors and other hardware. We'll assume the Vesta is connected to a network and powered up.

The first step we'll do is to restore the 'Empty' application. This gives us a blank controller with no configured inputs, outputs, or rules. Clicking the 'Restore' button next to 'Empty.tgz' accomplishes this.

We then go to the 'Physical I/O' tab and start choosing the inputs and outputs that we'll use. Each sensor has a pull-down selection to identify what type of sensor is plugged into that channel:

We'll connect sensors to the system as follows:

ChannelSensor TypeDescription
Analog Input 1TS-1059Shade Temp
Analog Input 2TS-1058Room Temp
Analog Input 3CS-1145Lamp Current
Analog Input 4PS-1147Coffee
Analog Input 5TS-1060Thermocouple
Analog Input 6TS-1061Thermistor
Analog Input 7HS-1146Humidity

For each sensor, we select the type and click the 'Create Element' link next to it. The image at the right shows what it looks like after the first sensor is set up.

The 'Elements' tab allows us to change the name for each input and output from the default to something more meaningful. For all of the sensors, simply type the desired name (or description) in the appropriate filed and press 'return'. The image at right shows the name of the first sensor being set.

We'll continue and configure all the sensors on the 'Physical I/O' tab. We'll also enable additional I/O as follows:

ChannelSensor TypeDescription
Analog Output 14-20ma Nimbus outputLight Bulb
Discrete Input 1DI-7260 (Discrete in)Red Button
Discrete Input 31DI-7260 (Discrete in)User Switch Right
Discrete Input 32DI-7260 (Discrete in)User Switch Left
Discrete Output 1DO-7260 (Discrete out)Relay 1
Discrete Output 2DO-7260 (Discrete out)Relay 2
Discrete Output 3DO-7260 (Discrete out)Relay 3
Discrete Output 4DO-7260 (Discrete out)Relay 4
Discrete Output 29DO-7260 (Discrete out)PID Active (LED 4)
Discrete Output 30DO-7260 (Discrete out)Hot (LED 3)
Discrete Output 31DO-7260 (Discrete out)Cold (LED 2)
Discrete Output 32DO-7260 (Discrete out)Alarm (LED 1)


Analog Output 1 will be connected to the VS-1108, which is a 'Nimbus' variable speed drive using a 4-20ma control signal. Choosing the '4-20ma Nimbus output' signal type allows the Vesta to scale the output appropriately.

We'll connect the DB-1195 discrete breakout panel to the first Vesta Discrete Input connector. Each connector carries four discrete inputs, numbered 1-4 for the first connector. We'll use the DB-1195 to connect our red pushbutton switch to the first of those four, which is channel 1.

The 'User Switch' is the switch on the top cover of the Vesta. It's pre-wired to Discrete Inputs 31 and 32.

We'll connect the RM-1206 to the first discrete output connector on the Vesta. The first four discrete outputs will correspond to relays 1-4 on the RM-1206.

Finally, we'll use the four prewired LEDs on the Vesta top panel to indicate the status of our application.


We'll need five variables. These can be created on the 'Elements' tab. Two of them are 'State Variables' :

  1. PID Enabled - this will determine whether Vesta should be actively controlling light bulb temperature. The technique that the Vesta system uses for this is called a 'PID loop', and the variable name will reflect that.
  2. Warning - This will be set to TRUE if the lightbulb is outside the desired temperature range.

The other three variables will be used to hold the target light bulb temperature, the alarm countdown timer, and the outdoor temperature from a remote Vesta controller.


In this section, we'll discuss the rules that determine the Vesta system's behavior. These rules are created on the 'Rules' tab and can be seen there or on the 'Home' tab. There is a manual on rule programming. This section assumes a baisc familiarity with that material.


In the image above, comments are in blue. The shown rules here are all the rules necessary to accomplish the objectives discussed in the planning section.

The first two rules are differential rules. They set the Hot and Cold outputs (which are LEDs on the top cover of the Vesta controller) to 'on' if the shade temperature is more than 5 degrees above or below the target temperature. The shade target temperature is kept in a variable and is 140 degrees in this example.

The next rule sets the 'PID Active' LED to true (on) if the 'Pid Enabled' state variable is true. We'll allow the user to turn the 'Pid Enabled' state variable on and off using the graphical web interface.

The next two rules set the 'Warning' state variable to true if the light bulb is either too hot or too cold, but only if the Vesta is supposed to be managing light bulb temperature ('Pid Enabled' is true).

Alarm and timer rules

The next two rules manage our alarm. In this case, the alarm is simply an LED on the topcover. Of course, it could be a buzzer, a siren, or an email. The basic idea implemented by these two rules is this: We'll have a countdown timer such that the alarm will trigger if the countdown timer reaches zero. If there's no problem, we'll keep setting the countdown timer to 60 seconds. When there's a problem, the timer will be allowed to count down.

The first rule sets the alarm timer variable to 60 seconds whenever 'Warning' is NOT true. 'Warning' is not true any time that the Vesta is NOT managing the light bulb. It's also not true if the light bulb is within the temperature range.

The second rule turns on the alarm if the alarm timer reaches zero. That will happen if 'Warning' is true for 60 seconds or more.

PID rule

Finally, at the very bottom, we have a PID rule. This rule continuously varies the 'Light Bulb' output (which goes the the VS-1108 variable speed control) to try and keep 'Shade Temp' as close to 'Shade Target' as possible.

To be continued.....