Application Android du projet domotique Atlantis

Etant un fan de Stargate, Atlantis est le nom que j'ai choisi pour mon projet domotique. Celui-ci est basé sur un module Arduino et un Raspberry-Pi. Ce tutoriel est consacré à l'application Android que j'ai écrite pour contrôler ce système domotique.
Contrairement à la première application basée sur Phonegap, celle-ci est en Java pure pour Android.

Licence

Cette application est sous licence GPL v3. Je vous encourage à la partager et la modifier pour correspondre à vos besoins. N'hésitez pas également à me soumettre vos suggestions soit via le formulaire de contact, soit via Github.

Code Source

Le code source de l'application est disponible sur le site Github via le lien suivant ou en le téléchargeant ici.

Fonctions

Cette première version offre les fonctions suivantes :

Fonctionnement

Chaque utilisateur possède une clé pour s'authentifier. L'application va contacter le serveur (notre Raspberry) qui lui, va répondre soit en cherchant l'information dans la base de données (pour la pharmacie par exemple), soit en contactant l'Arduino (pour lire la température).

Serveur

Quand l'application contacte le serveur, elle appelle des pages php définies dans la classe StaticString.java. J'ai choisi d'associer chaque page à une fonction.

Les valeurs suivantes sont à modifier :

Les différentes pages du serveur sont téléchargeables sur Github ou en cliquant ici.

Base de données

Si vous souhaitez utiliser les fonctions de base de données pour la cuisine, la pharmacie ou la liste des courses, il faut des tables pour sauvegarder les données. Le premier code permet de générer une table pour la cuisine ou la pharmacie (n'oubliez pas de changer le nom de la table), le deuxième est destiné à la liste des courses.

CREATE TABLE IF NOT EXISTS `cuisine` (
`element` varchar(200) NOT NULL,
`peremption` date NOT NULL,
`quantite` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
                
CREATE TABLE IF NOT EXISTS `courses` (
  `nom` varchar(200) NOT NULL,
  `quantite` int(11) NOT NULL,
  PRIMARY KEY (`nom`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
                

A chaque fois que vous scannez un produit et que vous le sauvegardez dans votre cuisine, le code barre ainsi que le nom sont sauvegardés. Ceci permet à l'application de retrouver le nom d'un produit au prochain scan. Voici le code nécessaire pour créer cette table :

CREATE TABLE IF NOT EXISTS `ean` (
  `ean` varchar(15) NOT NULL,
  `nom` varchar(200) NOT NULL,
  PRIMARY KEY (`ean`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
                

Pouvoir distinguer les différents utilisateurs de votre système domotique est une bonne chose. Ceci permet d'autoriser certains à modifier des paramètres que les autres n'y ont pas accès (comme les enfants par exemple). J'ai choisi une méthode simple pour cela, c'est l'utilisation d'une clé que l'utilisateur entre dans les paramètres de l'application. Voici le code nécessaire à la création de la table qui enregistre ces données :

CREATE TABLE IF NOT EXISTS `users` (
  `cle` varchar(20) NOT NULL,
  PRIMARY KEY (`cle`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
                

Amusez-vous bien en attendant la prochaine version :)