= Sensei Node Cookbook = This document includes a short description and instructions on how to install and run the SENSEI native-island node software on a sample WSN platform (telosb). [[PageOutline(2-3,Table of Contents,inline)]] == Outline == SENSEI native nodes include a full IPv6 protocol stack to demonstrate a sample of future Internet communication. Communication with the SENSEI native-island nodes is available also through standard Internet technologies using the SENSEI Application Level Gateway. The implementation is based upon a modified version of a TinyOS 6LowPAN module named `6lowpan`. SENSEI native node stack is composed by the CoAP client/server module.... TODO: list modules?, RAI/RPI components TODO: list? and various resources TODO: list?. == Installation steps: Ubuntu 10.04== === Setup TinyOS === To install the software on telosb motes need a tinyOS 2.1 working copy see: http://www.tinyos.net for informations on tinyOS installation. Add the following line to /etc/apt/sources.list {{{ deb http://tinyos.stanford.edu/tinyos/dists/ubuntu lucid main }}} {{{ sudo apt-get update sudo apt-get install tinyos-2.1.1 sudo apt-get install subversion }}} Set up your .bashrc variables to enable tinyos compilation toolchain: {{{ # add the following lines at the end of the file source /opt/tinyos-2.1.1/tinyos.sh CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:. }}} {{{ #!comment In this example tos is installed in $HOME/tos export TOSROOT=$HOME/tos export TOSDIR=$TOSROOT/tos export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:$TOSROOT/support/sdk/java/ export MAKERULES=$TOSROOT/support/make/Makerules export PATH=$PATH:/opt/msp430/bin }}} To use tinyOS's java utilities you need sun java6: enable PARTNER repository: menu->system->administration->Software sources install java6 {{{ sudo apt-get install sun-java6-jdk # setting sun-java as default java provider sudo update-alternatives --set java /usr/lib/jvm/java-6-sun/jre/bin/java sudo update-alternatives --set javac /usr/lib/jvm/java-6-sun/bin/javac # sudo tos-install-jni }}} === Install SENSEI software === To test the software you will need 3 things: * one or many nodes equipped with node-tinyos software * a program called "gateway" that needs to be running on a local machine * a bridge program that connects your sensei node with your local machine using another mote compiled with BaseStation App TODO: insert picture here? You can checkout a copy of this software at: {{{ $ svn --username [username] co https://svn-batch.grid.pub.ro/svn/Sensei-WP5/ [The above command if ask for some security certificate exchange; Accept it [yes]] [otherwise it prompt for the password for svn access] Enter your password. }}} ==== Compile and install the bridge ==== {{{ # you have to be root to do this sudo -i # you need tinyos paths for a short while source /opt/tinyos-2.1.1/tinyos.sh apt-get install build-essential automake cd /opt/tinyos-2.1.1/support/sdk/c/sf/ ./bootstrap ./configure make cd /opt/tinyos-2.1.1/support/sdk/c/6lowpan/serial_tun/ make exit }}} now you should have a working copy of "serial_tun" ==== Compile SENSEI gateway ==== The steps to compile the gateway are quite straightforward {{{ # move to gateway folder cd Sensei-WP5/gateway/ sudo apt-get install g++ libssl-dev libxml2-dev # Install socket++ library gateway$ cd lib/Socket-2.3.7 gateway/lib/Sockets-2.3.7$ make clean gateway/lib/Sockets-2.3.7$ make gateway/lib/Sockets-2.3.7$ sudo make install # compile the gateway gateway/lib/Sockets-2.3.7$ cd ../../ gateway$ make }}} == Usage: == === Launch the bridge === To test the software you have to equip a node with BaseStation App that can be found in: {{{ Sensei-WP5$ cd node-tinyos/BaseStation Sensei-WP5/node-tinyos/BaseStation$ make telosb install.0 bsl,/dev/ttyUSB0 }}} Now you can create the Bridge {{{ $ sudo /opt/tinyos-2.1.1/support/sdk/c/6lowpan/serial_tun/serial_tun /dev/ttyUSB0 telosb }}} === Start the Gateway === To start the SENSEI gateway you have to: {{{ Sensei-WP5$ cd gateway # start the gateway Sensei-WP5/gateway$ ./bin/sensei-gateway }}} === Compile SENSEI tinyOS-node === To compile and install the node App on as many nodes as you like: {{{ Sensei-WP5$ cd node-tinyos/node Sensei-WP5/node-tinyos/node$ make install.NODE_ADDRESS bsl,NODE_USB_DEVICE }}} === Test It! === If nothing went wrong you can visit http://localhost:8000 to see the list of available nodes ==== GET request example ==== To get the temperature from a node just visit the corresponding url: http://localhost:8000/0000-0000-fffe-0005/s/temp ==== PUT request example ==== Using the PUT HTTP/CoAP method you can actuate on mote's leds. If you send a PUT request to a node using for example http://localhost:8000/0000-0000-fffe-0005/a/led0 And using this XML in the request body {{{ #!xml }}} This will turn led0 On ==== POST request example ==== TODO