![]() | ![]() | |
| Make/Model | Device Version | Connection Type |
| Elk/M1 (Gold) | Firmware 4.3.8 or later | Serial or Ethernet |
The Elk M1/M1 Gold is a very popular and reasonably priced automation panel that can provide the core of a CQC automation system. It supports various inputs and outputs, X-10, keypads, thermostats, and so forth. This panel supports both serial and IP based connections, and this driver supports both. These are considered two different drivers from CQC's point of view though they use the same driver class, therefore they will have separate driver entries in the driver selection screen, so be sure to select the right one!
- This driver depends on asynchronous notifications from the M1 panel. These are enabled/disabled via global memory locations that can be updated via the ERP programming software. By default the locations needed are enabled, but make sure that this is the case, else the CQC driver will not be notified of changes in device status. In the RP software interface, you should go to the Globals section, and then the Special tab and enable everything except transmit event log. You can also have the event log on if you need it to be, but CQC doesn't need it.
There is a simple client side interface for this driver, which allows you to select the outputs, thermostats, thermocouples, PLC units, voltages, and zones that you want the driver to provide access to. The Elk supports a lot of these various things and it would be extremely wasteful of resources to just blindly create fields for all of them, so just select the ones that you actually need to have access to via CQC.
Double click on an item to add or remove it from the list. In the case of PLC units, you will toggle from not included, to included as a binary switch, and then to included as Dimmer switch. So be sure to set it to the correct type.
The images to the left of each item will indicate whether it has been added or remove. The red check shows those items that the driver currently has configured. If you double click on one, you will get a left pointing area, meaning it's going to be removed. If you double click on one that's not currently configured, you will get a right pointing area, meaning it's going to be added. When you send changes and they are accepted, then the list will go back to just red checks on those items that are now selected. The Clear Changes button will go back to the currently configured selections and throw away any local changes you've made.
In the case of voltages, since the raw values would seldom be of much use, a quadratic linear equation is used to map the raw value to some useful value. You must provide the three components of the equation. The default values of 0, 1, and 0 will effectively just result in the original raw value. Using a quadratic equation allows you to do a linear mapping or a curve. Double click on a voltage to configure it, and to enable/disable it.
When you have the list that you want, press the Send Changes to send the new selections to the driver. It will update its configuration and its current set of fields to match.
Not all of the functions of the Elk are supported in this driver directly, but there is a Passthrough field that you can use to send any supported Elk control protocol commands. See the Driver Fields table below.
Be sure that you are up to the firmware version indicated in the table at the top of this page, or later. Various features were enabled in the releases leading up to the indicated version, which are required for CQC to correctly interface to the M1.
When you run the RP software, you must unload the CQC driver if you are using the serial connection, since there is only one port and it cannot be shared. If you are using the Ethernet connection, then both can be connected once. However, the RP software will not operate correctly if the CQC driver is talking to the device, so it will send a command to the driver to ask it to be quiet. During this time, the driver does not get any information from the M1 and will reject any incoming field writes. When the RP software exits, it sends the driver another signal and the driver will recycle its connection so that it gets back into sync with the M1.
There have been some quirks noted related to this RP mode situation, so be careful to make sure that, after you exit the RP software, that the CQC driver has successfully reconnected.
The serial port on the Elk can support 115,200 and it doesn't make any sense to use less, but it can be done. Just be sure to select the desired baud rate when installing the driver. The default is 115,200 since it is the optimal speed.
If using the IP connection, be sure to select the port that is configured in the Elk. The driver's default port will be the one that is set by default in the Elk, but you should confirm that the Elk is on that port. You must use the non-secure port, not the secure port!
This driver will send out a 'user action' type event when any Elk task is activated. The event name will be "Task Activated" and the data value will be the number of the task, in decimal.
This section lists the fields that the driver makes available, their types, minimum and maximum values, etc...
| Name | Type | R/W | Description/Limits |
| AreaArmX | String | R | A set of 8 fields that indicate the current arming status of the areas 1 through 8. So the names are AreaArm1, AreaArm2, etc... Each field will have one of the values: Disarmed, Armed Away, Armed Stay, Armed Stay Instant, Armed Night, Armed Night Instant, Armed Vacation. |
| AreaArmUpX | String | R | A set of 8 fields that indicate the current 'arm up' status of the areas 1 through 8. Sot he names are AreaArmUp1, AreaArmUp2, etc... Each field have one of the values: Not Ready To Arm, Ready To Arm, Ready with Force, Armed with Timer, Fully Armed. Armed via Force, Armed with Bypass. |
| CustValXX | Card | R/W | These fields provide read/write access to the custom values in the Elk. There are 20 of them, CustVal01 to CustVal20. These are only polled every 30 seconds, so there may be a small delay before any changes caused by means other than the driver are picked up by the driver. |
| InvokeCmd | String | W | This single field is used to invoke most of the outgoing commands to the Elk. This is done by writing a formatted command string to this field. The format of the commands will be covered below |
| KeypadXX | Card | R | If you configure any keypad thermometers in the client interface, then you will have fields of this type. The XX will be 1 to 16. The value is the temperature being reported by the keypad's internal thermo. |
| LogZoneXX | String | R | For each configured zone, there is a LogZoneXX field, where XX is 01, 02, etc... which indicates the current logical state of the zone. This is an enumerated field with the values: Unconfigured, Open, EOL, Short |
| OutputXXXX | Boolean | R/W | Get or set the state of a configured digital output. XXXX is the number of the output. |
| Passthrough | String | W | This is a 'backdoor' field that will pass through any command string you send it. Just send the part of the string that includes the command and data parameters. The length prefix, trailing reserved 00 chars, and checksum will be added for you. Be careful with this field, but it insures that you can do things that the driver does not explicitly support. |
| PLC-HUU | Bool/Card | R/W | For every PLC unit configured, you will have a field such as PLC-A01, i.e. PLC- followed by a house code character, then a two digit unit code. It will be Boolean or Cardinal, based on the unit type. |
| ProbeXX | Card | R | If you configure any temperature probes in the client interface, then you will have fields of this type. The XX will be 1 to 16. The value is the temperature being reported by the probe. |
| PhysZoneXX | String | R | For each configured zone, there is a PhysZoneXX field, where XX is 01, 02, etc... which indicates the current physical state of the zone. This is an enumerated field with the values: Normal, Trouble, Violated, Bypassed, Unknown |
| RPMode | Bool | R | Indicates whether the driver is in RP mode or not. When the Elk RP program comes up, it tells the driver to shut up, and the driver goes into RP mode. When in this mode, it will not see any changes or respond to any field writes. When the RP software exits, the driver will go offline and reconnect so that it gets back into sync. |
| SayPhrase | Card | W | Write a number to this field to make the Elk speak the associated phrase in the M1 phrase table. |
| SayWord | Card | W | Write a number to this field to make the Elk speak the associated word in the M1 word table. |
| TXCurTemp | Int | R | Provides the currently reported temperature for thermostat number X. |
| TXCoolSP | Card | R/W | Get or set the cool setpoint for thermostat X. |
| TXFanMode | Bool | R/W | Get or set the fan mode for thermostat X. False means it is off and True means it is in auto mode. |
| TXHeatSP | Card | R/W | Get or set the heat setpoint for thermostat X. |
| TXHold | Boolean | R/W | Get or set the hold value for thermostat X. True means the hold is enabled. |
| TXMode | String | R/W | Get or set the thermostat mode for thermostat X. This is an enumerated field with the values: Off, Heat, Cool, Auto, Emergency Heat. |
| ThermoXX | Card | R | If you configure any thermocouples in the client interface, then you will have fields of this type. The XX will be 1 to 16. The value is the temperature being reported by this thermostat. |
| VoltateXXX | Float | R | If you have configured any voltages in the client interface, then you will have fields of this type. The XXX will be 1 to 208. The value is whatever the raw voltage was converted to by the configured quadratic equation. |
The InvokeCmd field is used to invoke commands on the Omni. It is a string into which the command information is formatted. The Elk driver will parse this information and invoke the indicated command. The format of the commands is:
cmdname : p1, p2, ...
So there is a command name, and if it requires any parameters then there will be a colon followed by comma separated parameters. The command name is case sensitive.
ActivateTask : tasknum
Activate the indicated task number, where tasknum is a value from 1 to 32.
ArmXXX : area, code
Disarm : area, codeArm or disarm an area (1 to 8) using the passed user code. There are a set of arm commands, where the ArmXXX in the syntax above represents ArmAway, ArmStay, ArmStayInstant, ArmNight, ArmNightInstant, or ArmVacation.
DisplayMsg : area, type, beep, timeout, text
Displays the indicated text on the keypad of the indicated area (1 through 8.) The type field indicates the display type, and must be one of the values "Clear" (to clear the display), "ClearKey" (to display the message until the user presses the '*' key to clear it), or "Timeout" (to display the message until the indicated timeout period expires.) The timeout value is only used if the type is "Timeout".
Text format is defined by the Elk. It can be up to two lines of 16 characters each. Use a ^ character to terminate a line before the whole 16 characters. So, to display just one line saying "Hello, World", you would do "Hello, World^^", to terminate the first line, and terminate the second line at the start. To display Hello on one line and World on the second line, you would do "Hello^World". The text can have commas in it because the trailing part of the written value is just taken as is
The beep parameter should be True or False, and controls whether the keypad beeps when it displays the message or not.
OutputOn : outputnum [, for seconds]
Turns on the indicated output number (1 to 208.) There is an optional second parameter to indicate the number of seconds to leave it on. If it is not provided, or if it is zero, the output will stay on until turned off.
OutputOff : outputnum
Turns off the indicated output number (1 to 208.)
OutputToggle : outputnum
Toggles the state of the indicated output number (1 to 208.)
PLCDevOff : hc, uc
PLCDevOn : hc, uc
PLCDevToggle : hc, ucTurns the PLC device at house code 'hc' and unit code 'uc' off, on, or toggles it.
PLCDevCtrl : hc, uc, fn, ec, seconds
Does a general PLC control message, to the PLC device at house code 'hc' and unit code 'uc'. It sends the indicated function 'fn' and extended code 'ec', and a time in seconds for this change to be in effect before reverting. The function codes are:
01 = X10_ALL_UNITS_OFF in a House code
02 = X10_ALL_LIGHTS_ON in a House code
03 = X10_UNIT_ON
04 = X10_UNIT_OFF
05 = X10_DIM, EE extended value holds number of dims
06 = X10_BRIGHT, EE extended value holds number of brights
07 = X10_ALL_LIGHTS_OFF in a House code
08 = X10_EXTENDED_CODE
09 = X10_PRESET_DIM, EE extended value hold level 0 to 99%
10 = X10_EXTENDED_DATA
11 = X10_STATUS_REQ
12 = X10_HAIL_REQUEST
13 = X10_HAIL_ACK, not used
14 = X10_STATUS_ON, not used
15 = X10_STATUS_OFF, not usedThe seconds value is from 0 to 9999, where 0 means permanent and 1 through 9999 indicating a time in seconds.
The extended code means different things for different functions. It is a value from 0 to 99, and is ignored for functions for which it has no meaning. For function 9 it is a brightness level. For 5 and 6 functions it is the number of brights or dims.
Note that some of these PLC related operations can be achieved by writing directly to the PLC unit fields.
TriggerEMail: emn
Sends the indicated email number. The number is the number of the e-mail trigger configured in the Elk.
ZoneBypass : zn, area, code
Bypasses the indicated zone number in the indicated area. You must provide a legal 6 digit user code who has the rights to do this operation.