Skip to content

STIoT packet generator which simulates LoRa@FIIT wireless access point.

Notifications You must be signed in to change notification settings

alexandervalach/lora-ap-sim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LoRa@FIIT Access Point and End Nodes simulator

STIoT packet generator which simulates LoRa@FIIT wireless access point and LoRa@FIIT end nodes.

Supported features and TODO

LoRa PHY Features

  • Generate a position of each node randomly from uniform distribution
  • Calculate a PATH LOSS depending on the variable distance from AP
  • Move the nodes using a normal speed of a human

Access Points features

LoRa Concentrator Features Support

  • Pseudo-random RSSI, SNR generation
  • Sending frequency data in STIoT messages
  • Support for Command Line Interface (CLI)
  • Duty cycle contraints and refresh

Thread-safe Features

  • Non-blocking socket communication to improve scalability
  • Thread-safe message queuing

QoS Support

  • Emergency message support
  • Priority queue for emergency messages

Collisions

  • Uplink collision simulation
  • Downlink collision simulation

End Nodes Features

  • End node duty cycle constraints and refresh
  • Processing network data from network server to adapt communication parameters
  • Calculate time-on-air (TOA) for each message
  • Data retransmission in case of collision
  • Support for Upper Confidence Bound parameter selection
  • Support for Thompson Sampling parameter selection
  • Update parameters based on partial results from Network Server (MABP-case)
  • Random initial movement direction

Command line interface

End nodes generation is required if data folder is empty

You are free to change these variables in generator.py:

file_path="data/group1.txt"
num_of_nodes = 100

Then you should run

generator.py

Single access point usage

Recommended approach. Could be displayed by running main.py -h or main.py --help commands

main.py -i <access-point-id>

-i <dev_id>, --id=<dev_id> - Specify LoRa AP hardware id

-r, --register - Include end nodes registration process

-s, --shuffle - Shuffle list of end nodes

-f <file_path>, --file=<file_path> - Specify LoRa node id file

-b, --bandit - Activating bandit nodes support

-t, --test - Using test scenario for developing purposes

Multi access point usage

Just run the file. It generates 10x[number of files] new access points. This usage is buggy and can cause memmory leaks. Use at your own risk.

run.py