Difference between revisions of "Install RPi relay board"

From xPL
Jump to: navigation, search
(Launch the xPL switches controller at startup)
m (Debian with SystemD)
Line 115: Line 115:
 
Edit <code>/lib/systemd/system/xpl-piSwitch.service</code>:
 
Edit <code>/lib/systemd/system/xpl-piSwitch.service</code>:
 
  [Unit]
 
  [Unit]
  Description=xPL hub
+
  Description=RPi 3-line switch xPL controller
 
  After=network.target
 
  After=network.target
 
   
 
   

Revision as of 09:41, 8 July 2017

The Waveshare RPi Relay Board houses 3 relays controlled by Raspberry Pi General-Purpose Input/Outputs (GPIOs).

They can be controlled by:

Access the switches

Check the download link for the following wget command and install the library:

su
cd /tmp/
wget http://www.waveshare.com/w/upload/f/f3/WiringPi.tar.gz
tar -xvzf WiringPi.tar.gz
cd wiringPi/
chmod 777 build
./build

Check the installation:

gpio -v
which gpio
gpio readall

Test the relays:

PIN=25
gpio mode $PIN output ; gpio write $PIN 0 ; sleep 1 ; gpio write $PIN 1

for PIN in 25 28 29; do
  echo driving pin $PIN
  gpio mode $PIN output
  gpio write $PIN 0
  sleep 1
  gpio write $PIN 1
  sleep 1
done

Install xPL switches controller

Download the switches controller script.

Move the script to xPL scripts directory:

SCRIPTS_BASE_DIR=/home/control/Documents/Controls
mv xpl-piSwitch.pl $SCRIPTS_BASE_DIR
chown control:users $SCRIPTS_BASE_DIR/*.pl
chmod 775 $SCRIPTS_BASE_DIR/*.pl

Test xPL switches controller

Test it on a BeagleBone:

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-piSwitch.pl -vn loungeAmps

Open a 2nd terminal window (on any machine with xPL installed) and monitor the xPL protocol:

SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-monitor.pl -vf

Open a 3rd terminal window (on any machine with xPL installed) and control the switches:

SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -d dspc-switch.loungeAmps -c control.request command=request
$SCRIPTS_BASE_DIR/xpl-send.pl -v -d dspc-switch.loungeAmps -c control.basic outlet=1 command=on
$SCRIPTS_BASE_DIR/xpl-send.pl -v -d dspc-switch.loungeAmps -c control.basic outlet=1 command=off

The first xpl-send command asks for the status of the switches. The answer is seen in the xPL traffic monitor.

Launch the xPL switches controller at startup

On Ubuntu with upstart installed, the xPL switches controller starts-up once xpl-hub_started has been emitted.

Edit /etc/init/xpl-piSwitch.conf:

################################################################################
# xPL Raspberry Pi switch, controls 3 relays
#
description "xPL RPi switch"
version     "1.0"
author      "Francois Corthay"

#-------------------------------------------------------------------------------
# Configuration variables
#
env SCRIPTS_DIR='/home/control/Documents/Controls'
env SCRIPT_NAME='xpl-piSwitch.pl'
env PARAMETERS='-n loungeAmps'

#-------------------------------------------------------------------------------
# Start and stop conditions
#
start on xpl-hub_started
stop on shutdown
respawn
setuid control
setgid users

#-------------------------------------------------------------------------------
# Start daemon
#
exec $SCRIPTS_DIR/$SCRIPT_NAME $PARAMETERS

Start the device and test it:

su root
service xpl-piSwitch start
service xpl-piSwitch status
initctl list | grep xpl | sort
ps aux | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///'

Debian with SystemD

On Debian with systemd (such as https://www.raspbian.org/), the scripts can be defined as services.

Edit /lib/systemd/system/xpl-piSwitch.service:

[Unit]
Description=RPi 3-line switch xPL controller
After=network.target

[Service]
Type=simple
ExecStart=/home/control/Documents/Controls/xpl-piSwitch.pl -n loungeAmps -w 2
Restart=always

[Install]
WantedBy=multi-user.target

Activate the service:

su
systemctl enable xpl-piSwitch.service

Reboot and check:

ps ax | grep -v grep | grep -i xpl
service xpl-hub status