[[Image(keypad.jpg, align=center)]] = Introduction = The DSC Alarm plug-in is a [http://wiki.micasaverde.com/index.php/Luup_Plugins Luup component] that connects Vera to a DSC !PowerSeries alarm panel such as the !PowerSeries 1616, 1832 and 1864 panels, via an IT-100 or Envisalink IP170/2DS Keybus module. Through this interface, events occurring within the Alarm Panel are exposed to Vera including the status of any attached Doors, Windows, Motion Sensors. Each of these is exposed as a ''Motion Sensor'' to Vera, so that standard [http://wiki.micasaverde.com/index.php/Scenes Scenes] (Lights, Notifications, etc) can be established in Vera based upon events occurring within the Alarm Panel. Additionally, the interface exposes the current Armed State, Stay Armed State and whether the Alarm is in Breach. These are also exposed in a ''Scene-aware'' manner so that Vera can respond to them. '''WARNINGS: * This plug-in is designed for UI5 and UI4, prior versions of Vera's Firmware will not work. * If the Plugin is updated from the files contained here >0.35, or if it automatically updates from an app store based version, then it will change the device ID's of any sensors that are set up as "!DoorZones" The above will only be a problem if these doorZone sensors have been set up at all as triggers for scenes, and these will have to reset after updating To avoid the above scenario the following changes should be made prior to updating: If you currently have a setup with the following initialization parameters doorZones=1,2 motionZones=3,4,5 Then they must be changed prior to the update being made as follows, doorZones= motionZones=1,2,3,4,5 They must all be set up under the motionZones parameter (the front, ordering is important) Once the above is saved, then it will be safe to proceed with updating the plugin. = How does it work = The DSC Alarm Panel uses a proprietary interface bus, called Keybus, to talk to the devices connected to it. The IT100 Serial module and IP170/2DS Ethernet Modules are Keybus devices that acts as a bridge between the Alarm Panel. The IT100 interface or IP170/2DS sits on the Keybus interface where other devices such as Keypads are normally wired, it is able to interact with Alarm Panel messages in order to interface with a Home Automation controller such as Vera. Similarly, these messages can be sent from the Home Automation device back to the DSC Alarm Panel to perform various actions. [[Image(IT100.jpg, align=center)]] If the IT100 is to be used with Vera, the user will have to decide the best method to interface It. This can be accomplished with any of the following options: * Direct Connection to a USB to RS232 serial adapter thats supported by Vera such as [http://www.futureelectronics.com/en/Technologies/Product.aspx?ProductID=UC232R10FUTURETECHNOLOGYDEVICES2297802 this ] one. * Wired Ethernet Connection via an IP to RS232 serial adapter such as WIZnet device like [http://www.sparkfun.com/commerce/product_info.php?products_id=9476 this] one. * !WiFi to RS232 serial adapter such as [http://www.mouser.com/ProductDetail/Roving-Networks/RN-134/?qs=sGAEpiMZZMvdqMP%2faZ%252bGClQs06owUsC0 this] one. [[Image(2DS.png, align=center)]] The Envisalink IP170/2DS does not need a serial adapter, and only needs to be connected via Ethernet. == Terminology == Zone:: a specific sensor in the Alarm Panel, such as a Window, Door or Motion Sensor. These may either be hardwired, or wireless, depending upon the type of sensor. Area / Partition:: a collection of Zones. Typically there is a single Area in a house. Larger houses are often split into separate Areas (Upstairs vs Downstairs). External buildings such as Garages and Guest houses are also candidates for additional Areas. Keybus:: DSC Security proprietary protocol. This protocol is used for communications between DSC System components, such as the IT100, T-Link IP modules, Zone Expanders, Envisalink IP170/2DS, and the System Keypads. Remote control:: a Key chain remote control device, used to Arm (Lock), Disarm (Unlock) or set a Panic Alarm Entry Door:: a Zone (door) with a grace period delay attached to it. The Alarm will not go off during the grace period. Breach:: the Alarm is currently going off, either with a Bell, or a Silent Alarm. Arm:: the act of setting the Alarm Panel into the "I'm leaving" state. Stay Arm:: the act of setting the Alarm Panel into the "I'm staying" state. In this state the Motion Sensors don't trip Alarm Breach. Force Arm:: same as ''Arm'' except that some Zones may be left Open Instant Arm:: same as ''Stay Arm'' except there is no grace period on opening an Entry Door. Virtual PGM:: a special type of Zone defined within the Alarm Panel. The Alarm Panel can be configured to establish the conditions under which a Virtual PGM [Zone] is triggered and/or reset. Virtual PGMs events are supported in the code, but are disabled by default to make the UI simpler. One Touch or Quick Arming:: a variant on the Arming modes that typically doesn't require a PIN Code to be entered to initiate the Arming request. == Messages == Depending upon the specific model of Alarm Panel, there will be support for different numbers of Zones, and Areas. However at startup of the DSC Alarm plug-in, upon successful connection to the Alarm Panel itself, the plug-in will default to creating 6 zones (1,2,3,4,5,6) regardless of how many Zones are configured, and how they may be numbered. The Plug-in by default will also create only one partition despite how many are configured. Once basic communication has been established, it will be necessary to configure the plug-in with the respective zones and partitions. These low-level messages are varied, but include: * Retrieve a Zone Label * Retrieve a Partition Label * Read the status of a Zone (open/closed) * Read the status of an Area (armed/force-armed, stay-armed/instant-armed, alerting/breach) * Zone status change events * Zone status change events * Request Arming / Force-Arming * Request Stay-Arming / Instant-Arming * Trigger Alerting / Breach * Remote control. == The DSC Alarm Plug-in processing == === Startup processing === The Startup processing for the Alarm Panel plugin looks roughly like: * Establish Communication with the Panel * Create 1 partition and attempt to read the partition label. * Create 6 Zones as child devices in the System, and attempt to read the zone labels. * retrieve the current state of each Zone, and "set" it into Vera === Event processing === After startup, the system is set running. It receives events and, for those of interest, it translates them into !MotionSensor values to set upon it's Child Devices, in addition to setting Variables directly on the Alarm Area device During Scene creation, the following ''Events'' are exposed by each partition: * ''Partition is Armed'' * ''Partition is Stay Armed'' * ''Partition is Breached'' * ''Partition is Disarmed'' During Advanced Scene creation, the following ''Actions'' are exposed by each "Area" device: * ''Arm Partition'' - Submit a request to Arm the Alarm Partition (with PINCode) * ''Quick Arm Partition'' - Submit a request to Quick, or "!OneTouch", Arm the Alarm Partition (no PINCode required) * ''Stay Arm Partition'' - Submit a request to Stay-Arm the Alarm Partition (with PINCode) * ''Quick Stay Arm Partition'' - Submit a request to Quick, or "!OneTouch", Stay-Arm the Alarm Partition (no PINCode required) * ''Disarm Partition'' - Submit a request to Disarm the Alarm Partition (PINCode required) * ''Medical Panic'' - Submit a request to trigger the Alarm Partition's Medical Panic - UI4 and above only * ''Fire Panic'' - Submit a request to trigger the Alarm Partition's Fire Panic - UI4 and above only * ''Police Panic'' - Submit a request to trigger the Alarm Partition's Police Panic - UI4 and above only NOTE: The Alarm plugin code disables these Actions by default. They must be enabled prior to using them in a Scene definition. Since MiOS stores these scene definitions, including any Parameters supplied (eg PINCode) use of these features may constitute a security risk - use at your own risk. ==== Alarm Area Variables ==== This Alarm Panel implements a !DeviceType that gives it the following Variables (through it's !ServiceStateTable). These can be used for Luup scripting: * ''Disarmed'' - Set whenever the Alarm Area is Disarmed (not Armed and not !StayArmed) * ''Armed'' - Set when the user requests the Alarm Area to Arm, Force Arm, Stay Arm or Instant Arm the Area * ''!StayArmed'' - Set when the user request the Alarm Area to Stay Arm or Instant Arm the Area * ''Breach'' - set when the Alarm Area is in Breach (Siren, Silent etc) = Installation & Setup = * Instructions for '''[wiki:UI4 UI4 installation]''' * Instructions for '''[wiki:UI5 UI5 installation]''' = Additional Setup = * To configure the correct Partitions and Zones, select the parent device (as named during the creation process). * Click the '''Advanced''' tab * Under Partitions by default there will be '''1''' present, if additional partitions are to be set up then enter them in sequential manner separated by a comma as follows: For two partitions enter '''1,2''' For three partitions enter '''1,2,3''' etc etc... Under the different Zone fields, enter the zone numbers in the same type of sequence. By default it will display '''1,2,3,4,5,6''' in ''DoorZones''. Note you will need to know which Zones are set up which on your panel. They may not be in sequence (per the above), and can be entered depending on their type in any of the three Zone variables. If remote Arming and Disarming is not required from Vera, then exit and save; however if this is required then stay in this screen and enter one of the following into the ''!EnableRemoteArm'' variable: * '''disarm''' (Least secure as all functions are available including disarm) * '''stay''' (This will enable stay arming and away arming, but not disarm) * '''arm''' (Will only enable away mode arming) NOTE: '''disarm''' is the least secure and enables all remote arming features. After entering any of the above, exit and save. To set the time on the panel, in the main tab of the device, enter your PIN and click "Set Time" Zone labels by default will use the default ones programmed in the panel, if labels were never programmed, or were programmed before the IT100 was installed, then the default labels for the sensors the plugin creates will be named "zone 01, zone 02 etc etc, and they cannot not be renamed by default. It is best to try and rectify this with the alarm itself first, however this behavior can be changed by editing the '''EnableManualLabels''' variable in the advanced tab of the alarm parent device from '''false''' to '''true''' and then performing a save at the top of the dashboard; it will then possible to rename. If its preferred that the plugin uses the default mechanism of using the labels from the Alarm System, there are usually several ways to rectify the above behavior without changing the above variable: * If labels have previously been programmed in a keypad, then attempt a label broadcast from the keypad they were originally programmed from by entering *8[Installer code]*998* * If labels were never programmed then they can be programmed them from an alpha numeric keypad and a subsequent label broadcast * Program the labels to the panel using DSC DLS software = Troubleshooting IT100 issues= If after setting everything up the plugin does not seem to work, then its recommended to try some of the following: * If using a USB to serial adapter, check that its a supported type. * Check that the cabling is correct, or replace the serial cable (if used); note that the IT100 does not need a Null modem cable and the pins of the DB9 should be wired 2>2, 3>3 and 9>9 * If the plugin was downloaded from the UI4 Marketplace, then delete it and reinstall the plugin from the files linked here. * If using a WIZnet adapter make sure its setup correctly as per [http://forum.micasaverde.com/index.php/topic,5154.msg34061.html#msg34061 this post] and especially that its "Operation Mode" is set up as Server. * ToDo ...Add more = Discussions = * [http://forum.micasaverde.com/index.php?topic=5154.0 Main thread] * [http://forum.micasaverde.com/index.php?topic=5794.0 Serial adapter discussion] * [http://forum.micasaverde.com/index.php?topic=3713.0 Standardization effort] * [http://forum.micasaverde.com/index.php/topic,5154.msg60596.html#msg60596 Building a DLS programming cable] = References and Links = * [http://cms.dsc.com/download.php?t=1&id=10910 IT100 developer guide] * [http://code.mios.com/trac/mios_dscalarmpanel/attachment/wiki/WikiStart/EnvisaLinkTPI-1-00.pdf 2DS TPI developer guide] * [http://www.homesecuritystore.com/p-548-kit32-219-dsc-power-1832-wireless-ready-security-kit.aspx A good base system] * [http://www.lua.org/manual/5.1 Lua 5.1 Reference Manual] * [http://lua-users.org/wiki/LuaTutorial Lua-users Lua Tutorial] * [http://www.diyalarmforum.com/DLS_IV DLS programming software for use with serial cable and PC] * [http://www.diyalarmforum.com/dsc-alarm-systems-frequently-asked-questions Programming instructions for a Power Series panel] [[Image(room.png, align=Center,100%)]]