mardi 12 novembre 2013

Reconnaissance Vocale partie 1 : Matériel




     Il est un élément à prendre en compte dans la domotique, c'est la reconnaissance vocale. Avec les progrès des logiciels de reconnaissance vocale, il faut prendre en compte le câblage des pièces (lors de la réalisation de travaux par exemple).

     J'ai donc prévu dans mes 3 pièces principales (Salon, Pièce à vivre et Chambre), un double câblage micro et haut parleur dédié aux informations domotiques (uniquement). Chaque pièce reçoit donc 4 fils (2 pour le micro et 2 pour le haut parleur).

       Cette première partie décrit donc le matériel, à savoir, les 3 micros, les 3 enceintes encastrables et la mini table de mixage amplifiée pour les micros.

   Dans la deuxième partie, on décrira la partie intégration dans HomeAutomate et quelle API j'ai utilisé (pas S.A.R.A.H désolé :( ).

     Allez on commence par les enceintes, elles se devaient d'être assez puissantes mais surtout encastrables dans le placo, j'ai donc opté pour des enceintes CONRAD NO_NAME ( je n'ai plus le lien exact, mais disons qu'elles ressemblent étrangement à celles-ci mais avec le tweeter orientable, pratique pour diriger le son): Lien Conrad

On commence par entailler le placo avec le gabarit fourni :



Puis vient l'incrustation, on remarquera le tweeter orientable :



Enfin le cache de finition, j'ai placé mes enceintes au sol, contrairement au micro à hauteur de tête évitant ainsi le retour enceinte/micro :


    Passons maintenant aux micros, ce sont des Sony commandés chez Dx, avec de très bons commentaires quant à leur sensibilité, en voici donc 3 (un pour chaque pièce), le prix du micro avoisine les 6$, une fortune ;), ils sont orientables à 90°.


    Maintenant je cherchais une support d'intégration pour encastrement, j'ai trouvé ceci toujours chez Conrad (embase 3.5mm) Lien ici, donc x3 à 1,30 euro pièce.


    Voici le mur avec l'embase intégrée, non ! on ne se moque pas de la prise, c'est pour une éventuelle tablette ou autre écran (à venir) : 
    

    Enfin le micro installé, cette prise et ce micro sont à 1m60 du sol :

   

   Et pour finir, chaque micro se doit d'être amplifié (ceux ci étant passifs), voici donc le module de mixage/amplification dans ce style (Lien ici) environ 35 euros :
   4 entrées, une sortie amplifiée et 2 effets.


   Prochain article, intégration dans HomeAutomate avec un plugin.

vendredi 1 novembre 2013

Nouveau plugin : Suivre l'état des sèche et lave linge.





    En attendant que la machine à laver et le sèche linge soient communiquant, j'ai donc décidé d'incorporer leurs suivis dans le système domotique :

Le but étant que la maison annonce concrètement la fin des programmes (lave linge et sèche linge). La maison transmettra également un mail pour annoncer le résumé (timing et plus tard la conso).

Il est possible à l'aide de la commande vocale de connaitre l'état courant et le temps restant.

Etape 1
    Pour la solution technique, en ayant épluché pas mal d'articles et ne voulant pas démonter la machine, j'ai donc opté pour des cellules photosensibles que je positionne devant la led de fin.
Si cette dernière s'allume, le programme est terminé, le système domotique annonce donc la fin.
Il y a donc 2 cellules, reliée chacune à un ARDUINO qui mesure en permanence l'impédance. Cet Arduino quant à lui est surveillé par le système domotique.

Voici le type de cellule : 



Une cellule est donc reliée à l'une des entrées analogiques de l'arduino et l'autre au +5v de l'arduino.

Etape 2: Le plugin arduino, écrit il y a pas mal de temps, ce dernier permet de déclarer toutes les entrées digitales et analogiques rapidement : 


Etape 3: Le plugin dédié à la surveillance des 2 équipements :



Il va donc interroger les 2 entrées digitales, si le seuil est dépassé, l'appareil est en route, sinon éteint.

Etape 4: La partie graphique permet d'avoir l'état des 2 appareils en temps réel :




Nouveau plugin: Récupération des messages répondeur ORANGE



      L'idée étant de récupérer les messages répondeur de la ligne fixe ou du téléphone portable sur le système domotique. La maison pourra alors lire les messages automatiquement dès leurs réceptions ou alors sur commande vocale.
L'interface graphique permettra également de réécouter les messages.

1ère étape : Modifier les paramètres orange pour que les messages vocaux soient redirigés vers une messagerie mail.



2ème étape : Construction du plugin, dans le plugin, je me connecte au serveur mail pop3 et je download les mp3 liés au message envoyé par Orange. Je lis le message si l'id du message n'a pas été déjà lu.
Voici les quelques paramètres du plugin :





3ème étape : Partie graphique, avec les 2 boutons en face des n° , un pour lire directement depuis le navigateur, l'autre pour lire dans toute la maison (avec le multiroom).





samedi 5 octobre 2013

A la demande générale, NEST suite et fin


Suite aux mails sur NEST et le rafraîchissement dynamique des valeurs via JQUERY, voici donc une petite démo (que vous pouvez appliquer chez vous). 
Et au passage (suite à la remarque de simplearetenir) correction pour rendre le NEST à nouveau compatible FF.


En cliquant sur visualiser le code source, puis en recherchant le mot clé DATA, vous tomberez sur plusieurs fonctions, l'explication est donnée pour getTempActuelle, mais elle est valable pour toutes les autres fonctions.

Principe toutes les 10 secondes on appelle ces fonctions pour actualiser les valeurs du NEST et "pusher" dans l'autre sens également (voir fonction setTempActuelle).

Pour la démonstration, j'ai commenté la partie AJAX (normalement reliée à mon système), pour cet exemple je récupère donc une valeur aléatoire entre 1 & 20 (en vert). Toutes les 10 secondes une valeur est ainsi récupérée.
Pour récupérer en AJAX une valeur issue d'un autre système, regardez la partie commentée, il suffit donc de modifier la chaine url (en rouge) et l'affaire est dans le sac.
Cette url (une fois appelée), doit tout simplement retourner une valeur (pas de format JSON !).


function getTempActuelle()
{
//DATAS Ici on récupère un valeur aléatoire pour la démo, mais sinon en décommentant en dessous et positionnant votre
// url la température sera récupérée en AJAX
temperatureActuelle=Math.floor((Math.random()*20)+1);
//var requestTempActuelle=$.ajax({
// url: "ObjectAction?action=getTempActuelle&objectName=Chauffage&objectClass=Manager",
// dataType: "html",
// async: true
// });
//requestTempActuelle.done(function(msg) {
// temperatureActuelle=msg;
// });
}


Mode d'emploi :

Arrivé sur la page avec le nest, cliquez sur nest pour l'allumer et changer de mode.
Pour régler la température mini ou confort, il suffit de cliquer sur le cercle noir, rester appuyer et effectuer un mouvement circulaire (à la mode nest)

Si vous ne touchez à rien pendant 10 secondes, la température actuelle est affichée.


vendredi 4 octobre 2013

Changement de philosophie au niveau de l'IHM



Finalement, plutôt que d'avoir des milliers de pages:

           - qui mettent du temps à se charger.
           - pour gérer calendriers, caméras, actions, sondes, plugins ....


J'ai finalement un peu changé d'optique :

         3 pages :

               1 pour le login/passwd.
               1 pour le tableau de bord.
               1 pour la liste des équipements (sondes, plugin, manager, mediator, paramètres)

Simplification de navigation, d'adaptation pour tablettes ou autres périphériques.


Voici donc l'écran de login :




Voici donc l'écran principal :

Avec système de widgets repositionnables et infos temps réel.



Et l'écran (orienté admin) :

Infos temps réel.


           

mardi 18 juin 2013

C'est bientôt l'été, nouvelle tendance...



  Force est d'avouer que l'utilisation d'injection de dépendances JAVA avec SPRING reste très lourd lors du développement d'un logiciel. Le projet s'est donc allégé de la couche SPRING en implémentant le Singleton à l'ancienne (Design Pattern Singleton). Du coup simplification du code (diminution du nombre d'interfaces, de fichiers xml dédiés à la configuration).

  Je rencontrais pas mal de pb avec DB4O, des problèmes insolvables qui se finissaient généralement, par recréation du fichier base .dat, et oui ce fichier est binaire et non éditable. Une fois vérolé, il n'y avait plus qu'à tout recharger. Je suis donc passé par XStream qui permet la sérialisation rapide et fiable de tout objet JAVA.

   Avantages : 

                   - Fichiers XML propres à chaque composant.
                   - Fichiers Editables et donc reprise plus aisée.

   Exit aussi MAVEN, au profit de dépendances gérées depuis ECLIPSE, ras le bol de reconfigurer tout l'environnement MAVEN à chaque réinstall de PC.

  Présentation du nouveau projet dans un prochain post....


  Aller en attendant un superbe outil permettant de générer des mocks en JAVA (utile pour les tests unitaires), très simple d'utilisation.


mardi 8 janvier 2013

Configurer un thermostat avec HomeAutomate




      Un petit article pour concrétiser la mise en place d'une gestion de température avec HomeAutomate et qui tourne depuis Début Décembre.

           Le cas d'utilisation : 

    - Température confort (21°) de 5h à 7h59 tous les jours ainsi que de         
      17h à 20h59 et week-end.
    - Température mini (18°) le reste du temps.


           Matériel prérequis :
         
    - Une chaudière/radiateur à contacteur sec.
    - Un module permettant de faire le contact sec (ici utilisation d'un IPX800).
    - Une sonde de température (Ici une THN132)
    - Un RFXCOM ou autre appareil capable de traiter les signaux de la THN132.
    - HomeAutomate installé et démarré.


           Les branchements : 
   
    Passons sur le RFXCOM et les sondes pour nous attarder sur le contact sec de la chaudière. J'utilise donc un relai de la carte IPX800 pour fermer ou non le circuit. J'utilise ici le relai 8 :

                

   Pour ce qui est du câblage proprement dit: 

   Du côté IPX800, pour l'instant j'utilise un seul relai le 8ème, le but sera de fermer le circuit en connectant  les 2 cables.


    

De l'autre côté (chaudière) pas de photo, mais je dois relier les 2 cables aux bornes 4 & 5 du bornier permettant en cas de fermeture de déclencher la chaudière.


ETAPE 1 : Configuration chemin plugin (si ce n'est pas déjà fait)


    Après avoir démarré HOMEAUTOMATE, direction les paramètres pour vérifier, que le répertoire des plugins est bien renseigné (ici /var/genapp/apps/ab879da5/tmp)



ETAPE 2: Peuplement des plugins (si ce n'est pas déjà fait)

         Ce sont surtout les plugins OREGON, RFXCOM, IPX800 et HEATMANAGER qui vont nous servir.


        On remarquera un nouvel icone apparu dans le menu supérieur (extrait automatiquement des plugins).



ETAPE 3: Configuration des Plages Horaires de fonctionnement

          L'ergonomie est perfectible mais complètement fonctionnelle.




ETAPE 4: Déclaration & Démarrage du RFXCOM Ethernet

        Avec un heartBeat à 60 secondes (cycle de traitement chaque minute)
        Démarrage Automatique
        Mode Trace activé
        Mode apprentissage activé (Pas besoin de déclarer les sondes).
        IP et ports à renseigner.





               


ETAPE 5 : Déclaration de l'IPX800

Mode trace activé
On renseigne juste l'IP, L'IPX800 créera automatiquement les units de type relai au nombre de 8.





Vérification des unités :

      LE RFXCOM aura du créér les THN132 détectées, et l'IPX800 tous les relais présents sur la carte.

   

ETAPE 6 & FIN : Déclaration et configuration du Manager de température.

Le manager fonctionne avec :
  
      - Une liste de sondes en entrée (1 ou plusieurs)
            * Permettra de capter la température de la maison.
     
      - Un méthode de calcul de température : 
                    MIN  : prendra la valeur minimale de toutes les sondes.
                    MOY : fera une moyenne de toutes les sondes.
                    MAX : prendra la valeur maximale de toutes les sondes.
      
     - Une liste d'actionneurs (1 ou plusieurs).
           * Permettra d'activer la chaudière

    - Une liste de plage d'activation.
           * Permettra d'activer la température confort pendant cette période.


Comment cela fonctionne ?

     Le manager fera un getValue() sur l'objet sonde pour obtenir la température, puis s'il est en mode confort et que la température n'est pas atteinte fera un on() sur les actionneurs sinon c'est off(). L'actionneur ne sera d'autre que le relai 8 de notre IPX800.

          Il suffit donc de saisir tous les paramètres demandés et de valider.
          





         Les traces permettent de vérifier le bon fonctionnement du système :



        A noter, qu'il est possible d'ajuster les températures ou encore de forcer le chauffage pendant 2h ou 4h en utilisant l'interface NEST qui intéragit dynamiquement avec le manager.






Enfin il est possible de suivre les courbes des températures des sondes dans le temps afin de vérifier le bon fonctionnement.
Possibilité également de cumuler plusieurs Units sur le même graphique :