lundi 21 février 2011

Conception : Un peu de conception pour commencer

Un peu de conception avant de commencer. L'idée n'étant pas de détailler au maximum le système (quelque chose rendu obsolète au bout de 2 jours), mais au contraire de poser quelques bases de départ.


Je récupère une version 30 jours d'essai d'Enterprise Architect (Logiciel de modélisation : UML Compliant)


Après quelques clics, un premier modèle de classes apparait  :






Notre serveur Web aura un servlet de démarrage qu'on appelera StartupServlet qui étend Servlet.
Ce dernier aura pour rôle de démarrer tous les managers, nous nommerons Managers les classes surveillant l'outil (Ex: AlarmeManager, SystemManager, )
Ces managers seront intégrés dans le package managers.


Ps: il sera possible par la suite d'intégrer d'autres managers au moyen de plugin.


Tous les managers hériteront d'un abstractManager mettant à disposition plusieurs méthodes d'accès aux futures Unités, Médiateurs, Journal de bord ou autres objets. La méthode run() est concrète, ne fera que boucler indéfiniment sur doTraitement() qui elle est abstraite, obligeant ainsi ces fils à l'implémenter concrètement. Un manager est unique au sein de la JVM, utilisation du Design Pattern Singleton, on accèdera à ce manager à l'aide de son nom de classe puis getInstance();






A noter que le démarrage des managers se fait en asynchrone, un manager sera assimilé à un thread (méthodes fournies par l'abstract)




Tout ça, c'est bien beau, mais nos Managers vont devoir manipuler des objets ou faire interagir des objets entre eux.


Qui dit objet, dit donc objet physiquement existant (bon quelques abstract permettront de s'affranchir de quelques méthodes ou attributs redondant). Mais le principe reste le même.


On trouvera donc dans notre système 2 types d'objets :


                1) Les unités : unités physiques domotiques, un capteur, une sonde, un interrupteur, un composant électronique, .... 
                On trouvera comme exemple : une sonde OREGON THN132, un AW12 X10, un Carillon Chacon, ....


                2) Les médiateurs (objet assurant la communication entre les unités et ce que j'appelle le support de transmission (Radio 433Mhz, CPL, infrarouge, optique , ....). Ex de médiateurs que l'on utilisera : RFXCOM Ethernet, CM15USB, Arduino Ethernet, ...)
       
Chaque médiateurs connait exactement la liste de ses unités gérées. Par contre pour des raisons de redondance cyclique, les unités ne voient pas leur médiateurs.


L'AbstractMediator fournira des SerialStreamReader (Lecture sur port série) ou HttpReader (Reader sur Http) ou encore NetworkReader (Lecture sur socket ip) ou usb, afin de faciliter les lectures/écritures au sein du support de transmission.






Quelques méthodes : 
        
        addUnit, Ajoute une unité dans le médiator.
        removeUnit , supprime une unité du médiator.
        onMessageReceive, le décodage du message reçu.
        onMessageSend, en cas de transmission de message
        messageToUnit, routage du message reçu vers la bonne unit !
        reset, et oui tout arrive, il faudra parfois "reseter" notre médiator, s'il se sent pas bien :(.
        
        dans les utilitaires d'accès (Serial, Socket, et interface USB qu'on implémentera en fonction des librairies dispo sous linux ou windows (d'où l'interface).


       Exemple ici d'un RFXCOM en ethernet.


Pour les unités, on retrouve le même principe, une abstract permettant de préciser les attributs commun et par dérivation une classe par type d'objet avec ses attributs qui lui sont propre : 






Vouala, pour cette première partie de conception, on y reviendra plus tard.

samedi 19 février 2011

Matériel Interrupteur à reconnaissance d'empreinte digitale (Partie 1)

Bon, cela m'est arrivé plusieurs fois, arrivé à la maison, personne, et surtout pas de clé.
On peut toujours cacher une clé dans le jardin, mais si on l'utilise, on ne la remet jamais en place.

Du coup, après avoir écumé pas mal de sites, je découvre ce kit : 

     - Un kit avec reconnaissance d'empreinte capable de faire un contact sec dès l'utilisateur reconnu.
        Le kit peut reconnaître jusqu'à 20 utilisateurs et est alimenté par un transfo 12v continu ou en 8v alternatif.

L'idée est donc de positionner ce kit en façade pour ouvrir une des portes de garage. Ma motorisation de porte étant équipée d'un contact sec en cas d'utilisation de bouton poussoir intérieur.

Pour l'alimentation, j'ai choisi le 8v alternatif, (mise en place d'un transfo sur le tableau électrique) évitant ainsi un transfo supplémentaire 12v à brancher.


Le kit :






livré en 2 parties espacées par un cable de 50cm multibrins :


         Partie 1 : capteur (peut être placé en applique ou en saillie, tapée fournie). installation prévue en saillie.
         Partie 2 : module de reconnaissance (à placer à l'intérieur, non accessible depuis l'extérieur).


         Partie 1 :








  On distingue une sorte de fourchette en haut qui permet de séparer la coque permettant le montage en saillie. Clapet de protection. l'entourage est en plastique métallisé.


Bon, allez on perce : 






Conseil : placer le assez haut, il y a des leds qui valident ou non l'empreinte, Perso je l'ai placé à hauteur des yeux.


Le trou 40mm suffisant: 




Revers du décors : 





Positionnement de l'applique :


             Attention, je n'ai pas mis de boite d'encastrement. utilisez la 2ème rangée de trous et repercer pour le bas. (la première rangée entre en conflit avec la plaque de parement.J'ai utilisé des vis à placo, celles fournies étant un peu 'light'


Enfin repositionner la plaque de parement :



Perso, j'ai ajouté un peu de silicone transparent pour parfaire l’étanchéité.



Vouala, fini pour la première partie.

samedi 12 février 2011

Pré-requis pour commencer

Pour bien commencer, il nous faut un environnement de développement. Cet environnement de développement nous permettra de développer l'application de A à Z, de la déployer sur un serveur d'application.
Euh.... que choisir, à vrai dire pour faire du java :

              NetBean NetBean
              Eclipse Eclipse
              JDevelopper JDevelopper
              A la dure avec un notepad...
              Ou d'autres, je suis sur qu'il y en a des milliers d'autres...


Personnellement, j'opte pour Eclipse (connaissance de part mon job), donc je me sens plus à l'aise.


              Après l'avoir installé (je vous passe les screenshots), on se retrouve sur le workbench d'Eclipse.Vous remarquez le projet HomeAutomate (Rappel pour créer un project de type Web, clic droit sur sur la partie Package Explorer, puis créer nous project, de type Web dynamique).




              On remarque également un projet Server, on verra par la suite à quoi cela va-t-il servir.


2ème Outil nécessaire : Une base de données, alors là, il y a foultitude de choix ...., je vous laisse choisir :


                Oracle, MySQL, Db4O, ....
          
         J'opte pour MySQL, accompagné de ses outils de consultation et de administration, nommés respectivement MySQLQueryBrowser, MySQL Administrator pour les Windowiens.




3ème Outil nécessaire : Un serveur d'application, idem pour les choix comme d'hab : JBoss, GlassFish, TomCat. Il nous permettra d'héberger/publier notre application WEB et d'être autonome (plus besoin d'environnement de développement).


         Je prends Tomcat




Vouala, tout est là.
On peut commencer.


      

lundi 7 février 2011

Lancement Blog HomeAutomate

08/02/2011 00h20 Lancement Blog HomeAutomate


Blog dédié à l'automatisation et à la domotique.
Installation de matériel divers pour la maison.
Système domotique Compatible Windows & Linux.
Blog logiciel avec entractes matérielles.


Logiciels :


       Ecriture Complète WebApp JAVA 6
       JSP (MVC sur base de STRUTS2)
       SPRING pour injection de dépendances.
       HIBERNATE pour ORM.
       Déployée sur Serveur d'application TOMCAT 
       Base de données MYSQL


    




























Matériel :


       X10 : CM15 USB
       X10 : RTS10 + TH10
       X10 : MS13
       X10 : AM12
       RFXCOM : ETHERNET 2 PORTS
       CHACON : Détecteurs ouverture de Portes
       CHACON Gamme DIO : Inter sans fil.
       CHACON : Carillon sans Fil
       OREGON : Sondes THN132
       ARDUINO BOARD + SHIELD ETHERNET
       CURRENT COST ENVY
       RFID Controller
       Sonde Niveau E-Tape, Fluid Continus Sensor
       Détecteur Empreintes CONRAD
       .....