From 982e5f9639fdbf13a2ee80cf100a939c78ff79c5 Mon Sep 17 00:00:00 2001 From: hawk259 Date: Fri, 21 Apr 2017 11:59:59 -0400 Subject: [PATCH] Adding docs for new AlarmDecoder (#2373) * Adding docs for new AlarmDecoder * moved to 0.43 release, I hope tweak usb docs --- .../alarm_control_panel.alarmdecoder.markdown | 20 +++++++ source/_components/alarmdecoder.markdown | 55 ++++++++++++++++++ .../binary_sensor.alarmdecoder.markdown | 20 +++++++ .../_components/sensor.alarmdecoder.markdown | 18 ++++++ .../images/supported_brands/alarmdecoder.png | Bin 0 -> 15273 bytes 5 files changed, 113 insertions(+) create mode 100644 source/_components/alarm_control_panel.alarmdecoder.markdown create mode 100644 source/_components/alarmdecoder.markdown create mode 100644 source/_components/binary_sensor.alarmdecoder.markdown create mode 100644 source/_components/sensor.alarmdecoder.markdown create mode 100644 source/images/supported_brands/alarmdecoder.png diff --git a/source/_components/alarm_control_panel.alarmdecoder.markdown b/source/_components/alarm_control_panel.alarmdecoder.markdown new file mode 100644 index 00000000000..fec4f0cb3fd --- /dev/null +++ b/source/_components/alarm_control_panel.alarmdecoder.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "AlarmDecoder Alarm Control Panel" +description: "Instructions how to setup the AlarmDecoder Alarm control panel within Home Assistant." +date: 2017-04-02 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: alarmdecoder.png +ha_category: Alarm +ha_release: 0.43 +ha_iot_class: "Local Push" +--- + + +The `alarmdecoder` alarm control panel platform allows you to control your [AlarmDecoder](https://www.alarmdecoder.com) alarms. + +The requirement is that you have setup your [AlarmDecoder hub](/components/alarmdecoder/). + diff --git a/source/_components/alarmdecoder.markdown b/source/_components/alarmdecoder.markdown new file mode 100644 index 00000000000..cc6c5fc662c --- /dev/null +++ b/source/_components/alarmdecoder.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "AlarmDecoder Alarm" +description: "Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an AlarmDecoder device." +date: 2017-04-02 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: alarmdecoder.png +ha_category: Alarm +ha_release: 0.43 +ha_iot_class: "Local Push" +--- + +The `alarmdecoder` component will allow Home Assistant users who own either a DSC or Honeywell alarm panel to leverage their alarm system and it's sensors to provide Home Assistant with rich information about their homes. Connectivity between Home Assistant and the alarm panel is accomplished through a device produced by Nu Tech Software Solutions, known as the AlarmDecoder. The AlarmDecoder devices provide a serial, TCP/IP socket or USB interface to the alarm panel, where it emulates an alarm keypad. + +Please visit the [AlarmDecoder website](https://www.alarmdecoder.com/) for further information about the AlarmDecoder devices. + +There is currently support for the following device types within Home Assistant: + +- [Binary Sensor](/components/binary_sensor.alarmdecoder/): Reports on zone status +- [Sensor](/components/sensor.alarmdecoder/): Emulates an keypad display +- [Alarm Control Panel](/components/alarm_control_panel.alarmdecoder/): Reports on alarm status, and can be used to arm/disarm the system + +This is a fully event-based component. Any event sent by the AlarmDecoder device will be immediately reflected within Home Assistant. + +An `alarmdecoder` section must be present in the `configuration.yaml` file and contain the following options as required: + +```yaml +# Example configuration.yaml entry +alarmdecoder: + device: + type: socket + host: 192.168.1.20 + port: 10000 + panel_display: On + zones: + 01: + name: 'Smoke Detector' + type: 'smoke' + 02: + name: 'Front Door' + type: 'opening' +``` + +Configuration variables: + +- **type** (*Required*): The type of AlarmDecoder device: socket, serial or usb +- **host** (*Optional*): The IP address of the AlarmDecoder device on your home network, if using socket type. Default: `localhost` +- **port** (*Optional*): The port of the AlarmDecoder device on your home network, if using socket type. Default: `10000` +- **path** (*Optional*): The path of the AlarmDecoder device, if using socket type. Default: `/dev/ttyUSB0` +- **baud** (*Optional*): The baud rate of the AlarmDecoder device, if using serial type. Default: `115200` +- **panel_display** (*Optional*): Create a sensor called sensor.alarm_display to match the Alarm Keypad dispaly. Default: `off` +- **zones** (*Optional*): AlarmDecoder has no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/components/binary_sensor.alarmdecoder/) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.* diff --git a/source/_components/binary_sensor.alarmdecoder.markdown b/source/_components/binary_sensor.alarmdecoder.markdown new file mode 100644 index 00000000000..1bfbd1be9f1 --- /dev/null +++ b/source/_components/binary_sensor.alarmdecoder.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "AlarmDecoder Binary Sensor" +description: "Instructions how to integrate AlarmDecoder binary sensors into Home Assistant." +date: 2017-04-02 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: alarmdecoder.png +ha_release: 0.43 +ha_category: Binary Sensor +ha_iot_class: "Local Push" +--- + +The `alarmdecoder` alarm control panel platform allows you to control your [AlarmDecoder](https://www.alarmdecoder.com) alarms. + +Check the [type/class](/components/binary_sensor/) list for a possible visualization of your zone. + +The requirement is that you have setup your [AlarmDecoder hub](/components/alarmdecoder/). diff --git a/source/_components/sensor.alarmdecoder.markdown b/source/_components/sensor.alarmdecoder.markdown new file mode 100644 index 00000000000..d7b0483f9a1 --- /dev/null +++ b/source/_components/sensor.alarmdecoder.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "AlarmDecoder Sensor" +description: "Instructions how to integrate AlarmDecoder sensors into Home Assistant." +date: 2017-04-02 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: alarmdecoder.png +ha_release: 0.43 +ha_category: Sensor +ha_iot_class: "Local Push" +--- + +The `alarmdecoder` alarm control panel platform allows you to control your [AlarmDecoder](https://www.alarmdecoder.com) alarms. + +The requirement is that you have setup your [AlarmDecoder hub](/components/alarmdecoder/). diff --git a/source/images/supported_brands/alarmdecoder.png b/source/images/supported_brands/alarmdecoder.png new file mode 100644 index 0000000000000000000000000000000000000000..3159f9320500353f3c3103e1b15e4a2d68fa167d GIT binary patch literal 15273 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 bdx4U=+v;^jpT^-*Euwf|Rjx$F^u_-GMMQ|- literal 0 HcmV?d00001