Mise en route du serveur
Extrêmement simple un apt-get install plus tard et le serveur démarrait!
Le plus complexe a été d'attribuer les droits d'accès aux interfaces TTY à OpenHab pour lui permettre de dialoguer avec le stick Z-Wave. Quelques éditions de fichiers config plus tard et c'était fait.
Il a ensuite fallu attendre qu'OpenHab termine son premier démarrage et j'étais près à configurer mon stick Z-Wave!
Pour ajouter le stick Z-Wave à OpenHab, installer le "Z-Wave Binding" depuis la page Add-Ons et, sous l'onglet Binding. Une fois le binding installé, il est possible d'ajouter un Thing Contrôleur Z-Wave manuellement. Attention à bien configurer le port TTY correspondant à votre stick Z-Wave.
Reste à lancer une découverte automatique de périphériques Z-Wave et activer le mode appairage sur ce dernier. Si tout se passe bien, un objet unknown devrait apparaitre dans la liste, en un clic sur l'icone verte, il est appairé avec le contrôleur. Une fois appairé, le périphérique va exposer ses différents channels à OpenHab, qui mettra à jour le Thing.
En Z-Wave, cette étape peut prendre du temps. La raison est la suivante : ce protocole est prévu pour économiser la batterie des périphériques. Ils se mettent en veille et ne se réveillent que lorsqu'il y a un changement de valeur pour la transmettre au contrôleur ou lorsqu'on leur envoie des commandes. Les infos du périphérique peuvent donc mettre pas mal de temps à être transmises. Sur certains périphériques, il est parfois possible de forcer la transmission via le même bouton que pour l'appairage.
Maintenant qu'il est appairé et que tous les channels disponibles sont exposés, on peut lier à chaque channel un Item soit en créant un nouvel item, soit en liant un item existant. Permettant l'affichage du Thing avec ses items dans l'onglet Control de Paper UI. Dans mon cas, un capteur multiple qui remonte la t°, la luminosité et qui fait aussi détecteur de mouvements. (jamais réussit à utiliser le détecteur de mouvements correctement)
Du coup, mon capteur me remonte bien la température ainsi que la luminosité de la pièce.
Considérations vis à vis des réseaux domotiques
Le Z-Wave fonctionne plutôt bien, mais les périphériques peuvent être assez chers, de plus mes volets roulants somfy sont déjà pilotables via leurs télécommandes. Il reviendrait cher de remplacer tous les pilotes de volets somfy par des pilotes z-wave. Et en plus, les télécommandes actuelles ne fonctionneraient plus.
Il semble préférable de trouver un stick usb qui permettrait à OpenHab de communiquer avec ces contrôleurs de volets. Comme beaucoup d'actionneurs de volets, portes de garages et autres portails, ils utilisent la fréquence 433MHz (j'avais dit qu'on y reviendrait). Or un stick quasi "universel" pour les communications sur fréquence existe, le(s) RFXcom. Ils permettent, entre autres, de dialoguer avec les périphériques (liste très loin d'être exhaustive) : Somfy, DIO de Chacon, des stations météo variées, sondes de t° / humidité, de nombreux modèles de climatiseurs, ... Malgré le prix conséquent, je finis par craquer.
Les manipulations sont similaires au stick Z-Wave pour ajouter l'émetteur-récepteur RFXcom. Par contre, pour les périphériques comme les volets somfy, c'est sensiblement différent. J'ai du créer manuellement un Thing Binding RFXcom de type Rfy par volet et lui ajouter l'item Send Program Command. Une fois tout créé, passer un volets en mode appairage en utilisant la télécommandes Somfy, et cliquer sur le bouton virtuel Send program command depuis Paper UI. La télécommande virtuelle d'OpenHab est ajoutée dans le contrôleur du volet. Il ne reste plus qu'à créer l'item de type "rollershutter" et le lier au channel shutter du Things volets et au passage retirer l'item lié à send program command qui est inutile à l'usage courant.
Persistence
A chaque reload de la page control, les informations remontée par mon capteur passent à NaN (Not A Number) parce que les informations précédentes remontées par le capteur ne sont stockées nulle part. Pour éviter ça, la seule solution est d'installer un système de persistance des informations.
La persistance permet , lors d'un reload de la page ou d'un reboot du serveur, de recharger les valeurs précédentes de tous les items configurés pour persister. Mais aussi de générer des graphes pour le suivi des valeurs. De nombreux autres usages sont possibles.
Un nouveau apt-get plus tard et j'ai un serveur PostgreSQL fonctionnel, ajout puis configuration de l'add-on JDBC PostgreSQL via Paper UI et finalement création des règles de persistance dans un éditeur de texte.
Dans les règles de persistance, je décide de sauver les valeurs de t°, humidité et luminosité toutes les 30 minutes et à chaque changement de valeur. C'est suffisamment fréquent pour générer des graphes détaillés sans pour autant avoir une masse de données ingérable.
Ayant quelques soucis d'humidité dans la maison (trop d'isolation -> mauvais renouvellement d'air + végétation dense autour de la maison + rivière toute proche), j'ai décider d'équiper la maison de deux capteurs de t° et humidité. Le premier rejoint le salon, le second la chambre. Grâce à ces capteurs et aux graphiques générés grâce à la DB, madame est convaincue d'acheter un absorbeur d'humidité en attendant qu'on puisse investir dans l'installation d'une VMC hygroréglable ou double flux.