DisasterMesh — Emergency Communication When Networks Fail
Inspiration
During natural disasters, people often rely on their phones to contact emergency services or ask for help. But what happens when cell towers are damaged, internet connections go down, or communication networks become overloaded?
We wanted to explore a way for people to communicate during emergencies without depending on traditional cellular networks.
That's how we came up with DisasterMesh, an offline emergency communication prototype that uses LoRa radio technology to send emergency requests to a local responder dashboard.
Our goal was to create a system that could help connect people in need with responders, even when internet or cell service isn't available.
What It Does
DisasterMesh allows someone to send an emergency message using a portable, battery-powered rescue device connected to their phone through Bluetooth.
The message travels wirelessly over LoRa, a long-range, low-power radio technology, to a separate gateway device connected to a computer.
Once received, the message is processed and displayed on our responder dashboard, where emergency requests are automatically organized into three categories:
- SOS / Rescue: High-priority rescue requests.
- Medical Emergency: High-priority medical assistance requests.
- Supply Request: Medium-priority requests for essential supplies.
Responders can view incoming messages, monitor incidents, and update their status from open to in progress or resolved.
Our rescue device also has built-in GPS, allowing the system to associate recently received location coordinates with emergency messages when that information is available.
Most importantly, the system's radio communication and locally hosted software can operate without an internet connection.
How We Built It
We combined hardware, wireless communication, backend development, and web development into one system.
For hardware, we used two Meshtastic-compatible LoRa devices:
- Heltec Wireless Tracker V2: Our battery-powered rescue node, connected to a phone through Bluetooth.
- Heltec WiFi LoRa 32 V3: Our receiving gateway, connected to a Mac through USB.
We used Meshtastic to handle radio communication between the devices.
On the software side, we built a Python receiver that reads incoming radio packets and forwards them to a FastAPI backend.
The backend validates incoming requests, classifies supported emergency messages using predefined rules, and stores them in a PostgreSQL database.
We also developed a React responder dashboard that displays received transmissions and emergency incidents. The application runs locally using Docker Compose, without requiring cloud services.
Challenges We Faced
One of our biggest challenges was getting the hardware and software to communicate reliably.
We had to configure the LoRa devices, establish communication between the rescue node and gateway, and figure out how to receive and process radio packets using Python.
Another challenge was working with GPS data. Although our rescue device includes built-in GPS, getting a reliable location fix indoors was difficult. We learned that location information isn't always available, so our system needed to support emergency messages even without GPS coordinates.
Connecting the radio receiver to our backend and dashboard was another important challenge. We had to make sure that incoming messages could be received, processed, stored, and turned into incidents without unnecessary duplicates.
Bringing all these different components together was one of the most challenging and rewarding parts of the project.
What We Learned
Through DisasterMesh, we learned how LoRa communication works and how it differs from Bluetooth, Wi-Fi, and cellular networks.
We also gained hands-on experience integrating physical hardware with Python, building APIs with FastAPI, working with PostgreSQL databases, and creating an interactive React dashboard.
Most importantly, we learned how important it is to design systems that can still function when certain features, such as GPS or internet connectivity, are unavailable.
What's Next?
DisasterMesh is currently a two-device proof of concept, but we see several opportunities to expand it.
In the future, we would like to add more LoRa devices to support multi-hop communication, improve GPS visualization with an offline map, introduce a dedicated physical SOS button, and improve message delivery reliability.
Our long-term goal is to explore how accessible, low-power wireless technology could help make emergency communication more reliable when traditional infrastructure fails.
DisasterMesh is an educational prototype, not a replacement for certified emergency communication systems, but it demonstrates how offline radio communication can be connected to a modern emergency response interface.
Built With
- bluetooth
- docker
- docker-compose
- esp32
- fastapi
- heltec
- javascript
- lora
- meshtastic
- nginx
- postgresql
- python
- react
- rest-api
- sos
- sqlalchemy
- vite