wiki:node-tinyos

Version 13 (modified by fornasiero, 14 years ago) (diff)

--

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).

Table of Contents

  1. Outline
  2. Installation steps: Ubuntu 10.04
    1. Setup TinyOS
    2. Install SENSEI software
  3. Usage:
    1. Launch the bridge
    2. Start the Gateway
    3. Compile SENSEI tinyOS-node
    4. Test It!

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

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
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 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 version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:res="urn:sensei:rai">
  <res:LED rdf:about="0" res:hasBooleanValue=1/>
</rdf:RDF>

This will turn led0 On

POST request example

TODO