Alin Li Lageeni

ESP-NOW + LoRa Emergency Communication System

Solution Architecture v3.0 Fully Revised

March 2026 · Alin Li for Computer Services · لاقيني

1

Project Overview

What is Alin Li Lageeni?

Alin Li Lageeni (لاقيني — Arabic for "Find Me / Meet Me") is an open-source, off-grid emergency communication system built on ESP32. It uses two communication layers: ESP-NOW for fast, low-power short-range and LoRa for long-range — no internet, no WiFi networks, no cellular service required.

ESP32ESP-NOWLoRa 433/868 MHzWeb UI (temp)SOS SystemDeep SleepOpen Source

Use Cases

  • Emergency Situations — Natural disasters, power outages, or network failures where cellular/internet is unavailable
  • Outdoor Adventures — Camping, hiking, or field trips where groups need to stay connected across long distances
  • Educational Projects — Teaching students (ages 9–14) about wireless communication, networking, and IoT
  • Community Events — Coordination at large gatherings without relying on WiFi infrastructure
  • Search & Rescue — Locate lost group members using signal strength and GPS sharing
v3.0 ArchitectureWiFi AP mode is used only during initial setup for the configuration web UI, then turned OFF. ESP-NOW + LoRa provide the runtime communication backbone. This saves battery and removes the single-point-of-failure WiFi master.
★

Existing Solutions & What Makes Us Different

The Landscape

Several solutions exist for off-grid communication. Some are open-source community projects, others are commercial products. Here's how they compare — and why we built Alin Li Lageeni to fill a gap none of them address.

Meshtastic

The most popular open-source LoRa mesh project. Community-driven, supports many hardware boards, uses flood-based routing. Available on ESP32 and nRF52 platforms with companion mobile apps for iOS and Android.

Open SourceLoRa MeshMobile AppLarge Community

MeshCore

A newer open-source LoRa mesh firmware (MIT license) with selective packet forwarding instead of flooding. Supports repeaters, room servers, and companion radio modes. Growing community with mobile apps and a web client.

Open SourceSelective RoutingWeb ClientNewer Project

goTenna

A commercial mesh networking device. The consumer version supports text messaging and GPS via a paired smartphone. The Pro version offers military-grade encryption and integration with tactical apps like ATAK. Closed-source and proprietary.

CommercialClosed SourcePhone RequiredMilitary Grade

Garmin inReach

A satellite communicator that connects to the Iridium satellite network for global two-way messaging and SOS with a professional 24/7 rescue monitoring center. Requires a paid subscription. Not a mesh — it's device-to-satellite.

Commercial ($300–500)Subscription RequiredSatellite / Global24/7 Rescue Center

Head-to-Head Comparison

Feature Alin Li Lageeni Meshtastic MeshCore goTenna Garmin inReach
Cost ~$15–30 DIY ~$20–60 DIY ~$20–60 DIY $180–300+ $300–500+
Subscription None — Free None None None $15–65/mo
Communication ESP-NOW + LoRa (dual) LoRa only LoRa only Proprietary radio Iridium satellite
Range 200m–15 km 1–15 km 1–15 km 1–6 km Global
Phone Required? No — built-in web UI Yes (BLE app) Yes (BLE app) Yes (BLE app) Optional
Setup Complexity 1-click group Moderate (app config) Moderate (flash + CLI) Easy (app pairing) Easy (account setup)
Target Audience Youth / Education Hobbyists / DIY Hobbyists / Technical Outdoor / Tactical Outdoor / Pro
SOS System Dual-channel + ACK + countdown Basic (via app) No built-in SOS Indirect only 24/7 rescue center
Sleep / Battery Save 4 modes (down to 0.01mA) Power save mode Sleep optimized ~24h battery life Days to weeks
Arabic / RTL UI Yes — built-in Community translation No No No
Classroom Mode Yes — quizzes, attendance No No No No
Audit Logs Full on-device + export App-side only Limited App-side Cloud only
Open Source Yes (MIT) Yes (GPL-3) Yes (MIT) No No
Mesh Networking Relay via peers Flood-based mesh Selective routing Mesh capable No (point-to-satellite)

What Makes Alin Li Lageeni Different?

  • Built for education first — Designed specifically for students ages 9–14. Simple 1-click grouping, friendly web UI, no app install needed. Meshtastic and MeshCore are powerful but designed for hobbyists and require technical setup.
  • Dual-layer communication (ESP-NOW + LoRa) — No other solution combines ESP-NOW for ultra-low-power short-range with LoRa for long-range. Meshtastic and MeshCore use LoRa only. This gives us better battery life for nearby peers and automatic channel fallback.
  • No phone dependency — Meshtastic, MeshCore, and goTenna all require a paired smartphone via Bluetooth. Lageeni has a built-in web UI accessible from any device with a browser, plus physical button operation for phone-free use.
  • SOS with safety countdown — A 5-second cancellable countdown prevents accidental SOS triggers. Dual-channel broadcast ensures maximum reach. ACK tracking shows exactly who received the alert. No other LoRa solution offers this level of SOS design.
  • Arabic and bilingual support — Native Arabic (RTL) interface built-in. No existing LoRa mesh project offers this. Critical for classrooms and communities in the Middle East.
  • Classroom mode — Unique feature: teacher can broadcast quizzes, take attendance, and send group messages. Students respond via button press. No internet needed. No other mesh solution has this.
  • Full on-device audit logs — All events stored in flash with permanent SOS logs, filterable by type, exportable as JSON/CSV. Meshtastic only logs on the phone app; MeshCore has limited logging.
  • Zero ongoing cost — Unlike Garmin inReach ($15–65/month subscription) or goTenna Pro (commercial license), Lageeni has zero recurring costs. Hardware is $15–30 per device.
Alin Li Lageeni fills a unique nicheIt's not trying to replace Meshtastic (which excels at large community meshes) or Garmin inReach (which offers global satellite rescue). Lageeni is purpose-built for small groups, classrooms, and emergency preparedness where simplicity, low cost, bilingual support, and educational value matter most.
2

Why ESP-NOW over WiFi?

WiFi AP is Wrong for Emergency Devices

Maintaining a WiFi Access Point drains the battery fast, requires one device to always be the "router", and creates a single point of failure. For emergency and field use, we need something far leaner and more resilient.

Feature
WiFi AP/STA
ESP-NOW
Power Draw
~150–200 mA continuous
~2–5 mA per burst
Setup Required
SSID, password, DHCP, IP
MAC address only
Single Point of Failure
AP dies = network dies
Peer-to-peer, no master
Range
~30–100 m
~200–500 m (open)
Latency
HTTP overhead (50–200ms)
~1–5 ms (direct)
Sleep Compatible
No (connection drops)
Yes (wake → send → sleep)
Max Peers
10 clients (ESP32 limit)
20 peers (10 encrypted)
Our 3-Layer Architecture Layer 1 — WiFi AP: Only during initial setup. User connects phone → web UI → rename + group. Then WiFi is OFF.
Layer 2 — ESP-NOW: Short-range (200–500m), ultra-low power, for nearby devices.
Layer 3 — LoRa: Long-range (1–15 km), for distant devices and emergency broadcasts.
3

System Architecture

Alin Li Lageeni — Dual-Layer Peer-to-Peer Communication LoRa Zone 1–15 km ESP-NOW 200–500m A Base Camp B Ahmed C Tent 3 D River Team E Scout (far) LoRa only F Hilltop LoRa only SOS → ALL Legend Any Device Nearby (ESP-NOW + LoRa) Far (LoRa only) ESP-NOW LoRa
4

System Flow

1

Power On — Temporary WiFi AP

Each ESP32 boots and creates a temporary WiFi AP named "Lageeni-XXXX" (last 4 of MAC). The user connects their phone to this WiFi and opens the web setup page at 192.168.4.1. This is the only time WiFi runs.

2

Rename Device

On the setup page, the user gives the device a friendly name (e.g., "Ahmed", "Base Camp", "Tent 3"). Saved to NVS flash — persists across reboots.

3

Scan & Discover Peers

From any device's setup page, the user taps "Scan for Devices". The device broadcasts a LoRa discovery beacon. All powered-on Lageeni devices within range respond with their MAC, name, and LoRa address. The setup page shows discovered devices in real-time. Any device can be the one to initiate grouping — there is no fixed master.

4

Group All — Click to Join

User clicks "Group All Devices". A GROUP_INIT packet is broadcast via LoRa containing: group ID, encryption key, sync word, and the full device registry. All devices store this config.

5

WiFi OFF — ESP-NOW + LoRa Active

After grouping, WiFi turns OFF to save battery. All communication switches to ESP-NOW (short-range, low-power) and LoRa (long-range). Smart routing auto-selects the best channel per peer.

6

Communicate & Operate

Users interact via physical button (press = scroll messages, long-press 3s = SOS, double-press = re-enable WiFi temporarily for full web UI access). Messages route automatically via ESP-NOW (nearby) or LoRa (distant). WiFi auto-turns off after 5 minutes of inactivity.

7

Ongoing: Heartbeats & Monitoring

Periodic heartbeats (ESP-NOW every 10s, LoRa every 30s) report battery %, RSSI, and GPS (if available). All devices track each other's online/offline status and signal strength.

!

Emergency? — SOS with Panic Countdown

Long-press (3s) on button triggers a 5-second visual countdown (can cancel!). After countdown: SOS broadcasts on BOTH channels simultaneously, repeated 3 times. All receiving devices show full-screen alert + LED + buzzer.

5

Device Renaming

Naming Rules

  • 3–16 characters (shorter to fit LoRa packet size limits)
  • Only letters, numbers, and spaces — no special characters
  • Names must be unique within the group
  • Stored in NVS flash — survives reboots and power loss
  • Default name: Lageeni-XXXX (last 4 MAC characters)
  • Rename happens during the WiFi setup phase only
6

Device Grouping

Grouping Packet (LoRa Broadcast)

{ "type": "GROUP_INIT", "group_id": "LAGEENI-A7F3", "lora_freq": 433E6, "lora_sync": 0xF3, "aes_key": "16-byte-key-here", "devices": [ { "mac": "A4:CF:12:7B:00:01", "name": "Base Camp", "lora_addr": 1 }, { "mac": "A4:CF:12:7B:00:02", "name": "Ahmed", "lora_addr": 2 }, { "mac": "A4:CF:12:7B:00:03", "name": "Tent 3", "lora_addr": 3 } ] }

After Grouping

  • All devices store group config in NVS flash
  • LoRa tunes to agreed frequency and sync word
  • ESP-NOW peers registered using MAC addresses from the registry
  • WiFi turns OFF on all devices automatically
  • Heartbeat pings begin: LoRa every 30s, ESP-NOW every 10s
  • Smart routing: auto-selects ESP-NOW (nearby) or LoRa (distant) per peer
7

Messaging System

Message Types

  • Broadcast — To all group members (ESP-NOW + LoRa simultaneously)
  • Direct Message — To one device (tries ESP-NOW first, falls back to LoRa)
  • Heartbeat — Periodic alive ping with battery %, RSSI, GPS
  • SOS — Emergency broadcast, highest priority, repeated 3 times
  • LED Command — Remote blink to identify a device physically
  • ACK — Delivery confirmation for direct messages and SOS
  • Quick Reply — Predefined short responses (OK, Coming, Wait, Help, Safe)

Smart Channel Selection

function sendMessage(target, payload) { if (target.espnow_reachable && target.last_rssi > -80) { // Nearby → ESP-NOW (fast, low power) espnow_send(target.mac, payload) } else if (target.lora_reachable) { // Far → LoRa (long range) lora_send(target.lora_addr, payload) } else { // Unreachable → queue + try relay via nearby peers queue_for_relay(target, payload) } } function sendSOS() { // SOS ALWAYS uses BOTH channels simultaneously espnow_broadcast(sos_payload) lora_broadcast(sos_payload) repeat(3, interval=2000ms) // 3 times, 2s apart }

Message Delivery Rules

  • Max payload: 200 bytes (LoRa limit) / 250 bytes (ESP-NOW limit)
  • Each message gets a unique ID to prevent duplicates
  • Direct messages expect ACK within 3 seconds; auto-retry up to 3 times
  • If ESP-NOW fails, automatically retries via LoRa (channel fallback)
  • Broadcast messages are fire-and-forget (no ACK required)
  • Messages stored locally: last 200 messages in SPIFFS flash
  • Undelivered messages shown with failure indicator in UI
8

SOS Emergency System

Life-Safety Design — Works Even on Low BatterySOS uses the absolute minimum power needed for transmission and repeats across both channels to maximize the chance of being received.

How SOS Works

  • Trigger: Long-press button (3s) OR tap SOS button in web UI
  • Panic Countdown: 5-second visual countdown with LED + buzzer beeps — user can cancel during this window to prevent accidental triggers
  • Broadcast: SOS packet sent on BOTH ESP-NOW and LoRa simultaneously
  • Repetition: SOS sent 3 times with 2-second intervals for reliability
  • Priority: SOS interrupts any current operation — even wakes from deep sleep
  • Content: Sender name, battery %, GPS coordinates (if available), predefined or custom message
  • On Receive: Full-screen red alert on web UI, rapid LED blink, buzzer siren (if connected)
  • ACK Required: Every receiving device sends ACK — sender sees who heard them
  • Logged Permanently: SOS events are never auto-deleted from flash storage
  • Cancel SOS: Sender can broadcast an "All Clear" to dismiss alerts on other devices

SOS Packet Structure

{ "type": "SOS", "from": 2, "from_name": "Ahmed", "battery": 34, "gps": { "lat": 25.2854, "lng": 51.5310 }, "message": "Injured at river crossing", "repeat": 1, // 1 of 3 "timestamp": 1711000120 }

Predefined Quick SOS Messages

For fast emergencies where typing isn't possible (selectable by button presses or UI tap):

  • "Need help immediately!"
  • "Injured — send medical help"
  • "Fire / Danger — evacuate area"
  • "Need water / supplies"
  • "Lost — please locate me"
  • "I'm safe — all clear" (cancels active SOS)
9

Power Management & Sleep

Power Modes

ModeWiFiESP-NOWLoRaCurrentUse Case
SetupONOFFON~160 mAInitial config via web UI
ActiveOFFONON~80 mANormal operation
Light SleepOFFWakeListen~10 mABattery saving, still reachable
Deep SleepOFFOFFTimer~0.01 mAMax battery, wakes on timer
SOS ModeOFFMAXMAX~200 mAEmergency — all power to TX

Deep Sleep Behavior

  • Wakes every N minutes (user-configurable: 1, 5, 10, 30 min)
  • On wake: send heartbeat, check queued LoRa messages, update status, sleep again
  • LoRa DIO0 interrupt wakes ESP32 immediately on incoming SOS (hardware interrupt)
  • Physical button press always wakes from any sleep mode
  • Battery below 10% → auto light sleep with 30-min wake interval
  • Battery below 5% → sends "low battery — going offline" alert, then hibernates

Battery Monitoring

  • ADC pin reads battery voltage through a voltage divider circuit
  • Battery % included in every heartbeat — all peers see your battery level
  • Low battery warnings broadcast at 20%, 10%, and 5% thresholds
  • Estimated runtime displayed in web UI based on current power mode
  • Support for solar panel charging via TP4056 — indefinite runtime in deep sleep
10

Logs & Audit Trail

What Gets Logged

  • Messages: All sent/received (last 200, FIFO — oldest auto-deleted)
  • SOS Events: Every SOS trigger and every ACK received — never deleted, permanent
  • Device Events: Join, leave, name change, group formation, deregister
  • System Events: Boot, sleep, wake, WiFi on/off, mode changes, channel switches
  • Errors: LoRa init failures, ESP-NOW failures, low battery events, relay failures
  • Signal History: RSSI values per peer over time (useful for range testing)

Log Storage

// Log entry structure { "ts": 1711000120, // Unix timestamp "type": "MSG_RX", // Event type code "from": "Ahmed", "ch": "ESPNOW", // Channel: LORA | ESPNOW "rssi": -65, "data": "Help at river" } // Storage: Messages 200, SOS unlimited, System 500 // Total: ~512 KB SPIFFS partition

Accessing Logs

  • Web UI: Re-enable WiFi briefly → view logs with filters (Messages / SOS / System / Errors)
  • Export: Download logs as JSON or CSV from web UI
  • Serial: Connect via USB → logs streamed to serial monitor (for developers)
  • Persistent: All logs survive reboots — stored in SPIFFS flash, not RAM
  • OLED: Last 3 log entries shown on optional display screen
11

Factory Reset & Deregister

Reset Levels

ActionTriggerWhat It DoesKeeps
Soft ResetWeb UI or button clickRestarts the deviceEverything
DeregisterWeb UI "Leave Group"Leaves group, notifies peers, returns to setupName + Logs
Factory ResetHold button 10 secondsErases ALL: name, group, logs, configNothing

Deregister Flow

  • Device sends LEAVE_GROUP packet to all peers (both channels)
  • Other devices remove it from their member list and log the event
  • Device clears group config from NVS but keeps its name and logs
  • Device restarts WiFi AP → enters setup mode → ready to join a new group

Factory Reset Flow

  • Hold physical button 10 seconds → LED blinks rapidly as countdown confirmation
  • After 10s: LED goes solid → full NVS erase + SPIFFS format → reboot
  • Returns to first-boot state with default name Lageeni-XXXX
  • All logs, messages, group data, and settings permanently erased
  • Best-effort LEAVE_GROUP sent before reset (if currently in a group)
Factory Reset is irreversible. Web UI requires typing "RESET" to confirm. Physical button requires 10-second hold to prevent accidental triggers. LED countdown gives visual feedback.
12

Built-in LED Logic

LED Status Patterns

StatePatternVisualDescription
BootingFast blink (5Hz)Starting up, scanning
Setup ModeSteady ONWiFi AP active, waiting for config
Grouped ActiveDouble pulse / 3sIn group, listening on both channels
Light SleepDim pulse / 5sPower-saving, still reachable via LoRa
Deep SleepOFFHibernating, wakes on timer/interrupt
Message RX3 rapid flashesReceived a message
Message TX1 long flashSent a message
SOS CountdownAccelerating pulses5-sec countdown — press again to cancel
SOS SendingRapid red burstsBroadcasting SOS
SOS ReceivedSOS pattern (continuous)Emergency alert from another device
Find MeBlue SOS blink (10s)Remote locate triggered by peer
Factory ResetFast blink → solidCountdown → erase complete
Low Battery3 slow red blinksBattery below 10%
ErrorContinuous fast redLoRa failure or critical error

ESP32 built-in LED is single-color (blue). On RGB boards, actual colors are used. On mono boards, patterns differentiate states.

13

UI Mockups

http://192.168.4.1 — Setup Mode (WiFi turns OFF after grouping)

Alin Li Lageeni — Setup

WiFi: Lageeni-7B01 · Temporary setup

Discovered Devices (LoRa scan):

Ahmed
A4:CF:12:7B:00:02 · RSSI: -42
LoRa
Tent 3
A4:CF:12:7B:00:03 · RSSI: -58
LoRa
Scout
A4:CF:12:7B:00:04 · RSSI: -89 (weak)
LoRa

WiFi will turn OFF after grouping to save battery

Ahmed's Device — WiFi enabled temporarily

Ahmed's Device

Group: LAGEENI-A7F3
72%ESP-NOWLoRa

Group Members:

Base Camp 91%
ESP-NOW: -38 · LoRa: -52 · 5s ago
Tent 3 55%
ESP-NOW: -62 · LoRa: -71 · 12s ago
Scout 18%
ESP-NOW: unreachable · LoRa: -89 · 45s ago
Chat with Base Camp · via ESP-NOW (-38 dBm)
We arrived at the river. Water level is high.
Base Camp · 2 min ago · ESP-NOW
Copy that. Taking alternate path.
You · 1 min ago · ESP-NOW
Good. Stay on channel. Update in 30 min.
Base Camp · 30s ago · LoRa
EMERGENCY ALERT
SOS ALERT
From: Ahmed
"Injured at river crossing"
Battery: 34% · GPS: 25.2854, 51.5310 · via LoRa (-65 dBm)
Received 12 seconds ago · ACK sent
Audit Logs — Ahmed's Device
14:32:05 BOOT Device started · Ahmed · LAGEENI-A7F3
14:32:06 ESPNOW Peer: Base Camp (A4:CF:12:7B:01)
14:32:06 LORA Init OK · 433MHz SF7 Sync:0xF3
14:35:12 MSG_RX Base Camp via ESPNOW → "Water level high"
14:36:01 MSG_TX → Base Camp ESPNOW "Alternate path"
14:38:45 SOS_RX Scout → "Lost" (LoRa -89dBm)
14:38:45 ACK_TX SOS ACK → Scout
15:02:00 SLEEP Light sleep · wake: 5 min
14

Additional Features

GPS Sharing

Optional NEO-6M module. Coordinates in heartbeats and SOS. Peers see your approximate location. Essential for search & rescue.

Buzzer / Siren

Optional piezo buzzer. Activated on SOS receive, Find Me, low battery, and panic countdown beeps. Audible when screen isn't visible.

Message Relay / Mesh

If A can't reach C, B auto-relays the message. Extends effective range to 2–3x single-hop distance. Transparent to the user.

Solar Charging

TP4056 input supports 5V mini solar panel. In deep sleep, a small panel keeps the device running indefinitely — true off-grid operation.

Quick-Reply Templates

Predefined messages selectable by button presses: "OK", "Coming", "Wait", "Help", "Danger", "Safe". No phone needed for basic replies.

Signal Strength Map

Web UI charts RSSI per peer over time. Find optimal device placement, identify dead zones, and test antenna performance.

Check-In Timer

Configurable auto-check-in. If a device misses heartbeats for N minutes, all peers get a "no contact" warning. Catches lost devices.

OLED Display Support

Optional 0.96" SSD1306. Shows: last message, battery, peer count, signal, mode. Basic operation without a phone.

Multi-Language UI

Web UI in English and Arabic (RTL). Auto-detects browser language. Perfect for bilingual classrooms and Middle East field teams.

AES-128 Encryption

All payloads encrypted. Unique key per group. ESP-NOW uses CCMP. Prevents eavesdropping from non-group LoRa receivers.

Auto Low-Battery SOS

At 5% battery, auto-sends "going offline" alert with last GPS to all peers before hibernating. No one is silently lost.

Classroom Mode

Teacher broadcasts quizzes, attendance, group messages. Students respond by button. Great for outdoor lessons with no internet.

Buddy Pair System

Pair two devices. If they lose ESP-NOW contact for N minutes, both get an alert. Keeps hiking partners connected and accountable.

Range Test Mode

Dedicated mode to test communication range between two devices. Sends ping-pong packets and displays real-time RSSI and success rate graph.

Night Beacon

LED stays on as dim continuous glow for nighttime visibility. Configurable color and brightness. Helps locate devices in the dark.

Device Health Monitor

Tracks CPU temperature, uptime, free memory, and flash wear. Alerts if device is overheating or running low on storage space.

15

Hardware Requirements

ESP32 Board

ESP32-WROOM-32 or TTGO LoRa32

LoRa Module

SX1278 (433MHz) / SX1276 (868MHz)

LoRa Antenna

SMA antenna for extended range

LiPo Battery

3.7V 1000–3000mAh + TP4056

Physical Button

Tactile switch: SOS, wake, navigate

Buzzer (opt.)

Piezo buzzer for audio alerts

OLED (opt.)

0.96" SSD1306 I2C display

GPS (opt.)

NEO-6M UART GPS module

Solar (opt.)

5V mini panel + TP4056

Enclosure

3D-printed or project box

Recommended: TTGO LoRa32 V2.1All-in-one board with ESP32 + SX1278 + OLED + battery connector + charge circuit. Just add a button, antenna, and battery — ready to deploy!
16

Technical Specifications

  • Frequency: 433 MHz (configurable: 868/915 MHz)
  • Spreading Factor: SF7–SF12 (configurable for range vs speed)
  • Bandwidth: 125 kHz default
  • TX Power: 17 dBm
  • Sync Word: Unique per group
  • Range: 1–3 km urban, 5–15 km open area
  • DIO0 Interrupt: Wakes ESP32 from deep sleep on incoming packet
  • Protocol: Espressif ESP-NOW (802.11 vendor action frames)
  • Range: 200–500m open area
  • Latency: 1–5 ms
  • Max Peers: 20 total (up to 10 encrypted on ESP32)
  • Payload: 250 bytes per packet
  • Encryption: CCMP (hardware-level)
  • Usage: Temporary AP during setup, user-triggered re-enable
  • SSID: "Lageeni-XXXX" (unique per device)
  • Security: WPA2-PSK
  • Web Server: ESPAsyncWebServer port 80
  • mDNS: lageeni.local
  • Auto-Off: 5 min after last client disconnects
// Setup phase (WiFi AP active) GET /api/status // Device info, battery POST /api/rename // Set device name GET /api/discover // List discovered peers POST /api/group // Group all devices // Runtime (WiFi re-enabled) GET /api/members // Group members + status POST /api/send // Send {to, msg} POST /api/broadcast // Broadcast {msg} POST /api/sos // Trigger SOS {message?} POST /api/sos/cancel // Cancel active SOS POST /api/led // Remote LED {target} GET /api/messages // Message history GET /api/logs // Full audit log GET /api/logs/sos // SOS-only log GET /api/logs/export // Download CSV/JSON POST /api/sleep // Enter sleep {mode} POST /api/wifi-off // Disable WiFi POST /api/deregister // Leave group POST /api/factory-reset // Reset {confirm}
  • PlatformIO — Build system and project management
  • Arduino ESP32 Core — Framework
  • LoRa (Sandeep Mistry) — SX1278/SX1276 driver
  • ESP-NOW — Built-in ESP-IDF peer-to-peer API
  • ESPAsyncWebServer + AsyncTCP — Non-blocking web server
  • ArduinoJson — JSON serialization
  • SPIFFS — Flash file system for UI and logs
  • Preferences (NVS) — Key-value persistent storage
  • TinyGPS++ — GPS parsing (optional)
  • SSD1306Wire — OLED driver (optional)
  • mbedTLS — AES-128 encryption (built into ESP-IDF)
17

Ready to Build?

Confirm Solution & Start Coding

Review the full architecture, flows, and specifications above. Once confirmed, we build the complete PlatformIO firmware with ESP-NOW + LoRa dual-layer communication.

LoRa + ESP-NOW Firmware
Web UI (SPIFFS)
SOS + Logs
Sleep Modes + Battery
PlatformIO Config
Setup Guide