Skip to content

Commit 06ee8ee

Browse files
committed
Updated README, moved binaries to release page
1 parent 0b1bda8 commit 06ee8ee

File tree

3 files changed

+46
-15
lines changed

3 files changed

+46
-15
lines changed

README.md

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# crelay
22
#### Controlling different relay cards for home automation with a Linux software
33

4-
### About
5-
This software is intended to run on Linux systems to control different relay cards in a unified way. It provides several interfaces for controlling the relays locally or remotely. The relays can be controlled by a human being via a device like smartphone or web browser, or directly by an intelligent device as used in the Internet of Things.
4+
### About
5+
Ever bougth a cute little USB relay card and wanted to use it on a Linux based device or computer? Chances are that your were out of luck because the Linux software support for the card provided by the manufacturer was non existent. Conrad, Sainsmart, Denkovi and friends are still ignoring the existence of this operating system. That's why I started this project.
6+
7+
This software is intended to run on Linux systems to control USB relay cards from different manufacturers in a unified way. It provides several interfaces for controlling the relays locally or remotely via the network. The relays can be controlled by a human being via a device like smartphone or web browser, or directly by an intelligent device as used in the Internet of Things.
68
The software was designed with the following requirements in mind:
79

810
- simple, intuitive usage and interface
@@ -14,13 +16,14 @@ The software was designed with the following requirements in mind:
1416
New relay cards support can be added by providing the cards driver code for detecting the card, reading and setting the relays.
1517
Currently the following relay cards are supported:
1618

17-
- Conrad USB 4-channel relay card (http://www.conrad.de/ce/de/product/393905), see <i>Note 1</i> below
18-
- Sainsmart USB 4-channel relay card (http://www.sainsmart.com/sainsmart-4-channel-5v-usb-relay-board-module-controller-for-automation-robotics.html), see <i>Note 2</i> below
19-
- HID API compatible relay cards (1/2/4/8 channel)
19+
- [Conrad USB 4-channel relay card](http://www.conrad.de/ce/de/product/393905), see <i>Note 1</i> below
20+
- [Sainsmart USB 4/8-channel relay card](http://www.sainsmart.com/sainsmart-4-channel-5v-usb-relay-board-module-controller-for-automation-robotics.html), see <i>Note 2</i> below
21+
- [HID API compatible relay cards (1/2/4/8 channel)](http://www.ebay.com/itm/For-Smart-Home-5V-USB-Relay-2-Channel-Programmable-Computer-Control-/190950124351)
2022
- Generic GPIO controlled relays, see <i>Note 3</i> below
2123
<br>
2224

2325
The following picture shows a high level view on the modular software architecture.
26+
2427
![Software architechture](screenshots/sw-architecture.png)
2528
<br><br>
2629

@@ -36,6 +39,7 @@ The following picture shows a high level view on the modular software architectu
3639
<br>
3740

3841
### Nice to have (wishlist)
42+
- Integrated MQTT client
3943
- ThingSpeak Talkback App (https://thingspeak.com/docs/talkback)
4044
- Multiple cards support
4145
- Access control for Web GUI and HTTP API
@@ -45,9 +49,10 @@ The following picture shows a high level view on the modular software architectu
4549
### Screenshots
4650

4751
#### Web GUI
48-
![Screenshot](screenshots/crelay-screenshot1.png)
49-
<br><br>
50-
![Screenshot](screenshots/crelay-screenshot2.png)
52+
![Screenshot](screenshots/crelay-screenshot1.png "Web GUI with Conrad card connected")
53+
<br>
54+
----------
55+
![Screenshot](screenshots/crelay-screenshot2.png "Web GUI with GPIO relays connected")
5156
<br><br>
5257

5358
#### Command line interface
@@ -58,8 +63,8 @@ The following picture shows a high level view on the modular software architectu
5863
Currently supported relay cards:
5964
- Conrad USB 4-channel relay card
6065
- Sainsmart USB 4-channel relay card
61-
- Generic GPIO relays
6266
- HID API compatible relay card
67+
- Generic GPIO relays
6368
The card which is detected first will be used.
6469

6570
The program can be run in interactive (command line) mode or in daemon mode with
@@ -90,7 +95,8 @@ The following picture shows a high level view on the modular software architectu
9095
<br>
9196

9297
### HTTP API
93-
An HTTP API is provided to access the server from external clients. This API is compatible with the PiRelay Android app. Therefore this app can be used on your Android phone to control <i>crelay</i> remotely.
98+
An HTTP API is provided to access the server from external clients. This API is compatible with the PiRelay Android app. Therefore this app can be used on your Android phone to control <i>crelay</i> remotely.
99+
I am considering to add a more universally usable Json format based API in the future.
94100

95101
- API url:
96102
<pre><i>ip_address[:port]</i>/gpio</pre>
@@ -151,17 +157,31 @@ On some not so recent Linux distributions (like Debian Weezy) the HIDAPI library
151157
make [DRV_CONRAD=n] [DRV_SAINSMART=n] [DRV_HIDAPI=n]
152158
sudo make install
153159
</pre>
154-
<i>Note:</i> Optionally, you can exclude specific relay card drivers (and their dependencies) from the build, if you don't need them. To do this, specify the driver name as parameter of the "make" command as shown above.
160+
<i>Note:</i> Optionally, you can exclude specific relay card drivers (and their dependencies) from the build, if you don't need them. To do this, specify the driver name as parameter of the "make" command as shown above.
161+
155162
<br>
156163

157164
### Installation of prebuilt binaries
158-
To save you the hassle of building crelay from source, prebuild binaries are provided for selected architectures. Just save the binary from the bin/<arch> directory on your host system and execute it.
165+
To save you the hassle of building crelay from source, prebuild binaries are provided for selected architectures. Just save the binary for your architecture on your host system and execute it.
166+
167+
The binaries can be downloaded from the [Latest release page](https://github.com/ondrej1024/crelay/releases/latest).
159168

160169
<i>Note:</i> The binaries use shared librabries, so you might need to install the needed libs to your system, if not already done previously:
161170
<pre>
162171
apt-get install libftdi1 libhidapi-libusb0 libusb-1.0-0
163172
</pre>
164173

174+
<br>
175+
176+
### Distribution specific packages
177+
Currently, there are official OpenWRT packages available for different architectures from the developement snapshot repositories. They can be downloaded here:
178+
179+
https://downloads.openwrt.org/snapshots/trunk/[arch]/generic/packages/packages/crelay<ver>_<arch>.ipk
180+
181+
If anyone wants to build packages for other Linux distributions, please feel free to do so and share it here.
182+
183+
<br>
184+
165185
### Configuration
166186
The parameters for *crelay* can be customized via the configuration file crelay.conf which should be placed in the `/etc/` system folder. An example file is provided together with the programs source code in the `conf/` folder.
167187

@@ -216,16 +236,27 @@ The modular architecture of *crelay* makes it possible to easily add new relay c
216236
See example files `relay_drv_sample.c` and `relay_drv_sample.h` in the src directory for details on how to write your own low level driver functions.
217237
<br>
218238

239+
### Credits
240+
The support for the different relay cards in *crelay* has only been possible thanks to the valuable contributions of the following people who reverse engineered the communication protocols of the cards and provided the protocol specifications.
241+
242+
* [Dominic Sacré](https://github.com/dsacre) who discovered the communication protocol of the Conrad card
243+
* [Darryl Bond](https://github.com/darrylb123), who discovered the communication protocol of the HID API cards
244+
* User stav from the RPi forum, who discovered the communication protocol of the Sainsmart card
245+
246+
<br>
247+
248+
### Notes
249+
219250
##### <i>Note 1 (Conrad USB 4-channel relay card)</i>:
220251
The relay card software provided by Conrad is Windows only and uses a binary runtime DLL which implements the communication protocol between the host computer and the card. Thanks to a raspberrypi.org forum member, the communication protocol was discovered and made public. This made it possible to develop an open source driver for the Conrad card which can run on any Linux distribution.
221252

222253
Earlier versions of this program needed the cp210x kernel driver for the Silabs CP2104 chip with GPIO support. The official in-kernel cp210x driver does not support GPIO operations. Therefore the Silabs driver from their home page needed to be used:
223254
http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx
224255

225-
The current version of *crelay* uses libusb to talk directly to the CP2104 on the Conrad card, therefore the cp210x kernel driver is **not needed** anymore.
256+
The current version of *crelay* uses libusb to talk directly to the CP2104 on the Conrad card, therefore the cp210x kernel driver is **not needed** anymore.
226257
<br>
227258

228-
##### <i>Note 2 (Sainsmart USB 4-channel relay card)</i>:
259+
##### <i>Note 2 (Sainsmart USB 4/8-channel relay card)</i>:
229260
The Sainsmart card uses the FTDI FT245RL chip. This chip is controlled directly through the open source libFTDI library. No Kernel driver is needed. However on most Linux distributions, the *ftdi_sio* serial driver is automatically loaded when the FT245RL chip is detected. In order to grant the <i>crelay</i> software access to the card, the default driver needs to be unloaded:
230261

231262
rmmod ftdi_sio
@@ -237,4 +268,4 @@ To prevent automatic loading of the driver, add the following line to /etc/modpr
237268
<br>
238269

239270
##### <i>Note 3 (GPIO controlled relays)</i>:
240-
Since GPIO pin configuration is strictly device specific, the generic GPIO mode is disabled by default and can only be used in daemon mode. In order to enable it, the specific GPIO pins used as relay control lines have to be specified in the configuration file, `[GPIO drv]` section.
271+
Since GPIO pin configuration is strictly device specific, the generic GPIO mode is disabled by default and can only be used in daemon mode. In order to enable it, the specific GPIO pins used as relay control lines have to be specified in the configuration file, `[GPIO drv]` section.

bin/armv6/crelay

-35.3 KB
Binary file not shown.

bin/x86_64/crelay

-42.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)