Nombreux aujourd’hui sont ceux équipés de nombreux équipements nécessitant tous une télécommande, regardez votre table basse de salon et comptez le nombre de télécommandes… 1, 2, 3 …5 …C’est ce constat qui m’a amené à trouver une solution autre que la télécommande universelle, pas toujours compatible avec l’ensemble des équipements, et puis g33k dans l’âme la solution était trop simple.
Le projet en une phrase : interconnecter tout équipement ayant une liaison sans fil, filaire et autres !
La solution en une phrase : un ordinateur capable de recevoir et transmettre le maximum de protocole de communication connectable.
Mon projet est encore en phase de travaux et d’expérimentations, bien que je l’utilise au quotidien, j’estime le pourcentage d’avancement à 85%.
Pour commencer un rapide tour des équipements à ma disposition :
- Un émetteur, récepteur infrarouge universel : USB-UIRT (permet de piloter le téléviseur, le vidéo projecteur, l’ampli)
- Un kit X10 et PLCBUS, du courant porteur pour les lampes (permet de piloter l’éclairage)
- Une montre de chez Texas Instrument, la eZ430-Chronos
- Une clé 1-wire et divers capteurs de température de type DS18B20
- Une machine sous Ubuntu faisant office de « serveur »
- Une tablette Asus Transformer (Honeycomb) et une tablette Archos 101 (Android 2.2)
- Divers équipements, téléviseurs Samsung 82cm et Philips 82cm, vidéoprojecteur Optoma HD65, ampli Onkyo, un décodeur IPTV etc …
Sur le serveur j’ai programmé un petit applicatif qui écoute sur un Socket les messages provenant des tablettes Android. En fonction du bouton appuyé, l’action souhaité est déclenchée en exécutant un script Perl.
Exemple de script Perl pour allumer la lampe du salon par X10 transmetteur CM15 Pro et le récepteur LM12 :
#!/usr/bin/perl -w use Fcntl; sysopen( CM15A, "/dev/cm15a0", O_RDWR |O_NOCTTY | O_NONBLOCK ) || die "Module cm15a.ko non charge $!"; syswrite CM15A, pack( "CC", 4, 0x61 ), 2; sleep 1; syswrite CM15A, pack( "CC", 6, 0x62 ), 2; # ON close( CM15A ); Exemple de script Perl pour une commande infrarouge par USB-UIRT (allumer le vidéoprojecteur) : #!/usr/bin/perl `irsend SEND_ONCE OPTOMA POWER`; exit();
Voici une petite vidéo de la partie commande du téléviseur avec la montre et la tablette tactile :
*Fonction de la montre (eZ430 Chronos) :
- rotation vers l’avant = augmenter le volume
- rotation vers l’arrière = diminuer le volume
- bouton 1 = changer le canal du décodeur vers le haut
- bouton 2 = changer le canal du décodeur vers le bas
- bouton 3 = allumer/éteindre la lampe du salon
Fonction de la tablette (Asus transformer TF101G et Archos 101) :
- allumer/éteindre l’ensemble des équipements (tv, vidéo projecteur, ampli, décodeur tv …)
- piloter l’ensemble des équipements (volume +/-, changer le canal, etc …)
- allumer/éteindre les lampes (chambre et salon)
Vidéo de la mise sous et hors tension de lampe du salon avec la montre puis la tablette :
*Captures
Quelques captures de l’interface des tablettes sous Android (marche aussi sur les téléphones portables sous Android) le graphisme est provisoire.
Interface principale – Pilote la mise sous et hors tension Téléviseur/Vidéo projecteur/Ampli/Lampe Salon et Chambre
Interface de l’ampli Onkyo – Fonction les plus utilisées de l’ampli
Interface de la box IPTV – Fonction les plus utilisées
La partie programmation :
Netbeans – Applicatif « serveur »
Eclipse – Applicatif « Android »
Munin pour le relevé des températures en 1-wire en modifiant le câblage des prises téléphonique .
Projet : Domotique… du rêve à la (presque) réalité.
Article original publié sur Semageek® | Actualités High Tech, Robot, Électronique, DIY et carte Arduino.