SRS - Tachymètre

=  Introduction=

Objectif du projet

 * L’objectif du projet est de prendre en main les outils de la plateforme Cohorte pour développer un application web qui affiche l’historique des mesures effectuées par un capteur de présence et stockées sur un serveur.
 * Le cœur du projet est d’arriver à transmettre et à traiter l’information des mesures sur le capteur jusqu’à l’affichage des données élaborées sur l’interface utilisateur. Cela comprend toutes les étapes de traitement des données comme le passage d’une mesure de fréquence à une mesure de vitesse (effet Doppler), ainsi que les étapes d’analyse des données comme l’extraction des mesures utiles parmi le bruit fréquentiel.

Visée du produit

 * L’implémentation du capteur sur le Raspberry Pi et le traitement de ces mesures peuvent être intégrés à n’importe quelle autre application nécessitant la détection de mouvements ou de passages devant le capteur. Ces étapes de traitement et d’envoi ou de stockage doivent être autonomes pour qu’un nombre quelconque de capteurs puissent faire partie de l’application.
 * Le stockage sur le serveur et l’interface doivent être conçus pour être évolutifs. En effet, lors de notre projet nous ne disposons que d’un capteur, mais l’application à développer doit pouvoir interroger et afficher les données de plusieurs capteurs, qui seront reconnus par un identifiant unique, un nom, un propriétaire, des coordonnées GPS, etc… De plus, une interface doit être implémentée sur le Raspberry pour que le propriétaire puisse définir ces attributs sur le capteur pour qu’il soit recensé avec clarté sur l’interface utilisateur.
 * De cette façon, le système aura la possibilité d’être utilisé par des clients ou d’autres entreprises.

Définitions, acronymes et abréviations

 * Raspberry Pi : Ordinateur monocarte (processeur ARM) à taille réduite, compatible avec de nombreux périphériques (clavier, souris, …). Le Raspberry Pi peut héberger un programme, offrant ainsi de nombreuses possibilité d’utilisation. Pour notre projet, le Raspberry nous sert de support pour le capteur. De plus, il héberge le code qui va traiter les mesures et les envoyer au serveur.


 * Cohorte : plate-forme de développement développé par Isandlatech qui fournit des outils pour créer des applications réparties sur plusieurs systèmes indépendants, y compris au niveau du langage de programmation. Il s’agit d’outils orientés composant et services, ce qui permet une importante flexibilité et une application dont les différents isolats sont indépendants.

Overview of the remainder of the document
=  Description du projet=

Perspective du produit

 * Le produit a pour but d’être un détecteur de présence dont les mesures sont sauvegardées dans le but d’une interrogation par une interface utilisateur. On peut alors imaginer de nombreuses utilisations comme de la surveillance domestique (radar lié avec une alarme), ou tout simplement un appareil de mesure de trafic. Les données pouvant être triées et analysées (moyennes, histogramme), il y a une possibilité d’étude poussée de tronçon routier.
 * Dans une version plus aboutie du produit, on pourrait introduire un système d’authentification. Cela permettrait d’implémenter des groupes d’utilisateurs avec des permissions d’accès différentes selon les groupes.

Fonctionnalités

 * Le capteur permet d’avoir une mesure de proximité et de vitesse. Le but est donc de mesurer la vitesse des objets passant devant le capteur (piétons, cyclistes, voiture, …) et de dater cette mesure. Les données sont stockées sur un serveur qui va permettre l’utilisation d’une interface graphique. Cette interface utilisateur affiche l’historique des mesures, avec diverses actions comme la sélection d’une plage de dates pour un affichage plus ciblé, ou encore la présentation des données sous la forme de graphiques pour permettre une analyse plus pointue du trafic.

Contraintes générales

 * Les contraintes de ce projet sont l’utilisation de Cohorte et du Raspberry Pi comme support pour le capteur.
 * Il n’y a pas de contraintes pour le langage de programmation, car grâce à Cohorte, les différents composants peuvent être développés dans différents langage : Python ou Java pour le Raspberry, Java et SQLite pour le stockage sur le serveur, et HTML/CSS/Javascript pour l’interface web.

Assumptions and dependencies
=  Specific requirements, covering functional, non-functional and interface requirements=

Exigences fonctionnelles
Fonction d’acquisitions des données
 * Récupération des valeurs physiques : Vitesse et proximité Isolation et interprétation des mesures : Seuil (prévoir un buffer si le traitement est trop long).
 * Propagation des données par consommation d’un service fourni par un composant distant.

Fonction d’agrégation
 * Stockage de la donnée (service write).

Fonction interface utilisateur
 * Composants de récupération et de présentation des données.

Exigences non-fonctionnelles
Qualité du réseau
 * Eventuellement envisager la mise en œuvre de solution de communication pour le Raspberry Pi pour garantir une bonne disponibilité.

Environnement du capteur
 * Perturbation possible des mesures.

Exigences de l’interface
Ergonomie
 * Compatibilité multi-support (différents navigateurs, version mobile)

Interactions (sélection de plage de dates, affichage de graphiques, …).

= Cas d'usage =

Interaction de l’utilisateur avec l’interface web

 * - L’utilisateur entre sur le site web et s’authentifie avec un login et un mot de passe
 * - L’utilisateur peut choisir de cliquer sur “tout” pour afficher l’ensemble des données de tous les capteurs (triées par date décroissante)
 * -la date / vitesse moyenne / sens / capteur


 * - L’utilisateur choisit un capteur parmi la liste des capteurs installés (vert : connecté, rouge : déconnecté) :
 * -onglet données élaborées :
 * -le système affiche les données élaborées dans un tableau (triées par date décroissante)
 * - la date (Heure / Minute / Jour / Mois / Année) / vitesse moyenne (km/h) / sens (sens du capteur, contresens du capteur)
 * - L’utilisateur peut cliquer sur les liens de pagination pour naviguer dans les données élaborées
 * - L’utilisateur peut filtrer les données affichées en fonction des paramètres suivants :
 * - entre deux dates d1 et d2
 * - une vitesse max / min.
 * - onglet données synthétisées :
 * - L'utilisateur peut obtenir des analyses paramétrées des données élaborées en choisissant l'option "historique" en fontion de :
 * - un type de donnée :
 * - le nombre de passages
 * - la vitesse moyenne (km/h)
 * - la vitesse maximum (km/h)
 * - une plage de date :
 * - une date de début (JJ/MM/AAAA)
 * - une date de fin (JJ/MM/AAAA)
 * - une plage horaire :
 * - heure de début (HH/MM)
 * - heure de fin (HH/MM)
 * - L'utilisateur peut également obtenir une répartition des vitesses de passage en choisissant l'option "répartition" en fonction de :
 * - onglet administrateur :
 * - le système affiche un tableau des événements relatifs au capteur sélectionné (trié par date décroissante) :
 * - une plage de date :
 * - une date de début (JJ/MM/AAAA)
 * - une date de fin (JJ/MM/AAAA)
 * - une plage horaire :
 * - heure de début (HH/MM)
 * - heure de fin (HH/MM)
 * - la date (Heure / Minute / Jour / Mois / Année)
 * - l’état (connecté, déconnecté)
 * - L’utilisateur peut se déconnecter

Interaction du technicien avec le capteur

 * - Le technicien branche le capteur au réseau internet du client
 * - Le technicien démarre le capteur

Interaction du technicien avec l’interface d’administration du capteur

 * - Le technicien ouvre la page d’administration du capteur
 * - Le technicien remplit un formulaire :
 * - L’identifiant du capteur
 * - Coordonnées GPS du capteur (longitude latitude, altitude (décimales))

= Requirement X.Y.Z (in Structured Natural Language)= Function:

Description:

Inputs:

Source:

Outputs:

Destination:

Action:
 * Natural language sentences (with MUST, MAY, SHALL)
 * Graphical Notations : UML Sequence w/o collaboration diagrams, Process maps, Task Analysis (HTA, CTT)
 * Mathematical Notations
 * Tabular notations for several (condition --> action) tuples

Non functional requirements:

Pre-condition:

Post-condition:

Side-effects:

=. Product evolution=

= Appendicies= Read first:
 * http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx
 * http://en.wikipedia.org/wiki/Software_requirements_specification
 * IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998

Cohorte
 * cohorte.github.io

Microwave Motion Sensor
 * https://www.openimpulse.com/blog/wp-content/uploads/wpsc/downloadables/HB100_Microwave_Sensor_Module_Datasheet.pdf
 * https://www.openimpulse.com/blog/wp-content/uploads/wpsc/downloadables/HB100_Microwave_Sensor_Application_Note.pdf

Making the electronics for $7 USD doppler motion sensor
 * http://ch.linkedin.com/in/mathieustephan
 * http://www.limpkin.fr/index.php?post/2013/08/09/Making-the-electronics-for-a-%247-USD-doppler-motion-sensor

Raspberry Frequency measurment
 * http://raspberrypi.stackexchange.com/questions/26166/count-rpm-frequency-pulses-on-gpio-ports-maximum
 * http://blog.durablescope.com/2015/03/build-speed-camera-and-traffic-logger.html
 * http://abyz.co.uk/rpi/pigpio/examples.html#C_code
 * https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=97795
 * http://raspberrypi.stackexchange.com/questions/24812/measuring-frequency-via-gpio
 * http://hacker.instanet.net/forums/viewtopic.php?f=4&t=104

= Index=