vendredi 3 juin 2011

Changement d'interrupteur Céliane

      Bon, au final les modifications à faire pour relier un interrupteur sans fil DIO semble être trop compliquées pour pas grand chose. Il faudrait faire un petit circuit électronique permettant de générer un contact sec temporisé, bref.

     Je me tourne donc maintenant vers un double poussoir au lieu d'un double interrupteur. Le modèle est strictement identique au double inter, sauf qu'il génère des micros impulsions (suffisantes pour transmettre le signal radio).


      Voici la bête, pratiquement identique au double inter,il faudra donc relier nos switchs aux bornes rouge et blanche.





    Par contre, pour les 4 dips switchs du DIO, il me faudra donc 2 doubles poussoirs, que j'incrusterai dans une double plaque Céliane de ce genre.

Tests en pressant sur les poussoirs (Oh miracle, cela fonctionne)



lundi 2 mai 2011

Matériel : CELION (CELIANE fusion CHACON)

     Comme je le disais dans un post, les interrupteurs CHACON (DIO), ne sont pas trop à mon goût esthétiquement parlant, l'idée m'est donc venue de les fusionner avec un un double inter céliane.

Ancien post : démontage de l'interrupteur CHACON Ici

On commence donc par se procurer un double inter Legrand Céliane




On achète quelques supports de cr232 (Conrad)




Quelques fils de couleur bien choisis




L'arrière de notre interrupteur






On soude le support pile (attention au + et - ) mauvais exemple sur le photo je crois.






On soude le reste des fils  :




Enfin on relie à l'interrupteur :




On teste, l'ensemble :



le souci réside dans l'impulsion, en effet lorsque l'on active un interrupteur, l'un des switchs dip s'active, mais ne se libère pas, du coup lorsqu'il est activé, il est impossible d'activer l'autre voie. et donc seuls 2 signaux peuvent être transmis, pas terrible quand on sait qu'on peut en transmettre 4.

Il va donc me falloir un autre composant capable de me générer une impulsion ou fermer un circuit pendant 1 seconde. En écumant quelques sites d'électronique, je pense que le NE555 pourra faire l'affaire, il faut donc que je modifie le circuit. Cela fera l'objet d'un nouveau post. Car avec ce montage seuls 2 signaux sont transmis.











dimanche 10 avril 2011

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

         Je vous avais parlé d'un module de reconnaissance d'empreinte digitale, que je voulais connecter à mon ouverture de porte de garage (Rappel Partie 1), et bien voici la deuxième partie.

L'autre morceau du kit, consiste en un petit module où l'on vient connecter le module d'acquisition (on peut pas se tromper). On viendra ensuite connecter une alimentation (8v ac ou 12v dc au choix), ainsi qu'un contacteur sec (ouvert/fermé). Pour ma part, le contacteur sera relié à mon ouverture Chamberlain, en effet sur ce modèle je peux brancher un simple bouton poussoir et ainsi 'squeezer' les télécommandes 433mhz, ce port fera donc l'affaire.




Côté tableau électrique, j'ai opté pour un transformateur Legrand Lexic , entrée 220v AC, sortie 8 ou 12v AC. Estampillé "FINGER PRINT" ;) (En dessous l'arrivée 220v, sortie en 8v par le dessus).



Vouala donc, notre module branché. et ho ! miracle il fonctionne (bon ok ça fait un peu Terminator) :


Je vous passe l'apprentissage (un peu lourd et surtout mal traduit, j'ai perdu 30 minutes, pas super clair).
Enfin bref voici la vidéo :


Quoi d'autre à dire :

  • Il y a un port rs232 pour contrôler les allées et venues depuis un pc (logiciel windows fourni)
  • Possibilité de relier ça avec l'Arduino du coup, cela fera l'objet d'un épisode 3.


mardi 29 mars 2011

Software : Gestion des plugins dans le projet





          Pour permettre de rendre le système évolutif, il sera possible de fournir dans un répertoire les plugins de HomeAutomateCore.

Les plugins seront représentés sous forme de jar. L'application se chargera au démarrage de "loader" dynamiquement les classes. Pour l'instant les plugins ne peuvent qu'embarquer des managers, mais il sera possible d'embarquer de nouveaux mediators ou encore de nouvelles unités.

Ici un exemple de Plugin (plugin de contrôle de température de la maison)



Règle d'écriture des plugins (Projet Java Simple JAVA tirant une dépendance vers HomeAutomateCore (pour les interfaces).




Et il faudra au minimum une classe qui étendra AbstractManager (du Core) et implémentera les interfaces nécessaires. Dans ce greffon HeatManager.java




Ici, on remarque qu'on implémente IMediatorAware ce qui signifie que dès qu'un mediateur recevra un message, le système routera le message vers ce manager (par l'intermédiaire d'un IDomoticMessage)

L'interface IUnitAware permet quant à elle de recevoir les changements de propriétés sur toutes les unités.

Ces 2 interfaces imposent des méthodes :

    onMessage : permettra d'implémenter ce que l'on veut sur la réception d'un message
    onEvent : idem.

L'interface IManager est obligatoire (implémentation du commentaire du plugin, url, status, mode de démarrage, nom ..)

Une fois le plugin terminé : Export du projet sous forme de jar que l'on colle dans le répertoire indiqué dans la table de paramètre sous la clé pluginDirectory.


samedi 26 mars 2011

Software : Et si on discutait avec notre système domotique ?

      


Quoi de neuf : Google Chrome 11 Béta qui intègre le speech recognition. Intéressant, après avoir essayer plusieurs softs : Dragon, Ibm, finalement un nouveau se présente à la porte et au miracle pas d'autre soft à installer que le navigateur, en plus l'api est directement proposée dans HTML 5 :




      L'idée est donc simple, un textfield html jouera le rôle d'écouter les entrées, puis on redirige le texte reconnu vers une action struts qui sera routée à HomeAutomateCore et plus précisément au manager reconnaissance vocale.

Je vous laisse télécharger chrome pour essayer, mais les résultats sont convaincants et surtout sans apprentissage interminable, bref à intégrer pour pousser le test.

La page de test : 

jeudi 24 mars 2011

Software : Et si on faisait parler notre futur système domotique ?

    L'idée est de rendre communiquant le système, même lorsque l'on est pas devant son écran, portable ...
Donc se faire prévenir par le système que quelqu'un est entré dans l'allée, ou encore qu'un pic de consommation électrique est anormal, tout cela peut nous intéresser.

Je me suis essayé à plusieurs, des softs gratuits avec du copier /coller, des utilitaires en mode ligne de commande, le tts virginie de windows .... bref, toujours à passer par un logiciel tiers à installer sur le PC.

Je suis donc allé voir chez Google et leurs magnifiques services web, et je suis tombé sur Google Translation


Avec une simple URL, on peut se faire dicter du texte dans toutes les langues.


Avantage :


                 Une phonétique plus que séduisante ;)
                 Pas de logiciel à installer en local.
                 Rapide.
                 Choix dans les langues.


Inconvénient : 


                 Connection Internet requise pour traduire.




Allez on y va .... Google Traduction en 1 minute 
Je veux écouter le texte "Monsieur, vous prendrez bien un verre de whisky ! "
Rien de plus simple : faites un copier/coller de cette url dans votre navigateur préféré (N'oubliez pas le son !)

http://translate.google.fr/translate_tts?q=Monsieur, vous prendrez bien un verre de whisky


Pour faire du speech en anglais, il faut ajouter un paramètre dans la request :
Ex : 


http://translate.google.fr/translate_tts?tl=en?q=Baboons are eating some bananas


tl=en pour anglais
tl=fr pour français.
tl=es pour espagnol ...


Implémentation dans le code java :


J'ai donc créé un JDBManager ( qui permet d'ajouter des logs, infos, installation, warning et talk) talk permet non seulement d'écrire dans le journal de bord mais en plus d'appeler un autre manager VocalManager qui va se charger d'aller chercher la traduction de code (Enum) à traduire. Ce dernier se base sur un paramètre la locale de notre application (le multilinguisme est prévu). 

Dans le JDBManager , on a donc la méthode talk qui reçoit en paramètre la classe voulant "talker", un code I18N pour le message, et une liste de paramètres (Au passage fonctionnalité JAVA5)
On pourrait donc passer un message du type 'startSystem %s in %s', new Date(), new Home()
rappel le code passé en paramètre est purement une clé, elle sera traduite à l'aide de notre table i18n lorsqu'on voudra consulter le JDB ou lorsque l'on veut faire parler notre système.

voyons voir la méthode talk du vocalManager :


1. On commence par récupérer dans la table des paramètres la locale (par défaut fr_FR si non renseignée) J'utilise une Enum qui est exploitée dans le parameterManager, Exemple de l'Enum, la valeur par défaut est fournie dans le constructeur.

2.On récupère la traduction du code à annoncer. Si le code n'est pas trouvé dans la table i18n, on retournera le code fourni en entrée.

3.On récupère ensuit le service Google dans les paramètres, il est possible d'utiliser un autre service, dans ce cas on mettra un enregistrement dans la table de paramètre avec comme clé googleSpeech. Par défaut c'est donc notre translate.google.... à notre dans cette url par défaut un %s juste après tl, ce % sera substitué par la locale récupérée.

4.On utilise l'API Apache HttpClient, pour contruire notre requête. ne pas oubliez le User-Agent à positionner ici par défaut à Mozilla, sinon vous allez avoir un belle erreur 403 Forbidden.
Au passage les snippets à ajouter dans le pom :

  <dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>httpcomponents-httpcore</groupId>
<artifactId>jakarta-httpcore</artifactId>
<version>4.0-alpha2</version>
</dependency>


5. Enfin, on éxecute notre requête et on récupère un InputStream qui sera consommé par un Player MP3 récupéré également à l'aide de ce snippet, et c'est tout !

<dependency>
<groupId>de.huxhorn.sulky</groupId>
<artifactId>de.huxhorn.sulky.3rdparty.jlayer</artifactId>
<version>1.0</version>
</dependency>


Une capture de la table de notre JDB :


Et notre table I18N : 


qui contient une clé i18n, une locale et une traduction.


Notre table des paramètres : 




Et vouala, nos futurs managers (Light, Temperature, Consommation) auront à portée de main ce vocalManager en cas de message à faire passer.

Promis j'attaque la prochaine fois un manager Domotique (RFXCOM, ARDUINO ,...)

Software : Avancée dans le socle

Avancée sur les Managers/Dao de base du socle :


           I18N (Permet l'internationalisation des messages du JDB)
           JDB (Journal de bord permet de stocker les infos système)
           Parameter (Permet de récupérer/sauvegarder des paramètres)


    A noter que le projet à changé de nom : il s'appelle HomeAutomateCore il fournira des services mais pas d'IHM, un autre projet IHM HomeAutomateGUI sera créé, cela permet d'encore plus découpler le Front du Back Office). Tout ceci est bien sur "comité" sur le SVN.