« Domotique et Norme X10 » : différence entre les versions
m (→Cas concret) |
Aucun résumé des modifications |
||
(17 versions intermédiaires par 6 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
= Introduction = | = Introduction = | ||
Le X10 est un protocole de communication par courant porteur qui permet de faire | Le X10 est un protocole de communication par courant porteur qui permet de faire dialoguer ensemble des équipements compatibles. Je ne réinventerai pas la roue, de très bonnes documentations existent sur le sujet, notamment celle-ci [http://www.si.ens-cachan.fr/ressource/r5/r5.htm Domotique et Norme X10]. | ||
Pour résumer très rapidement, il permet avec la mise en place d'émetteurs et de récepteurs d'automatiser des tâches de la vie quotidienne au sein de son logement (ex ouvrir les volets, fermer la veilleuse du petit dernier...) | Pour résumer très rapidement, il permet, avec la mise en place d'émetteurs et de récepteurs, d'automatiser des tâches de la vie quotidienne au sein de son logement (ex.: ouvrir les volets, fermer la veilleuse du petit dernier...) | ||
= Présentation = | = Présentation = | ||
== But recherché == | == But recherché == | ||
Le but de cet article est d'expliquer comment pouvoir commander à partir de Linux les récepteurs et de programmer l'émetteur PC vers X10 (CM11) | Le but de cet article est d'expliquer comment pouvoir commander à partir de Linux les récepteurs et de programmer l'émetteur PC vers X10 (CM11) grâce à des macros. | ||
Il existe sous Linux quelques | Il existe sous Linux quelques projets qui permettent de mettre en place une 'maison domotique', le plus complet est [http://misterhouse.net/ MisterHouse]. C'est une application complexe à mettre en oeuvre et que l'on peut plus apparenter à un logiciel pour HTPC. | ||
J'ai choisi pour ma part d'utiliser [http://heyu. | J'ai choisi pour ma part d'utiliser [http://www.heyu.org Heyu]. C'est un logiciel simple à mettre en place et à configurer et dont je vous propose de vous en expliquer l'utilisation. | ||
== Prérequis == | == Prérequis == | ||
Ligne 16 : | Ligne 16 : | ||
* un pc équipé d'un port série | * un pc équipé d'un port série | ||
* un émetteur CM11 | * un émetteur CM11 | ||
* un récepteur type | * un récepteur type AM12F | ||
A noter, il existe 2 versions de CM11, l'une USB et l'autre série, j'ai choisi d'acheter cette dernière pour être sûr de son fonctionnement avec notre OS préféré. | A noter, il existe 2 versions de CM11, l'une USB et l'autre série, j'ai choisi d'acheter cette dernière pour être sûr de son fonctionnement avec notre OS préféré. | ||
Il existe aussi plusieurs versions des modules récepteurs. | |||
AM12F: "A" pour appareil, et "F" pour france | |||
donc LM12G: "L" pour module lampe qui permet de faire des variations, "G" pour german donc module allemand. | |||
= Heyu = | = Heyu = | ||
== Installation == | == Installation == | ||
Vérifier que vous disposez de la dernière version sur le site de l'auteur : | Vérifier que vous disposez de la dernière version sur le site de l'auteur : | ||
<code>$ wget http://heyu. | <div class="code"> | ||
$ tar zxvf heyu-2.0beta.6.2.tgz | $ wget http://www.heyu.org/download/heyu-2.0beta.6.2.tgz | ||
$ cd heyu-2.0beta.6.2 | $ tar zxvf heyu-2.0beta.6.2.tgz | ||
$ ./Configure | $ cd heyu-2.0beta.6.2 | ||
$ make | $ ./Configure | ||
$ su (pour devenir root) | $ make | ||
Password : | $ su (pour devenir root) | ||
# make install | Password : | ||
mkdir -p -m 755 /usr/local/bin | # make install | ||
cp heyu /usr/local/bin | mkdir -p -m 755 /usr/local/bin | ||
chgrp root /usr/local/bin/heyu | cp heyu /usr/local/bin | ||
chmod 755 /usr/local/bin/heyu | chgrp root /usr/local/bin/heyu | ||
chown root /usr/local/bin/heyu | chmod 755 /usr/local/bin/heyu | ||
./install.sh | chown root /usr/local/bin/heyu | ||
./install.sh | |||
I did not find a Heyu configuration file. | I did not find a Heyu configuration file. | ||
Where would you like the sample Heyu configuration file installed? | Where would you like the sample Heyu configuration file installed? | ||
1. In directory /home/dimitri/.heyu/ | 1. In directory /home/dimitri/.heyu/ | ||
2. In subdirectory .heyu/ under a different user home directory | 2. In subdirectory .heyu/ under a different user home directory | ||
3. In directory /etc/heyu (for system-wide access) | 3. In directory /etc/heyu (for system-wide access) | ||
4. No thanks, I'll take care of it myself | 4. No thanks, I'll take care of it myself | ||
Choice [1, 2, 3, or 4] ? 3 | Choice [1, 2, 3, or 4] ? 3 | ||
Creating directory /etc/heyu with permissions rwxrwxrwx. | Creating directory /etc/heyu with permissions rwxrwxrwx. | ||
Adjust ownership and permissions as required. | Adjust ownership and permissions as required. | ||
The sample configuration file will be installed as /etc/heyu/x10.conf | The sample configuration file will be installed as /etc/heyu/x10.conf | ||
I will add the TTY port for your CM11 to the config file | I will add the TTY port for your CM11 to the config file | ||
Specify /dev/ttyS0, /dev/ttyS1, etc. | Specify /dev/ttyS0, /dev/ttyS1, etc. | ||
To which port is the CM11 attached? | To which port is the CM11 attached? | ||
/dev/ttyS0 | /dev/ttyS0 | ||
</ | </div> | ||
== Configuration == | == Configuration == | ||
Comme nous avons pu le voir précédemment, les fichiers de configuration vont se trouver dans le répertoire | Comme nous avons pu le voir précédemment, les fichiers de configuration vont se trouver dans le répertoire choisi à l'étape d'installation, ici /etc/heyu. | ||
Le fichier de configuration principal est heyu.conf | Le fichier de configuration principal est heyu.conf | ||
<code>TTY /dev/ttyS0 | <div class="code"> | ||
HOUSECODE A | TTY /dev/ttyS0 | ||
LOG_DIR NONE | HOUSECODE A | ||
SCRIPT_MODE SCRIPTS | LOG_DIR NONE | ||
SCHEDULE_FILE x10.sched | SCRIPT_MODE SCRIPTS | ||
MODE COMPATIBLE | SCHEDULE_FILE x10.sched | ||
PROGRAM_DAYS 366 | MODE COMPATIBLE | ||
COMBINE_EVENTS YES | PROGRAM_DAYS 366 | ||
COMPRESS_MACROS NO | COMBINE_EVENTS YES | ||
#LONGITUDE W079:49 # [degrees:minutes East or West of Greenwich] | COMPRESS_MACROS NO | ||
#LATITUDE N36:04 # [degrees:minutes North or South of equator] | #LONGITUDE W079:49 # [degrees:minutes East or West of Greenwich] | ||
DAWN_OPTION FIRST | #LATITUDE N36:04 # [degrees:minutes North or South of equator] | ||
DUSK_OPTION FIRST | DAWN_OPTION FIRST | ||
MIN_DAWN OFF | DUSK_OPTION FIRST | ||
MAX_DAWN OFF | MIN_DAWN OFF | ||
MIN_DUSK OFF | MAX_DAWN OFF | ||
MAX_DUSK OFF | MIN_DUSK OFF | ||
REPL_DELAYED_MACROS YES | MAX_DUSK OFF | ||
WRITE_CHECK_FILES YES | REPL_DELAYED_MACROS YES | ||
</ | WRITE_CHECK_FILES YES | ||
</div> | |||
Le port ttyS0 doit pouvoir être utilisé par tous les utilisateurs afin de communiquer avec le CM11 : | Le port ttyS0 doit pouvoir être utilisé par tous les utilisateurs afin de communiquer avec le CM11 : | ||
<code># /bin/chmod a+rw /dev/ttyS0 | <div class="code"># /bin/chmod a+rw /dev/ttyS0 | ||
</ | </div> | ||
== Petit test == | == Petit test == | ||
Tout d'abord, chaque module est identifié par un code Maison (de A à P) et un code Unité (de 1 à 16). Cette identification va permettre de commander le récepteur de la façon suivante : | Tout d'abord, chaque module est identifié par un code Maison (de A à P) et un code Unité (de 1 à 16). Cette identification va permettre de commander le récepteur de la façon suivante :<br> | ||
<code>$ /usr/local/bin/heyu on A1 | La commande | ||
</ | <div class="code">$ /usr/local/bin/heyu on A1 | ||
</div> | |||
permet d'allumer le récepteur A1. | permet d'allumer le récepteur A1. | ||
Et si tout va bien, l'équipement électrique connecté sur le module doit s'allumer. | Et si tout va bien, l'équipement électrique connecté sur le module doit s'allumer. | ||
Vous me direz, | Vous me direz : "Ouais, il est gentil mais cela n'a pas beaucoup d'intérêt". Mais ce n'est que le début. | ||
== Cas concret == | == Cas concret == | ||
A présent que nous avons validé le bon fonctionnement entre | A présent que nous avons validé le bon fonctionnement entre Heyu et le CM11, passons à un cas concret. | ||
Disons que nous voulons que | Disons que nous voulons que des volets électriques s'ouvrent à l'aube et se ferment au coucher du soleil. | ||
Pour cela il faut acquérir des modules SW10 que l'on branche en lieu et place des interrupteurs classiques | Pour cela il faut acquérir des modules SW10 que l'on branche en lieu et place des interrupteurs classiques montée/descente. Pour simplifier les choses, nous leur affecterons le même code Maison/Unité A2. | ||
Un nouveau fichier permet de créer ce scénario /etc/heyu/x10.sched : | Un nouveau fichier permet de créer ce scénario /etc/heyu/x10.sched : | ||
<code>timer smtwtfs 01/01-12/31 dusk 23:00 allumer null | <div class="code"> | ||
timer smtwtfs 01/01-12/31 dawn 00:00 eteindre null | timer smtwtfs 01/01-12/31 dusk 23:00 allumer null | ||
macro allumer 0 on a2 | timer smtwtfs 01/01-12/31 dawn 00:00 eteindre null | ||
macro eteindre 0 off a2 | macro allumer 0 on a2 | ||
</ | macro eteindre 0 off a2 | ||
</div> | |||
smtwtfs correspond au jour de la semaine (Sunday, Monday...) | smtwtfs correspond au jour de la semaine (Sunday, Monday...) | ||
Ligne 108 : | Ligne 116 : | ||
dusk au lever du soleil et dawn au coucher du soleil | dusk au lever du soleil et dawn au coucher du soleil | ||
Ces 2 dernières variables sont calculées en fonction des coordonnées géographiques ( | Ces 2 dernières variables sont calculées en fonction des coordonnées géographiques (longitude/latitude) que l'on indique dans le fichier /etc/heyu/x10.conf. | ||
Pour vérifier les heures calculées, | Pour vérifier les heures calculées, utiliser la commande suivante : | ||
<code>$/usr/local/bin/heyu utility suntable | <div class="code">$/usr/local/bin/heyu utility suntable | ||
</ | </div> | ||
Une fois le fichier complété, il faut l'envoyer à l' | Une fois le fichier complété, il faut l'envoyer à l'émetteur CM11, pour cela : | ||
<code>$/usr/local/bin/heyu upload | <div class="code">$/usr/local/bin/heyu upload | ||
</ | </div> | ||
Les directives du fichier x10.sched sont envoyées au CM11 qui | Les directives du fichier x10.sched sont envoyées au CM11 qui exécutera l'ensemble des macros de façon autonome. | ||
= Pour finir = | = Pour finir = | ||
Les X10 et Heyu offrent de nombreuses possibilités dont je ne vous ai fait découvrir qu'une mince partie. | |||
N'hésitez pas à user et abuser des man heyu et autres fichiers sample disponibles avec ce logiciel. | N'hésitez pas à user et abuser des man heyu et autres fichiers sample disponibles avec ce logiciel. | ||
{{Copy|01/09/2006|D. Clatot|CC-BY-SA}} | {{Copy|01/09/2006|D. Clatot|CC-BY-SA}} | ||
{{Matériel}} |
Dernière version du 29 décembre 2023 à 10:38
Introduction
Le X10 est un protocole de communication par courant porteur qui permet de faire dialoguer ensemble des équipements compatibles. Je ne réinventerai pas la roue, de très bonnes documentations existent sur le sujet, notamment celle-ci Domotique et Norme X10.
Pour résumer très rapidement, il permet, avec la mise en place d'émetteurs et de récepteurs, d'automatiser des tâches de la vie quotidienne au sein de son logement (ex.: ouvrir les volets, fermer la veilleuse du petit dernier...)
Présentation
But recherché
Le but de cet article est d'expliquer comment pouvoir commander à partir de Linux les récepteurs et de programmer l'émetteur PC vers X10 (CM11) grâce à des macros. Il existe sous Linux quelques projets qui permettent de mettre en place une 'maison domotique', le plus complet est MisterHouse. C'est une application complexe à mettre en oeuvre et que l'on peut plus apparenter à un logiciel pour HTPC. J'ai choisi pour ma part d'utiliser Heyu. C'est un logiciel simple à mettre en place et à configurer et dont je vous propose de vous en expliquer l'utilisation.
Prérequis
Le matériel minimum à acquérir pour tester son utilisation est :
- un pc équipé d'un port série
- un émetteur CM11
- un récepteur type AM12F
A noter, il existe 2 versions de CM11, l'une USB et l'autre série, j'ai choisi d'acheter cette dernière pour être sûr de son fonctionnement avec notre OS préféré.
Il existe aussi plusieurs versions des modules récepteurs. AM12F: "A" pour appareil, et "F" pour france donc LM12G: "L" pour module lampe qui permet de faire des variations, "G" pour german donc module allemand.
Heyu
Installation
Vérifier que vous disposez de la dernière version sur le site de l'auteur :
$ wget http://www.heyu.org/download/heyu-2.0beta.6.2.tgz $ tar zxvf heyu-2.0beta.6.2.tgz $ cd heyu-2.0beta.6.2 $ ./Configure $ make $ su (pour devenir root) Password : # make install mkdir -p -m 755 /usr/local/bin cp heyu /usr/local/bin chgrp root /usr/local/bin/heyu chmod 755 /usr/local/bin/heyu chown root /usr/local/bin/heyu ./install.sh
I did not find a Heyu configuration file. Where would you like the sample Heyu configuration file installed? 1. In directory /home/dimitri/.heyu/ 2. In subdirectory .heyu/ under a different user home directory 3. In directory /etc/heyu (for system-wide access) 4. No thanks, I'll take care of it myself Choice [1, 2, 3, or 4] ? 3 Creating directory /etc/heyu with permissions rwxrwxrwx. Adjust ownership and permissions as required. The sample configuration file will be installed as /etc/heyu/x10.conf
I will add the TTY port for your CM11 to the config file Specify /dev/ttyS0, /dev/ttyS1, etc. To which port is the CM11 attached? /dev/ttyS0
Configuration
Comme nous avons pu le voir précédemment, les fichiers de configuration vont se trouver dans le répertoire choisi à l'étape d'installation, ici /etc/heyu. Le fichier de configuration principal est heyu.conf
TTY /dev/ttyS0 HOUSECODE A LOG_DIR NONE SCRIPT_MODE SCRIPTS SCHEDULE_FILE x10.sched MODE COMPATIBLE PROGRAM_DAYS 366 COMBINE_EVENTS YES COMPRESS_MACROS NO #LONGITUDE W079:49 # [degrees:minutes East or West of Greenwich] #LATITUDE N36:04 # [degrees:minutes North or South of equator] DAWN_OPTION FIRST DUSK_OPTION FIRST MIN_DAWN OFF MAX_DAWN OFF MIN_DUSK OFF MAX_DUSK OFF REPL_DELAYED_MACROS YES WRITE_CHECK_FILES YES
Le port ttyS0 doit pouvoir être utilisé par tous les utilisateurs afin de communiquer avec le CM11 :
Petit test
Tout d'abord, chaque module est identifié par un code Maison (de A à P) et un code Unité (de 1 à 16). Cette identification va permettre de commander le récepteur de la façon suivante :
La commande
permet d'allumer le récepteur A1. Et si tout va bien, l'équipement électrique connecté sur le module doit s'allumer. Vous me direz : "Ouais, il est gentil mais cela n'a pas beaucoup d'intérêt". Mais ce n'est que le début.
Cas concret
A présent que nous avons validé le bon fonctionnement entre Heyu et le CM11, passons à un cas concret. Disons que nous voulons que des volets électriques s'ouvrent à l'aube et se ferment au coucher du soleil. Pour cela il faut acquérir des modules SW10 que l'on branche en lieu et place des interrupteurs classiques montée/descente. Pour simplifier les choses, nous leur affecterons le même code Maison/Unité A2.
Un nouveau fichier permet de créer ce scénario /etc/heyu/x10.sched :
timer smtwtfs 01/01-12/31 dusk 23:00 allumer null timer smtwtfs 01/01-12/31 dawn 00:00 eteindre null macro allumer 0 on a2 macro eteindre 0 off a2
smtwtfs correspond au jour de la semaine (Sunday, Monday...)
01/01 - 12/31 à la période d'exécution souhaitée
dusk au lever du soleil et dawn au coucher du soleil
Ces 2 dernières variables sont calculées en fonction des coordonnées géographiques (longitude/latitude) que l'on indique dans le fichier /etc/heyu/x10.conf.
Pour vérifier les heures calculées, utiliser la commande suivante :
Une fois le fichier complété, il faut l'envoyer à l'émetteur CM11, pour cela :
Les directives du fichier x10.sched sont envoyées au CM11 qui exécutera l'ensemble des macros de façon autonome.
Pour finir
Les X10 et Heyu offrent de nombreuses possibilités dont je ne vous ai fait découvrir qu'une mince partie. N'hésitez pas à user et abuser des man heyu et autres fichiers sample disponibles avec ce logiciel.
Copyright
© 01/09/2006 D. Clatot
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 4.0 : https://creativecommons.org/licenses/by-sa/4.0/ |