Difference between revisions of "Install RPi relay board"
(→WiringPi) |
(→Debian with SystemD) |
||
(20 intermediate revisions by one user not shown) | |||
Line 7: | Line 7: | ||
* python scripts | * python scripts | ||
− | = | + | = Access the switches = |
− | + | Install [https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ WiringPi]: | |
− | + | ||
− | + | ||
su | su | ||
+ | apt install -y git-core | ||
cd /tmp/ | cd /tmp/ | ||
− | + | git clone git://git.drogon.net/wiringPi | |
− | + | ||
cd wiringPi/ | cd wiringPi/ | ||
− | + | git pull origin | |
./build | ./build | ||
Check the installation: | Check the installation: | ||
+ | which gpio | ||
gpio -v | gpio -v | ||
+ | gpio readall | ||
Test the relays: | Test the relays: | ||
Line 27: | Line 27: | ||
gpio mode $PIN output ; gpio write $PIN 0 ; sleep 1 ; gpio write $PIN 1 | gpio mode $PIN output ; gpio write $PIN 0 ; sleep 1 ; gpio write $PIN 1 | ||
+ | # for PIN in `seq 1 30`; do | ||
for PIN in 25 28 29; do | for PIN in 25 28 29; do | ||
echo driving pin $PIN | echo driving pin $PIN | ||
Line 35: | Line 36: | ||
sleep 1 | sleep 1 | ||
done | done | ||
+ | |||
+ | = Access the buttons = | ||
+ | |||
+ | Install [https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ WiringPi]: | ||
+ | su | ||
+ | apt install -y git-core | ||
+ | cd /tmp/ | ||
+ | git clone git://git.drogon.net/wiringPi | ||
+ | cd wiringPi/ | ||
+ | ./build | ||
+ | |||
+ | Check the installation: | ||
+ | which gpio | ||
+ | gpio -v | ||
+ | gpio readall | ||
+ | |||
+ | Test the button: | ||
+ | PIN=4 | ||
+ | gpio mode $PIN up ; gpio read $PIN | ||
+ | |||
+ | Tester the button diode: | ||
+ | PIN=1 | ||
+ | gpio mode $PIN output ; gpio write $PIN 1 ; sleep 1 ; gpio write $PIN 0 | ||
+ | |||
+ | = Install xPL switches controller = | ||
+ | |||
+ | Download the [http://www.dspc.ch/xPL/Downloads/xpl-piSwitches-gpio.pl switches controller] script. | ||
+ | |||
+ | Move the script to xPL scripts directory: | ||
+ | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
+ | mv xpl-piSwitches-gpio.pl $SCRIPTS_BASE_DIR/xpl-piSwitches.pl | ||
+ | chown control:users $SCRIPTS_BASE_DIR/*.pl | ||
+ | chmod 775 $SCRIPTS_BASE_DIR/*.pl | ||
+ | |||
+ | = Test xPL switches controller = | ||
+ | |||
+ | Test it: | ||
+ | su control | ||
+ | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
+ | $SCRIPTS_BASE_DIR/xpl-piSwitches.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 <code>xpl-send</code> 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 [http://upstart.ubuntu.com upstart] installed, | ||
+ | the xPL switches controller starts-up once <code>xpl-hub_started</code> has been emitted. | ||
+ | |||
+ | Edit <code>/etc/init/xpl-piSwitches.conf</code>: | ||
+ | ################################################################################ | ||
+ | # xPL Raspberry Pi switches, controls 3 relays | ||
+ | # | ||
+ | description "xPL RPi switches" | ||
+ | version "1.0" | ||
+ | author "Francois Corthay" | ||
+ | |||
+ | #------------------------------------------------------------------------------- | ||
+ | # Configuration variables | ||
+ | # | ||
+ | env SCRIPTS_DIR='/home/control/Documents/Controls' | ||
+ | env SCRIPT_NAME='xpl-piSwitches.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-piSwitches start | ||
+ | service xpl-piSwitches status | ||
+ | initctl list | grep xpl | sort | ||
+ | ps aux | grep -i xpl | grep -v grep | sed 's/.*\/Controls\///' | ||
+ | |||
+ | == Debian with SystemD == | ||
+ | |||
+ | On Debian with [https://wiki.debian.org/systemd systemd] (such as https://www.raspbian.org/), | ||
+ | the scripts can be defined as services. | ||
+ | |||
+ | Edit <code>/lib/systemd/system/xpl-piSwitches.service</code>: | ||
+ | [Unit] | ||
+ | Description=RPi 3-line switches xPL controller | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStart=/home/control/Documents/Controls/xpl-piSwitches.pl -n loungeAmps -w 2 | ||
+ | Restart=always | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | |||
+ | Activate the service: | ||
+ | su | ||
+ | systemctl enable xpl-piSwitches.service | ||
+ | service xpl-piSwitches start | ||
+ | |||
+ | Reboot and check: | ||
+ | ps ax | grep -v grep | grep -i xpl | ||
+ | service xpl-piSwitches status | ||
+ | |||
+ | = Install xPL buttons monitor = | ||
+ | |||
+ | Download the [http://www.dspc.ch/xPL/Downloads/xpl-piButtons.pl buttons monitor] script. | ||
+ | |||
+ | Move the script to xPL scripts directory: | ||
+ | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
+ | mv xpl-piButtons.pl $SCRIPTS_BASE_DIR | ||
+ | chown control:users $SCRIPTS_BASE_DIR/*.pl | ||
+ | chmod 775 $SCRIPTS_BASE_DIR/*.pl | ||
+ | |||
+ | = Test xPL buttons monitor = | ||
+ | |||
+ | Test it: | ||
+ | su control | ||
+ | SCRIPTS_BASE_DIR=/home/control/Documents/Controls | ||
+ | $SCRIPTS_BASE_DIR/xpl-piButtons.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 | ||
+ | |||
+ | Press on a button. | ||
+ | The corresponding message is seen in the xPL traffic monitor. | ||
+ | |||
+ | = Launch the xPL buttons monitor at startup = | ||
+ | |||
+ | == Debian with SystemD == | ||
+ | |||
+ | On Debian with [https://wiki.debian.org/systemd systemd] (such as [https://www.raspbian.org/ Raspbian]), | ||
+ | the scripts can be defined as services. | ||
+ | |||
+ | Edit <code>/lib/systemd/system/xpl-piButtons.service</code>: | ||
+ | [Unit] | ||
+ | Description=RPi buttons xPL monitor | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStart=/home/control/Documents/Controls/xpl-piButtons.pl -n loungeAmps -w 2 | ||
+ | Restart=always | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | |||
+ | Activate the service: | ||
+ | su | ||
+ | systemctl enable xpl-piButtons.service | ||
+ | service xpl-piButtons start | ||
+ | |||
+ | Reboot and check: | ||
+ | ps ax | grep -v grep | grep -i xpl | ||
+ | service xpl-piButtons status | ||
[[Category: all]] [[Category: install]] [[Category: xPL]] | [[Category: all]] [[Category: install]] [[Category: xPL]] |
Latest revision as of 11:57, 9 March 2018
The Waveshare RPi Relay Board houses 3 relays controlled by Raspberry Pi General-Purpose Input/Outputs (GPIOs).
They can be controlled by:
- shell commands built from the WiringPi libraries
- C-programs compiled with the C library for Raspberry Pi
- python scripts
Contents
Access the switches
Install WiringPi:
su apt install -y git-core cd /tmp/ git clone git://git.drogon.net/wiringPi cd wiringPi/ git pull origin ./build
Check the installation:
which gpio gpio -v gpio readall
Test the relays:
PIN=25 gpio mode $PIN output ; gpio write $PIN 0 ; sleep 1 ; gpio write $PIN 1 # for PIN in `seq 1 30`; do 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
Access the buttons
Install WiringPi:
su apt install -y git-core cd /tmp/ git clone git://git.drogon.net/wiringPi cd wiringPi/ ./build
Check the installation:
which gpio gpio -v gpio readall
Test the button:
PIN=4 gpio mode $PIN up ; gpio read $PIN
Tester the button diode:
PIN=1 gpio mode $PIN output ; gpio write $PIN 1 ; sleep 1 ; gpio write $PIN 0
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-piSwitches-gpio.pl $SCRIPTS_BASE_DIR/xpl-piSwitches.pl chown control:users $SCRIPTS_BASE_DIR/*.pl chmod 775 $SCRIPTS_BASE_DIR/*.pl
Test xPL switches controller
Test it:
su control SCRIPTS_BASE_DIR=/home/control/Documents/Controls $SCRIPTS_BASE_DIR/xpl-piSwitches.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-piSwitches.conf
:
################################################################################ # xPL Raspberry Pi switches, controls 3 relays # description "xPL RPi switches" version "1.0" author "Francois Corthay" #------------------------------------------------------------------------------- # Configuration variables # env SCRIPTS_DIR='/home/control/Documents/Controls' env SCRIPT_NAME='xpl-piSwitches.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-piSwitches start service xpl-piSwitches 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-piSwitches.service
:
[Unit] Description=RPi 3-line switches xPL controller After=network.target [Service] Type=simple ExecStart=/home/control/Documents/Controls/xpl-piSwitches.pl -n loungeAmps -w 2 Restart=always [Install] WantedBy=multi-user.target
Activate the service:
su systemctl enable xpl-piSwitches.service service xpl-piSwitches start
Reboot and check:
ps ax | grep -v grep | grep -i xpl service xpl-piSwitches status
Install xPL buttons monitor
Download the buttons monitor script.
Move the script to xPL scripts directory:
SCRIPTS_BASE_DIR=/home/control/Documents/Controls mv xpl-piButtons.pl $SCRIPTS_BASE_DIR chown control:users $SCRIPTS_BASE_DIR/*.pl chmod 775 $SCRIPTS_BASE_DIR/*.pl
Test xPL buttons monitor
Test it:
su control SCRIPTS_BASE_DIR=/home/control/Documents/Controls $SCRIPTS_BASE_DIR/xpl-piButtons.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
Press on a button. The corresponding message is seen in the xPL traffic monitor.
Launch the xPL buttons monitor at startup
Debian with SystemD
On Debian with systemd (such as Raspbian), the scripts can be defined as services.
Edit /lib/systemd/system/xpl-piButtons.service
:
[Unit] Description=RPi buttons xPL monitor After=network.target [Service] Type=simple ExecStart=/home/control/Documents/Controls/xpl-piButtons.pl -n loungeAmps -w 2 Restart=always [Install] WantedBy=multi-user.target
Activate the service:
su systemctl enable xpl-piButtons.service service xpl-piButtons start
Reboot and check:
ps ax | grep -v grep | grep -i xpl service xpl-piButtons status