Git Product home page Git Product logo

mercator's Introduction

Code Health

You are watching the raw data. To visualize it: https://openwsn-berkeley.github.io/mercator/.

Mercator: Dense Wireless Connectivity Datasets for the IoT

Mercator is a collection of connectivity datasets gathered on the IoT-LAB sites. These datasets are:

  • dense in time, meaning the connectivity is continuously assessed over a long period of time; it allows one to see variation of connectivity over time.
  • dense in space, meaning the connectivity is assessed over hundreds of measurements points; it allows one to see how connectivity is affected by the location of transmitter and receivers.
  • dense in frequency, meaning the connectivity is assessed for each of the 16 IEEE802.15.4 frequencies; it allows one to see how connectivity is affected by the communication frequency.

Want to learn more? See the wiki.

mercator's People

Contributors

ddujovne avatar diegodujovne avatar konoo avatar pedrohenriquegomes avatar twatteyne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mercator's Issues

Local experiment are not working

python mercatorRunExperiment.py local 03oos_mercator_iot-lab_M3.elf Traceback (most recent call last): File "mercatorRunExperiment.py", line 303, in <module> main() File "mercatorRunExperiment.py", line 291, in main expid = submit_experiment(args.testbed, args.firmware, args.duration) File "mercatorRunExperiment.py", line 256, in submit_experiment nodes = tb_json[testbed_name] KeyError: 'local'

Device is not accessible after TXDONE

setup

Two OpenMotes running the latest firmware

issue

After telling a device to send, it stops responding to further commands.

to reproduce

> rx /dev/ttyUSB0
> tx /dev/ttyUSB1

After a few seconds:

    `type             : IND_TXDONE`
> st /dev/ttyUSB0
`{'status': 4, 'type': 2, 'mac': (0, 18, 75, 0, 6, 13, 158, 223), 'numnotifications': 0}`
> st /dev/ttyUSB1
---------------------------/dev/ttyUSB1
None

ubyte error

Traceback (most recent call last):
File "mercatorRunExperiment.py", line 283, in
main()
File "mercatorRunExperiment.py", line 279, in main
site = site
File "mercatorRunExperiment.py", line 70, in init
self._doExperimentPerFrequency(freq)
File "mercatorRunExperiment.py", line 82, in _doExperimentPerFrequency
self._doExperimentPerTransmitter(freq,transmitterPort)
File "mercatorRunExperiment.py", line 111, in _doExperimentPerTransmitter
txfillbyte = self.TXFILLBYTE,
File "/senslab/users/brun/mercator/code/software/app/../lib/MoteHandler.py", line 178, in send_REQ_RX
txfillbyte,
struct.error: ubyte format requires 0 <= number <= 255

[data] add a script to run all preprocess scripts

The new script will be called preprocess.py and will call the existing script.

Ex:
python preprocess.py strasbourg
This command should run pdr_dist.py, pdr_freq.py, rssi_dist.py ... for every dataset of the strasbourg site.

Some node fail on long term experiments

After one our on a large experiment (>350 nodes), the following nodes are not responding:

-----------timeout--------------m3-220
-----------timeout--------------m3-1
-----------timeout--------------m3-30
-----------timeout--------------m3-189
-----------timeout--------------m3-286
-----------timeout--------------m3-285
-----------timeout--------------m3-283
-----------timeout--------------m3-282
-----------timeout--------------m3-281
-----------timeout--------------m3-280
-----------timeout--------------m3-289
-----------timeout--------------m3-288
-----------timeout--------------m3-306
-----------timeout--------------m3-307
-----------timeout--------------m3-304
-----------timeout--------------m3-305
-----------timeout--------------m3-302
-----------timeout--------------m3-303
-----------timeout--------------m3-301
-----------timeout--------------m3-308

Second device freezes

The following error occurs when running the experiment in local with two m3 nodes.
The second device does not respond anymore after the first step ("switch /dev/ttyUSB3 to idle").
It is not device dependent.
It does not append when using the mercatorCLI script and following the same steps.

/dev/ttyUSB1
/dev/ttyUSB3
freq=11 transmitterPort=/dev/ttyUSB3
    switch /dev/ttyUSB3 to idle
    switch /dev/ttyUSB1 to idle
-----------timeout--------------/dev/ttyUSB3
    switch /dev/ttyUSB3 to RX
    switch /dev/ttyUSB1 to RX
-----------timeout--------------/dev/ttyUSB3
    switch /dev/ttyUSB3 to TX
freq=11 transmitterPort=/dev/ttyUSB1
    switch /dev/ttyUSB3 to idle
    switch /dev/ttyUSB1 to idle
-----------timeout--------------/dev/ttyUSB3
    switch /dev/ttyUSB3 to RX
    switch /dev/ttyUSB1 to RX

One connection refused crashes the experiment

When the app is no able to connect with a mote, it crashes the entire experiment.

Should we force the app to continue ? (we can make this feature an option)

The following error is raised:

could not connect to m3-291, reason: [Errno 111] Connection refused
Traceback (most recent call last): 
  File "mercatorRunExperiment.py", line 283, in <module>
    main()
  File "mercatorRunExperiment.py", line 279, in main
    site = site
  File "mercatorRunExperiment.py", line 56, in __init__
    self.motes[s]    = MoteHandler.MoteHandler(s,self._cb)
  File "/senslab/users/brun/mercator/code/software/app/../lib/MoteHandler.py", line 45, in __init__
    raise SystemError(msg)
SystemError: could not connect to m3-291, reason: [Errno 111] Connection refused

Refractor the processed dataset

We process the dataset to have "one_to_many" and "one_to_one" results.
Currently only "one_to_many" results are present.
We should create "one_to_many" and "one_to_one" to separate the future "one_to_one" results.

Replace asserts by warning

If some HDCL flags are corrupted, the node will not understand the command. However, this issue should not be fatal.

Improve CLI feedback

Instead of display the state of each node (ex: switch m3-325 to RX), display the current channel and the progression of the experiment.

Wrong pkctr

When looking at the logs, we can observe lines like this one:

timestamp,mac,frequency,length,rssi,crc,expected,srcmac,transctr,pkctr,txnumpk,txpower,txifdur,txlength,txfillbyte
2016-10-17_18.45.41,05-43-32-ff-03-df-93-67,11,100,-91,0,0,05-43-32-ff-03-db-c3-68,1,4129,10,0,100,100,0x0a

4129 is not valid as only 10 pkts are sent.

[data, www] add 3axis graph view

For preprocessed datasets with 3 metrics, display multiple graphs.

Example for PDR over each frequency along time:
The website should display one graph per frequency (I did not managed to have multiple frequencies on the same graph).

The preprocessed dataset should be under a folder with the following form: metric1_metric2_metric3
Ex: pdr_time_freq

With the following directory tree:

pdr_time_freq/
    11/
        time1.json
        time2.json
        ...
    12/
    13/
    ...

[www] replace experiment type selection by node selection

Currently, experiment type selection is done by clicking on buttons. To improve the user experience, the experiment type selection should be done when selection the observed nodes:

  • when no nodes are selected, the overall graphs are presented (m2m)
  • when selecting the first node, the observed node is the transmitting node (o2m)
  • when selecting the following nodes, the observed nodes are receiving nodes (o2o)

This hides the one_to_one, one_to_many and many_to_many technical concepts.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.