[[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 the IT-100 RS232 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. '''WARNING: This plug-in ''will probably not'' work with the "UI3" (versions 1.1.x) of Vera's firmware. = 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 is a Keybus device that acts as a bridge between the Alarm Panel. [[Image(IT100.jpg, align=center)]] The IT100 interface 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. To connect the IT100 to Vera, a user will have to decide the best method to interface with Vera. 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. == 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, 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 = * If the previous DSC plug-in was installed, then it is recommended to uninstall it first, and then remove the plug-in files from the via SSH * Before attempting to install the plug-in, its recommended to connect the respective RS232 adapter, and set this up first in order to establish connectivity. * Download the .zip file from [http://code.mios.com/trac/mios_dscalarmpanel/changeset/41/tags/0.21?old_path=%2F&format=zip this ]location * Extract the 7 files to a location on your PC. * Click the MiOS developers icon. * Click the Luup files tab * Scroll to the bottom of the window and click on the first browse button * Navigate to the location of the previously saved files and select the first file * Repeat this using additional browse buttons for the remaining 6 files. * Check the "Restart Luup after upload" box and click Go * After the Engine restarts, click on the create device tab of the MiOS developers icon. * In the ''Description'' field, enter a name for the plug-in, similarly in the ''!UpnpDevFilename'' field enter '''D_DSCAlarmPanel1.xml''' and in the ''!UpnpImplFilename'' field enter '''I_DSCAlarmPanel1.xml''' NOTE: It is critical to enter the file names exactly as above, this includes the case sensitivity! * If this is being used with a WIZnet or Roving Networks IP to Serial adapter that’s already been configured, then at this stage the IP and port number of the device can also be entered in the ''!IpAddress'' field (e.g. 192.168.8.23:5000) * Click Create device and then exit [[Image(createdevice.png, align=center,50%)]] NOTE: when the engine finishes loading, and an IP address was entered, hopefully if everything is working correctly, there should now be 8 new devices created which will represent the Panel (parent device), 1 partition and 6 Zones. If the IT100 has been connected to a USB to RS232 converter then this will now need to be set up as follows: * Presuming the Adapter has already been plugged in and recognized as a device and port in the MiOS developers / Serial tab. * Select the correct Serial device, and enter the following settings which represents the default IT100 baud rate: [[Image(232.png, align=center)]] * In the "Used by Device" dropdown, select the name of the device that was entered during plug-in creation. * Exit this screen and then Save. * Again if everything is working, the 8 devices should have been created. = 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" = Discussion = * [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] = References = * [http://cms.dsc.com/download.php?t=1&id=10910 IT100 developer guide] * [http://www.lua.org/manual/5.1 Lua 5.1 Reference Manual] * [http://lua-users.org/wiki/LuaTutorial Lua-users Lua Tutorial] [[Image(room.png, align=Center,100%)]]