Zigbee Big Red Button

Un GROS bouton rouge pour la domotique du hackerspace.

Je pars d’un interrupteur Zigbee IKEA TRÅDFRI que je démonte.

Je soude sur les boutons du fil, me permettant de faire le contact comme lors d’un appui.

Vous avez certainement remarqué les colliers de serrage en plastique. En fait… La pile tient par son boitier plastique, n’ayant pas de place pour le boitier, j’ai dû ruser.

J’ajoute un autre petit bouton sur le côté pour profiter du deuxième bouton de l’interrupteur IKEA.

L’application du gros bouton rouge sera de « fermer » le hackerspace, pouvoir éteindre toutes les alimentations électriques critiques (bench électronique, 3D, laser, …). Le petit bouton sur le coté est là pour « ouvrir » le hackerspace, allumer les éclairages d’ambiance, …

L’hôtel du fail

Durant le mois de juillet, j’ai passé quelques jours à Amsterdam. J’ai séjourné dans un hôtel très plaisant et bonne surprise totalement domotisé. Vous me sentez arriver ?

Wifi gratuit, sans mot de passe, pas login rien… C’EST OPEN BAR! \o/ Je me connecte et je regarde un peu si des copains sont présents. Mon attention a été très vite attirée.

Allons voir ce que proposent ces ports 80. Sur les 4 ip, c’est la même chose eNet server software. Pas beaucoup d’actions possibles. La partie remote access et la doc du fabricant parlent d’une app mobile.

C’est parti pour l’application mobile. Comme par magie l’app trouve les serveurs.

L’app me demande un Username et un Password. Que je peux créer via l’interface web, mais je ne veux rien modifier. Je cherche dans la documentation les identifiants par défaut et BINGO !

Et voilà. Je suis comme un gamin le soir de Noël. Le pilotage complet de l’hôtel. Lumière, clim, stores de certaines chambres, TV, audio… Même les zones communes, les lampes de culture du jardin suspendu.

Il est aussi possible de changer les scénarios et les attributions capteurs/actuateurs/… Imaginez à quel point, il serait possible de rendre l’hôtel inopérable.

D’autres parties « plus critiques » comme de la gestion d’accès est également disponible en accès libre, mais je n’en dirai pas plus.

La chaîne hôtelière a été prévenue à plusieurs reprises ces presque 4 derniers mois sans réaction de leur part pour le moment.

Si vous connaissez le nom du service public (aux Pays-Bas) à qui je pourrais signaler ce joyeux bazar, n’hésitez pas à me contacter.

Configuration de l’ACL Mosquitto

Après l’introduction à MQTT et son installation. Passons à la découverte et la configuration de l’ACL (Access Control List – Liste de contrôle d’accès).

Par défaut Mosquitto autorise la connexion sans login / mot de passe. J’ai parlé de ce point dans l’article sur son installation.

Une fois connecté chaque utilisateur (ou client) peut écrire ou écouter n’importe quel topic sans aucune restriction. C’est ici que l’ACL intervient !

Configuration acl_file

Dans le fichier de configuration de votre Mosquitto, il est nécessaire de configurer l’emplacement de votre acl_file.

acl_file /etc/mosquitto/acl

« Lexique »

  • # – Wildcard, il donne accès à tout le topic de façon récursive.
  • + – Wildcard, il donne accès à tout le topic sur le même niveau.
  • $SYS – est réservé au broker, il communique ses statistiques, … Vous pouvez laisser l’accès en lecture ou non aux clients via un pattern par exemple.
  • user – Permet de définir l’utilisateur concerné.
  • topic – Permet de définir le topic concerné.
  • pattern – Permet de définir un topic à tous utilisateurs ou clients.
  • read – Permet de lire le topic.
  • write – Permet d’écrire sur le topic.
  • readwrite – Permet de lire et d’écrire sur le topic.
  • %c – ID du client.
  • %u – Nom de l’utilisateur.

Il est possible de connecter plusieurs clients avec un ID différent avec le même utilisateur. Dans un premier temps limitez-vous à un client = un utilisateur car cela peut vite poser des soucis.


Clients & Users

Dans l’exemple suivant l’utilisateur cuisine à le droit d’écrire et de lire dans tout le topic maison/cuisine et à aussi le droit de lire tout le topic maison.

L’utilisateur toto lui à uniquement le droit de lire maison/cuisine/temperature.

user cuisine
topic readwrite maison/cuisine/#
topic read maison/#

user toto
topic read maison/cuisine/temperature

Patterns

Dans l’exemple suivant tous les utilisateurs peuvent lire les informations du broker $SYS. Chaque client et utilisateur ont le droit d’écrire et de lire dans « leur espace ». Donc l’utilisateur toto à son topic maison/user/toto de façon récursive, pareil pour l’utilisateur cuisine.

pattern read $SYS/#
pattern readwrite maison/id/%c/#
pattern readwrite maison/user/%u/#

Ressource : https://mosquitto.org/man/mosquitto-conf-5.html