From 723a3edfcf7e834fba719867e6841375a79b0707 Mon Sep 17 00:00:00 2001 From: Michael Dubno Date: Wed, 26 Dec 2018 09:23:18 -0500 Subject: [PATCH] Pencom (#7879) * Added Pencom relay component. * Added Pencom relays. * Fixed spelling, typos, and version number. --- source/_components/switch.pencom.markdown | 69 ++++++++++++++++++++++ source/images/supported_brands/pencom.png | Bin 0 -> 23151 bytes 2 files changed, 69 insertions(+) create mode 100644 source/_components/switch.pencom.markdown create mode 100644 source/images/supported_brands/pencom.png diff --git a/source/_components/switch.pencom.markdown b/source/_components/switch.pencom.markdown new file mode 100644 index 000000000000..fb26f7b3231e --- /dev/null +++ b/source/_components/switch.pencom.markdown @@ -0,0 +1,69 @@ +--- +layout: page +title: "Pencom" +description: "How to use Pencom Designs 8 channel relay boards." +date: 2018-10-05 23:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: pencom.png +ha_category: Switch +ha_release: 0.85 +ha_iot_class: "Local Polling" +--- + +[Pencom Design](http://www.pencomdesign.com/) is a manufacturer of computer controlled relay, I/O and custom boards for commercial and industrial applications. This interface to [Pencom's Relay Control Boards](https://www.pencomdesign.com/relay-boards/) is designed to work over an ethernet to serial adapter (NPort). Each switch (relay) can be turned on/off, and the state of the relay can be read. + +## {% linkable_title Configuration %} + +The Pencom relays can be daisychained to allow for up to 8 boards. + +``` yaml +# Example configuration.yaml entry +switch: + - platform: pencom + host: host.domain.com + port: 4001 + boards: 2 + relays: + - name: "Irrigation" + addr: 0 + - name: "Upper Entry Door" + addr: 1 + - name: "Fountain" + addr: 0 + board: 2 +``` + +{% configuration %} +host: + description: The IP address of the ethernet to serial adapter. It is assumed that the adapter has been preconfigured. + required: true + type: string +port: + description: The port of the ethernet to serial adapter. + required: true + type: port (positive integer between 1-65535) +boards: + description: Number of boards daisychained together (default is 1). + required: false + type: int between 1 and 8 +relays: + description: List of relays. + required: true + type: list + keys: + name: + description: The name of the switch (component). + required: true + type: string + addr: + description: The relay on the board starting with 0. + required: true + type: int + board: + description: The board number (defaults to 1). + required: false + type: int between 1 and 8 +{% endconfiguration %} diff --git a/source/images/supported_brands/pencom.png b/source/images/supported_brands/pencom.png new file mode 100644 index 0000000000000000000000000000000000000000..f09b78707868970acab6d0ee1c8288fc43ff4176 GIT binary patch literal 23151 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