Giter Site home page Giter Site logo

meshtasticator's Introduction

Meshtasticator

Discrete-event and interactive simulator for Meshtastic.

Discrete-event simulator

The discrete-event simulator mimics the radio section of the device software in order to understand its working. It can also be used to assess the performance of your scenario, or the scalability of the protocol.

See this document for a usage guide.

After a simulation, it plots the placement of nodes and time schedule for each set of overlapping messages that were sent.

It can be used to analyze the network for a set of parameters. For example, these are the results of 100 simulations of 200s with a different hop limit and number of nodes. As expected, the average number of nodes reached for each generated message increases as the hop limit increases.

However, it comes at the cost of usefulness, i.e., the amount of received packets that contain a new message (not a duplicate due to rebroadcasting) out of all packets received.

Interactive simulator

The interactive simulator uses the Linux native application of Meshtastic, i.e. the real device software, while simulating some of the hardware interfaces, including the LoRa chip. Can also be used on a Windows or macOS host with Docker.

See this document for a usage guide.

It allows for debugging multiple communicating nodes without having real devices.

interactiveSim.mp4

Furthermore, since the simulator has an 'oracle view' of the network, it allows to visualize the route messages take.

License

Part of the source code is based on this repo, which eventually stems from [1].

This work is licensed under a Creative Commons Attribution 4.0 International License.

References

  1. S. Spinsante, L. Gioacchini and L. Scalise, "A novel experimental-based tool for the design of LoRa networks," 2019 II Workshop on Metrology for Industry 4.0 and IoT (MetroInd4.0&IoT), 2019, pp. 317-322, doi: 10.1109/METROI4.2019.8792833.
  2. Martin C. Bor, Utz Roedig, Thiemo Voigt, and Juan M. Alonso, "Do LoRa Low-Power Wide-Area Networks Scale?", In Proceedings of the 19th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems (MSWiM '16), 2016. Association for Computing Machinery, New York, NY, USA, 59โ€“67.

meshtasticator's People

Contributors

dependabot[bot] avatar guvwaf avatar lazzarello avatar rickhavinga avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

meshtasticator's Issues

Ability to set SNR (related to pathloss)

Hello,

This is more like a question

I haven't found a documented way to set link SNR, meaning how well a node is able to hear another node.

This would help so much especially if I use data from neighbor info, to simulate the network.

Are significant changes needed on my side in order to set SNR somehow?

No documentation for "tk" python failure

When installing this repo on a new server, the sim failed due to tk not being installed on the machine. I couldn't find any docs on this, so it might be worth placing a note about needing this at the system level to run the application, if not giving some demo commands. For example, sudo pacman -S tk fixes the problem on Arch Linux.

Specify that Native Linux Requires GNOME Desktop Environment

Currently, the "Interactive Simulator" documentation page does not specify the application's depenency on the GNOME desktop environment. There is a dependency within the codebase on gnome-terminal, which is not supported on all Linux desktop environments. While xterm would work for all X11 DEs, this would also not support wayland DEs. I'm not sure of the best way to handle this since to my knowledge there isn't a generic command to start a terminal that is widely supported, although at least this is worth pointing out in the "Interactive Simulator" docs as a note.

numpy hex API version constraints

here's a weird one, numpy verions "15" versus "16" in an exception.

RuntimeError: module compiled against API version 0x10 but this version of numpy is 0xf
Traceback (most recent call last):
  File "/home/lee/src/Meshtasticator/interactiveSim.py", line 7, in <module>
    from lib.common import *
  File "/home/lee/src/Meshtasticator/lib/common.py", line 3, in <module>
    from . import phy 
    ^^^^^^^^^^^^^^^^^
  File "/home/lee/src/Meshtasticator/lib/phy.py", line 4, in <module>
    from scipy.optimize import fsolve
  File "/home/lee/src/Meshtasticator/.venv/lib/python3.11/site-packages/scipy/optimize/__init__.py", line 404, in <module>
    from ._optimize import *
  File "/home/lee/src/Meshtasticator/.venv/lib/python3.11/site-packages/scipy/optimize/_optimize.py", line 33, in <module>
    from scipy.sparse.linalg import LinearOperator
  File "/home/lee/src/Meshtasticator/.venv/lib/python3.11/site-packages/scipy/sparse/__init__.py", line 267, in <module>
    from ._csr import *
  File "/home/lee/src/Meshtasticator/.venv/lib/python3.11/site-packages/scipy/sparse/_csr.py", line 10, in <module>
    from ._sparsetools import (csr_tocsc, csr_tobsr, csr_count_blocks,
ImportError: numpy.core.multiarray failed to import

python version 3.11.3

numpy from requirements.txt

Ubuntu 22.04

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.