Make/Model  Device VersionConnection Type
HAI/Omni Pro II2.9 Firmware or greaterEthernet

Description:

Note that this driver has been superseded by the HAI Omni TCP/IP driver. For all IIe and ProII device with the latest firmware, the Omni supports a TCP/IP based connection and more exposed functionality. The new driver supports this new protocol. This driver is being kept around in order to

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 model, via the Ethernet connection. The serial connection is far to slow for the amount of data involved, so it is not supported.

During installation you will be required to provide the AES encryption key from the Omni, a login id for the driver to log into the Omni, and to indicate whether you want to see Celsius or Fahrenheit temperatures.

The Omni Pro II 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.

This driver will send 'user action' events in response to Omni user macro buttons being invoked. The driver sees the button presses and will send out an event that you can invoke a triggered event off of. So you can use Omni macro buttons to cause CQC actions to occur. User action events provide event type and event data values that you can use to react more specifically. For these button press events from the Omni the event type is "Button" and the event data is the number of the button that was pressed.

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

The Omni Pro II supports both serial and Ethernet connections, but only the Ethernet connection is supported at this time. 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". You must also provide CQC with a login code that it can use to log into the Omni. Be sure to get this right or the driver will not be able to log in even if it can connect to the device.

BE SURE to get the key and login id correct, because if you don't the driver will continue to try to connect and the Omni, being very paranoid, will lock you out because it thinks someone is trying to break in (someone obviously very dumb because he keeps trying to use the same information over and over again.)

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.

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.

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

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.
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 the zone named XXX.
ZoneXXX_ArmingStringRFor each named alarm zone, indicates the arming status for the zone named 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.
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
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.