Proj-2016-2017-IndoorGeoloc/SRS

=1.  Introduction=

1.1 Purpose of the requirements document
This Software Requirements Specification (SRS) is designed to identify the requirements for our project called "GeoLoc Indoor". The main goal of the project is to provide a solution to indoor geolocalisation problem. We are bound to develop an application able to locate BLE beacon in a building. This is an open source project so that maybe people find an interest in our app in order to make it take a step further. This document is a guideline listing the functionalities offered by our application and the solutions that the system provides.

1.2 Scope of the product
Geoloc Indoor is a project with several possibilities of use. One of them could be when someone, equipped with the app on its smartphones, is looking for an object (emitting bluetooth) or a person in a building where each room contains sensors. Those sensors are linked to server computing the distance from the emitting beacons to the sensors and gives a location (room, distance, route) to the user.

1.3 Definitions, acronyms and abbreviations

 * OpenStreetMap (OSM) : is a collaborative project to create a free editable map of the world.
 * STM32 is a family of 32-bit microcontroller integrated circuits by STMicroelectronics. The STM32 chips are grouped into related series that are based around the same 32-bit ARM processor core, such as the Cortex-M7, Cortex-M4F, Cortex-M3, Cortex-M0+, or Cortex-M0. Internally, each microcontroller consists of the processor core, static RAM memory, flash memory, debugging interface, and various peripherals.
 * Arduino : Programmable microcontroller able to generate and analyse electric signals. The Arduino measures the BLE signals. Data is sent to a server which will compute a distance.
 * Raw data : Data returned by the sensor sent to the server computing the distance.

1.4 References

 * https://www.arduino.cc/
 * https://en.wikipedia.org/wiki/OpenStreetMap
 * http://www.st.com/web/en/home.html
 * http://openlevelup.net/
 * https://www.tutorialspoint.com/spring/spring_web_mvc_framework.htm

1.5 Overview of the remainder of the document
In the rest of the document, we will describe our objectives, the way the system is supposed to work and the constraints the project implies.

=2.  General description=

2.1 Product perspective
The product is meant to be enabling people to locate things and to be located into a building. The user interface will contain a list of emitting beacons, a map where these beacons are located. The hardware interface contains a flow of data that a server receives and use in order to mesure the RSSI distance of the object. The freshly computed position is saved into a databased which is accessible from another side of the server. That server will send the data to Android clients via the MQTT protocol.

2.2 Product functions

 * Locate objects on a map
 * Locate people on a map
 * Find a way to get to the located object
 * Find a way to get to the located place in the building

2.3 User characteristics
The application can be used by anyone who wants to locate things, places or people emitting bluetooth (BLE) waves. The user has to be connected to internet. The user must have an Android smartphone (version 4.4.4 KitKat minimum), but we hope that in the future this application can be developped for any smartphone OS.

2.4 General constraints

 * The use of the STM32 board are a constraint, they can detect only BLE waves.
 * Developped in Java
 * Network connexion strong and unfiltering the opening of ports

=3.Specific requirements, covering functional, non-functional and interface requirements=
 * document external interfaces,
 * describe system functionality and performance
 * specify logical database requirements,
 * design constraints,
 * emergent system properties and quality characteristics.

3.1 Requirement 1 : acquisition of data with computation of distance
Function: measuring, computing and storing of the data received from the STM32 boards into distance saved in a database.

Description: all the signals received from the BLE emitting beacon are used to compute a distance for a given beacon. The distance is then stored into a databse where an identifier, a date and the location of the object are added.

Inputs: BLE signals

Source: TI beacons, iTag

Outputs: database with distance computation for a beacon

Destination: the database will be used by a server which will send the last position (or any position at a given time) to an android client

Action:
 * acquisition of data with computation of distance

Non functional requirements: none

Pre-condition: identifiers between beacons must be unique

Post-condition:

Side-effects:

3.2 Requirement 2 : Sending the location of a device from the server to the Android client
Function: fetching data from the database, sending it to the rightful device

Description: using MQTT, the server access the database in order to fetch the last or any position at a given date, it then publishes the position of a beacon on a specified topic permitting the clients subscribing to the topic to receive the location.

Inputs: computed distance

Source: Database containing every the location of all the beacons

Outputs: Every location of the beacons are delivered to the right topics.

Destination: The Android clients

Action:
 * Fetching and sending the location to the Android devices

Non functional requirements:

Pre-condition:The database in non empty, the android clients are connected to internet

Post-condition:

Side-effects:

3.3 Requirement 3 : Rendering the received data on a map on Android smartphones
Function: using the received data in order to display the information into a map

Description: The Android client receives locations of beacons thanks to the subscribe method. It uses the OSMDroid API tu display the items on a map.

Inputs: Beacons location as markers

Source: The server publishing the locations on the different topics.

Outputs: A map displaying every beacon

Destination: The Android smartphone

Action:
 * Rendering the beacons on the map by marking them in an overlay.

Non functional requirements:

Pre-condition: The positions are not ambiguous, not duplicated.

Post-condition: Every beacon has its representative figure on the screen

Side-effects:

3.4 Requirement 4 : Rendering user position on an indoor map
Function: using the received data in order to display the position of the user on an indoor map.

Description: The Android client receives location of the user. It uses the openlevelup.net API which is an OSM API to display the position of the user on an indoor map.

Inputs: User coordinates

Source: The server calculates the coordinates of user thanks to beacons and send them to android client.

Outputs: An "indoor" map made of custom tiles

Destination: The Android smartphone

Action:
 * Rendering the user on the map by marking him in an overlay.

Non functional requirements:

Pre-condition: Map tiles are saved in the server, the android clients are connected to internet, enough points for the rendering of indoor maps

Post-condition:

Side-effects: distorted rendering if not enough points.

=4. Product evolution=


 * Having a better rendering of the map, more interactive
 * Using different detecting sensors
 * Improving the localisation (more precise)
 * Finding a way to putting up with signal mitigations