Webx – Un projet domotique pas comme les autres

Vous allez vous dire, encore un projet domotique ! Cool, comme ça on a plus de choix ! Et vous avez raison :-)

Le projet Webx est né en 2009, de l’envie de créer un système capable de piloter la technologie que j’avais à ma disposition (X10, CM15). Et je me suis dit, mince… Comment vais-je faire pour collecter les évènements des autres modules que je n’avais pas encore ? Des sondes de température, des détecteurs de mouvement, etc… Il me fallait un module émetteur/récepteur. Le rfxcom LAN semblait la bonne carte puisqu’elle intégrait un nombre considérable de technologies. J’ai fait  l’acquisition de la V2 (carte réceptrice) puis la v3 qui possédait un émetteur, pratique pour les modules chacon (qui sont à des prix abordables). Sans oublier le serveur, un ordinateur basse consommation : plug-computer… J’ai acheté un guruPlug de chez marvel. Il a brulé, le pauvre a surchauffé à cause d’un problème d’aération… j’ai alors opté pour un sheevaplug très discret 512Mb de RAM + 256Mb de Flash + une carte usb de 2Go.

Puis au fil du temps, Webx a évolué pour être plus modulaire, plus évolutif… Correction de bug sur correction de bug, le cahier des charges a changé, le choix des technologies s’est étoffé, l’interface web a mûri, la base de données aussi. Bref, voici le travail que j’ai réalisé et que je dépose sous licence GNU GPL pour qu’il appartienne à la communauté. C’est grâce à elle qu’il est né…

Wiseflat

Ci dessous vous trouverez dans le détail ce que contient webx et ce qu’il peut faire pour vous.

Le cahier des charges

  • un LAMP (Linux Apache Mysql PHP)
  • une interface web comme tableau de bord et centre de configuration du système domotique
  • une gestion de mes scénarios de vie (alarme, chauffage, luminaire, arrosage, volets roulants, etc)
  • une base de données pour conserver les évènements de mes modules, configurations, scénarios
  • un système d’interconnexion des différentes technologies appartenant au monde de la domotique (xPL)
  • La possibilité d’interagir avec autre chose que des modules domotiques (xBMC, NAS, playlist musicale, autre serveur sous linux)
  • Recevoir des alertes en cas d’anomalie par mail, push-mail, sms (en cours de réalisation)

Les briques logicielles

Le projet xPL : Il s’agit d’un framework écrit en Perl. Il contient une collection de plugins capables de se connecter entre eux grâce à un hub. Tous les messages provenant des plugins sont traduits et formatés pour être exploitable sur ce réseau xPL via le hub. L’avantage de cette approche rend le système hétérogène de par les plugins que l’on utilise mais surtout d’avoir un système décentralisé. Certains plugins envoient les évènements sur le hub xPL. D’autres plugins exécutent des actions si un évènement spécifique apparaît.

Les plugins xPL renvoient les évènements provenant des modules domotiques (ix800, rfxcom, cm15A) en radio fréquence, courant porteur ou via le LAN. Le hub permet des plugins « maisons » d’intercepter ces évènements pour insérer en base de données ou bien déclencher des actions spécifiques (liés à des scénarios). Pour le moment j’utilise quelques plugins :

  • xpl-hub, qui interconnecte les plugins
  • xpl-rfxcom, qui collecte les évènements radio provenant du RFXCOM en version LAN
  • xpl-sql-webx qui enregistre les évènements en base de données mysql
  • xpl-events qui déclenche des actions en fonction de mes scénarios
  • xpl-ipx800 pour collecter les états des entrées/sorties et pour les piloter
  • xpl-send qui permet de piloter d’autres cartes qui ont des « schémas » spécifiques (ex :arduino)

Voici la liste des plugins fournis par le projet xPL-perl mais je ne les ai pas encore tous testés :

xpl-apcups xpl-currentcost xpl-gpower xpl-linux xpl-owfs xpl-send.sh xpl-viom
xpl-bluetooth xpl-datetime xpl-hddtemp xpl-linux-cpu xpl-ownet xpl-rrd xpl-smart xpl-w800
xpl-bridge xpl-dawndusk xpl-heyu xpl-lirc xpl-packet-trace xpl-rrd-graphs xpl-sms-send xpl-wol
xpl-clock xpl-dg834 xpl-heyu-helper xpl-logger xpl-perl-setup xpl-send xpl-sql-logger xpl-xosd
xpl-cm15a xpl-dmx xpl-hub xpl-monitor xpl-rfxcom xpl-tcphelp xpl-xvkbd
xpl-config xpl-easydaq xpl-jabber xpl-mpd xpl-rfxcom-rx xpl-send.c xpl-tty-tcp 
xpl-ctx35 xpl-fdnotify xpl-lcdproc xpl-mythtv xpl-rfxcom-tx xpl-sender xpl-udin

xPL est LE réseau qui permet à webx de communiquer. Et c’est grâce à lui qu’il est très souple et évolutif… Les ordres envoyés depuis l’interface de gestion sont en fait des commandes xPL.

L’interface de gestion : Pour administrer le système domotique, la solution retenue est une composition dans l’air du temps

  • Une interface HTML/javascript développée en Jquerymobile (compatible desktop, tablette, smartphone)
  • Une api RESTFUL nommée Slim Framework, permettant au client de faire des requêtes Ajax en web services.
  • Une base de données mysql pour stocker les évènements, les paramétrages, les scénarios, etc

Le matériel

Webx gère les technologies suivantes (en bleue ce sont les technologies que j’ai eu l’occasion de tester chez moi) :

RFXCOM version LAN
CM15 – Marmitek

IPX800 v2/v3 – GCE Electronic
arduino (configuration un peu spéciale qu’il me reste à valider)

Advisen
ANSLUT
arc
ByeByeStandBy
Chacon (KCT-510, 54781)
Digimax
DIO
Domia
DomiaLite
Duwi
ELRO AB60
flamingo
harrison
he105
HomeEasy
Intertechno
KlikAanKlikUit
koppla
Mertik-Maxitrol
NEXA
Oregon Scientific (THGR-228N, WTGR800)
Proove
RFXLAN I/O lines
RFXMeter
RFXSensor
rts10
Visonic PowerCode
waveman
X10 (LM12, AM12, UM7206)
X10 Security (SD90, SD18)

La prochaine technologie à intégrer sera le Z-wave

Z-wave

Les avantages

Le grand avantage qu’a Webx par rapport à d’autres solutions (boîtiers prêts à l’emploi, par exemple) c’est qu’il n’est pas conçu pour fonctionner avec des technologies spécifiques dont les protocoles sont occultes! C’est une boite à outils. Si une autre technologie devient intéressante, il faut qu’elle puisse y être intégrée.

Webx n’est pas une usine à gaz avec une foultitude de plugins. Il ne récupère pas les flux RSS, ni les mails, il est orienté confort et sécurisation de l’habitat: il pourrait presque faire le café si on court-circuite l’interrupteur de la cafetière (une senseo serait un must). L’interface web est faite pour configurer ses modules et ses scénarios, puis se faire oublier. Les notifications sont là pour nous rappeler qu’elle existe…

Webx est un programme que l’on héberge chez soi et où l’on reste pleinement propriétaire des données de notre installation domotique. Il n’y a pas de collecte d’informations par une entreprise extérieure.

C’est une solution (quand même on peut le dire) pour geek, puisqu’elle pourra permettre à chacun de développer ses scripts PHP, shell, python (et bien plus) et de les faire exécuter lors du déclenchement d’un scénario. Que l’on ait une squeezebox, un serveur xBMC, un NAS, le freeplayer de la Freebox, l’idée est de pouvoir leur envoyer des ordres. C’est à la fois inutile et indispensable ;-)… Cette partie est en cours d’implémentation.

Il n’y a pas d’application à télécharger sur les markets. L’application fonctionne sur un serveur web. Elle est compatible desktop/smartphone/tablette.

Pour ceux qui ont 20 interfaces web de gestion chez eux (celle du NAS, jdownloader, sabnzb, la carte IPX800, le blog perso avec l’album photo pour la famille, etc) et qui sont sensibles à la sécurité, tout peut être masqué derrière un simple reverse proxy. centraliser l’accès à ses « webapp ». De cette manière le contrôle d’accès se fait en un seul point d’entrée pour accéder à tout et seul serveur à sécuriser…

L’API RESTFUL permet de recevoir des requêtes HTTP sans passer par le client. On peut imaginer vouloir piloter webx via un autre biais (système de reconnaissance vocal par exemple). Mon API devra évoluer et les méthodes se standardiser

Quelques internautes ont créé leurs plugins xPL. On trouve même un plugin xPL pour piloter la Zibase ! Comme je n’ai pas de zibase je n’ai pas encore eu l’occasion de tester.

J’aimerais bien installer ce projet sur mon NAS synology… Sur certains forums on trouve comment intaller le projet xPL-perl, pour les autres briques logicielles ça ne devrait pas être trop compliqué.

Conclusion et retour d’expériences

Pour finir cette présentation, je tiens à dire que je suis très content de m’être investi dans ce projet personnel. Etre architecte, c’est une expérience très excitante. Malgré les difficultés techniques, les erreurs de conception qui imposent des retours arrières, le temps de recherches sur des forums à la recherches de réponses, le temps que l’on passe… Ca doit faire 10 ans que je bidouille sur des systèmes linux. La liberté que l’on a pour adapter à notre convenance les choses rend ce système d’exploitation sans limite. Ca occupe :-)

L’évolution du matériel va à une telle vitesse que les développeurs doivent suivre la cadence pour s’adapter aux nouveaux standards. Je le vie avec Webx et le raspberrypi par exemple, ce qu’il fallait faire avec plusieurs éléments peut être réalisé avec un seul !

Heureusement, le software a une plus longue durée de vie…

Ci dessous vous trouverez quelques captures d’écrans de ce projet dans sa version 4.1.1.

 

webx_location

 

webx_category

 

webx_receivers

 

webx_transmitters

 

webx_ipx800

 

webx_events

 

webx_weather

webx_controller

Vous trouverez toutes les informations sur mon site wiseflat.com

Author: Mathieu

Passionné d'administration système Linux et de domotique, j'ai décidé de construire mon projet en combinant les deux... Mon objectif: faire avancer la domotique open-source en partageant mes trouvailles et mes idées...

Share This Post On

7 Comments

  1. Ca à l’air chouette, vivement le Z-Wave. :)
    Mais si ce serveur domotique pouvait être le premier à gérer le IO-Homecontrol en plus des autres protocoles, cette solution aurait un grand succès ;)

  2. Bonjour,

    Waow rien que le détail de l’article est alléchant, je constate que c’est un projet magistralement bien mené !

    Bravo, j’attends la mise en place pour tester.

    Merci encore

  3. pareil qu’Alexis : vivement le Z-Wave qu’on puisse le tester avec le razberry !
    Et bravoi pour le travail déjà réalisé

  4. @Arkane : Salut, je viens de lire le post que tu fournis dans ton message. Tout le monde se casse les dents vu le travail à fournir on dirait. Plus je regarde comment fonctionne le zwave et le code source mis librement sur le net plus je m’y perds…

    Je suis pour la création d’un paquet syno basé sur webx + zwave, avec grand plaisir. Je rejoins votre conversation, on verra ce que ça peut donner…

    Et merci à tous pour vos encouragements ;-)

  5. @Mathieu

    Je pense qu’effectivement le support du Z-wave sera vraiment un gros plus et tu peux compter sur moi pour le côté matériel ;)

    Pascal

  6. Salut à tous !
    Oui très très intéressant la prise en charge du z-wave le raspberry possède une extension z-wave peu onéreuse ça pourrait être une super solution à moindre coup.
    Si vous avez besoin de contributeur / testeur je suis partant !

Laisser un commentaire