Эмулятор шлёт W-protocol payload в LWN Simulator по Socket.IO
(send-uplink). LWN собирает LoRaWAN-кадр и отдаёт его в Gateway Bridge / ChirpStack.
Исходники: https://github.com/UniCT-ARSLab/LWN-Simulator
· UI обычно на порту 8000.
1. Что нужно
- Go ≥ 1.21 (
https://go.dev/dl/)
- Опционально: ChirpStack + Gateway Bridge, если нужен «настоящий» uplink в сеть
2. Windows — готовый бинарник
Если уже собран (например D:\LWN-Simulator):
cd D:\LWN-Simulator
.\lwnsimulator.exe
config.json рядом с exe: port 8000, metricsPort 8001.
3. Windows — сборка из исходников
winget install GoLang.Go
git clone https://github.com/UniCT-ARSLab/LWN-Simulator.git
cd LWN-Simulator
go install github.com/rakyll/statik@latest
cd webserver
statik -f -src=public
cd ..
mkdir bin
copy config.json bin\config.json
go build -o bin\lwnsimulator.exe .\cmd\main.go
cd bin
.\lwnsimulator.exe
4. Linux
# Go ≥ 1.21 + git
git clone https://github.com/UniCT-ARSLab/LWN-Simulator.git
cd LWN-Simulator
go install github.com/rakyll/statik@latest
export PATH="$(go env GOPATH)/bin:$PATH"
cd webserver && statik -f -src=public && cd ..
mkdir -p bin && cp config.json bin/
go build -o bin/lwnsimulator ./cmd/main.go
./bin/lwnsimulator
Или через Makefile: make install-dep && make build && make run-release.
5. Первый запуск в LWN
- Открой
http://127.0.0.1:8000/dashboard
- Gateway Bridge — адрес ChirpStack Gateway Bridge (если есть), Save
- Add gateway — virtual gateway, Active, Save
- Add device — DevEUI / ключи как в ChirpStack, Active, Save
- Кнопка Start симуляции → включи gateway и device (toggle ON)
6. В этом эмуляторе
- Подключение: тип
lorawan, хост/порт LWN (часто 127.0.0.1:8000)
- «Проверить» — LWN отвечает на
/api/status
- Планировщик: пресет + это подключение → выбрать устройство из списка → Отправить
Пакет уходит binary и встаёт в очередь LWN; в эфир — на ближайшем тике
SendInterval устройства (устройство должно быть Joined / ON).
Полезные URL
- Dashboard:
http://HOST:8000/dashboard
- Статус:
GET http://HOST:8000/api/status
- Устройства:
GET http://HOST:8000/api/devices
- Start / Stop:
GET /api/start, GET /api/stop