xPL-PyHAL, le centralisateur xPL
xPL-PyHAL est un programme qui se greffe à votre bus xPL et écoute en permanence les messages qui y transitent.
Son rôle est d’éxécuter une action pour un module que vous allez définir dans un fichier texte tout simple quand il verra passer un message xPL lié a ce module.
Les ordres sont à déposer dans le répertoire « yamlrepo » sous la forme de fichier YAML.
Le fichier doit porter l’extension « .yaml ».
Exemple d’application :
Je souhaite allumer le relais 1 du boîtier ipx800 quand j’appuie sur l’interrupteur CHACON.
Il s’agit d’un ordre de type « HomeEasy » (schéma homeeasy.basic) à destination du client xPL-ipx800.
Le fichier YAML aura la forme suivante (interrupteur.yaml) :
ACTION: command
MODULE: "0x4b92ba"
UNIT: "9"
TARGETXPL: "ipx800"
TARGETMODULE: 2
ACTION : c’est une commande à exécuter
MODULE: le module qui initie l’ordre (ici l’adresse de l’interrupteur CHACON)
UNIT : l’unité de l’interrupteur
TARGETXPL : le client xPL qui doit exécuter l’ordre (ici le client xPL-ipx800)
TARGETMODULE: le relais cible a commander sur l’ipx800
Autre exemple, en appuyant sur l’interrupteur, je veux allumer une lampe x10 référencée comme module A2. Le fichier interrupteur.yaml contiendra les valeurs suivantes:
ACTION: command
MODULE: "0x54cd16"
UNIT: "10"
TARGETXPL: "heyu"
TARGETMODULE: a2
Description et configuration possible
Une fois le fichier xPL-PyHAL.tgz décompressé, vous trouverez différentes classes et modules python dont je vais détailler le rôle.
Il s’agit de l’executable qui lancera le centralisateur xPL-PyHAL.
- Configuration : Aucune
A lancer depuis le répertoire du centralisateur :
python xPL-PyHAL start (lance le démon)
python xPL-PyHAL stop (arrête le démon)
python xPL-PyHAL console (lance le programme dans la console sans le démoniser. CTRL-C pour l’arrêter)
Le programme principal d’xPL-PyHAL.
- Configuration : Vous pouvez passer en mode debug (sortie dans le fichier logxplhal.log et dans la console si vous l’avez démarré dans ce mode)
# Debug : set True or False
debug = False
Classe permettant de faire tourner xPL-PyHAl en tâche de fond (démon).
- Configuration : Aucune
Classe permettant d’interagir avec un serveur Memcached
- Configuration : l’adresse IP et le port du serveur Memcached (localhost:11211 par défaut)
def __init__(self, hostname="127.0.0.1", port="11211")
Classe permettant d’envoyer des notifications vers le service PushingBox
- Configuration : Aucune
Classe pemettant de gérer les messages xPL
- Configuration : Aucune
Les fichiers de configuration YAML
Les actions qui doivent être exécutées par xPL-PyHAL doivent être déposées dans le répertoire « yamlrepo ».
Le fichier texte doit avoir l’extension .yaml
Il contient les entrées suivantes :
- L’action à réaliser (au choix)
ACTION : message | store | command | log
message : envoie une notification
store : stock une valeur quelque part
command : execute un ordre xPL
log : écrit dans un fichier log
- l’adresse du module qui déclenchera l’action (obligatoire)
MODULE: « xxxxxxx »
- l’unité du module qui déclenchera l’action (si applicable)
UNIT: « x »
- La cible qui doit être commandée
TARGETXPL: « xxxxx »
Vous trouverz des exemples dans le répertoire yamlrepo (extension .sample et dans le fichier YAML.FORMAT)
Quelques exemples :
- Stocker une valeur « alertemode » avec la clé « on » pendant 60 secondes dans un serveur Memcached quand le module « 0×4b99bb », unité 9 se déclenche
ACTION: store
TARGETXPL: memcached
MODULE: "0x4b99bb"
UNIT: "9"
KEY: "alertemode"
VALUE: "on"
TIME: "60" (défaut 900)
- Envoyer une notification PushingBox quand le module « 0×4b99bb », unité 9, se déclenche
ACTION: message
TARGETXPL: pushingbox
MODULE: "0x4b99bb"
UNIT: "9"
KEY: "v9999AAAAEEEE4"
J’espère que les exemples fournis vous aideront à créer vos propres fichiers YAML. Bien sûr, il peut y avoir plusieurs fichiers YAML pour un même module.
La prise en compte se fait à chaud, inutile de relancer le démon xPL-PyHAL.