A LoRaWAN nodes' and network simulator that works with a real LoRaWAN environment (such as Chirpstack) and equipped with a web interface for real-time interaction.

LWN Simulator

Build Status GitHub license made-with-Go GitHub go.mod Go version of a Go module GitHub release

A LoRaWAN nodes' simulator to simulate a LoRaWAN Network.

Table of Contents

General Info

LWN Simulator is a LoRaWAN nodes' simulator equipped with web interface. It allows to comunicate with a real infrastructure LoRaWAN or ad-hoc infrastructure, such as Chirpstack.

dashboard

The project consists of three main components: devices, forwarder and gateways.

The device

  • Based specification LoRaWAN v1.0.3;
  • Supports all LoRaWAN Regional Parameters v1.0.3.
  • Implements class A,C and partially even the B class;
  • Implements ADR Algorithm;
  • Sends periodically a frame that including some configurable payload;
  • Supports MAC Command;
  • Implements FPending procedure;
  • It is possibile to interact with it in real-time;

The forwarder

It receives the frames from devices, creates a RXPK object including them within and forwards to gateways.

The gateway

There are two types of gateway:

  • A virtual gateway that comunicates with a real gateway bridge (if it exists);
  • A real gateway to which datagrams UDP are forwarded.

Requirements

Installation

From binary file

You can download from realeses section the pre-compiled binary file.

Releases Page

From source code

Requirements

  • You must install Go. Version >= 1.16

Firstly, you must clone this repository:

git clone https://github.com/UniCT-ARSLab/LWN-Simulator.git

After the download, you must enter in main directory:

cd LWNSimulator

You must install all dependencies to build the simulator:

make install-dep

Now you can launch the build of the simulator:

make build

Finally, there are two mode to start the simulator:

  • from source (without building the source)
make run
  • from the builded binary
make run-release

Configuration file

The simulator relises on a configuration file (config.json) whitch specifies some configurations for the simulator:

{
    "address":"0.0.0.0",
    "port":8000,
    "configDirname":"lwnsimulator"
}
  • address: specifies the IP mask from which the web UI is accessible.
  • port: the web server port.
  • configDirname: the directory name where all status files will be saved and will be created in the user home.
Owner
ARSLab
Autonomus and Robotic Systems Laboratory
ARSLab
Comments
  • Gateway bridge port

    Gateway bridge port

    Where do I find my gateway bridge's port and IP? I assume the IP is 127.0.01 since I have it installed on the same virtual machine as my application server and my network server and I'm executing the simulator on the same machine. I tried looking into the ports that my machine are using with: sudo lsof -i -P -n | grep LISTEN And it was 3001. But when I try to run the simulator, it gave me this error: 2021/09/14 16:50:23 GW[gw1] [ERROR]: No connection with 127.0.0.1:3001, it may be off

  • Parameters to be set in the config.json file

    Parameters to be set in the config.json file

    Hello,

    I am having Ubuntu 18.04 running as VM on windows host. In the same VM I have installed all the Chirpstack components namely Gateway-Bridge, network Server and Application server. I have installed the LWN-Simulator too in the same VM but while executing the 'make run' command I am getting the error as :

    2sudip@sudip_ubuntu:~/LWN-Simulator$ make run 2021/11/09 14:37:10 LWN Simulator is online... 2021/11/09 14:37:10 [WS]: Listen [ 192.168.1.5:8000 ] 2021/11/09 14:37:10 [WS] [ERROR]: listen tcp 192.168.1.5:8000: bind: address already in use

    192.168.1.5- is my VM ip address.

    The same 8000 port I have used while adding network server in the application server web interface. 'localhost:8000'.

    What shall I do to get the websocket of the simulator to get connected?

    Please help!!

  • sending hex str in device chirpstack

    sending hex str in device chirpstack

    Hi I tried sending "51282412059f23190000000000000000000000000000000000000000000000000000000000000000" in device payload and i am getting base64 encoded data on chirpstack as NTEyODI0MTIwNTlmMjMxOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA=

    whereas expected encoded data is USgkEgWfIxkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

    i tried finding the issue and in order to get this data correctly i need to do a hex decode , but i am not sure where to do it

    i am addding the sample sudo code here

    package main

    import ( "encoding/base64" "encoding/hex" "fmt" )

    func main() { fmt.Printf("expected: \n USgkEgWfIxkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") payload := "51282412059f23190000000000000000000000000000000000000000000000000000000000000000"

    current_output := base64.StdEncoding.EncodeToString([]byte(payload))
    db := decodeHex([]byte(payload))
    expected_output := base64.StdEncoding.EncodeToString(db)
    
    fmt.Printf("\noriginal encoding \n %s\n", current_output)
    fmt.Printf("new encoding \n %s\n", expected_output)
    

    }

    func decodeHex(input []byte) []byte { db := make([]byte, hex.DecodedLen(len(input))) hex.Decode(db, input) return db }

    kindly suggest where this decodeHex needs to be put

  • How to connect Chirpstack device and generate testing data from simulator device?

    How to connect Chirpstack device and generate testing data from simulator device?

    I have copied DevEUI to Chirpstack's device. The gateway can be associated correctly. But "Last seen at" is always "never" for device.

  • How to connect virtual gateway to ChirpStack open-source LoRaWAN® Network Server?

    How to connect virtual gateway to ChirpStack open-source LoRaWAN® Network Server?

  • Use a binary payload

    Use a binary payload

    Is it possible to set up a virtual device with a binary payload?

    I would like to simulate a LoRaWAN payload of bytes that cannot be represented by a simple ASCII string, but there does not seem to be a way to configure that in the UI.

secure scuttlebutt network simulator

Network Simulator a brief exposition on the network simulator to be built as part of SSB's NGI Pointer grant For the remainder of May—and likely parts

May 13, 2022
An easy-to-use, flexible network simulator library in Go.

ns-x An easy-to-use, flexible network simulator library for Go. Feature Programmatically build customizable and scalable network topology from basic n

Dec 13, 2022
🌌 A libp2p DHT crawler that gathers information about running nodes in the network.
🌌 A libp2p DHT crawler that gathers information about running nodes in the network.

A libp2p DHT crawler that gathers information about running nodes in the network. The crawler runs every 30 minutes by connecting to the standard DHT bootstrap nodes and then recursively following all entries in the k-buckets until all peers have been visited.

Dec 27, 2022
LNC is a lightning network capital management tool built for routing nodes.

LNC is a lightning network capital management tool built for routing nodes.

Dec 21, 2021
Schema-free, document-oriented streaming database that optimized for monitoring network traffic in real-time

Basenine Schema-free, document-oriented streaming database that optimized for monitoring network traffic in real-time. Featured Aspects Has the fastes

Nov 2, 2022
An OOB interaction gathering server and client library
An OOB interaction gathering server and client library

Interactsh An OOB interaction gathering server and client library Features • Usage • Interactsh Client • Interactsh Server • Interactsh Integration •

Jan 2, 2023
基于TCP的基础通讯协议及框架(IIP,Internal Interaction Protocol),该协议可作为RPC接口调用的底层协议,如同http2之于gRPC,本项目基于该协议实现了client/server的基础框架。
基于TCP的基础通讯协议及框架(IIP,Internal Interaction Protocol),该协议可作为RPC接口调用的底层协议,如同http2之于gRPC,本项目基于该协议实现了client/server的基础框架。

IIP是什么? 基于TCP的基础通讯协议及框架(IIP,Internal Interaction Protocol),该协议可作为RPC接口调用的底层协议,如同http2之于gRPC,本项目基于该协议实现了client/server的基础框架。 使用说明 echo回显client示例: exampl

Jul 19, 2022
hazelcast go-client interaction with hazelcast cloud

sample-application hazelcast go-client interaction with hazelcast cloud smart-client-deployment https://guides.hazelcast.org/kubernetes-external-clien

Nov 23, 2022
Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface).

windows-ndi-optimizer[WIP] Optimize Windows's network/NIC driver settings for NewTek's NDI(Network-Device-Interface). How it works This is batchfile d

Apr 15, 2022
The server-pubsub is the main backend of DATAVOC project that manages all the other web-server modules of the same project such as the processor

server-pubsub The server-pubsub is the main backend of DATAVOC project that manages all the other web-server modules of the same project such as the p

Dec 3, 2021
SSH file upload/download tool in weak network environment

RSCP 弱网环境下的ssh文件上传/下载工具 SSH file upload/download tool in weak network environment USAGE -b int each block size (bytes) -c string c

Jan 14, 2022
🌐 (Web 3.0) Pastebin built on IPFS, securely served by Distributed Web and Edge Network.
🌐 (Web 3.0) Pastebin built on IPFS, securely served by Distributed Web and Edge Network.

pastebin-ipfs 简体中文 (IPFS Archivists) Still in development, Pull Requests are welcomed. Pastebin built on IPFS, securely served by Distributed Web and

Jan 1, 2023
A simple low bandwidth simulator written in go

NETSNAIL 0.8 ABOUT Netsnail is a simple network proxy that simulates low bandwidth. RUNNING Usage of netsnail: -d=0: the delay on data transfe

May 19, 2021
FLoC Simulator
FLoC Simulator

FLoC Simulator Command line FLoC simulator to calculate CohortID with using host list and cluster data. Build and Run Demo $ cd $ cd demos/floc_sampl

May 5, 2022
connect to microsoft flight simulator 2020 using golang

msfs2020-go simconnect package msfs2020-go/simconnect connects to microsoft flight simulator 2020 using golang. cross-compiles from macos/linux, no ot

Nov 23, 2022
AutoTrackIR will automatically re-enabled your Track IR if flight simulator disabled it. (bug introduce in SU7)

AutoTrackIR AutoTrackIR will automatically re-enable your Track IR if flight simulator disabled it. (bug introduce in SU7) How it works ? It just watc

Oct 7, 2022
golife is a cell evolution simulator.
golife is a cell evolution simulator.

golife WORK IN PROGRESS golife is a cell evolution simulator. It presents autonomous organism with inner properties and behavior (hunter or prey) that

Dec 30, 2021