Librairie domotique Arduino: introduction
Dans ce premier article je vais vous décrire rapidement les services que m’apporte l’utilisation de cartes Arduino et ce que contient la librairie que j’ai développé.
J’utilise deux cartes Arduino pour le pilotage d’une grande partie des points lumineux, quelques prises, les fils pilotes, les volets roulants ainsi que pour le suivi des températures (1wire), de la consommation électrique et d’eau.
[adsGrandRectangleTexte]
Les Arduino communiquent via le réseau Ethernet en Http ou xPL. On peut mettre autant de cartes qu’on le souhaite sur le réseau et chaque carte peut être au choix, spécialisée dans une fonction (Entrée, sortie, téléinfo, …) ou en mixer plusieurs.
La librairie contient donc des fonctions pour gérer et configurer le plus simplement possible tout ceci. Elle permet :
- de spécialiser les io en module: interrupteurs, bouton poussoir, lumières, variateurs, compteurs…
- d’associer des modules émetteurs (interrupteurs) et récepteurs (lumières) comme on appaire des modules Chacon par exemple.
- de piloter les io et modules en Http ou xPL
- de notifier en Http ou xPL les changements d’états des modules configurés
- de piloter une sortie, un module d’une carte Arduino à partir d’une autre carte
- de réceptionner les informations de capteurs divers (sondes de température 1wire, humidité, présence, lumière, …)
Et sera bientôt (ou pas) capable :
- d’identifier des badges RFID
- de récupérer les informations de téléinformation (EDF)
- de piloter des modules homeeasy (chacon, …)
- de réceptionner les informations des sondes Orégon
- de réceptionner les informations des modules X10 RF
- …
Exemple
Un exemple tout simple de sketch utilisant la librairie. Celui ci configure un interrupteur et un point lumineux puis les appaires (LinkModule). Ceci permet d’allumer ou d’étiendre le point lumineux à chaque pression sur l’interrupteur (Update).
#include <ConnectingStuff.h> Switch interrupteur(2,"Salon"); Light lumiere(13,"Salon"); void setup() { // Définition de l'Id de la carte ConnectingStuff::SetCARDID(1); // Liaison entre les deux modules interrupteur.LinkModule(&lumiere); } void loop() { interrupteur.Update(); }
Les bases
Dans la librairie, les entrées et sorties sont représentées par deux classes de base (Input et Output). On ne manipulera pas directement les entrées/sorties mais des modules possédant une ou plusieurs entrées/sorties.
Chaque élément domotique (interrupteur, lumière, volet , capteur …) est appelé module. On peut associer des modules entre eux, par exemple, un interrupteur et une ou plusieurs lumières comme on l’a vu plus haut.
La classe module regroupe les propriétés et méthodes communes à tous ces éléments:
class Module { protected: int m_iID; // Id unique sur le réseau Type m_type; // Type : SWITCH, LIGHT, SENSOR, ... char m_name[16]; // Nom public: // Une action à effectuer lorsqu'un module associé est activé virtual void Action(void*); // Retourne une chaine json représentant les propriétés du module virtual char* ToJson(); // Retourne le statut du module en xpl virtual void SendStatus(); int GetID(); // Retourne l'Id unique char* GetName(); // Retourne le nom void SetName(char* _name); // Définit le nom Type GetType(); // Retourne le type };
Vous pouvez télécharger la librairie ici et commencer quelques expérimentations, il n’y a pas encore de doc/exemples mais ça ne va pas tarder. Je vous propose de lire les articles suivants (quand ils seront là 🙂 afin de comprendre et d’apprendre à utiliser la librairie.
Bonjour,
Votre librairie est-elle compatible avec le module chacon maintenant ?
Bonjour,
Non toujours pas, je n’ai pas bcp de temps en ce moment à y consacrer, désolé.
Bonjour,
Google Code ne permet plus de télécharger des projets complet.
Avez-vous mis le projet à disposition à un autre endroit ?
Merci
Vincnet68
Bonjour,
Non mais vous pouvez le télécharger via subversion : https://code.google.com/p/connectingstuff/source/checkout
Je le déposerai sur github à l’occasion