DSC alarm, openhab 2, failing to "Disarm" alarm

Ok so currently my DSC Alarm binding is mostly working using the IT-100 in Openhab2.
I can see when zones change state from open to close and close to open ect. Can even ARM the alarm in either stay or away mode.

The only thing I can’t do, is to disarm the alarm. This used to work in Openhab 1.8.2 when testing and learning before moving back to Openhab 2, when I had issues getting it to work in Openhab 2 (learned quite a bit since then).

When I try to disarm the alarm (doesnt matter if it is in stay or away mode). I get these in the logs:

2016-05-09 16:24:48.880 [INFO ] [smarthome.event.ItemCommandEvent    ] - Item 'PARTITION1_ARM_MODE' received command 0
2016-05-09 16:24:48.883 [INFO ] [marthome.event.ItemStateChangedEvent] - PARTITION1_ARM_MODE changed from 1 to 0
2016-05-09 16:24:49.336 [INFO ] [marthome.event.ItemStateChangedEvent] - PANEL_MESSAGE changed from 500: A command has been received successfully. to 903: LED Status has changed.
2016-05-09 16:24:51.486 [INFO ] [marthome.event.ItemStateChangedEvent] - PARTITION1_ARM_MODE changed from 0 to 1

So in Openhab 1.8.2 the disarm only worked when supplying my user code in the config file, in openhab.cfg like:

In Openhab2 I specified it as:
Bridge dscalarm:it100:ttyUSB0 [ serialPort="/dev/ttyUSB0", baud=115200, userCode=1234]
I also tried:
Bridge dscalarm:it100:ttyUSB0 [ serialPort="/dev/ttyUSB0", baud=115200, userCode=123400]

What do work is, if I manually send the disarm code to the IT-100:
echo -en "\n\python dsc.py 0401123400`\r\n" > /dev/ttyUSB0`
Above, 040 is disarm, 1 for partition 1, then 1234 and 00 for the pin code, then the alarm disarm via the IT-100.

Now I am not 100% sure how I debug this via Openhab2, since I don’t see the communication directly myself, but whatever is happening, its as if nothing is happening, and openhab2 just sets the alarm mode back to stay or away depending on what it was. Presumably getting update poll data back.

ps. ping 123 is for illustration purposes only.

The dsc.py file is just so that it works out the checksum, so that I dont have to manually do that when sending testing commands directly to the IT-100.

import sys
var = []
def calcChecksum(s):
		for c in s:
			calcSum += ord(c)
		calcSum %= 256
		return calcSum
data = var[0]
pkt = "%s%02X" % (data, calcChecksum(data))
print pkt

To set debug level in OH2:

log:set debug org.openhab.binding.dscalarm

Thank you.

2016-05-09 17:05:12.294 [INFO ] [smarthome.event.ItemCommandEvent    ] - Item 'PARTITION1_ARM_MODE' received command 0
2016-05-09 17:05:12.297 [INFO ] [marthome.event.ItemStateChangedEvent] - PARTITION1_ARM_MODE changed from 1 to 0
2016-05-09 17:05:12.299 [DEBUG] [.dscalarm.handler.IT100BridgeHandler] - write(): Message Sent: 0401123400EF

2016-05-09 17:05:12.299 [DEBUG] [rm.handler.DSCAlarmBaseBridgeHandler] - sendCommand(): 'PartitionDisarmControl' Command Sent - 0401123400EF

2016-05-09 17:05:12.299 [DEBUG] [calarm.handler.PartitionThingHandler] - updateProperties(): Partition Channel UID: dscalarm:partition:ttyUSB0:partition1:partition_arm_mode

2016-05-09 17:05:12.718 [DEBUG] [ng.dscalarm.internal.DSCAlarmMessage] - parseAPIMessage(): Message Received (6701) - Code: 670, Name: Invalid Access Code, Description: 670: An access code that was entered was invalid., Data: 1

2016-05-09 17:05:12.734 [DEBUG] [rm.handler.DSCAlarmBaseBridgeHandler] - handleIncomingMessage(): Message received: 07:24:00 6701CE - Code: "670", Name: "Invalid Access Code", Description: "670: An access code that was entered was invalid.", Time Stamp: 07:24:00, Partition: 1, Data: 1

So it uses code 1234 even though I have a different code configured in my .things file. Hmmm.

The user code is used by the panel not by the bridge, so you would need to define your panel thing with the userCode parameter like so:

Thing panel panel [ userCode="1234" ]

The userCode parameter is a Text value so the quotes are needed. Hope this helps.


Thank you that solved my issue.

Looks like I am still learning something new :slight_smile:


Dear Mr. rsstephens:
I also don’t know how to disarm with usercode.
I set up the DSC via TCP client,and OH2 discovered it for me ,so I linked it as a thing.
Now as I am new to OH,so I set up the binding according to this page.
I just modified the> Switch BRIDGE_CONNECTION {channel=“dscalarm:tcpserver:ee5a8012:bridge_reset”}
and it works besides the icons.
I can set the security system to Stay and Away mode, but the Disarm button not work.
I don’t see anything in things folder under /etc/openhab2/.
so how to set the usercode ?
thanks for your reading.
I use Pi3 ,and I also don’t see any log file in /etc/openhab2 also.
please help me . :blush:

Hello Xie,

Since you added the bridge through discovery, you will need to enter the user code in the PaperUI on the ‘panel’ thing configuration page.

Thanks rsstephens
I still can’t find where to input the user code .

And I find my openhab.log file full of this error, I have no idea how to find out which part is error configured.

2017-04-23 15:36:18.106 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing
2017-04-23 15:36:20.861 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing
2017-04-23 15:37:20.875 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing
2017-04-23 15:37:23.113 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing
2017-04-23 15:38:20.939 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing
2017-04-23 15:38:28.139 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing
2017-04-23 15:39:21.002 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing
2017-04-23 15:39:33.132 [ERROR] [r.TCPServerBridgeHandler$TCPListener] - TCPListener(): Message not handled by bridge: Could not update state, because callback is missing

Can you tell me what is wrong? I am trying to get familiar with openhab2:confounded:
thanks for your help.

You’re almost there. Click on the blue circle icon with the pencil in it, to edit the configuration parameters. :slight_smile:

I have a question, are you using an Envisalink adapter on your DSC alarm system? If so, you should be using the Envisalink bridge, not the TCP server bridge. Those errors messages probably mean that some thing handler isn’t getting initialized and isn’t ready to respond to the messages.

Ohh yeah, I found the user code area.
Nope, I use a tcp to serial module to connect with IT-100,not Envisalink…
So I think I should use TCP server .

would you mind to share the .things .items contents?
Facing the same issue, however not sure if I understood this parameter.

Glad you have it working, Xie!

thanks! Mr.

This is the things file:

root@openhab ~ # cat /opt/openhab/conf/things/dscalarm.things
Bridge dscalarm:it100:ttyUSB0 [ serialPort="/dev/ttyUSB0", baud=115200, suppressAcknowledgementMsgs=true ]
    Thing panel panel [ userCode="4321" ]
    Thing partition partition1 [ partitionNumber=1 ]
    Thing zone zone1 [ partitionNumber=1, zoneNumber=1 ]
    Thing zone zone2 [ partitionNumber=1, zoneNumber=2 ]
    Thing zone zone3 [ partitionNumber=1, zoneNumber=3 ]
    Thing zone zone4 [ partitionNumber=1, zoneNumber=4 ]
    Thing zone zone5 [ partitionNumber=1, zoneNumber=5 ]
    Thing zone zone6 [ partitionNumber=1, zoneNumber=6 ]
    Thing zone zone7 [ partitionNumber=1, zoneNumber=7 ]
    Thing zone zone8 [ partitionNumber=1, zoneNumber=8 ]
    Thing keypad keypad

And this is my items file:

root@openhab ~ # cat /opt/openhab/conf/items/dscalarm.items
Group DSCAlarm
Group DSCAlarmPanel (DSCAlarm)
Group DSCAlarmPartitions (DSCAlarm)
Group DSCAlarmZones (DSCAlarm)
Group DSCAlarmKeypads (DSCAlarm)

/* Groups By Device Type */
Group:Contact:OR(OPEN, CLOSED) DSCAlarmDoorWindow <door>
Group:Contact:OR(OPEN, CLOSED) DSCAlarmMotion <motion>
Group:Contact:OR(OPEN, CLOSED) DSCAlarmSmoke <smokeDetector>

/* DSC Alarm Items */

Switch BRIDGE_CONNECTION {channel="dscalarm:it100:ttyUSB0:bridge_reset"}

/* DSC Alarm Panel Items */
String PANEL_MESSAGE "Panel Message: [%s]" (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_message"}
Number PANEL_COMMAND "Panel Commands" (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_command"}
String PANEL_SYSTEM_ERROR "Panel System Error: [%s]" (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_system_error"}

String PANEL_TROUBLE_MESSAGE "Panel Trouble Message: [MAP(dsc_api.map):%s]" <dscshield> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_trouble_message"}
Switch PANEL_TROUBLE_LED "Panel Trouble LED" <warning> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_trouble_led"}
Switch PANEL_SERVICE_REQUIRED <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_service_required"}
Switch PANEL_AC_TROUBLE <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_ac_trouble"}
Switch PANEL_TELEPHONE_TROUBLE <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_telephone_trouble"}
Switch PANEL_FTC_TROUBLE <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_ftc_trouble"}
Switch PANEL_ZONE_FAULT <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_zone_fault"}
Switch PANEL_ZONE_TAMPER <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_zone_tamper"}
Switch PANEL_ZONE_LOW_BATTERY <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_zone_low_battery"}
Switch PANEL_TIME_LOSS <yellowLED> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_time_loss"}

DateTime PANEL_TIME "Panel Time [%1$tA, %1$tm/%1$td/%1$tY %1tT]" <calendar> (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_time"}
Switch PANEL_TIME_STAMP (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_time_stamp"}
Switch PANEL_TIME_BROADCAST (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_time_broadcast"}

Switch PANEL_FIRE_KEY_ALARM (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_fire_key_alarm"}
Switch PANEL_PANIC_KEY_ALARM (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_panic_key_alarm"}
Switch PANEL_AUX_KEY_ALARM (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_aux_key_alarm"}
Switch PANEL_AUX_INPUT_ALARM (DSCAlarmPanel) {channel="dscalarm:panel:ttyUSB0:panel:panel_aux_input_alarm"}

/* DSC Alarm Keypad Items */
Number KEYPAD_READY_LED "Ready LED Status" <readyLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_ready_led"}
Number KEYPAD_ARMED_LED "Armed LED Status" <armedLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_armed_led"}
Number KEYPAD_MEMORY_LED "Memory LED Status" <memoryLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_memory_led"}
Number KEYPAD_BYPASS_LED "Bypass LED Status" <bypassLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_bypass_led"}
Number KEYPAD_TROUBLE_LED "Trouble LED Status" <troubleLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_trouble_led"}
Number KEYPAD_PROGRAM_LED "Program LED Status" <programLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_program_led"}
Number KEYPAD_FIRE_LED "Fire LED Status" <fireLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_fire_led"}
Number KEYPAD_BACKLIGHT_LED "Backlight LED Status" <backlightLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_backlight_led"}
Number KEYPAD_AC_LED "AC LED Status" <acLED> (DSCAlarmKeypads) {channel="dscalarm:keypad:ttyUSB0:keypad:keypad_ac_led"}

/* DSC Alarm Partition Items */
String PARTITION1_STATUS "Partition 1 Status: [MAP(dsc_state.map):%s]" (DSCAlarmPartitions) {channel="dscalarm:partition:ttyUSB0:partition1:partition_status"}
Number PARTITION1_ARM_MODE "Arm" <dscshield> (DSCAlarmPartitions) {channel="dscalarm:partition:ttyUSB0:partition1:partition_arm_mode"}
Switch PARTITION1_ARMED (DSCAlarmPartitions) {channel="dscalarm:partition:ttyUSB0:partition1:partition_armed"}
Switch PARTITION1_ENTRY_DELAY (DSCAlarmPartitions) {channel="dscalarm:partition:ttyUSB0:partition1:partition_entry_delay"}
Switch PARTITION1_EXIT_DELAY (DSCAlarmPartitions) {channel="dscalarm:partition:ttyUSB0:partition1:partition_exit_delay"}
Switch PARTITION1_IN_ALARM (DSCAlarmPartitions) {channel="dscalarm:partition:ttyUSB0:partition1:partition_in_alarm"}
String PARTITION1_OPENING_CLOSING_MODE "Opening/Closing Mode: [%s]" (DSCAlarmPartitions) {channel="dscalarm:partition:ttyUSB0:partition1:partition_opening_closing_mode"}

/* DSC Alarm Zones Items */
Contact ZONE1_STATUS "Front Door (Zone 1) [%s]" <frontdoor> (DSCAlarmZones, FrontFoyer, DSCAlarmDoorWindow) {channel="dscalarm:zone:ttyUSB0:zone1:zone_status"}
String ZONE1_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone1:zone_message"}
Switch ZONE1_BYPASS_MODE "Front Door Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone1:zone_bypass_mode"}
Switch ZONE1_IN_ALARM "Zone 1 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone1:zone_in_alarm"}
Switch ZONE1_TAMPER "Zone 1 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone1:zone_tamper"}
Switch ZONE1_FAULT "Zone 1 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone1:zone_fault"}
Switch ZONE1_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone1:zone_tripped"}

Contact ZONE2_STATUS "Lounge (Zone 2) [MAP(dsc_motion.map):%s]" <motion> (DSCAlarmZones,  FamilyRoom, DSCAlarmMotion) {channel="dscalarm:zone:ttyUSB0:zone2:zone_status"}
String ZONE2_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone2:zone_message"}
Switch ZONE2_BYPASS_MODE "Family Room  Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone2:zone_bypass_mode"}
Switch ZONE2_IN_ALARM "Zone 2 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone2:zone_in_alarm"}
Switch ZONE2_TAMPER "Zone 2 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone2:zone_tamper"}
Switch ZONE2_FAULT "Zone 2 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone2:zone_fault"}
Switch ZONE2_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone2:zone_tripped"}

Contact ZONE3_STATUS "Kitchen (Zone 3) [MAP(dsc_motion.map):%s]" <motion> (DSCAlarmZones,  FamilyRoom, DSCAlarmMotion) {channel="dscalarm:zone:ttyUSB0:zone3:zone_status"}
String ZONE3_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone3:zone_message"}
Switch ZONE3_BYPASS_MODE "Family Room  Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone3:zone_bypass_mode"}
Switch ZONE3_IN_ALARM "Zone 3 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone3:zone_in_alarm"}
Switch ZONE3_TAMPER "Zone 3 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone3:zone_tamper"}
Switch ZONE3_FAULT "Zone 3 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone3:zone_fault"}
Switch ZONE3_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone3:zone_tripped"}

Contact ZONE4_STATUS "Main Bedroom (Zone 4) [MAP(dsc_motion.map):%s]" <motion> (DSCAlarmZones,  MainBedRoom, DSCAlarmMotion) {channel="dscalarm:zone:ttyUSB0:zone4:zone_status"}
String ZONE4_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone4:zone_message"}
Switch ZONE4_BYPASS_MODE "Family Room  Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone4:zone_bypass_mode"}
Switch ZONE4_IN_ALARM "Zone 4 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone4:zone_in_alarm"}
Switch ZONE4_TAMPER "Zone 4 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone4:zone_tamper"}
Switch ZONE4_FAULT "Zone 4 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone4:zone_fault"}
Switch ZONE4_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone4:zone_tripped"}

Contact ZONE5_STATUS "2nd Bedroom (Zone 5) [MAP(dsc_motion.map):%s]" <motion> (DSCAlarmZones,  2ndBedRoom, DSCAlarmMotion) {channel="dscalarm:zone:ttyUSB0:zone5:zone_status"}
String ZONE5_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone5:zone_message"}
Switch ZONE5_BYPASS_MODE "Family Room  Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone5:zone_bypass_mode"}
Switch ZONE5_IN_ALARM "Zone 5 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone5:zone_in_alarm"}
Switch ZONE5_TAMPER "Zone 5 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone5:zone_tamper"}
Switch ZONE5_FAULT "Zone 5 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone5:zone_fault"}
Switch ZONE5_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone5:zone_tripped"}

Contact ZONE6_STATUS "Kitchen Door (Zone 6) [%s]" <door> (DSCAlarmZones, FrontFoyer, DSCAlarmDoorWindow) {channel="dscalarm:zone:ttyUSB0:zone6:zone_status"}
String ZONE6_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone6:zone_message"}
Switch ZONE6_BYPASS_MODE "Front Door Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone6:zone_bypass_mode"}
Switch ZONE6_IN_ALARM "Zone 6 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone6:zone_in_alarm"}
Switch ZONE6_TAMPER "Zone 6 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone6:zone_tamper"}
Switch ZONE6_FAULT "Zone 6 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone6:zone_fault"}
Switch ZONE6_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone6:zone_tripped"}

Contact ZONE7_STATUS "Sliding Door (Zone 7) [%s]" <door> (DSCAlarmZones, FrontFoyer, DSCAlarmDoorWindow) {channel="dscalarm:zone:ttyUSB0:zone7:zone_status"}
String ZONE7_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone7:zone_message"}
Switch ZONE7_BYPASS_MODE "Front Door Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone7:zone_bypass_mode"}
Switch ZONE7_IN_ALARM "Zone 7 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone7:zone_in_alarm"}
Switch ZONE7_TAMPER "Zone 7 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone7:zone_tamper"}
Switch ZONE7_FAULT "Zone 7 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone7:zone_fault"}
Switch ZONE7_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone7:zone_tripped"}

Contact ZONE8_STATUS "Panic Switch (Zone 8) [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone8:zone_status"}
String ZONE8_MESSAGE "Zone Message: [%s]" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone8:zone_message"}
Switch ZONE8_BYPASS_MODE "Tamper Switch Bypass Mode" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone8:zone_bypass_mode"}
Switch ZONE8_IN_ALARM "Zone 8 Alarm Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone8:zone_in_alarm"}
Switch ZONE8_TAMPER "Zone 8 Tamper Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone8:zone_tamper"}
Switch ZONE8_FAULT "Zone 8 Fault Condition" (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone8:zone_fault"}
Switch ZONE8_TRIPPED (DSCAlarmZones) {channel="dscalarm:zone:ttyUSB0:zone8:zone_tripped"}

I haven’t updated to the latest version of the binding, was busy with other projects and my OpenHab is working without issues at the moment, using the andoid app to manage it daily without issues, specifically the alarm arming and disarming.

Hi Mr Stephens,

The binding is working flawlessly since I installed it and linked it to my Envisalik4. Great work.

Just a headsup on the documentation which says that the user code on the panel isnot required.

Without using the code for my own panel I could not disarm the system, but when I use my code there I am able to disarm it.

Perhaps that’s a phrasing thing. More like “not mandatory”? As in, you can use the other features without a code but not disarm. Some people would NOT want to make their code visible in an internet connected system, nor have it capable of disarming their alarm.

Some people would NOT want to make their code visible in an internet connected system, nor have it capable of disarming their alarm.

This is pretty valid. I may disable the functionality, I still need to think about that. However I do want to be able to send a command to disarm the system via a rule. Every morning someone has to remember to disarm it manually, so it may as well be automated. Would you happen to know what that command would look like?

Something like:

sendCommand(SEND_DSC_ALARM_COMMAND, "OFF,1234")

where 1234 is the code.

Of course the code will still need to be stored (in the rule in this case), but it is a pain turning it off manually very morning.

Hello @UglyKidJoe,

The command would look something like this:

sendCommand(SEND_DSC_ALARM_COMMAND, "040,11234")

Where ‘040’ is the command to disarm a partition and, in the data part, the first ‘1’ is your partition and ‘1234’ is your user code.

Also, the DSC panel has auto arm and disarm capabilities if you don’t want to use a rule to do it. I have mine setup to arm and disarm automatically at certain times. This is programmable from the keypad.

Here is a link on how to setup auto arming, and here is a link on how to setup auto disarming.

Hope this helps.


It certainly does help thanks Russel, and hopefully for anyone else looking for that functionality.

This binding is a very useful integration with a DSC system. Excellent work

Hi Russel,

I wonder if you can help here. I’ve applied the command and have been testing it with a cron timer in a rule, but it seems that the command is not beingparsed correctly (if that’s the correct term ):

2019-01-15 18:50:00.480 [INFO ] [se.smarthome.model.script.Alarm test] - ---------------> Alarm off

==> /var/log/openhab2/events.log <==

2019-01-15 18:50:00.481 [ome.event.ItemCommandEvent] - Item 'SEND_DSC_ALARM_COMMAND' received command 040,11234

2019-01-15 18:50:00.501 [nt.ItemStatePredictedEvent] - SEND_DSC_ALARM_COMMAND predicted to become 040,11234

2019-01-15 18:50:00.509 [vent.ItemStateChangedEvent] - SEND_DSC_ALARM_COMMAND changed from 500: A command has been received successfully. to 040,11234

The rule:

rule "Test disarm alarm"
    Time cron '	0 50 18 1/1 * ? *'
    sendCommand(SEND_DSC_ALARM_COMMAND, "040,11234")
    logInfo('Alarm test', '---------------> Alarm off')

The actual code has been replaced here with 1234. Is there any config perhaps I’m missing? The system does not disarm.

Many thanks