Giter Site home page Giter Site logo

bhavyejain / meshsos Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 1.0 16 MB

A mesh network based emergency response system for senior citizens.

License: MIT License

C++ 65.76% C 0.77% Python 2.36% Jupyter Notebook 31.10%
iot mesh-networks mesh particle-iot particle-argon emergency-services c-plus-plus iot-application wiring mesh-networking

meshsos's Introduction

MeshSOS

MeshSOS is an IOT project based on Particle IoT boards, aimed at creating a robust SOS emergency management system for senior citizens. It aims to provide a simplictic and reliable alternative to smartphone based emergency systems, that becomes more robust with an increasing user base.

Our paper MeshSOS: An IoT Based Emergency Response System introducting this work has been accepted in the proceedings of the 54th HICSS (Hawaii International Conference on System Sciences), 2021.

License Stable version

The Idea

The project aims to use mesh networking (Only available till Particle Device OS version 1.6.x) to increase the reliability of the emergency system. The use of a mesh network allows the system to register a distress call with the central servers even if the caller device is not connected to the internet directly. If even one device in the mesh has internet access, the system ensures that the message is received by the concerned authorities.

The user device is kept minimlistic with just 2 buttons, each dedicated to registering a specific emergency. The simplistic design of the device minimizes the steps required to register an emergency call and ensured the device lasts long on a limited battery storage with minimal maintenance. This ensure that th device is always ready to perform its task elegantly at the very moment it is required to.

Also, the system tries to provide the geolocation of the device which is sending the distress signal to aid the authorities. The location can then be used to get the optimal route to the person who sent out the distress call.

Devices

This project was made using the Argon (Bluetooth + WiFi) IOT boards from Particle. These devices have in-built mesh networking capabilities (currently being deprecated; unavailable after Jan 2021).

Integrations

Google Maps API

The geolocating feature of the API has been used to get the location of the device before sending out a distress call. The server has the option to show the location on a map, and also show the best route to the location. This integration is done by the means of a webhook which is triggered using the google-maps-device-locator Particle library.

Webhook To A Central Server

A central server is kept active which receives the SOS calls made from the devices. The webhook is triggered by the emergency events published on the Particle console. Once the data is sent to the server, the further handling of the situation is done by the authority-end console.

Working

The sequential working of the project is shown in a simplified manner in the sequence diagram.

Device Firmware

The firmware for Particle Argon boards is contained in the argon-firmware directory.

Please refer to the README in argon-firmware for details and circuit schematic.

Network Analytics

The analytics directory contains logs related to round trip time in the network and process resolution times (time from initiating an emergency call to either a positive acknowledgement or failed process).

The jupyter notebook contains the analysis of the information and plots for the same.

The Server

The server for this project was created by Kaustubh Trivedi. The django-server directory contains the code for the server.

Please refer the README in django-server for details.

The Console

The admin dashboard for this project is contained in a separate repository meshsos-dashboard.

This console provides a minimalistic interface for emergency services providers to locate the device that sent the SOS call, get the optimal directions to reach them, and manage the flow of handling of emergency calls. Please have a look at the README in the meshsos-dashboard repository for more detailed information.

Future Developments

Due to the current unavalability of LTE Cat M1 supported SIM cards in India, we were not able to add the Particle Boron IoT boards (LTE + Bluetooth) to the mesh network. We plan to introduce devices with LTE capability in the mesh so that the network is not solely reliant on WiFi for its functioning.

The project might explore the possibility of data analytics to recommend the deployment of emergency services vehicles once enough data can be obtained to develop a reliable analytics system. Currently, only a simple visualization of the events is provided in the admin dashboard of the project.

Since Particle will be removing the support for mesh networking shortly, we might build a MeshSOS Cloud to process incoming requests instead of the Particle cloud. This could be a complex component to develop and might remain on the design board until it is necessary to build.

The future schematic of the system might look like this:

meshsos's People

Contributors

bhavyejain avatar codekaust avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

mhk19

meshsos's Issues

rlogs/ GET with query

rlogs/ GET should provide the following query:

  • status (a/w/r)
  • emergency_type

Example: req = "link/rlogs?emergency_type='police'" should provide a list of all logs with police as emergency type.
Among the other 2, use of & should also be possible.
Example: req = "link/rlogs?emergency_type='police'&status='a'" provide all active logs with police as emergency type.

Simplify cloud publishing

Modify publishToCloud() function.
Try publishing with Particle.publish(filter, message, WITH_ACK) instead of looping

Handle situation where device is unable to get location information.

If device is unable to get its location information in 2 attempts of device->server->device cycles, initiate a flag to let the node (in the mesh) sending the final mesage send its own location in place of the caller device's location.
Maybe do the same thing if the location of the device has not been updated for last 40 or 60 minutes. Maintain a counter which gets old each time the device fails to update its location (during normal updation).

Handle web-hook responses

  1. Get the acknowledgement to reach to the caller device.
  2. Handle case when device not connected to net and thus location not received. Payload might not carry the location of the device.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.