Projet xPL-pyHAL, un cerveau xPL, Episode 1

Si vous suivez ce blog et ses derniers billets (grand bien vous en fasse :) ), vous savez que je me consacre de plus en plus à la domotique (pour diverses raisons dont vous trouverez l’explication dans cet historique justement).

En plus de cette passion pour la domotique, je me suis pris d’un grand intérêt pour le protocole xPL.
(et de nouveau je vous invite à lire l’excellent billet de Thibault sur son blog).
Qui dit xPL, dit forcément une lecture soutenue des différentes pages du projet xPL et de la rencontre avec ses différents acteurs.
D’ailleurs, mon engouement sur le sujet vient aussi beaucoup de l’activité française dans ce domaine et des contacts enrichissants et passionnants avec les passionnés de Domotique en France, que je salue au passage, dont le dévouement et l’implication font que cette communauté est a elle seule, une raison de les rejoindre.

Bref, comme vous l’avez vu, j’ai commencé a poindre mon nez en fournissant un premier client xPL écrit en python, qui, à ma grande surprise, a reçu un accueil très favorable et enthousiaste (au point d’être référencé dans les développeurs xPL du projet sur la page d’accueil !!!).
J’avoue avoir était grandement surpris et je remercie les agitateurs du projet pour leur soutien.
D’un autre côté, cela vous met une pression grave :) (en plus d’une demi-molle je l’avoue…)

Dans cette progression personnelle que j’ai, j’ai donc commencé à pondre du code (et là, les gens qui me connaissent bien doivent halluciner :D ).
Le langage de développement qui m’a très vite attiré est bien sûr Python (loin de moi l’idée de lancer un troll sans fin sur les remarques « mais t’es nul Java c’est mieux! », parce que bon, java, euh, comment dire… (bah non je vais rien dire mais j’en pense pas moins :p ))
Alors attention, je ne suis pas développeur du tout, mon métier c’est le système/réseau (plutôt réseau d’ailleurs), et donc je conçois totalement d’être hué, haï, conspué et dénigré par des « vrais » développeurs (quand ils existent), et si j’ai fait le choix de Python comme langage de prédilection, c’est qu’il répond à mes attentes, qu’il est très puissant, et que j’aime bien les serpents.
S’tout.

Cela étant dit, pour en revenir à nos moutons, dans une architecture xPL, un des éléments qui peut s’avérer important est ce que l’on appelle le xPLHal.
Vous en trouvez l’explication ici .
C’est un « moteur » central xPL, il écoute les messages transitant dans les hubs xPL et exécutent des actions en conséquence de ses messages ou suivant une programmation horaire définie par l’utilisateur.
Pour contrôler ce moteur, il y a un xPL-HalManager qui est l’interface entre l’utilisateur et le xPLHal.
Alors bien évidemment, cet xPL-Hal n’est pas obligatoire, beaucoup utilisent des scripts maison (surtout dans le monde Linux), ou autres bidouilles.
Sous windows, vous trouverez votre bonheur, mais sous Linux, c’est un peu le désert, a part un XPLHAL java plus maintenu depuis 2008.

Et en python, rien… (a part le projet Domogik bien sûr).
Parent pauvre de la domotique, Linux est durement supporté par une poignée de personnes face aux mastodontes Windoziens (aka Homeseer bien sûr) et c’est bien dommage au regard des gens qui sont actifs dans ce milieu.

Je me suis donc mis en tête et en cheval de bataille sur ses prochains mois, d’écrire un xPLHal en python.
La charge du projet est importante si l’on considère les pré-requis, et peut-être même insurmontable, mais après tout pourquoi pas.
Déjà cela m’obligera a me familiariser avec python, avec xPL, et surtout, le plus important à mes yeux, d’essayer d’offrir quelque chose de plus à la communauté.

Dont acte, début du projet xPL-pyHAL.

J’espère vous donner une première ébauche de ce que j’ai écrit, mais les premiers pas sont encourageants surtout quand on apprend le langage en même temps :)
Je suis parti pour l’instant sur une configuration à base de fichiers YAML (un simple fichier typé par module à surveiller dans lequel vous spécfifiez les règles a déclencher quand une action sur le module est détectée) et qui pour les premiers tests marchent plutôt bien (action de type HEYU, stockage dans un Memcached ou message de type Notifry (clin d’oeil a Thibault au passage pour son excellent xPL-PushMsg ;) ) etc…) bref, ça avance et j’espère vous détailler plus tard un peu plus de ce projet qui me tient à coeur pour 2012.

Le projet sera hébergé ici : http://code.google.com/p/guiguiabloc/ (avec la création d’un nouveau logo pour l’occasion :D )

En attendant, je vous souhaite à tous d’excellentes fêtes de Noël et de fin d’année :D

Ce billet a été posté dans domotique et taggé , , , . Bookmark ce permalink.

16 commentaires sur “Projet xPL-pyHAL, un cerveau xPL, Episode 1

  1. Bon courage dans cette démarche. Quelques compléments d’infos par rapport à ton billet :
    xPL4Java, bien que n’évoluant plus est très stable et fonctionnel (je l’utilise en attendant de voir ce que proposera Domogik en terme de scénarios).
    Si tu utilisres YAML, saches que le projet xPL Perl de Beanz contient déjà un bon nombre de descriptifs de messages xPL en YAML…si ça peut aider :-)

  2. Et j’ajouterais que l’engouement français pour xPL actuellement a été bien remarqué au sein du forum des développeurs, alors bravo à tous et très bonnes fêtes de fin d’année.

  3. Merci clinique :)
    rien a redire effectivement sur xPL4Java qui est stable (j’ai juste pas accroché :p)
    Ah c’est une bonne chose cela pour les YAML, merci pour l’info :D
    C’est vrai que la french-touch secoue le forum :D
    Excellentes fêtes à toi :)

  4. Je ne suis pas sûr que python soit le langage de choix pour une application orienté réseau. ça fera le boulot et sera « accessible », mais as-tu regardé du côté d’Erlang pour ce genre d’application ?

  5. Erlang me parait un peu lourd pour un traitement domestique :D
    et xPL se basant principalement sur des flux UDP, on peut considérer que la couche réseau est faillible ;)
    Peut-être dans une prochaine vie :p

  6. Je suis ce blog depuis un certains temps.
    La je me pose une question bete, pourquoi ne participes tu pas au dev de domogik. (a moins que ce ne soit deja le cas).

  7. Ce n’est pas du tout une question bête :)
    J’y ai pensé (je cotoie parfois les membres du projet) mais je ne m’estime pas avoir le niveau pour rejoindre l’équipe (avis personnel bien sûr).
    Ensuite, Domogik est une solution « tout-en-un » qui ne répond pas a mes attentes de « geek ». Pour l’instant, je préfère offrir et utiliser des modules indépendants et autonomes que de devoir gérer un ensemble de solution packagé. Cela s’intègre plus facilement au système de domotique que tout à chacun met en place par brique.
    Je n’ai pas vocation ni volonté d’offrir une alternative a Domogik, ce n’est pas du tout le but, mais plutot d’avoir des petits scripts indépendants que l’on peut greffer a son environnement.
    Il est bien sur évident qu’une fois que j’aurais bien avancé en développement et fait le tour de modules indépendants, je me ferais une joie de rejoindre l’équipe pour ce projet que j’estime beaucoup.

  8. Hellooo,
    Quand je vois « C’est un « moteur » central xPL, il écoute les messages transitant dans les hubs xPL et exécutent des actions en conséquence de ses messages ou suivant une programmation horaire définie par l’utilisateur. » ça me fait furieusement penser à de l’événementiel… Et… Ho… mais, mais, c’est que je suis un acharné Javascript, moi, au fait !

    Et donc…

    Est-ce que ça te gênerai que je m’inspire fortement de ton taf pour commencer un truc, pas sûr d’aboutir, mais bon histoire de trifouiller un peu, en JS ?

    Parce que bon, j’ai vu des gros © dans les commentaires de ton app et je suis plus habitué aux licences type GPL/BSD/Apache/WTFPL…

  9. Même si je vois pas ce que tu vas pouvoir faire avec, trifouille donc :p
    Tous mes codes sont sous licence GPL v2 (indiqué dans la page d’accueil google code) et tu trouveras des (c) dans tout les codes sources GNU :p (regarde en pas des pages de la FSF par exemple ;) ). Un (c) indique justement qu’une licence est applicable, GPL v2 dans mon cas.

  10. J’adore ton site mais l’écriture en blanc sur fond noir à 1h00 du mat, j’ai trop de mal ;)

  11. Généralement, il me faut 100 lignes de code pour passer une 2 commandes dans un script. Mais je veux bien essayer de jouer avec toi à Xpl et Python :->