DG devGiants tech notes

12 octobre 2019

Présentation de Domofony

Cet article présente l’application Domofony pour le contrôle de la domotique.

Domotique

Dans mes précédents essais de domotique DIY, j’utilisais l’excellent openHAB. À première vue, il semblait réunir tout ce que je cherchais dans un contexte de domotique :

  • Entièrement open-source
  • Agnostique vis-à-vis des technologies et des fournisseurs : c’est l’un des points les plus importants, je ne voulais pas dépendre d’une technologie propriétaire pour construire ce système. Tout doit être transparent du sol au plafond, et modifiable pour garantir une utilisation et une adaptation sur le long terme
  • Capacité à programmer pour des usages sérieux : il est absolument important pour moi qu’une vraie fonctionnalité de programmation soit disponible. La manière dont je travaille ne correspond pas à une configuration à la souris. En utilisant Xtend (puisque openHAB est écrit en Java), cela permet de créer des programmes pour piloter l’installation.

Alors pourquoi changer ? Quelques inconvénients :

  • J’ai réalisé à l’usage que tout ce qui est embarqué (branching des items avec les technologies, configuration…) ne me convenait tout simplement pas
  • L’implémentation Xtend dans cet usage, bien que vraiment propre, ne permet pas certaines choses que je voulais (comme la réutilisation de scripts entre handlers…)
  • Toute la partie Java met la pression sur le hardware sous-jacent, obligeant à avoir quelque chose de puissant (les vieux Raspberry Pi n’étaient pas si bons)

Ne me faites pas dire ce que je n’ai pas dit : OpenHAB est un excellent travail utilisé par des milliers de personnes dans le monde. J’avais simplement besoin d’autre chose.

Domofony

Domotique + Symfony = Domofony.

Domotique est le mot français pour home automation. La première chose à savoir, c’est que j’ai créé ce projet pour moi-même et que je le partage comme bonne pratique, mais qu’à la base, tout ne sera pas forcément utilisable par tout le monde (comme l’application front-end que je prévois de développer pour mon usage).

C’est une solution fournie par un développeur pour des développeurs. Exit la click-land, toute la configuration est faite en YAML.

Composants techniques

Composants techniques

Toutes les parties visibles dans le schéma ci-dessus seront décrites et détaillées dans de futurs articles. Cela dit, voici une description rapide des blocs principaux.

Application front-end

C’est l’application qui permet à l’utilisateur d’interagir avec le système. Elle consommera l’API REST exposée par l’application serveur.

Broker Mosquitto

Le système repose pour l’instant sur le protocole MQTT (ici un tour d’horizon du protocole en français) pour les échanges entre le système central et les items. Ce protocole est idéal compte tenu de son caractère asynchrone et de sa légèreté. La sécurité n’est pas laissée de côté, même si l’utilisation de certificats TLS implique que les items doivent être plus puissants que de simples microcontrôleurs.

Note : un item est le périphérique final, comme un capteur ou un actionneur (ou les deux). Dans mon système de domotique, il s’agit surtout de SBC ou de microcontrôleurs de la série ESP.

Les prochains articles détailleront les items, l’application Symfony, la configuration du broker et du client Mosquitto et l’application front-end.