RICM4 2017 2018 - UltraTeam 7.1

=Project presentation=

Ce projet propose de développer une application Web mobile permettant aux membres d'une équipe ou d'un groupe de randonneurs (marche, ski rando, ski piste,, ski nordique ...) de se positionner les uns les autres (temps de course, de marche, distance) en temps réel et de surveiller/gérer l'effort des membres de l'équipe.

L'application permettra d'enrôler facilement les membres d'une équipe/groupe (Code numérique, QRCode, NFC, ...)

L'application permettra de charger ou d'échanger les traces (GPX, GeoJSON) et les mesures physiologiques (Hearth rate, Foulée, ...) via des supports de stockage comme OwnCloud, Google Drive, Dropbox, Facebook, Trace de Trail ...

L'application permettra également de mesurer l'effort en temps réel de/des coureurs (temps passé dans les régimes cardiaques) et d'en informer le coureur et/ou le chef d'équipes, les guides accompagnateurs. Pour cette fonctionnalité, il est prévu d'intégrer les mesures collectées sur des montres ou des bandes cardio Bluetooth 4.0 HRM.

L'application devra pouvoir fonctionner avec/sans réseau 4G/3G, avec/sans 2G (ie SMS), avec/sans un réseau LPWAN opéré ou privé (SigFox, LoRa), avec un réseau LPWAN adhoc (broadcast).

Matériel fourni:
 * Bande cardio Bluetooth 4.0 HRM Décathlon.
 * Montre GPS cardiofréquencemètre ONMOVE 220 HRM connectée vert GEONAUTE
 * 2 trackers GPS LoRa Semtech.

API Google Android Wear
 * https://developer.android.com/wear/index.html

= Team =


 * Supervisors : Didier Donsez


 * Members : Clément Rouquier, Anthony Geourjon


 * Departement : RICM 4, Polytech Grenoble

= Progress of the project =

The project started January 14th, 2015.

Week 1 (January 13th - January 18th)

 * Choix du projet

Week 2 (January 19th - January 25th)

 * Découverte du projet
 * Mise en route de la machine
 * Récupération du code
 * Mise en place des exigences

23 Janvier 2017
Connexion au modem : lsusb

voir le nom de la connexion

su apt-get install arduino

run arduino

Onglet : outils-> noniteur série-> choisir son device

Onglet : outil->Moniteur série -> choisir 57600 bauds et choisir NL & CR

Merci N. Palix pour l'astuce de l'utilisation d'Arduino.

Utiliser les commandes fournies par D. Donsez dans son doc google ou le manuel pour interagir avec le modem. Manuel

24 janvier 2017
Création d'une mini appli android qui permet d’accéder au modem lorsqu'il est branché en série au téléphone. Si je connecte un modem au téléphone et le second à un PC, je peux les faire communiquer. Upload sur Github d'ici demain au pire. Pour réaliser cette magie noire, j'ai utilisé USBSerial : https://github.com/felHR85/UsbSerial. Et j'ai forké l'appli exemple du même auteur https://github.com/felHR85/SerialPortExample. La difficulté à été de faire fonctionner et surtout comprendre l'ensemble. J'ai ensuite configuré le code pour qu'il marche avec nos modems (bauds rate, parity none, cr and lf).

Week 3 (January 26th - February 01st)
Réalisation des diagrammes UML de cas d'utilisations. Notre application n'as pas vraiment de diagramme de classes car la majorité des classes sont des Activity ou des Service.

Week 4 (February 02nd - February 08th)
Essai d'intégration de l'application à GreenHouseCI pour faire du déploiement continu. Essai de divers IDE online pour essayer de faire du déploiement continu.

Amélioration de l'application de test des boitiers Lora (raccourci, derniere commande utilisé..)

Week 5 (February 09th - February 15th)
Modification de l'appli en application avec des onglets. Un onglet terminal USB série, un onglet GPS, un onglet configuration

Week 6 (February 23th - March 1st)
Travail sur la map. Suivi d'un tuto pendant de longues heures pour que celui ci se révèle obsolete et donc inutilisables. Génération de la clé pour l'API de Google pour les maps.

La clé : AIzaSyB4iTwLc9rSwh5RebtpKjUR0XKIIv5P9gY

Week 7 (March 02nd - March 08nd)
Travail sur la map, tous les tutos se contredisent. Création d'un nouveau dépot GitHub afin de repartir sur de bonnes bases car tout le dépot est cancérisé

Week 8 (March 09nd - March 15nd)
La carte commence à fonctionner, on peut ajouter des markers. On positionne aléatoirement des gens sur la carte. On peut calculer les distances entre eux.

Ajout d'une page de configuration des groupes

Début du travail sur le bluetooth, à l'aide du Googlesamples sur le Bluetooth Low Energy

Week 9 (March 16nd - March 22nd)
Corerection de bug sur la map Partage de données entre activity Ajout de la possiblité de mettre un point de rendez vous que tous le monde voit

Que se passe-t-il sur le bluetooth low energy?? Impossible d'intégrer le google sample

Week 10 (March 23nd - March 29nd)
Ajout d'animation à la carte

Amélioration des structures de données -> création de la classe Personne et UltrateamApplication

Bluetooth finalement opérationnel. Il fallait changer le type de la classe principale en AppCompatActivity (au départ en ListActivity) et résoudre tous les problèmes que ce changement impliquait. J'avais déjà tenté cette solution mais m'étais résigné en voyant l'étendue des problèmes soulevés par ce changement, j'aurai du aller au bout de mes rêves.

Week 11 (March 30nd - April 05nd)
Merge de notre application avec celle que l'autre groupe viens de push, rien n'est en commun. Aucune structure de donnée, rien. Une nuit passée à faire en sorte de concilier les structures afin que les classes les deux applications puissent communiquer au sein d'une seule.

Aucune nouvelle de mqtt et de la reception de donnée par LoRa, le push de l'autre groupe n'incluant rien de cela. Du coup création de méthodes utiles pour la démonstration, afin de montrer que les receivers fonctionnent, qu'il ne manque plus qu'à recevoir les données.... On nous a promis un push, attendons.

Refonte du design de l’application.

Ajout d'un bouton SOS.

Ajout de son lors du démarrage de la carte et de l'appui sur le bouton SOS.

Push arrivé à 23h40 la veille de la soutenance. Tant pis, on fera sans.