Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kartben/lorawan-node-simulator
Simulation infrastructure for a LoRaWAN network (gatways and end devices) that's easy to configure and run from your CLI. Also available as a Docker container.
https://github.com/kartben/lorawan-node-simulator
iot lorawan lpwan network-simulation simulation
Last synced: about 4 hours ago
JSON representation
Simulation infrastructure for a LoRaWAN network (gatways and end devices) that's easy to configure and run from your CLI. Also available as a Docker container.
- Host: GitHub
- URL: https://github.com/kartben/lorawan-node-simulator
- Owner: kartben
- License: mit
- Created: 2020-11-23T17:15:33.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2021-07-09T09:11:58.000Z (over 3 years ago)
- Last Synced: 2024-10-28T22:15:58.204Z (19 days ago)
- Topics: iot, lorawan, lpwan, network-simulation, simulation
- Language: TypeScript
- Homepage:
- Size: 103 KB
- Stars: 105
- Watchers: 11
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Welcome to lorawan-node-simulator 👋
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](/LICENSE)
[![Twitter: kartben](https://img.shields.io/twitter/follow/kartben.svg?style=social)](https://twitter.com/kartben)
[![Build](https://github.com/kartben/lorawan-node-simulator/workflows/Node.js%20CI/badge.svg)](https://github.com/kartben/lorawan-node-simulator/actions?query=workflow%3A"Node.js+CI")This repository contains a simulation infrastructure for LoRaWAN.
It simulates LoRaWAN gateways, and endpoints regularly emitting LoRaWAN radio packets ("Unconfirmed Data Uplink" by default). These packets get picked up by a few (i.e. 1 to 3) gateways that forward them to a network server.
As the initial purpose of this solution was to stress test a LoRaWAN network server, and not necessarily implement a full-blown simulator, only uplink traffic is generated at this point, and devices are expected to be provisioned via ABP.
## Install
```bash
npm install lorawan-node-simulator -g
```## Usage
The simulator needs to be configured using the following environment variables (the ones in **bold** are mandatory):
- **`NETWORK_SERVER_URI`**: (ex: udp://ttnv3-myinstance.eastus.cloudapp.azure.com:1700) ;
- **`NETWORK_SESSION_KEY`**: The network session key (NwkSKey) used by the simulated devices (ex: A54FA689EED2DCE45A4CE5CD947EFCB7) ;
- **`APPLICATION_SESSION_KEY`**: The application session key (AppSKey) used by the simulated devices (ex: D8B3FEE5D99EFCFE924678DD664E160C) ;
- `GATEWAY_START_EUI`: EUI of the first gateway to simulate, 32 hex digits (default: 0000000000000001);
- `GATEWAY_END_EUI`: EUI of the last (inclusive) gateway to simulate, 32 hex digits (default: 0000000000000005);
- `END_NODE_START_DEVADDR`: DevAddr of the first end node to simulate, 8 hex digits (default: 00000000);
- `END_NODE_END_DEVADDR`: DevAddr of the last (inclusive) end node to simulate, 8 hex digits (default simulation has 1000 devices, hence end address is 000003E8).
- `END_NODE_TX_PERIOD`: how often the end nodes transmit, in milliseconds (default: 30000, i.e. 30s) ;Once all the required environment variables have been set (defined globally in your environment, or in a `.env` file in the folder from where you'll run the command, in which case you may want to rename the `.env.sample` file and use it as a starting point), simply launch the simulation:
```bash
lorawan-node-simulator
```### Docker container
The simulator is also available as a Docker container.
```bash
docker run kartben/lorawan-node-simulator
```## Pre-requisites / Limitations
- The simulator does *not* provision the simulated gateways, end devices and applications in your network server so you must take care of doing so prior to launching a simulation ;
- The application payload is hard-coded and the same for all devices (4 bytes: ['t', 'e', 's', 't']) ;
- Gateways need to be provisioned with an "EU 863-870" frequency plan. Note that adding support for additional frequency plans in the simulator is reasonably straigthforward ;
- Devices need to be provisioned in your network server using the ABP method, and need to be in a "vanilla" state (i.e. frame counter = 0) ;
- Devices only emit unconfirmed uplink at the moment ;
- All simulated devices need to have the same NwkSKey and AppSKey (which may not be a recommened practice in a real-world environment!) ;
- No downlink support (the packet forwarder that the simulated gateways implement only supports "PUSH_DATA" command from the Semtech packet forwarder specification at the moment, so downlink can't be available) ;
## Author
👤 **Benjamin Cabé**
* Website: https://blog.benjamin-cabe.com
* Twitter: [@kartben](https://twitter.com/kartben)
* Github: [@kartben](https://github.com/kartben)
* LinkedIn: [@benjamincabe](https://linkedin.com/in/benjamincabe)## 🤝 Contributing
Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/kartben/lorawan-node-simulator/issues).
## Show your support
Give a ⭐️ if this project helped you!
## 📝 License
Copyright © 2020 [Benjamin Cabé](https://github.com/kartben).
This project is [MIT](/LICENSE) licensed.
***
_This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_