A toolset for recording trails between waypoints by tagging tags against readers.
This is a package that is aimed at getting a codebase suitable for running a basic IOT enhanced event.
The aim of this package is as follows: * You should have installed a working Ubuntu 12.04 box * You should be able to install this package * You should be able to configure running profiles in /etc/waypointservice * Dependent on these profiles, when this box starts up it should start up a process that configures the process as tag reader node or as an collation node, or both. * This should be able to happen without human interaction - except for initial configuration
Currently the package does most of these points, except for configuration. Installation of the debian package for this codebase will result in a waypointservice that starts up at boot, and allows for plug and play with both readers and actuators.
Requirements required for this to work: sudo apt-get install git sudo apt-get install python-dev sudo apt-get install swig sudo apt-get install cython sudo apt-get install libusb-dev sudo apt-get install python-serial
Kamaelia + Axon: git clone https://github.com/sparkslabs/kamaelia.git cd kamaelia cd Code/Python/Axon sudo python setup.py install cd ../Kamaelia sudo python setup.py install
python-rfidtag:
git clone https://github.com/sparkslabs/python-rfidtag.git
cd cd python-rfidtag
sudo python setup.py install
If not enabled on the box, enable ssh - this simplifies managing an installation.
The preferred installation approach is to install the dependencies and then install the debian package.
Inside the waypoint tarball: sudo python setup.py install
Then: sudo waypoint.mkdirs
The touchatad/tikitag readers require root privileges so must be run as follows: sudo waypoint_reader
This will only work if a reader is plugged in. It furthermore currently has a dependency on there also being an arduino plugged.
Assuming the hardware is OK, this will log tagged data to:
* /var/log/waypointservice/tagsread.log
The format of that file is "\n" delimited JSON array objects of format: * Timestamp (float value) * tag id as a decimal integer value * Defined reader id
At present the reader ID is not configurable without modification of the code. In practice this means modifying /usr/[local/]bin/waypoint_reader in a hopefully obvious way. This will change shortly. To give an idea of complexity of change, the entirety of that file is presented here:
from waypoint.reader import TagReaderClient
# All the arguments here should be externally configurable
TagReaderClient(collator_ip = "127.0.0.1",
collator_port = 1600,
node_id=1,
logfile="/var/log/waypointservice/tagsread.log",
debug_port=1500).run()
It should be obvious from the above and how this would need changing.
TBD:
Installation as a collator / etc (see docs/todo.txt)
Configuration is based on a cascading/inheriting approach. While this make look more complex than some schemes, its specifically designed to simplify maintance and configuration.
Most of the nodes in a waypoint system will be tag readers. Some will be collators. Others may have as yet to be defined roles for sensing and control.
Michael