110 lines
3.9 KiB
Markdown
110 lines
3.9 KiB
Markdown
|
JSON ws
|
||
|
=======
|
||
|
|
||
|
Short description on how to set-up a sensor network for global IPv6 addresses.
|
||
|
NOTE: this assumes that you do not have a native IPv6 connection.
|
||
|
|
||
|
You will need:
|
||
|
|
||
|
- PC with Ubuntu (Linux) - 11 or 12 versions
|
||
|
- A node for the RPL-Border-Router (examples/ipv6/rpl-border-router)
|
||
|
- A node for the json webservice (examples/ipv6/json-ws)
|
||
|
|
||
|
Set-up IPv6 tunnel and Border Router
|
||
|
------------------------------------
|
||
|
1. Ensure that you have gogo6c installed.
|
||
|
|
||
|
sudo apt-get install gogoc
|
||
|
|
||
|
2. Register an account at gogo6 and Freenet6 (http://www.gogo6.com).
|
||
|
The account at Freenet6 is needed by the gogo6c client.
|
||
|
|
||
|
3. Edit the gogoc.conf and set your own Freenet6 user and password by
|
||
|
changing the lines with "userid" and "passwd".
|
||
|
|
||
|
4. Start gogoc at command line
|
||
|
|
||
|
cd contiki/examples/ipv6/json-ws
|
||
|
sudo gogoc -f gogoc.conf -n
|
||
|
|
||
|
This will print your prefix - TSP_PREFIX. In my case
|
||
|
TSP_PREFIX=2001:05c0:1517:e400 (prefixlen is 56).
|
||
|
|
||
|
5. Connect one of the nodes to the PC (via USB or serial) and program
|
||
|
it with the RPL-border-router (assumes Z1 node).
|
||
|
|
||
|
cd contiki/examples/ipv6/rpl-border-router
|
||
|
make DEFINES=DEFINES=NETSTACK_RDC=nullrdc_driver,NULLRDC_CONF_802154_AUTOACK=1 TARGET=z1 border-router.upload
|
||
|
|
||
|
6. Run tunslip6 which will forward IP from the RPL network to the IPv6 tunnel
|
||
|
(and to the Internet).
|
||
|
|
||
|
cd contiki/examples/ipv6/rpl-border-router
|
||
|
make connect-router PREFIX=<TSP_PREFIX>::1/64
|
||
|
|
||
|
When you start this you should get a printout from the border-router
|
||
|
which give you the IPv6 address of it.
|
||
|
|
||
|
Server IPv6 addresses:
|
||
|
2001:05c0:1517:e400:c30c::10a
|
||
|
fe80::c30c:0:0:10a
|
||
|
|
||
|
7. Browse using Mozilla Firefox (or any other browser) to the IPv6 address
|
||
|
given by the border router. This will show you the list of other nodes
|
||
|
connected to the RPL network.
|
||
|
|
||
|
http://[2001:05c0:1517:e400:c30c::10a]/
|
||
|
|
||
|
NOTE: this is a global IPv6 address so it should also be reachable from
|
||
|
any machine on the Internet.
|
||
|
|
||
|
Configuration of COSM submission
|
||
|
--------------------------------
|
||
|
1. Register a COSM account at https://cosm.com/
|
||
|
Set-up a feed and create an API key for the feed.
|
||
|
|
||
|
2. Program the sensor node with (assumes Z1)
|
||
|
|
||
|
cd contiki/examples/ipv6/json-ws
|
||
|
make websense-z1.upload WITH_COSM=1 TARGET=z1
|
||
|
|
||
|
3. Check the IPv6 address of the node via the RPL-border router or by looking
|
||
|
at printouts when booting (make login TARGET=z1)
|
||
|
|
||
|
4. You need to configure the node to push data to the COSM feed and this can be
|
||
|
done in several ways. For convenience a Python script is included that
|
||
|
pushes the configuration to the nodes.
|
||
|
|
||
|
Edit the file 'setcosm.py' and replace "<your-key>" and "<your-feed>" with
|
||
|
your COSM API key and COSM feed id. You can then use this Python script to
|
||
|
configure your nodes.
|
||
|
|
||
|
This is an example that configures the node with IP address
|
||
|
2001:05c0:1517:e400:c30c::10b to push data to the COSM feed with stream 1:
|
||
|
|
||
|
cd contiki/examples/ipv6/json-ws
|
||
|
./setcosm.py [2001:05c0:1517:e400:c30c::10b] 1
|
||
|
|
||
|
Another way to configure the nodes is to use a REST add-on for the web
|
||
|
browser to post a COSM configuration to the node. "REST Client" for Mozilla
|
||
|
Firefox is an example of such add-on.
|
||
|
|
||
|
POST a JSON expression to your node with the following data: This assumes
|
||
|
that you have the feed with id 55180 and want to post to stream 1 in that
|
||
|
feed. The field 'appdata' should be set to the API key you created at the
|
||
|
COSM web site for the feed.
|
||
|
|
||
|
{
|
||
|
"host":"[2001:470:1f10:333::2]",
|
||
|
"port":80,
|
||
|
"path":"/v2/feeds/55180/datastreams/1",
|
||
|
"appdata":"<insert your COSM API key>",
|
||
|
"interval":120,
|
||
|
"proto":"cosm"
|
||
|
}
|
||
|
|
||
|
This will configure the node to periodically push temperature data every
|
||
|
other minute. You can use GET to retrieve the data to se that the node has
|
||
|
been successfully configured (the COSM API key will be visualized as a
|
||
|
number of stars).
|