Giter Club home page Giter Club logo

fdojurado / sdwsn-controller Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 1.0 17.01 MB

This is a Software-Defined Wireless Sensor Network (SDWSN) controller. This SDWSN-controller is designed to work with Contiki-NG-SDWSN.

License: BSD 3-Clause "New" or "Revised" License

Python 44.18% CSS 0.51% SCSS 10.60% HTML 7.99% JavaScript 36.71%
contiki contiki-ng wsn sdwsn contiki-os sdn-controller sdwsn-controller machine-learning reinforcement-learning

sdwsn-controller's Introduction

Hi there ๐Ÿ‘‹, I'm Fernando!

visitors

๐Ÿ“– About Me

๐Ÿ“ˆ GitHub Activities and Metrics

Metrics

๐Ÿ“ซ You can reach me at:

  • ๐Ÿ“ง My email in my website or here.

  • ๐Ÿ’ญ Social networks:

    Follow me on LinkedIn Follow me on Twitter Follow me on Instagram

sdwsn-controller's People

Contributors

fdojurado avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

sdwsn-controller's Issues

Each node in DB should also hold a field with routes configured.

This permits to compute the checksum of routes and see if the controller has the same routes. This minimises the control overhead see paper "Energy-aware routing for software-defined multihop wireless sensor networks".

This DB is populated when the NC routing packets have been acknowledged.

Updated: We now populate the NC routing for each node when generating routes and we set the configure flag when they are acknowledged.

Issues with plotting current routing paths

There are issues when plotting the currently deployed paths, as some of them stay on the table.

One solution could be to store currently deployed routes in a different DB collection. But, we may need to keep the known sensor routes as well (different collection).

To solve this, we use the latest entry of the "historical-routes" collection, which holds the latest routing paths. We then verify whether these routes have been already deployed or not by querying the "fwd_table".

Revise the byte order.

When sending the serial data to the controller there is an issue with the byte order. Now it is working correctly with python running in MacBook Pro (14-inch, 2021). It may stop working if it runs in a different architecture.

Network visualization

We need to have a network visualization to easily visualize the network connection.

Send Schedules in a broadcast message to all nodes

The controller advertises the current schedules to all nodes in the network in a broadcast message.

Broadcast makes more sense as the controller tells all the sensor nodes the schedules for the incoming period.

The current forwarding paths need to have the format "source-destination-via".

Once the paths are found running the routing algorithm, they need to be stored in the correct format in the dataframe. It then needs to be saved in MongoDB.

Suppose we received the following path "1-2-3-4". The following routes are built.

| src | dst | via |
| 1 | 3 | 2 |
| 1 | 4 | 2 |
| 2 | 4 | 3 |
| 4 | 1 | 3 |
| 4 | 2 | 3 |
| 3 | 1 | 2 |

Queue for ACK of NC packets

Once we send routing reconfig packets, we need to store the ACKs for that packet, as multiple packets can be sent and ACKs may arrive in a different order.

Implementation of MQTT (APP layer)

The controller receives instruction on the specific routing protocol to run from an MQTT client.

The controller should run the MQTT server as an independent process.

We need to add a field in the routes db to check if the given route has already been deployed.

This is needed to avoid sending duplicate routes.

Currently, we are saving the routes found using the routing algorithm in the historical-routes db, and we assume that previous routes in db have been already deployed.

However, this might not be always the case. We potentially need to use a flag to identify which routes have been deployed. This flag inherits the status from the historical routes.

One solution is to check if the routes already exist in the node. See issue #16

The database should provide easy access to the up-to-date neighbour links.

Currently, neighbours (NBs) are stored within the "Nodes" collection. This is historical data that contains link status with NBs. The routing protocol should have easy and fast access to the current alive links. It does not care for the past link status, at this stage. The historical data can be used for ML implementations in future.

Queue for NC packets to send

All NC packets are placed in a queue. In this case, we address routing reconfiguration packets. For these packets, we send them in order-therefore they are stored in a FIFO queue.

The Queue should point to the node number instead of the whole data frame.

Network reconfiguration functionalities

The controller, which runs natively using python, needs to send network configuration packets to all sensor nodes. Therefore, the network reconfiguration methods need to be implemented.

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.