client | ||
cooja | ||
doc | ||
oracle | ||
proxy | ||
simulation | ||
.gitignore | ||
LICENSE | ||
README.md |
NetPP exhibition control wireless sensor network
NetPP is a simulation of a wireless sensor network which makes use of the IEEE stack recommended for IoT, from bottom to top: wireless IEEE 802.15.4, 6LowPAN, IPv6 with RPL routing, UDP and CoAP. It runs on Z1 motes. This project was developed for the Advanced Networks and Wireless Systems exam (Networking++ for friends)
Scenario
NetPP is a company which organizes public events and exhibitions, which installs a sensor (oracle) for each stand in order to keep track of people's flow.
- Formal requirements:
- network must be fully operational in less than 70 minutes, which is an estimation of the time needed to mount all the stands for small daily exhibition
- nodes run on battery and must use as less energy as possible, in order to make it possible to reuse them for multiple events
- Other requirements:
- RPL must use objective function 0, ie find the nearest grounded root
- Sensor messages must be RFC8428 (SenML) compliant
- a CoAP proxy must be developed in Java using the Eclipse Californium CoAP library (proxy)
Trickle parameters
Repository organization
client
: source code for a CoAP clientcooja
: sample simulations for Coojaoracle
: source code for the sensor nodeproxy
: source code for the CoAP proxysimulation
: scripts for running simulations and plot performance graphs
Run
- choose a Cooja simulation file from
cooja
directory
- start the serial socket server on node 1 (border router)
- start the simulation
- attach a rpl-border-router to Cooja
- you can use the one from
examples/ipv6/rpl-border-router
in your Contiki repository- if you want to reproduce the simulation results, use the modified version (which outputs the number of discovered routes)
- connect
$ make connect-router-cooja PREFIX="2001:db8:cafe:babe::1/64"
Proxy
$ mvn package
$ java -jar target/proxy-2019.11.0-jar-with-dependencies.jar <prefix> <n>
where
<prefix>
is your network prefix (specify all 64 bits)<n>
is the number of nodes in the network
Example:
$ java -jar proxy/target/proxy-2019.11.0-jar-with-dependencies.jar 2001:db8:cafe:babe 30
Resources on the server are named after the node IPv6 address, eg: urn:it.unipi.ing.ce.netpp:c00000001
.
You can use a CoAP browser to list all resources on the server, for example:
Client
$ mvn package
java -jar target/client-2019.11.0-jar-with-dependencies.jar <url>
where
<url>
is a CoAP URL
Example:
$ java -jar target/client-2019.11.0-jar-with-dependencies.jar coap://[2001:db8:cafe:babe::1]/urn:it.unipi.ing.ce.netpp:c00000001
Simulation
Use a simulation with a pseudo random number generator enabled, eg. simulation-prng.csc
.