Difference between revisions of "RICM4 2017 2018 - UltraTeam 7.1"

From air
Jump to navigation Jump to search
 
(43 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
=Project presentation=
 
=Project presentation=
   
  +
This project is a project carried out by two teams.
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.
 
   
  +
The first team composed of Enzo MOLION and Léo VALETTE [https://air.imag.fr/index.php/RICM4_2017_2018_-_UltraTeamMV UltraTeamMV] is in charge of creating a mobile application allowing the members of a team or a group of hikers to locate each other with different information such as walking speed, distance between users, the possibility to see if a user is in distress (e. g. if he has broken a leg), etc.
L'application permettra d'enrôler facilement les membres d'une équipe/groupe (Code numérique, QRCode, NFC, ...)
 
   
  +
This application will use the LoRa network with ESP-32 cards, connected via Bluetooth to the team's smartphones to run.
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, [http://tracedetrail.fr/ Trace de Trail] ...
 
   
  +
The smartphones of the team, if they are connected to the 3G/4G network, will send through a REST API all the information accumulated during the hike to a server that our team composed of Bastien TERRIER and Hugo GROS-DAILLON will have to set up.
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]].
 
   
  +
This server will be implemented with the JHipster application generator. It will be a web application allowing hikers to create an account and thanks to the information provided by the mobile application, to visualize the information of the current or completed hike (with the route taken during the hike, average speed, participating members, etc.).
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).
 
   
  +
It can also be used to visualize the position of hikers during a hike and display whether a person sent a distress signal with their smartphone. This can be useful in cases where rescue workers are trying to locate the injured person precisely.
Matériel fourni:
 
* [https://www.decathlon.fr/cardio-bluetooth-smart-40-id_8288269.html Bande cardio Bluetooth 4.0 HRM Décathlon].
 
* [https://www.decathlon.fr/montre-gps-cardio-onmove220-hr-id_8374054.html 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 =
 
= Team =
Line 29: Line 23:
 
= Progress of the project =
 
= Progress of the project =
   
The project started January 14th, 2015.
+
The project started January 15th, 2018.
 
== 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
 
   
  +
== Week 1 (January 15th - January 16th) ==
su
 
apt-get install arduino
 
   
  +
* Indication of preferences for proposed projects.
run arduino
 
  +
* Assignment of project groups according to preferences.
   
  +
== Week 2 (January 22th - January 28th) ==
Onglet : outils-> noniteur série-> choisir son device
 
   
  +
* Discovery of UltraTeam projects from previous years.
Onglet : outil->Moniteur série -> choisir 57600 bauds et choisir NL & CR
 
  +
* Unable to execute the 2016-2017 AndroidStudio UltraTeam project due to project errors and lack of documentation.
  +
* Discovery of jhipster thanks to the eCOM project [https://air.imag.fr/index.php/ECOM_RICM5_Groupe6_2017'' My Races''] We have to start from this project to make our web application.
  +
* Requirements.
   
  +
== Week 3 (January 29th - February 04th) ==
Merci N. Palix pour l'astuce de l'utilisation d'Arduino.
 
   
  +
Separation of the two UltraTeam project teams with definition of the specifications for each team.
Utiliser les commandes fournies par D. Donsez dans son doc google ou le manuel pour interagir avec le modem.
 
[http://ww1.microchip.com/downloads/en/DeviceDoc/40001784E.pdf Manuel]
 
   
  +
We decide to recreate a new application with jhipster and not to restart the eCOM project.
=== 24 janvier 2017 ===
 
  +
The eCOM project no longer concerns us.
   
  +
Document ourselves about the structure of jhipster applications.
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 4 (February 05th - February 11th) ==
   
  +
Skype video conferencing with Didier Donsez to indicate our progress and ask a few questions about jhipster.
== Week 3 (January 26th - February 01st) ==
 
   
  +
Jhipster JDL language discovery
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.
 
   
  +
Creation of a database for our application with the jhipster JDL language.
== Week 4 (February 02nd - February 08th) ==
 
   
  +
== Week 5 (February 12th - February 18th) ==
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.
 
   
  +
Document ourselves about Swagger and the generated REST API by JHipster.
Amélioration de l'application de test des boitiers Lora (raccourci, derniere commande utilisé..)
 
   
  +
Meeting with the other team to discuss about the model of our web application and the use of the REST API on the mobile application side.
== Week 5 (February 09th - February 15th) ==
 
   
  +
Try adding new fields to create a user with this [http://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html tutorial]
Modification de l'appli en application avec des onglets. Un onglet terminal USB série, un onglet GPS, un onglet configuration
 
   
  +
Look at the [https://github.com/atomfrede/generator-jhipster-leaflet generator-jhipster-leaflet] to add a map to our project.
== Week 6 (February 23th - March 1st) ==
 
   
  +
== Week 6 (February 26th - March 4th) ==
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.
 
   
  +
After many tests, we realized that the [https://github.com/atomfrede/generator-jhipster-leaflet generator-jhipster-leaflet] does not work with the last version of JHipster.
La clé : AIzaSyB4iTwLc9rSwh5RebtpKjUR0XKIIv5P9gY
 
  +
We decide to add the leaflet map to our project ourselves, without going through a generator.
   
  +
We also noted that the [http://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html tutorial] to add extra informations for a User does not work with the last version of JHipster.
== Week 7 (March 02nd - March 08nd) ==
 
  +
So we tried to resume the [http://www.jhipster.tech/tips/022_tip_registering_user_with_additional_information.html tutorial] for the last version of JHipster.
   
  +
== Week 7 (March 05th - March 11th) ==
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é
 
   
  +
During this week, we successfully add a LeafLet Map in the home page (without using the [https://github.com/atomfrede/generator-jhipster-leaflet generator-jhipster-leaflet]).
== Week 8 (March 09nd - March 15nd) ==
 
   
  +
Moreover, now we can create a new user (with extra information) and it creates a new Hiker. The hiker is linked to one user (One to One relationship).
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.
 
   
  +
== Week 8 (March 12th - March 18th) ==
Ajout d'une page de configuration des groupes
 
   
  +
We requested for an issue on the git of the [https://github.com/atomfrede/generator-jhipster-leaflet generator-jhipster-leaflet].
Début du travail sur le bluetooth, à l'aide du Googlesamples sur le Bluetooth Low Energy
 
  +
The developer answered us :
   
  +
"This module supports only AngularJS, not Angular or React.
== Week 9 (March 16nd - March 22nd) ==
 
  +
So it's normal it doesn't work."
   
  +
we decided to implement our own generator for Angular.
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
 
   
  +
This week, We documented ourselves about how generator modules work.
Que se passe-t-il sur le bluetooth low energy?? Impossible d'intégrer le google sample
 
   
  +
We also tried to implement a person's position on the map with a marker for our project.
== Week 10 (March 23nd - March 29nd) ==
 
   
  +
== Week 9 (March 19th - March 25th) ==
Ajout d'animation à la carte
 
   
  +
We finally managed to implement our own generator. It works with the last version of Jhipster and with Angular5.
Amélioration des structures de données -> création de la classe Personne et UltrateamApplication
 
   
  +
Our module generates a leaflet map in a new page of a monolithic jhipster application with OpenStreetMap.
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.
 
   
  +
The npm page of our generator : [https://www.npmjs.com/package/generator-jhipster-leafletmap generator-jhipster-leafletmap]
== Week 11 (March 30nd - April 05nd) ==
 
   
  +
The github : [https://github.com/ultratrail/generator-jhipster-leafletmap generator-jhipster-leafletmap]
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.
 
   
  +
we also implemented a person's position on the map for our project.
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.
 
   
  +
== Week 10 (March 26th - April 01st) ==
Refonte du design de l’application.
 
   
  +
During this week, we had started to select information from our data base. For that, we had to understand JPA queries. In JPA, it's very efficient, we had just to understand the JPA syntax. For instance, if we want to find every Messages of an Hiker in a special Hike we have just to write "findAllBySenderAndHikeOrderByDatetime(Hiker hiker, Hike hike)". The implementation in SQL will be automatically done ( SELECT * FROM Message LEFT JOIN ....).
Ajout d'un bouton SOS.
 
   
  +
This first part was in the java repository. Then, we had to work in the webapp repository to access data from the webapp. Actually, it's very easy because we use our service (API).
Ajout de son lors du démarrage de la carte et de l'appui sur le bouton SOS.
 
   
  +
== Week 11 (April 02nd - April 08nd) ==
Push arrivé à 23h40 la veille de la soutenance. Tant pis, on fera sans.
 
  +
During the last week, we finalized our project (fixing some problems). We also had to write the final report, the flyer and the powerpoint.
  +
For the presentation, we have created an demo application (containing data / Messages / Hikes and Hikers (cf. targets)).

Latest revision as of 08:48, 5 April 2018

Project presentation

This project is a project carried out by two teams.

The first team composed of Enzo MOLION and Léo VALETTE UltraTeamMV is in charge of creating a mobile application allowing the members of a team or a group of hikers to locate each other with different information such as walking speed, distance between users, the possibility to see if a user is in distress (e. g. if he has broken a leg), etc.

This application will use the LoRa network with ESP-32 cards, connected via Bluetooth to the team's smartphones to run.

The smartphones of the team, if they are connected to the 3G/4G network, will send through a REST API all the information accumulated during the hike to a server that our team composed of Bastien TERRIER and Hugo GROS-DAILLON will have to set up.

This server will be implemented with the JHipster application generator. It will be a web application allowing hikers to create an account and thanks to the information provided by the mobile application, to visualize the information of the current or completed hike (with the route taken during the hike, average speed, participating members, etc.).

It can also be used to visualize the position of hikers during a hike and display whether a person sent a distress signal with their smartphone. This can be useful in cases where rescue workers are trying to locate the injured person precisely.

Team

  • Supervisor : Didier Donsez
  • Members : Hugo GROS-DAILLON, Bastien TERRIER

Progress of the project

The project started January 15th, 2018.

Week 1 (January 15th - January 16th)

  • Indication of preferences for proposed projects.
  • Assignment of project groups according to preferences.

Week 2 (January 22th - January 28th)

  • Discovery of UltraTeam projects from previous years.
  • Unable to execute the 2016-2017 AndroidStudio UltraTeam project due to project errors and lack of documentation.
  • Discovery of jhipster thanks to the eCOM project My Races We have to start from this project to make our web application.
  • Requirements.

Week 3 (January 29th - February 04th)

Separation of the two UltraTeam project teams with definition of the specifications for each team.

We decide to recreate a new application with jhipster and not to restart the eCOM project. The eCOM project no longer concerns us.

Document ourselves about the structure of jhipster applications.

Week 4 (February 05th - February 11th)

Skype video conferencing with Didier Donsez to indicate our progress and ask a few questions about jhipster.

Jhipster JDL language discovery

Creation of a database for our application with the jhipster JDL language.

Week 5 (February 12th - February 18th)

Document ourselves about Swagger and the generated REST API by JHipster.

Meeting with the other team to discuss about the model of our web application and the use of the REST API on the mobile application side.

Try adding new fields to create a user with this tutorial

Look at the generator-jhipster-leaflet to add a map to our project.

Week 6 (February 26th - March 4th)

After many tests, we realized that the generator-jhipster-leaflet does not work with the last version of JHipster. We decide to add the leaflet map to our project ourselves, without going through a generator.

We also noted that the tutorial to add extra informations for a User does not work with the last version of JHipster. So we tried to resume the tutorial for the last version of JHipster.

Week 7 (March 05th - March 11th)

During this week, we successfully add a LeafLet Map in the home page (without using the generator-jhipster-leaflet).

Moreover, now we can create a new user (with extra information) and it creates a new Hiker. The hiker is linked to one user (One to One relationship).

Week 8 (March 12th - March 18th)

We requested for an issue on the git of the generator-jhipster-leaflet. The developer answered us :

"This module supports only AngularJS, not Angular or React. So it's normal it doesn't work."

we decided to implement our own generator for Angular.

This week, We documented ourselves about how generator modules work.

We also tried to implement a person's position on the map with a marker for our project.

Week 9 (March 19th - March 25th)

We finally managed to implement our own generator. It works with the last version of Jhipster and with Angular5.

Our module generates a leaflet map in a new page of a monolithic jhipster application with OpenStreetMap.

The npm page of our generator : generator-jhipster-leafletmap

The github : generator-jhipster-leafletmap

we also implemented a person's position on the map for our project.

Week 10 (March 26th - April 01st)

During this week, we had started to select information from our data base. For that, we had to understand JPA queries. In JPA, it's very efficient, we had just to understand the JPA syntax. For instance, if we want to find every Messages of an Hiker in a special Hike we have just to write "findAllBySenderAndHikeOrderByDatetime(Hiker hiker, Hike hike)". The implementation in SQL will be automatically done ( SELECT * FROM Message LEFT JOIN ....).

This first part was in the java repository. Then, we had to work in the webapp repository to access data from the webapp. Actually, it's very easy because we use our service (API).

Week 11 (April 02nd - April 08nd)

During the last week, we finalized our project (fixing some problems). We also had to write the final report, the flyer and the powerpoint. For the presentation, we have created an demo application (containing data / Messages / Hikes and Hikers (cf. targets)).