Atlantis est un système domotique sous licence GPL basé sur un Raspberry Pi, un Arduino et une application Android. Le Pi est le serveur. Il est chargé du traitement des données et de leur stockage. On pourrait l'assimiler au cerveau du système. L'Arduino quant à lui, est le muscle. Il intéragit avec le monde réel pour contrôler les lumières, le chauffage, les appareils électriques ou pour lire les capteurs de température, d'humidité ou ceux des différents gaz. L'application Android est l'interface qui permet aux utilisateurs d'intéragir avec le serveur.
Vous trouverez ci-dessous 3 catégories regroupant les fonctions de mon système en espérant vous servir dans vos propres projets.
Bien que ça soit toujours le Raspberry Pi qui revient dans mes articles, les tutoriels ainsi que les codes utilisés peuvent être appliqués à n'importe quel serveur sous Debian directement.
Pour les autres versions Linux, il faudra adapter la syntaxe !
J'ai choisi d'utiliser le PHP pour le traitement des requêtes/données. Le serveur devra héberger un serveur web pour interpréter ce langage. Pour cela, je me suis tourné vers un serveur Apache.
La base de données utilisée est une MySQL et les données sont échangées sous format JSON.
A l'heure actuelle, Atlantis peut :
Le code PHP pour les différentes fonctions décrites ci-dessus se trouve sur mon github.
Avant de commencer à l'utiliser, il faudra effectuer les différents changements :
Le code SQL nécessaire à la création des différentes tables de votre base de données se trouve ici.
Pour les tables qui ne changeraient pas en permanence, les données doivent être insérées directement (depuis l'interface phpMyAdmin par exemple) car l'application Android ne possède pas encore une interface pour ce but. Ces tables sont les suivantes :
L'arduino va interagir directement avec les modules afin de lire les valeurs des capteurs ou les contrôler. Le Raspberry avec ses GPIO est capable de cela mais la facilité de programmation des cartes Arduino m'a orienté vers cette décision.
J'ai choisi de connecter l'Arduino directement au réseau grâce à un shield Ethernet afin de garder un minimum de contrôle sur mon système domotique lorsque le Raspberry tombera en panne. L'autre solution étant une communication avec le Pi via le port USB ou les GPIO.
En suivant ce tutoriel, vous programmerez votre carte pour exécuter des fonctions en fonction des caractères envoyés.
Celui-là, vous montrera comment renvoyer des données en format JSON.
L'application Android est l'interface entre l'utilisateur et Atlantis. Son code source est disponible ici. Cette version est basée sur les fragments. Une autre version basée sur les activités uniquement est disponible dans le même répertoire.