Difference between revisions of "Install central"

From xPL
Jump to: navigation, search
(Launch the xPL central device at startup)
m (Install xPL central device)
Line 9: Line 9:
 
Install <code>XML::Simple</code>:
 
Install <code>XML::Simple</code>:
 
  su
 
  su
  perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i XML
+
  perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i 'xml.*simple'
 
  perl -MCPAN -e "install 'XML::Simple'"
 
  perl -MCPAN -e "install 'XML::Simple'"
 
  exit
 
  exit

Revision as of 10:16, 1 April 2014

The central xPL device can be compared to a central station. It monitors all xPL messages and can trigger other messages based on a set of rules stored in an XML file.

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

Install xPL central device

Install XML::Simple:

su
perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' 2> /dev/null | grep -i 'xml.*simple'
perl -MCPAN -e "install 'XML::Simple'"
exit

If XML::SAX::Expat doesn't install properly and blocks the installation of XML::Simple, try:

su
apt-get install libxml-sax-expat-incremental-perl
ln -s /usr/share/perl5/XML/SAX/ParserDetails.ini /usr/local/share/perl/5.14.2/XML/SAX/ParserDetails.ini
perl -MCPAN -e "install 'XML::Simple'"
exit

Download the xPL central device script.

Move the script to xPL scripts directory:

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

Test xPL central device

Under construction icon-blue


Test it on a BeagleBone:

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-central.pl -h
$SCRIPTS_BASE_DIR/xpl-central.pl -v -n test

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

The monitor should echo the serial port incoming messages.

Open another terminal and send a message to the serial port:

su control
SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-serPort.test -c serPort.basic command='hello world'

Launch the xPL central device at startup

The xPL central device is to be launched after the xPL hub.

Ubuntu

On Ubuntu, the xPL central device starts-up once xpl-hub_started has been emitted.

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

################################################################################
# xPL central message parser
#
description "xPL central message parser"
version     "1.0"
author      "Francois Corthay"

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

#-------------------------------------------------------------------------------
# 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-central start
service xpl-central status

SCRIPTS_BASE_DIR=/home/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-serPort.eib -c serPort.basic command='gci'
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-serPort.eib -c serPort.basic command='dts \$15'
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-serPort.eib -c serPort.basic command='tds (1/1/1) 1'

Mac OS

On Mac OS, the xPL central device starts-up later than the hub.

Edit /Library/LaunchDaemons/xpl-central.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>xPL central message parser</string>
    <key>OnDemand</key>
    <false/>
    <key>UserName</key>
    <string>control</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/control/Documents/Controls/xpl-central.pl</string>
      <string>-n</string>
      <string>lounge</string>
      <string>-w</string>
      <string>25</string>
      <string>-a</string>
      <string>/Users/control/Documents/Controls/centralActions.xml</string>
    </array>
  </dict>
</plist>

Start the device and test it:

su root
launchctl load /Library/LaunchDaemons/xpl-central.plist

SCRIPTS_BASE_DIR=/Users/control/Documents/Controls
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-serPort.eib -c serPort.basic command='gci'
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-serPort.eib -c serPort.basic command='dts \$15'
$SCRIPTS_BASE_DIR/xpl-send.pl -v -t cmnd -d dspc-serPort.eib -c serPort.basic command='tds (1/1/1) 1'