BTS Mesure BTS Mesure
Présentation2014CapteursModulationTyponsArduinoDémodulationApp InventorCourbesVidéos

App InventorRéceptionTraitementFichierDonnées

App Inventor et Fusion Tables

Pour afficher des cartes et tracer des courbes facilement sur un site web la base de données Fusion Tables de  Google est parfaitement adaptée.

App Inventor fournit toutes les ressources nécessaires pour insérer en temps réel de nouvelle données dans cette base de données.

Le tutoriel suivant montre en détail le paramètrage à effectuer pour connecter notre Fusion Tables à notre appli app Inventor.

Etape 1 : créer sa table de fusion sur le site https://drive.google.com/

Propriétés de l'objet FusiontablesControl

Comme l'explique en détail le tuto, l'accès à notre table de fusion par App Inventor nécessite un KeyFile (.p12 et non .json) et un Service Account Email. 

Etape 2 : créer sur le site console.developers.google.com le fichier KeyFile et gérer les autorisations.

Exemple de notre procédure BaseDeDonnées

Etape 3 : utiliser notre Fusiontables avec App Inventor


Nous avons récupéré l'identité de notre table de fusion :1fKSkNuY5NSaP2cidhppdLpMRf1scHPWZyZK-HYWW
Pour insérer une nouvelle donnée dans notre base de donnée nous voulons envoyer la requête suivante :

INSERT INTO table (nom_colonne_1, nom_colonne_2, ...) VALUES ('valeur 1', 'valeur 2', ...)

Soit par exemple :

INSERT INTO 1fKSkNuY5NSaP2cidhppdLpMRf1scHPWZyZK-HYWW
('date', 'latitude', 'longitude', 'Altitude', 'Pext', 'Text', 'Tint', 'BPW34', 'Hr en %') VALUES
('27/10/2015 16:30:00',43.6637,5.0201,230,1010,24.5,26.1,105,45);

Chaque requête nécessite environ 2 s.

Pour ne pas surcharger le serveur nous avons décidé d'envoyer une requête toutes les minutes
(soit toutes les 30 mesures, détecté par la variable k = i modulo 30)  comportant 3 mesures séparées de 20s.

Soit une mesure envoyée sur 10 (détecté par j = i modulo10).

variable i = numéro de la mesure reçue par l'application ;
variable j = i modulo 10 pour ne transmettre qu'une mesure sur 10 (soit toutes les 20s) ;
variable k = i modulo 30 pour envoyer une requête de 3 insertions toutes les 30*2 = 60 s.

Soit par exemple :

INSERT INTO 1fKSkNuY5NSaP2cidhppdLpMRf1scHPWZyZK-HYWW
('date', 'latitude', 'longitude', 'Altitude', 'Pext', 'Text', 'Tint', 'BPW34', 'Hr en %') VALUES
('27/10/2015 16:30:00',43.6637,5.0201,230,1010,24.5,26.1,105,45);
INSERT INTO 1fKSkNuY5NSaP2cidhppdLpMRf1scHPWZyZK-HYWW
('date', 'latitude', 'longitude', 'Altitude', 'Pext', 'Text', 'Tint', 'BPW34', 'Hr en %') VALUES
('27/10/2015 16:30:20',43.6637,5.0201,230,1010,24.5,26.1,105,45);
NSERT INTO 1fKSkNuY5NSaP2cidhppdLpMRf1scHPWZyZK-HYWW
('date', 'latitude', 'longitude', 'Altitude', 'Pext', 'Text', 'Tint', 'BPW34', 'Hr en %') VALUES
('27/10/2015 16:32:40',43.6637,5.0201,230,1010,24.5,26.1,105,45);

Pour debugger on envoi le résultat dans le texte Debug :