Difference between revisions of "Install alert"

From xPL
Jump to: navigation, search
(Debian with SystemD)
(Install xPL alert sender)
Line 17: Line 17:
 
  cat /etc/group | grep control
 
  cat /etc/group | grep control
 
  usermod -G dialout,audio control
 
  usermod -G dialout,audio control
 +
 +
systemctl --global disable pulseaudio.service pulseaudio.socket
  
 
Plug loudspeakers on your PC's line out.
 
Plug loudspeakers on your PC's line out.

Revision as of 14:36, 10 June 2021

The alert sender plays a given sound on the reception of the corresponding xPL message.

Before all, make sure you have installed an xPL hub.

Install xPL alert sender

The alert sender bases in a command-line control allowing to play a sound file. On Linux, this generally is the Advanced Linux Sound Architecture (ALSA). Basic debug info:

lspci -nn
head -n 1 /proc/asound/card0/codec*
lsmod | grep '^snd'
aplay -l

Add the control user to the audio group:

su
cat /etc/group | grep control
usermod -G dialout,audio control

systemctl --global disable pulseaudio.service pulseaudio.socket

Plug loudspeakers on your PC's line out. The PC System Design Guide defines the analog line level audio output phone connector to be lime green.

Play a sound:

SOUND_FILES_LOCATION='/home/control/Documents/Controls/Sounds'
aplay $SOUND_FILES_LOCATION/doorBell.wav

Download the xPL alert sender script.

Move the script to xPL scripts directory:

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

Test xPL alert sender

Test it on a BeagleBone:

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-alert.pl -h
$SCRIPTS_BASE_DIR/xpl-alert.pl -vn alert

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 lights:

SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -c alert.basic command=play
$SCRIPTS_BASE_DIR/xpl-send.pl -v -c alert.basic command=play soundFile=pop.wav

The doorbell sound should play.

Launch the xPL alert sender at startup

The xPL alert sender is to be launched after the xPL hub.

Debian with SystemD

On Debian with systemd (such as Raspbian), the scripts can be defined as services.

The access to the sound system needs the service to be run as a user. Check his group id:

su control
cat /etc/group | grep `whoami`:x

Edit /lib/systemd/system/xpl-alert.service (adapt to your values):

[Unit]
Description=xPL alert, playing a sound
After=network.target

[Service]
Type=simple
User=control
Group=users
Environment="XDG_RUNTIME_DIR=/run/user/1001"
ExecStart=/home/control/Documents/Controls/xpl-alert.pl -n door -s doorBell.wav
Restart=always

[Install]
WantedBy=multi-user.target

Activate the service:

su
systemctl enable xpl-alert.service
service xpl-alert start

Reboot and check:

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

Ubuntu with Upstart

On Ubuntu, the xPL alert sender starts-up once xpl-hub_started has been emitted.

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

################################################################################
# xPL alert, plays sound
#
description "xPL alert"
version     "1.0"
author      "Francois Corthay"

#-------------------------------------------------------------------------------
# Configuration variables
#
env SCRIPTS_DIR='/home/control/Documents/Controls'
env SCRIPT_NAME='xpl-alert.pl'
env PARAMETERS='-n door -s doorBell.wav'

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

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

Start the device and test it:

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

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -c alert.basic command=play

Mac OS

On Mac OS, the xPL alert sender starts-up later than the hub.

Edit /Library/LaunchDaemons/xpl-alert.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>Audio alert sender </string>
    <key>OnDemand</key>
    <false/>
    <key>UserName</key>
    <string>control</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/control/Documents/Controls/xpl-alert.pl</string>
      <string>-n</string>
      <string> alert </string>
      <string>-w</string>
      <string>25</string>
    </array>
  </dict>
</plist>

Load the xPL client:

launchctl load /Library/LaunchDaemons/xpl-alert.plist
launchctl list | grep -i xpl 
ps ax | grep -i xpl | grep -v grep