Простой симулятор устройства LoRaWAN Class A с OTAA активацией.
- Node.js >= 22.0.0
--experimental-strip-types.
Этот флаг является экспериментальным и может измениться в будущих версиях Node.js
npm install- Скопируйте файл конфигурации config.example.json:
cp config.example.json config.json- Отредактируйте
config.json:
{
"gatewayHost": "dev.rightech.io",
"gatewayPort": 1700,
"gatewayEUI": "0000000000000000",
"devEUI": "0000000000000001",
"appKey": "00000000000000000000000000000000",
"frequencyPlan": "RU864",
"uplinkFPort": 1,
"uplinkInterval": 60000
}gatewayHost- адрес LoRaWAN gatewaygatewayPort- порт LoRaWAN gateway (обычно 1700)gatewayEUI- EUI шлюза в hex формате (16 символов, 8 байтов)devEUI- EUI устройства в hex формате (16 символов, 8 байтов)appKey- Application Key в hex формате (32 символа, 16 байтов)uplinkFPort- FPort для uplink сообщений (по умолчанию, если не указан в uplink.ts)uplinkInterval- интервал отправки uplink сообщений в миллисекундахfrequencyPlan- частотный план (RU864, EU868), остальные не проверялисьdebug.udp- отладка UDP пакетовdebug.lora- отладка LoRaWAN пакетов
npm startДля использования собственного payload скопируйте файл uplink.example.ts:
cp uplink.example.ts uplink.tsДалее редактируйте uplink.ts произвольным образом:
import type { UplinkMessage } from "./src/types.ts";
import { config } from "./src/config.ts";
import { deviceState } from "./src/device-state.ts";
export function generateUplink(): UplinkMessage {
const t = +(Math.random() * 256 - 128).toFixed(0);
const h = +(Math.random() * 100).toFixed(0);
return {
fPort: 2,
payload: Buffer.from([t, h]),
};
}MIT