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.

Vous aimerez aussi...

4 réponses

  1. Percussio dit :

    Bonjour,

    Votre librairie est-elle compatible avec le module chacon maintenant ?

  2. Vincnet68 dit :

    Bonjour,

    Google Code ne permet plus de télécharger des projets complet.
    Avez-vous mis le projet à disposition à un autre endroit ?

    Merci

    Vincnet68

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *