ENPLDEPT
Flash
All docs
LoRa

LoRa for your home — emergency alerts when the internet is down, and encrypted sensor frames to Home Assistant

A node with an SX1262 radio does two things. Emergency mode — readings out, commands in, over the air, when the line is down. And a receive network for your own LoRa sensors — any Sensmos node or LoRaWAN gateway that hears them delivers to you, encrypted so that only your node can read them.

radio · 868 MHz · emergency frame
Heard by a neighbour · 2.1 kmgarage · temp 3.4°C · door OPEN · 21:44

Boards

Any ESP32-S3 board with an SX1262 (Heltec WiFi LoRa 32 V3, LilyGo T3-S3 and similar). Flash the ESP32-S3 + LoRa tile on the web flasher. The firmware detects the radio at boot; without one, the LoRa screens simply do not appear.

ESP32-S3 + SX1262: Heltec V3 (left), Seeed XIAO S3 + Wio-SX1262 (right)
Heltec-style ESP32-S3 + SX1262
ESP32-S3 + SX1262: Heltec V3 (left), Seeed XIAO S3 + Wio-SX1262 (right)
Seeed XIAO S3 + Wio-SX1262

1. Emergency mode (free, two-way)

When the node loses its uplink (Wi-Fi dead, ISP down), it parks on the home channel and broadcasts up to four readings you chose every few minutes: temperature, a valve state, a text status — anything the node has as an entity. Values are compact (ASCII, 8 characters).

Anyone who hears it delivers it. Another node, or a LoRaWAN gateway running the Sensmos agent, forwards the frame over its own internet. You get a push and an Emergency Panel in the app: the readings with their age, who heard them, and a command box.

Commands back. From the panel you can send a short command (up to 8 characters, e.g. water_off) — signed by your wallet, limited to 4 per hour. The network picks a node in range of yours to transmit it; your node executes it locally (webhook, MQTT, a script action) and confirms in its next broadcast. Latency is one broadcast cycle, a few minutes.

Switch it on: node → Settings → LoRa → Emergency: pick up to four entities, optionally a webhook the node should call when a command arrives (POST JSON or GET, e.g. a UniFi or Shelly URL). The Emergency Panel appears on the node card automatically when the node goes dark.

2. Your own LoRa sensors (frames)

Any LoRa transmitter — an ESPHome board, a custom sensor — can send a small frame addressed to your node. The frame carries the node's id and a sub-address (1–255) so one node can serve many sensors.

  • Encrypted (recommended): the sensor and the node share a key phrase. The node decodes; the server only sees "a frame for node X" and routes it. Decoding happens on your node, in open firmware you can read.
  • Plain (opt-in): accepted only if you switch it on, because anyone who knows your node id could send one. Fine for toys and read-only telemetry; never for actuators.

Frames land in the node's LoRa inbox (app: node → Settings → LoRa → Inbox), on MQTT (lora_frame, lora_frame.N per sensor) and in Home Assistant as sensors and events. A delivery receipt (metadata only) tells the network the frame arrived.

Heard by anyone, delivered to you. If your sensor is out of your own node's range but another node or gateway hears it, the frame reaches your node over the internet. Your node does not need to hear its sensors itself.

Switch it on: node → Settings → LoRa → Frame receive: set the key phrase, optionally allow plain frames.

3. Sending to a sensor

lorasend on the node (app: Settings → LoRa → Send, or the HA service sensmos.lora_send) transmits a frame to one of your own sensors: destination = your node, sub = the sensor. Only the sensor's own node transmits to it — there is no relaying through other people's radios. Sending to another node goes over the internet and that node's radio does the last hop.

Frame format (for sensor builders)

plain:      [0xE0][0x02][flags][dst 4B][sub 1B][payload ≤128 B][CRC32 LE]
encrypted:  [0xE0][0x02][flags][dst 4B][sub 1B][nonce 4B][AES-256-CTR(payload+CRC32)]

flags bit0 = AES, bit1 = "last hop" (set only by the node when transmitting to a sensor). Key = SHA-256 of the key phrase. Radio: 868.1 MHz (EU) / 903.9 MHz (US), BW 125 kHz, SF11, CR 4/5, sync 0x34. Full spec incl. duty-cycle duties and the sensor-side rules: API & protocols.

Gateways as extra ears

A LoRaWAN gateway you already run (Helium, TTN, private) can hear for the whole network: a passive script on the gateway reports what the packet forwarder receives, paired through a Sensmos node on the same LAN. Nothing on the gateway changes. Setup in ten minutes: LoRaWAN gateway.

Roles: Point and Scanner

The network assigns each radio node a role. A Point camps on the home channel 24/7 — the reliable ear for emergencies and sensors. A Scanner sweeps channels and samples the spectrum (noise, occupancy, foreign LoRa traffic) and hops to the home channel when it has something to send. Both report what they hear; you can see the radio map on the live map.

Radio links on the live map: neighbours a node hears, signal levels and its RF entities
Radio links on the map — who hears whom, at what signal, and the node’s RF readings

Price

GALU / day of useWhere it goes
Emergency mode, commands, panel0 — always
Receive encrypted frames0.770% to the owner of the first foreign node that heard your sensor that day, 30% reward pool
Receive plain frames (opt-in)0.5same
Send from your node's radio0.8reward pool

Charged once on a day you use the feature; nothing is blocked by an empty balance. See Wallet & fees.

Questions, straight answers

Do I need a LoRaWAN gateway or a TTN account?

No. Your node is the receiver for your sensors, and every other node or gateway in the network is an extra pair of ears. Frames use a public LoRaWAN uplink channel (EU 868.1 / US 903.9), so foreign gateways with the Sensmos agent hear them too.

Can the server read my sensor data?

No. Frames are encrypted with a key phrase that lives only on your node and your sensors. The server routes frames by address and never has the key ("zero-knowledge").

Is delivery guaranteed?

No — it is radio. Emergency mode is heard if a node or gateway is in range; there is no mesh and no multi-hop. The more nodes around you, the better.

Is there a multi-hop mesh?

No, by design. One radio hop, everything else over IP. This keeps duty cycle, latency and security predictable.

What does it cost?

Emergency mode is free forever. Receiving sensor frames is 0.7 GALU (encrypted) or 0.5 GALU (plain, opt-in) per day of use; sending from the node's radio 0.8 GALU per day of use. 70% of a receive fee goes to the owner of the first foreign node that heard your sensor that day.

Last updated: 2026-09-03