# Caddx Binding

The Caddx binding is used for communicating with the Caddx alarm panels. Also known as Interlogix.

It provides connectivity to the NetworX alarm panels via a RS-232 serial connection to the NX-584E interface or directly to the NX-8E.

# Supported Things

This binding supports the following Thing types

Thing Thing Type Description
bridge Bridge The RS-232 interface.
panel Thing The basic representation of the alarm System.
partition Thing Represents a controllable area within the alarm system.
zone Thing Represents a physical device such as a door, window, or motion sensor.
keypad Thing Represents a keypad.

# Discovery

First the bridge must be manually defined. The serial port, baud rate and protocol have to be set correctly to match the respective configuration of the panel (see below Prerequisites section). After the bridge is manually added and available to openHAB, the binding will automatically start to discover partitions and zones and add them to the discovery inbox.

Note: There is no support to discover the available keypads.

# Prerequisites

For the binding to work the panel has also to be programmed appropriately.

# Programming locations for the NX-8E control panel

Location Segment Value Description
207 1 1 Serial Port selector
208 1 0 - 4 Baud rate table
0 = 2400 Baud
1 = 4800 Baud
2 = 9600 Baud
3 = 19200 Baud
4 = 38400 Baud
209 1 Off/On Home automation protocol
1 = Off: Binary. On: ASCII.
210 1 2,5,6,7,8 Enabling the Transitions
210 2 1,2,3,4
211 1 2,4,5,6,7,8 Programming the Command/Request enables
211 2 1,2,3,4,5 (Flags 4 and 5 are not yet functional. Can be ignored.)
211 3
211 4 5,7,8
212 1 192 Programming the LCD keypad address.

# Programming locations for the NX-584E home automation module

Location Segment Value Description
0 1 Off/On Home automation protocol
1 = Off: Binary. On: ASCII.
1 1 0 - 4 Baud rate table
0 = 600 Baud
1 = 1200 Baud
2 = 2400 Baud
3 = 4800 Baud
4 = 9600 Baud
5 = 19200 Baud
6 = 38400 Baud
7 = 76800 Baud
2 1 2,5,6,7,8 Enabling the Transitions
2 2 1,2,3,4
3 1 2,4,5,6,7,8 Programming the Command/Request enables
3 2 1,2,3,4,5 (Flags 4 and 5 are not yet functional. Can be ignored.)
3 3
3 4 5,7,8
4 1 192 Programming the LCD keypad address.

# Thing Configuration

The things can be configured either through the online configuration utility via discovery, or manually through the configuration file. The following table shows the available configuration parameters for each thing.

Thing Configuration Parameters
bridge serialPort - Serial port for the bridge - Required
protocol - Protocol used for the communication (Binary, Ascii) - Required - Default = Binary
baudrate - Baud rate of the bridge - Required - Default = 9600
maxZoneNumber - Maximum zone number to be added during discovery - Required - Default = 16
ignoreZoneStatusTransitions - Ignore Zone Status Transitions - Required - Default = false
partition partitionNumber - Partition number (1-8) - Required
zone zoneNumber - Zone number (1-192) - Required
keypad keypadAddress - Keypad address (192-255) - Required
keypad terminalModeSeconds - The number of Seconds the keypad has to remain in Terminal Mode. - Required

# Channels

Caddx Alarm things support a variety of channels as seen below in the following table:

Channel Item Type Type Description
send_Command String Command Send a command to the panel
panel_firmware_version String Configuration Firmware version
panel_log_message_n_0 String Runtime Log message 10
panel_log_message_n_1 String Runtime Log message 9
panel_log_message_n_2 String Runtime Log message 8
panel_log_message_n_3 String Runtime Log message 7
panel_log_message_n_4 String Runtime Log message 6
panel_log_message_n_5 String Runtime Log message 5
panel_log_message_n_6 String Runtime Log message 4
panel_log_message_n_7 String Runtime Log message 3
panel_log_message_n_8 String Runtime Log message 2
panel_log_message_n_9 String Runtime Log message 1
panel_interface_configuration_message Switch Configuration Interface Configuration Message
panel_zone_status_message Switch Configuration Zone Status Message
panel_zones_snapshot_message Switch Configuration Zones Snapshot Message
panel_partition_status_message Switch Configuration Partition Status Message
panel_partitions_snapshot_message Switch Configuration Partitions Snapshot Message
panel_system_status_message Switch Configuration System Status Message
panel_x10_message_received Switch Configuration X-10 Message Received
panel_log_event_message Switch Configuration Log Event Message
panel_keypad_message_received Switch Configuration Keypad Message Received
panel_interface_configuration_request Switch Configuration Interface Configuration Request
panel_zone_name_request Switch Configuration Zone Name Request
panel_zone_status_request Switch Configuration Zone Status Request
panel_zones_snapshot_request Switch Configuration Zones Snapshot Request
panel_partition_status_request Switch Configuration Partition Status Request
panel_partitions_snapshot_request Switch Configuration Partitions Snapshot Request
panel_system_status_request Switch Configuration System Status Request
panel_send_x10_message Switch Configuration Send X-10 Message
panel_log_event_request Switch Configuration Log Event Request
panel_send_keypad_text_message Switch Configuration Send Keypad Text Message
panel_keypad_terminal_mode_request Switch Configuration Keypad Terminal Mode Request
panel_program_data_request Switch Configuration Program Data Request
panel_program_data_command Switch Configuration Program Data Command
panel_user_information_request_with_pin Switch Configuration User Information Request with PIN
panel_user_information_request_without_pin Switch Configuration User Information Request without PIN
panel_set_user_code_command_with_pin Switch Configuration Set User Code Command with PIN
panel_set_user_code_command_without_pin Switch Configuration Set User Code Command without PIN
panel_set_user_authorization_command_with_pin Switch Configuration Set User Authorization Command with PIN
panel_set_user_authorization_command_without_pin Switch Configuration Set User Authorization Command without PIN
panel_store_communication_event_command Switch Configuration Store Communication Event Command
panel_set_clock_calendar_command Switch Configuration Set Clock / Calendar Command
panel_primary_keypad_function_with_pin Switch Configuration Primary Keypad Function with PIN
panel_primary_keypad_function_without_pin Switch Configuration Primary Keypad Function without PIN
panel_secondary_keypad_function Switch Configuration Secondary Keypad Function
panel_zone_bypass_toggle Switch Configuration Zone Bypass Toggle
panel_ac_fail Switch Configuration AC fail
panel_ac_power_on Switch Configuration AC Power on
panel_low_battery_memory Switch Configuration Low Battery Memory
partition_bypass_code_required Switch Partition Condition Bypass code required
partition_fire_trouble Switch Partition Condition Fire trouble
partition_fire Switch Partition Condition Fire
partition_pulsing_buzzer Switch Partition Condition Pulsing Buzzer
partition_tlm_fault_memory Switch Partition Condition TLM fault memory
partition_armed Switch Partition Condition Armed
partition_instant Switch Partition Condition Instant
partition_previous_alarm Switch Partition Condition Previous Alarm
partition_siren_on Switch Partition Condition Siren on
partition_steady_siren_on Switch Partition Condition Steady siren on
partition_alarm_memory Switch Partition Condition Alarm memory
partition_tamper Switch Partition Condition Tamper
partition_cancel_command_entered Switch Partition Condition Cancel command entered
partition_code_entered Switch Partition Condition Code entered
partition_cancel_pending Switch Partition Condition Cancel pending
partition_silent_exit_enabled Switch Partition Condition Silent exit enabled
partition_entryguard Switch Partition Condition Entryguard (stay mode)
partition_chime_mode_on Switch Partition Condition Chime mode on
partition_entry Switch Partition Condition Entry
partition_delay_expiration_warning Switch Partition Condition Delay expiration warning
partition_exit1 Switch Partition Condition Exit1
partition_exit2 Switch Partition Condition Exit2
partition_led_extinguish Switch Partition Condition LED extinguish
partition_cross_timing Switch Partition Condition Cross timing
partition_recent_closing_being_timed Switch Partition Condition Recent closing being timed
partition_exit_error_triggered Switch Partition Condition Exit error triggered
partition_auto_home_inhibited Switch Partition Condition Auto home inhibited
partition_sensor_low_battery Switch Partition Condition Sensor low battery
partition_sensor_lost_supervision Switch Partition Condition Sensor lost supervision
partition_zone_bypassed Switch Partition Condition Zone bypassed
partition_force_arm_triggered_by_auto_arm Switch Partition Condition Force arm triggered by auto arm
partition_ready_to_arm Switch Partition Condition Ready to arm
partition_ready_to_force_arm Switch Partition Condition Ready to force arm
partition_valid_pin_accepted Switch Partition Condition Valid PIN accepted
partition_chime_on Switch Partition Condition Chime on (sounding)
partition_error_beep Switch Partition Condition Error beep (triple beep)
partition_tone_on Switch Partition Condition Tone on (activation tone)
partition_entry1 Switch Partition Condition Entry 1
partition_open_period Switch Partition Condition Open period
partition_alarm_sent_using_phone_number_1 Switch Partition Condition Alarm sent using phone number 1
partition_alarm_sent_using_phone_number_2 Switch Partition Condition Alarm sent using phone number 2
partition_alarm_sent_using_phone_number_3 Switch Partition Condition Alarm sent using phone number 3
partition_cancel_report_is_in_the_stack Switch Partition Condition Cancel report is in the stack
partition_keyswitch_armed Switch Partition Condition Keyswitch armed
partition_delay_trip_in_progress Switch Partition Condition Delay Trip in progress (common zone)
partition_secondary_command Number Command Partition Secondary Command
zone_partition2 Switch Configuration Partition 2
zone_partition3 Switch Configuration Partition 3
zone_partition1 Switch Configuration Partition 1
zone_partition4 Switch Configuration Partition 4
zone_partition5 Switch Configuration Partition 5
zone_partition6 Switch Configuration Partition 6
zone_partition7 Switch Configuration Partition 7
zone_partition8 Switch Configuration Partition 8
zone_name String Configuration Name
zone_fire Switch Configuration Fire
zone_24hour Switch Configuration 24 Hour
zone_key_switch Switch Configuration Key-switch
zone_follower Switch Configuration Follower
zone_entry_exit_delay_1 Switch Configuration Entry / exit delay 1
zone_entry_exit_delay_2 Switch Configuration Entry / exit delay 2
zone_interior Switch Configuration Interior
zone_local_only Switch Configuration Local only
zone_keypad_sounder Switch Configuration Keypad Sounder
zone_yelping_siren Switch Configuration Yelping siren
zone_steady_siren Switch Configuration Steady siren
zone_chime Switch Configuration Chime
zone_bypassable Switch Configuration Bypassable
zone_group_bypassable Switch Configuration Group bypassable
zone_force_armable Switch Configuration Force armable
zone_entry_guard Switch Configuration Entry guard
zone_fast_loop_response Switch Configuration Fast loop response
zone_double_eol_tamper Switch Configuration Double EOL tamper
zone_type_trouble Switch Configuration Trouble
zone_cross_zone Switch Configuration Cross zone
zone_dialer_delay Switch Configuration Dialer delay
zone_swinger_shutdown Switch Configuration Swinger shutdown
zone_restorable Switch Configuration Restorable
zone_listen_in Switch Configuration Listen in
zone_faulted Contact Zone Condition Faulted (or delayed trip)
zone_tampered Switch Zone Condition Tampered
zone_trouble Switch Zone Condition Trouble
zone_bypassed Switch Zone Condition Bypassed
zone_inhibited Switch Zone Condition Inhibited (force armed)
zone_low_battery Switch Zone Condition Low battery
zone_loss_of_supervision Switch Zone Condition Loss of supervision
zone_alarm_memory Switch Zone Condition Alarm memory
zone_bypass_memory Switch Zone Condition Bypass memory
keypad_key_pressed String Button press The pressed button on the keypad

# Thing actions

The binding supports the following actions on the respective things.

Thing Name Description Specification
bridge restart Restart the binding void restart()
zone bypass Bypass the zone void bypass()
keypad enterTerminalMode Enter terminal mode on the selected keypad void enterTerminalMode()
keypad sendKeypadTextMessage Display a message on the Keypad void sendKeypadTextMessage(String displayLocation, String text)
partition turnOffAnySounderOrAlarm Turn off any sounder or alarm void turnOffAnySounderOrAlarm(String pin)
partition disarm Dis-arm void disarm(String pin)
partition armInAwayMode Arm in away mode void armInAwayMode(String pin)
partition armInStayMode Arm in stay mode void armInStayMode(String pin)
partition cancel Cancel void cancel(String pin)
partition initiateAutoArm Initiate auto arm void initiateAutoArm(String pin)
partition startWalkTestMode Start walk-test mode void startWalkTestMode(String pin)
partition stopWalkTestMode Stop walk-test mode void stopWalkTestMode(String pin)
partition stay Stay (1 button arm / toggle interiors) void stay()
partition chime Chime (toggle chime mode) void chime()
partition exit Exit (1 button arm / toggle instant) void exit()
partition bypassInteriors Bypass Interiors void bypassInteriors()
partition firePanic Fire Panic void firePanic()
partition medicalPanic Medical Panic void medicalPanic()
partition policePanic Police Panic void policePanic()
partition smokeDetectorReset Smoke detector reset void smokeDetectorReset()
partition autoCallbackDownload Auto callback download void autoCallbackDownload()
partition manualPickupDownload Manual pickup download void manualPickupDownload()
partition enableSilentExit Enable silent exit void enableSilentExit()
partition performTest Perform test void performTest()
partition groupBypass Group Bypass void groupBypass()
partition auxiliaryFunction1 Auxiliary Function 1 void auxiliaryFunction1()
partition auxiliaryFunction2 Auxiliary Function 2 void auxiliaryFunction2()
partition startKeypadSounder Start keypad sounder void startKeypadSounder()
panel turnOffAnySounderOrAlarmOnPanel Turn off any sounder or alarm on all partitions void turnOffAnySounderOrAlarm(String pin)
panel disarmOnPanel Dis-arm all partitions void disarm(String pin)
panel armInAwayModeOnPanel Arm in away mode on all partitions void armInAwayMode(String pin)
panel armInStayModeOnPanel Arm in stay mode on all partitions void armInStayMode(String pin)
panel cancelOnPanel Cancel command on all partitions void cancel(String pin)
panel initiateAutoArmOnPanel Initiate auto arm on all partitions void initiateAutoArm(String pin)
panel startWalkTestModeOnPanel Start walk-test mode on all partitions void startWalkTestMode(String pin)
panel stopWalkTestModeOnPanel Stop walk-test mode on all partitions void stopWalkTestMode(String pin)
panel stayOnPanel Stay (1 button arm / toggle interiors) on all partitions void stay()
panel chimeOnPanel Chime (toggle chime mode) on all partitions void chime()
panel exitOnPanel Exit (1 button arm / toggle instant) on all partitions void exit()
panel bypassInteriorsOnPanel Bypass Interiors on all partitions void bypassInteriors()
panel firePanicOnPanel Fire Panic on all partitions void firePanic()
panel medicalPanicOnPanel Medical Panic on all partitions void medicalPanic()
panel policePanicOnPanel Police Panic on all partitions void policePanic()
panel smokeDetectorResetOnPanel Smoke detector reset on all partitions void smokeDetectorReset()
panel autoCallbackDownloadOnPanel Auto callback download on all partitions void autoCallbackDownload()
panel manualPickupDownloadOnPanel Manual pickup download on all partitions void manualPickupDownload()
panel enableSilentExitOnPanel Enable silent exit on all partitions void enableSilentExit()
panel performTestOnPanel Perform test on all partitions void performTest()
panel groupBypassOnPanel Group Bypass on all partitions void groupBypass()
panel auxiliaryFunction1OnPanel Auxiliary Function 1 on all partitions void auxiliaryFunction1()
panel auxiliaryFunction2OnPanel Auxiliary Function 2 on all partitions void auxiliaryFunction2()
panel startKeypadSounderOnPanel Start keypad sounder on all partitions void startKeypadSounder()

# Full Example

The following is an example of a things file (caddx.things):

Bridge caddx:bridge:thebridge  "Bridge"                   [ protocol="Binary", serialPort="/dev/ttyUSB0", baudrate=38400, maxZoneNumber=18 ] {
    Thing partition partition1 "Groundfloor alarm"        [ partitionNumber=1 ]
    Thing zone      zone1      "Livingroom motion sensor" [ zoneNumber=1 ]
    Thing zone      zone2      "Bedroom motion sensor"    [ zoneNumber=2 ]
    Thing zone      zone3      "Guestroom motion sensor"  [ zoneNumber=3 ]
    Thing zone      zone4      "Livingroom window"        [ zoneNumber=4 ]
    Thing zone      zone5      "Bedroom window"           [ zoneNumber=5 ]
    Thing zone      zone6      "Guestroom window"         [ zoneNumber=6 ]
}

The following is an example of an items file (caddx.items):

Group:Contact:OR(OPEN,CLOSED)  MotionSensors   "Motion Sensors [%s]"   <motion>
Group:Contact:OR(OPEN,CLOSED)  Windows         "Windows open [%s]"     <window>

Contact   Bedroom_Motion        "Bedroom [%s]"          <motion>       (MotionSensors)  { channel="caddx:zone:thebridge:zone1:zone_faulted" }
Contact   Livingroom_Motion     "Livingroom [%s]"       <motion>       (MotionSensors)  { channel="caddx:zone:thebridge:zone2:zone_faulted" }
Contact   Guestroom_Motion      "Guestroom [%s]"        <motion>       (MotionSensors)  { channel="caddx:zone:thebridge:zone3:zone_faulted" }
Contact   Bedroom_Window        "Bedroom Window [%s]"   <window>       (Windows)        { channel="caddx:zone:thebridge:zone4:zone_faulted" }
Contact   Livingroom_Window     "Livinroom Window [%s]" <window>       (Windows)        { channel="caddx:zone:thebridge:zone5:zone_faulted" }
Contact   Guestroom_Window      "Guestroom Window [%s]" <window>       (Windows)        { channel="caddx:zone:thebridge:zone6:zone_faulted" }

Switch    Partition1_Armed      "Armed [%s]"            <groundfloor>   { channel="caddx:partition:thebridge:partition1:partition_armed" }
Switch    Partition1_EntryGuard "Entry Guard [%s]"      <groundfloor>   { channel="caddx:partition:thebridge:partition1:partition_entryguard" }

The following is an example of a sitemap file (home.sitemap):

sitemap home label="Home" {
    Frame label="Ground floor" {
    Text item=Partition1_Armed
    Text item=Partition1_EntryGuard

    Text item=MotionSensors
        Text label="Motion Sensors (detailed)" {
            Text item=Bedroom_Motion
            Text item=Livingroom_Motion
            Text item=Guestroom_Motion
        }

    Text item=Windows
        Text label="Windows (detailed)" {
            Text item=Bedroom_Window
            Text item=Livingroom_Window
            Text item=Guestroom_Window
        }
    }
}

The following is a rule example with calling of an action on the binding

rule "Zone Bypass on Chime Off"
when
    Item caddx_partition_thebridge_partition1_partition_chime_mode_on changed from ON to OFF
then
    val actions = getActions("caddx","caddx:zone:thebridge:zone4")
    if (null === actions) {
        logWarn("actions", "Actions not found, check thing ID for the Zone")
        return
    }
    
    actions.bypass()
end