LoraManager2
LoRaWAN Class C for ESP32 + SX1262
An open-source Arduino/PlatformIO library that solved a problem no existing Heltec library could: true Class C LoRaWAN capability — enabling near-real-time downlinks for industrial actuator control.
LoRa 32 V3
The Problem
45 seconds is not real-time.
The LoRa DMX project needed to control DMX512 stage lighting over LoRaWAN. For that to work, downlinks — commands sent from the cloud back to a device — needed to arrive fast. Not "fast enough for a slow sensor." Fast enough to control a relay or trigger a light cue.
Every existing library for the Heltec WiFi LoRa 32 V3 operated in LoRaWAN Class A: the device only listens for downlinks immediately after it sends an uplink. Between uplinks, it's deaf. In practice, that meant waiting up to 45 seconds to see a state change after sending a command.
Class C devices listen continuously. No uplink required. Commands arrive in under 5 seconds. The problem was: no library exposed true Class C on Heltec chips.
The same limitation applied to relay-based access control — a door lock or garage controller can't wait 45 seconds. Real actuator control requires real-time. That meant building the library from scratch.
The Breakthrough
Finding the one library that could do it.
Architecture
Event-driven. Runtime-configured.
API
The surface area is small on purpose.
begin(LoraConfig, HardwareConfig) Initialize the stack, OTAA join, switch to Class C
loop() Must be called in main loop — handles radio events
send(payload) Unconfirmed uplink
sendConfirmed(payload) Acknowledged uplink — waits for ACK
isJoined() Network connection state
getCurrentClass() Returns active LoRaWAN class (A/B/C)
getDeviceEUI() Device EUI for TTN registration
onJoined(fn) Fires when OTAA join succeeds
onDownlink(fn) Raw downlink received
onCommand(fn) JSON command parsed and dispatched
onClassChanged(fn) Class switch confirmed by network
Built For
Two projects. Both needed it to work.
Controlling DMX512 lighting fixtures over LoRaWAN required sub-second-class responsiveness. Class A's 45-second window made live lighting effects impossible. LoraManager2 made the LoRa DMX project viable.
View LoRa DMX project →Controlling door locks and garage relays over LoRaWAN. The Dragino LT-22222-L relay needed to respond to a cloud trigger in seconds, not minutes. The same Class C architecture that powered LoRa DMX drove access control commands.
Tech Stack