DSC Alarm system integration with Arduino Mega/Shield/RS-232

@cslee,

Here are the answers to your questions

(1) The setup can be powered from the alarm panel (if you have at least 9v available)

(2) Null modem RS-232 cable is required.

Please read this thread if you have any questions about the setup:

Regards.

Hi there! I have a DSC 1555 and I don’t know if it’s compatible with IT-100. I saw there is another model, the DSC 1555MX, that I don’t know if it’s the same model as I have (as the MX it’s not specified as you can see in the picture). Anyone would know if my model is compatible? Btw, this is the manual http://cms.dsc.com/download.php?t=1&id=13792

It does not look as this panel is compatible…

http://www.dsc.com/alarm-security-products/IT-100%20-%20PowerSeries%20Integration%20Module/22

Regards.

By looking at this http://cms.dsc.com/download.php?t=1&id=14523 it says it’s compatible with Power632™ (PC1555MX). But it doesn’t say anything about PC1555. I don’t know if I could assume they are kind the same…

Hi. I am walking through this setup and I am having some trouble. It seems I have everything connected and installed as specified. I can see the system in SmartThings. I can click on any of the alarm buttons or refresh and the RS232 TX and RX lights flash briefly. It seems all of that is stacked and programmed correctly. I then have the Null modem RS232 cable connecting the RS232 board to the IT100. The IT100 is connected to the alarm panel. I have redone this part 4 times now. The IT 100 has a green light that continuously flashes. No other lights seem to light up. When I press a button in Smart Things when it makes the RX and TX lights flash on the RS232 board, it does not change the lights/make them flash differently then the continuous steady green flash.

My conclusion is that something is up between the IT 100 and the DSC 5010 panel. Again, I have checked the wires several times and it seems it is connected, but does anyone have any suggestions for me?

Thank you.

@benvlug, this integration is very difficult to debug remotely as there are many parts that can
go wrong.

You need to check if you receive anything from the IT-100 using the Serial Monitor.

In the Serial Monitor (included with the Arduino tool), you should see something similar to the following:

received:
90100032 Date Time JUL 23/15 7:12p25
processing cmd

LCD update
90100032 Date Time JUL 23/15 7:12p25

32B
processing cmd

unsupported message
32B

610016100242D
processing cmd

Zone 016 closed

6100352F
processing cmd

Zone 035 closed

61004631
processing cmd

Zone 046 closed

05733
processing cmd

In ST live logging, the messages would be similar to:

Parse returned Arduino DSC Alarm received ‘ping’
13674729-9d2c-4b14-8e92-860da3a46a6d 8:06:06 PM: debug Received ping
13674729-9d2c-4b14-8e92-860da3a46a6d 8:06:06 PM: debug catchall: 0104 0000 01 01 0140 00 8BDE 00 00 0000 0A 00 0A70696E67
13674729-9d2c-4b14-8e92-860da3a46a6d 8:06:01 PM: debug Parse returned Arduino DSC Alarm front motion is FM inactive
13674729-9d2c-4b14-8e92-860da3a46a6d 8:06:01 PM: debug Received ZN:610004
13674729-9d2c-4b14-8e92-860da3a46a6d 8:06:01 PM: debug catchall: 0104 0000 01 01 0140 00 8BDE 00 00 0000 0A 00 0A5A4E3A363130303034
13674729-9d2c-4b14-8e92-860da3a46a6d 8:05:58 PM: debug Parse returned Arduino DSC Alarm front motion is FM active

In order to receive debug information, you have to uncomment the following:

// setup debug port
'#ifdef DEBUG_ENABLE

You may also have to change the speed:

// setup IT-100 serial port
Serial1.begin(19200); => Try changing baud rate here from 9600 to 19200

Serial.begin(9600);
Serial.println(“Ready”);
'#endif
// initialize variables
bufferIdx = 0;
readyStatus = true;
armed = ‘0’;
alarm = false;

// Now increase the baud rate
alarmSetBaudRate(19200);

Also, in Serial Monitor, please make sure that your baud rate for listening to your port is set to 9600 as this is the default speed set in the sketch (you can change the baud rate usually at the bottom right corner).

If it works, then you can increase the speed up to 115200 (if you want) or leave it at 19200 (refer to alarmSetBaudRate() call)

When done with your debugging, you should comment out the DEBUG_ENABLE flag as you don’t want to do this kind of tracing normally, and upload the sketch again.

Good luck.

P.S. In order to test the code properly, use a nearby motion sensor and wave at it to see if the zone status will be changed.

Also, did you look at the following thread?

Many ST users have the same questions about this setup, and you can find some answers in the thread.
Regards.

1 Like

Thank you. I did miss that thread. Your comments here and that thread was helpful.
My issue was the RS232 required 19200. Also, my RS232 shield is a combo and includes RS485. I missed the switch as it defaulted to RS485. Also, this RS232 board had a switch between UART and Softserial. It was on SoftSerial. I switched it to UART. These three combined fixed the communication issues.
I can now arm/disarm and see the status of the system.

i spent a lot of time understanding the code and can see each of my 8 zones work in the “recently” under the Home Security Thing.
What isn’t working is setting up each zone as its own thing. I’ll keep reading/re-reading to understand where I am in error. Right now, each thing that comes in through the Smartthings app just shows open. Somehow I am missing the connection between the zone and the “thing.” imported.

@benvlug,

Each of your zones defined in SecurityAlarmPanel must then be created in the same order in ArduinoAlarmController, so that there is a match in the zone event processing.

Now, you may also need to open/close each zone to reset the Thing’s state.

Regards.

Thank you for taking the time to assist me.

When you say in “ArduinoAlarmController,” you are referring to the setup in the SmartApp? Vs the Code.

I did use the same order and used the names as defined in the attribute definition from the SecurityAlarmPanel code. Should I mirror a different name from SecurityAlarmPanel? ie a display name.

Appreciate any guidance you can provide. I know this is difficult to troubleshoot remotely.

Hi, the display name does not matter, just the zone number in ArduinoAlarmController should match
the zone number in SecurityAlarmPanel.

Example,

In SecurityAlarmPanel, for the 2nd Floor Motion sensor, which is zone no 1 in my setup:

        if ( msg.substring(3, 9) == "609001" ){
            stateToDisplay = "2FM active"
            result = createEvent(name: "2ndFloorMotion", value: stateToDisplay)
            sendEvent(name: "motion", value: "active")
            **sendEvent(name: "response",  value: "r 1 active", type: "Motion Detector")**
        }

So, in ArduinoAlarmController, you should define zone 1 as the 2nd Floor Motion Detector

Regards.

This is what I have for the first zone.

// Process zone update
}
else if ( msg.substring(0, 2) == “ZN” ) {
if ( msg.substring(3, 9) == “609001” ){
stateToDisplay = "Open"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “Front Door Open”, type: “Open/Closed Sensor”)
}
else if ( msg.substring(3, 9) == “610001” ){
stateToDisplay = "Closed"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “Front Door Closed”, type: “Open/Closed Sensor”)
}

Interesting from Live Logging when I opened the front door and closed it. from the Arduino Alarm Controller. Seems it is trying to match up some sort of word Door. I didn’t call anything (that I am aware of “door”

d7dda88a-ff3b-40ff-93e8-e3fc7d7dc9ad 5:46:16 PM: error groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.lang.Long#minus.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
[class java.lang.Character]
[class java.lang.Number] @ line 283
d7dda88a-ff3b-40ff-93e8-e3fc7d7dc9ad 5:45:05 PM: debug couldn’t find device for zone Door
d7dda88a-ff3b-40ff-93e8-e3fc7d7dc9ad 5:45:05 PM: debug deviceName = zoneDoor
d7dda88a-ff3b-40ff-93e8-e3fc7d7dc9ad 5:45:05 PM: debug Front zone Door status=Closed
d7dda88a-ff3b-40ff-93e8-e3fc7d7dc9ad 5:45:05 PM: debug zonestatusChanged response Front Door Closed Open/Closed Sensor
d7dda88a-ff3b-40ff-93e8-e3fc7d7dc9ad 5:45:03 PM: debug zonestatusChanged response alarmStatus ready null

Hi,

No, you should not change the response’s value in the sendEvent… It should be set back to

sendEvent(name: “response”, value: “r 1 open”, type: “Open/Closed Sensor”)
or
sendEvent(name: “response”, value: “r 1 closed”, type: “Open/Closed Sensor”)

1 is the zone number…The number should change for each zone and matches the same zone set
in ArduinoAlarmController.
Regards.

Thank you. Looks like I got over-zealous on naming/updating the code. That did the trick. I did have to open each contact sensor for it to reset and update (as you suggested earlier). All 8 zones are reporting for duty.

Thank you so much for your work on this and helping me!!!

Hopefully my perils can be avoided by others.

My updated code for the first zone. Many thanks.

// Process zone update
}
else if ( msg.substring(0, 2) == “ZN” ) {
if ( msg.substring(3, 9) == “609001” ){
stateToDisplay = "Open"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “r 1 open”, type: “Open/Closed Sensor”)
}
else if ( msg.substring(3, 9) == “610001” ){
stateToDisplay = "Closed"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “r 1 closed”, type: “Open/Closed Sensor”)
}

So this has been working since Nov '15. Recently (maybe a month or so ago??? It stopped registering closed. If I open a door, it says xxxx contact is open. When I close the door, it repeats saying xxxx contact is open. I had not made any changes to Smartthings or the arduino. Was there some sort of upgrade with Smartthings that requires a code change? I went it and republished and re flashed the Arduino with no luck.

When using the serial monitor, it shows Closed when the door is closed… so I think that part is working. For some reason the connection to Smartthings is not equating to that closed status anymore. Any suggestions? Many Thanks.

I figured it out. Check out this code for the Device Type

// Process zone update
}
else if ( msg.substring(0, 2) == “ZN” ) {
if ( msg.substring(3, 9) == “609001” ){
stateToDisplay = "Open"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “r 1 open”, type: “Open/Closed Sensor”)
}
else if ( msg.substring(3, 9) == “610001” ){
stateToDisplay = "Closed"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “r 1 open”, type: “Open/Closed Sensor”)

Do you see the issue? Closed - value r 1 open
What!? I have not been in here changing the code. However, EVERY one of the 8 sensors has open on the closed event! How crazy is that? I changed it back to closed and it is working now. This is a little disturbing that the code was changed - and I didn’t do it.
Here is the correct code.

// Process zone update
}
else if ( msg.substring(0, 2) == “ZN” ) {
if ( msg.substring(3, 9) == “609001” ){
stateToDisplay = "Open"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “r 1 open”, type: “Open/Closed Sensor”)
}
else if ( msg.substring(3, 9) == “610001” ){
stateToDisplay = "Closed"
result = createEvent(name: “FrontDoor”, value: stateToDisplay)
sendEvent(name: “response”, value: “r 1 closed”, type: “Open/Closed Sensor”)

Hi Guys,

Since SmartThings have decided to retire SmartThing Shield to Arduino. I was looking for a solution using Raspberry Pi with my DSC IT-100 interface. I didn’t found any solution available to use it so I decided to create my own. Here is the link in case you are looking for something similar: https://github.com/Welasco/NodeAlarm.

I used this amazing project as reference and replace the Arduino with a Raspberry Pi 3 using USB to Serial cable and NodeJS with Rest API.

Happy to help.

I’ve used this for many years after getting it working. But since I’ve added more zones via wireless. What do I need to change to get those zones into the smartthings as sensors.

Hi,

You need to edit SecurityAlarmPanel and add your sensors.

And,you need to also execute the Alarm controller smartapp to add your new wirlesss sensors.

If you need further assistance, please contribute to the 6-month support package at my store.

www.ecomatiqhomes.com/store.

Regards.

I have this setup and I want my DSC Alarm system to trigger the zwave siren. Does someone know how to do this?