# ESDS: An Extensible Simulator For Distributed Systems and Cyber-Physical Systems [![Dependency](https://img.shields.io/badge/Python-v3.10-blue)](https://www.python.org/) [![Pipeline](https://gitlab.com/manzerbredes/esds/badges/main/pipeline.svg)](https://gitlab.com/manzerbredes/esds/-/tree/main) ### What is ESDS ? It is a short learning curve and coarse-grain network simulator. It contains the essential building blocks for the simulation of *Distributed Systems*, *Cyber-Physical Systems* (CPS), *Wireless Sensors Networks* (WSN) scenarios. It was originally designed to improve node implementation flexibility/faithfulness and mitigate the learning curve compare to existing network simulators. ESDS is part of a research project. Thus, studies and validation experiments are available online. For more details please visit http://todo.com. ### Installation `> pip install esds` ### Features - Easy to use - Small API - Agent-based: node implementations are in independant python files - Wireless interferences detection (i.e no modelization) - Custom node mobility (by updating the network matrix) - Nodes plugins (e.g energy consumption) ### What ESDS does not implements ? - Network protocols (e.g IP/TCP/UDP) - Wireless physical layer models (e.g Friis and Log-Distance models, modulation, RSSI) - Routing algorithms (e.g Shortest path) - And much more! ### Simulation API - `api.args` - `api.send(,,,)` - `api.sendt(,,,,)` - `api.receive()` - `api.receivet(,)` - `api.wait()` - `api.wait_end()` - `api.log()` - `api.read()` - `api.turn_on()` - `api.turn_off()` - *More details on the API in [example/sender.py](example/sender.py)* ### Documentation See `example/` and `tests/`