Make/Model  Device VersionConnection Type
HAI/Omni Pro II and IIe2.16 Firmware or greaterEthernet

Description:

Note that this driver is only for Pro II and IIe panels that have been upgraded to use the newest 2.16 firmware, which supports a TCP/IP based connection, as apposed to the previous versions that used a UDP based connection. The original Omni driver supports that older protocol and if you haven't upgraded your Omni, then you should use the other driver.

At this time, there is a bug in the 2.16 firmware, which prevents it from responding to queries for external enclosure status. So those fields will, until this problem is fixed, not have valid contents.

The HAI Omni line of smart panels from HAI are very popular hardware based home control and automation panels, which come in a family from the Omni LT up to the full bore Omni II Pro. The functionality that they provide includes X-10 control, hardwired controllers, thermometers, security, zone/area configuration, among other things. This driver only supports the Omni Pro II and IIe models, via the Ethernet connection.

During installation you will be required to provide the AES encryption key from the Omni, and to indicate whether you want to see Celsius or Fahrenheit temperatures. The Omni does tell us what the currently set temperature format is, but the driver still lets you separately select a format, in case you should want something different.

The Omni supports many zones, PLC units, and so forth. You don't want the driver to try to keep up with all these since you will usually only actually be utilizing some of them. So this driver provides a client side driver interface that allows you to configure what you want the driver to actually provide control of/feedback from. The interface is simple and just provides a set of lists of configurable items that you can select from.

Each of the configurable lists displays the available items of that type. To add or remove an item, double click that item. If you add one, a right arrow will appear beside it (indicating insert this item into the list of monitored items.) If you remove one, a left arrow will appear, indicating remove this item from the list. For those items that are currently configured, a red check box will appear. For each checked item, one or more driver fields will be created to allow you to control and/or monitor that item. See the field list table below for the names of those fields.

For some lists, the double click toggles between not configured and the available settings for that type of item. The PLC Units list will toggle between the types of units supported (binary or dimmer), and the zones will toggle between a standard alarm zone, a humidity zone, or a temp zone. In each case, the setting controls what kinds of driver fields are created for that unit or zone.

The field names for these items will all start with standard prefixes. For areas it will be Area1 to Area8. For thermostats it will be Thermo01 to Thermo64, using a leading zero if needed to make it a 2 digit number. For zones and units, it will be Zone001 to Zone176 and Unit001 to Unit511, using one or two leading zeros if needed to make it a 3 digit number.

User Events:

This driver will send 'user action' events in response to Omni user macro buttons being invoked, X10 codes received, UBP links being invoked and potentially other incoming events going forward. So you can use these external stimuli to cause CQC actions to occur. User action events provide event type and event data values that you can use to react more specifically. The information sent for each event type is:

Buttons: The event types is "Button" and the event data is the number of the button that was pressed.
UPB Link: The event type is "UPBLink" and the event data is in the form "type, linknum", where type is Off, On, Set or FStop and linknum is the number of the link.
X-10 Code: The event type is "X10Code" and the event data is in the form "state,hc,uc", where state is On or Off and hc and uc are the house and unit codes.

Quirks and Limitations:

If you choose to see Fahrenheit temperatures, you will sometimes not get exactly the temperature you set. The Omni is based on Celsius temperatures, and a conversion must be done, which might create a 1 degree rounding difference by the time you see the temperature back again from the driver, since it goes from your F, to the Omni's C, and then gets read back from the Omni as C which is converted to F.

This driver will only provide reliable feedback on lighting units that provide two way control, e.g. ALC or UPB units.

Connection Details

You must provide the CQC driver with the encryption key from the Omni, so that the driver can communicate with the Omni. Enter this without all the dashes, so it's just 32 characters, for example "12345678901234567890123456789012". Unlike the previous version, CQC does not have to provide the login code. The encryption key is all that is needed.

You must also provide the IP address of the Omni. You should either give the Omni a fixed IP address, so that it will not change, or make sure that it is available in your local DNS server in which case you can give the CQC driver that DNS name instead of the numerical address. Fixed addresses are always more reliable though, so go that way if possible.

Driver Fields

This section lists the fields that the driver makes available, their types, minimum and maximum values, etc...

NameTypeR/WDescription/Limits
AreaX_StatusStringRFor each configured area, indicates the status of that area, where X is 1 through 8. This is an enumerated field with the values: Off, Day, Night, Away, Vacation, DayInstant, NightDelay, Unknown. It also will indicate when it is in the process of arming or disarming (during the countdown), so there are addition values of ArmingDay, ArmingNight, etc..., i.e. all of the above statuses except Off and Unknown with an 'Arming' prefix.

Note that, if you are in the 'single area' mode, then there is only an Area1.

AreaX_AlarmedBoolRFor each configured area, this indicates whether the area is in alarm state or not.
EnclXACPowerOffBoolRIndicates the AC Power Low state for expansion enclosure X, where is the enclosure number (1 to 8 for the Pro II.)
EnclXBatteryLowBoolRIndicates the Battery Low state for expansion enclosure X, where is the enclosure number (1 to 8 for the Pro II.)
EnclXBatteryLevelBoolRIndicates the battery level for expansion enclosure X, where is the enclosure number (1 to 8 for the Pro II.)
EnclXCommFailureBoolRIndicates the communications failure status for expansion enclosure X, where is the enclosure number (1 to 8 for the Pro II.)
InvokeCmdStringWThis single field is used to invoke all commands on the Omni. The format will be covered below.
MainBatteryCardRIndicates the main battery level value.
SoftwareVersionStringRIndicates the software being run by the connected Omni.
TimeValidBoolRIndicates whether the Omni time has been set in its configuration or not.
ThermoXX_HoldBoolR/WIndicates the hold status for thermostat XX. Write to the field to set/clear the hold state.
ThermoXX_CurTempIntRIndicates the current temperature for thermostat XX. It will be in the selected temperature scale.
ThermoXX_CoolSPIntR/WIndicates the cooling setpoint for thermostat XX. It will be in the selected temperature scale. Write to it in order to set the cooling set point (using the same scale.)
ThermoXX_HeatSPIntR/WIndicates the heating setpoint for thermostat XX. It will be in the selected temperature scale. Write to it in order to set the heating set point (using the same scale.)
ThermoXX_FanModeStringR/WIndicates the fan mode for thermostat XX. This is an enumerated field with the values: Auto, On, Unknown. Write to this field to set the fan mode (Unknown is not a valid outgoing value.)
ThermoXX_ModeStringR/WIndicates the thermostat mode for thermostat XX. This is an enumerated field with the values: Off, Heat, Cool, Auto, Emergency Heat, Unknown. Write to this field to set the mode (Unknown is not a valid outgoing value.)
UnitXXX_LevelCardR/WIndicates the level of dimmer unit XXX. The value is always 0 to 100. Write to the field to set the level. For non-dimming units, any non-zero value will result in full on. See the Caveats/Limits section above.
UnitXXX_ValueBooleanR/WIndicates the state of binary unit XXX. Write to the field to set the on/off state. See the Caveats/Limits section above.
ZoneXXX_AnalogCardRFor each named zone, indicates the analog loop reading for zone XXX.
ZoneXXX_ArmingStringRFor each named alarm zone, indicates the arming status for zone XXX. This is an enumerated field with the values: Disarmed, Armed, Bypassed by User, Bypassed by System.
ZoneXXX_CurValIntRFor each named temp/humidity zone, indicates the current temperature or humidity. For humidity zones the values are 0 to 100. For temp zones it will be the temperature in the selected temp format.
ZoneXXX_LatchedStringRFor each named alarm zone, indicates the latched alarm status for the zone named XXX. This is an enumerated field with the values: Secure, Tripped, Reset.
ZoneXXX_HighSPIntR/WFor each named temp/humidity zone, gets or sets the high set point for that that zone. For humidity the value is from 0 to 100. For temp zones, it is in the current temp format.
ZoneXXX_LowSPIntR/WFor each named temp/humidity zone, gets or sets the low set point for that that zone. For humidity the value is from 0 to 100. For temp zones, it is in the current temp format.
ZoneXXX_StatusStringRFor each named zone, indicates the security status for the zone named XXX. This is an enumerated field with the values:  Secure, Not Ready, Trouble.

Command Format

The InvokeCmd field is used to invoke commands on the Omni. It is a string into which the command information is formatted. The Omni driver will parse this information and invoke the indicated command.

In the list below, the configured items are referred to by name, e.g. Area3, Zone043, Unit002, Thermo93. Other values are either immediate values, like a login code, or the number of an item, such as message 4 or button 10 since those types of items are not named.

Command

Description
AreaAllOf=aaaTurn off the units in the area. If aaa=$All$, then all units in all areas, else indicate the area name you want.
AreaAllOn=aaaTurn on all units in the indicated area. If aaa=$All$, then all units in all areas, else indicate the area name you want.
ArmArea=aaa,mmm,cccArm the named area with the named mode, using code ccc. If aaa=$All$, then all areas, else indicate the area name you want. The modes are: Off, Day, Night, Away, Vacation, DayInstant, NightDelayed.
BypassZone=aaa,zzz,cccBypass zone named zzz, using code ccc from area aaa. ccc is a 4 digit login code.
ClearAllMsgs=aaaClears all messages in the indicated area. If aaa=$All$, then for all areas, else indicate the area name you want.
ClearMsg=mmmClears the indicated message in all areas.
ExecButton=bbbInvoke the button with number bbb.
PhoneMsg=nnn,mmmPhones the indicated number nnn (the item number of the configured phone number, not the literal one) and says the message number indicated by mmm.
RawCmd=ccc,111,222This is a pass-through command which lets you send any command you want. You provide the command number and values for parameter 1 and 2. You are responsible for insuring that the values are valid.
RestoreZone=aaa,zzz,cccRestore zone with name zzz, using code ccc from area aaa. ccc is a 4 digit login code.
SayMsg=mmmSay the message with number mmm
SendAudioKC=zzz,cccSends the indicates audio code ccc to zone zzz.
SetZoneSrc=zzz,sssSet's the audio source for zone zzz to input sss.
SetZoneVol=zzz,pppSets the audio volume for zone zzz to percent value ppp (0 to 100.)
ShowMsg=mmmShow the message with number mmm
UnitPercent=uuu,pppSets dimmer unit uuu to level ppp percent (0 to 100.)
UnitOff/UnitOn=uuu,tttTurn off/on the unit named uuu for time ttt. ttt is interpreted as:
0 : Off or on unconditionally
1..99 : For 1 to 99 seconds
101..199 : For 1 to 99 minutes
201..218 : For 1 to 18 hours
UnitDim/UnitBri=uuu,iii,sssIncreases or decreases the brightness of unit uuu by the increment iii (from 1 to 9) over sss seconds. The seconds are clipped to 99 if a larger value is passed. Each increment/decrement value represents a 10% change.
UPBLink=lll,sssActivates or deactivates UPB link with the number lll. The state is in sss and 1 indicate activate and 0 indicates deactivate.
UPBLEDOn/UPBLEDOff=uuu,lllTurns on or off the LED on UPB unit uuu. lll is the LED number, from 1 to 8.