Fonctionnement d'OpenHab
Tout est très organisé, dans OpenHab. Je vais passer rapidement sur quelques concepts essentiels, histoire d'être au clair pour la suite ^^.
Add-ons
Dans OpenHab, les add-ons couvrent divers sujets tels que l'interface graphique, la connexion à une DB pour la persistance, ou la gestion d'un nouveau type de réseau domotique.
L'installation et désinstallation des add-ons peut être réalisée à partir de Paper UI, mais peu aussi être faite manuellement en déposant/supprimant le fichier dans le dossier adéquat.
Bindings
Les Bindings donnent les moyens à OpenHab de dialoguer avec un élément extérieur. Qui peut être un contrôleur de réseau hardware (stick usb, ...) ou juste une passerelle software (connexion à un service, ...).
Le binding Z-Wave pour exploiter ces réseaux via un stick USB ou le binding Freebox permettant de lier sa box et récupérer des infos pour les afficher dans l'interface domotique.
Things
Les Things sont la représentation des objets connectés via un binding. Ils contiennent des channels qui sont les canaux de données exposés par le périphérique. Certains objets sont configurables et c'est via l'interface des things que l'on va pouvoir réaliser cette configuration.
Le contrôleur Z-Wave lui-même sera définit en tant que thing, tout comme une ampoule connectée, un capteur, etc.
On peut attribuer un lieu à chaque thing, information exploitée pour l'affichage des things dans l'onglet Control de l'interface Paper UI.
Items
Les Items sont des variables. On doit leur définir un type de donnée à stocker, il est possible les ajouter dans un ou plusieurs groupes, mais pas nécessaire. Les items sont des entités à part entière, ils peuvent être liés à un Thing via un channel, mais peuvent rester "isolé". Les groupes sont des items dont le type de donnée a été définit comme group.
Par exemple, le multi capteur cité plus haut possède deux channels, un pour la température et le second pour la luminosité ambiante. Deux items seront donc créés, l'un lié au channel t°, le second au channel luminosité.
Sur une ampoule connectée, on pourrait avoir un item pour le channel variateur et un second pour le channel t° du blanc...
Et toutes les ampoules pourraient faire partie du groupe définit par l'item Eclairage.
Rules
Les règles sont le système d'automatisation des actions. Un événement va déclencher l'exécution de la règle, cet événement peut être la fin d'un timer ou le changement d'une donnée dans un item.
Par exemple, si la valeur du capteur de luminosité passe sous un seuil entre 17h et 20h, alors on envoie la commande de s'allumer à tous les membres du groupe eclairageSalon.
Il existe plusieurs méthodes pour créer des rules, la coder dans un fichier texte, utiliser l'add-on Rule Engine pour Paper UI (en cours de développement) ou utiliser l'interface graphique intégrée à HabMin (interface qui n'a jamais fonctionné correctement chez moi).
Le codage manuel est évidemment le plus souple, mais demande l'apprentissage de la syntaxe.
L'interface graphique intégrée à HabMin permet de s'affranchir de la syntaxe puisqu'on manipule des blocs à la manière de Scratch. Mais à priori, c'est assez peu utilisé par la communauté.
Le Rule Engine permet de créer des règles simples très rapidement, sans aucun besoin de connaitre la syntaxe.