Browse Tag

domotique

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, …

Hotel Fail Cover

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.

Mosquitto Cover

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

MQTT

Introduction à MQTT

Qu’est ce que MQTT ?

MQTT pour Message Queuing Telemetry Transport est un protocole de communication basé sur TCP/IP fonctionnant sur un modèle publish/subscribe (littéralement : publier-s’abonner).

Idéal pour vos projets IOT, domotique, …

Il a été initialement développé par Andy Stanford-Clark (IBM) et Arlen Nipper (EuroTech). Il est conçu pour les connexions avec des sites distants où la bande passante du réseau est limitée.Wikipédia

Les clients sont tous connectés en publish ou subscribe à un serveur appelé broker.

Source: https://mqtt.org/

Sécurité & fiabilité

Il est possible de sécuriser les échanges de plusieurs manières :

  • Authentification des comptes (sondes, …) par login & mot de passe ou par certificats.
  • Configuration des permissions par utilisateur sur le broker comme Mosquitto par exemple.
  • Chiffrer les communications entre client et broker en SSL/TLS.

Nativement MQTT propose une QOS (Qualité de service) sur 3 niveaux

  • 0 = Le message sera envoyé sans aucune garantie, aucun retour du broker,
  • 1 = Le message sera reçu au moins une fois,
  • 2 = Le message sera reçu une seule fois

Topics

Un topic n’a pas de nomenclature imposée par MQTT. Sauf $SYS qui est réservé au broker. Il est important de bien réfléchir à l’avance ses topics et leur arborescence.

Voici un exemple de topics dans le cadre d’une maison :

/maison/cuisine/temperature
/maison/cuisine/humidite
/maison/salon/temperature
/maison/salon/humidite

Wildcards « jokers »

Il est possible de s’abonner à des topics en utilisant les wildcards # ou +.

Obtenir tous les capteurs de la cuisine :

/maison/cuisine/#

Obtenir tous les capteurs de température :

/maison/+/temperature

Si vous voulez tous voir passer, il suffit de s’abonner à #

Last Will & Testament

Un client peut à la connexion envoyer au broker son testament au moment de sa connexion.

En cas de déconnexion soudaine, le broker enverra le « testament » du client aux abonnés sur le topic défini.

Utilisation

Voici, une petite liste non-exhaustive pour vous lancer avec MQTT.

Evidement Node-RED propose nativement des connecteurs MQTT


Sources & Ressources :

Boite à lettre connectée

Domotique DIY #2 – Boite à lettres connectée à moins de 15€

Suite au capteur de distance (niveau de sel dans un adoucisseur d’eau), voici le deuxième article sur ma domotique DIY.

Une boite à lettre connectée (à votre domotique ?) pour moins de 15€ et fonctionnant plusieurs mois sur batterie.

Ce montage tourne depuis plusieurs années chez mes parents, c’est l’occasion de le rafraîchir et le documenter (avant un possible changement vers un Wemos et une pile lithium).

Liste des courses

  • Un Wemos D1 mini ~1€,
  • Une Sonnette « bon marché » (max 10€),
  • Contact au mercure (5x14mm),
  • Un peu de fil électrique,
  • Un câble micro-USB + alimentation.
« Mercury Switch » – Contact au mercure

Montage

Après avoir dé-soudé le haut-parleur, retiré tout le câblage et le boîtier pour les piles, connectez …

  • le du haut-parleur au GDN de la sonnette et au G du Wemos,
  • le VDD au 5V du Wemos,
  • le + du haut-parleur au A0 (ajoutez une résistance si nécessaire afin d’éviter de griller le pin analogique de votre Wemos).


Code source

Première étape terminée. Le coté « recepteur » est terminé.

Liez le maintenant à votre système domotique au travers de MQTT ou une autre méthode votre choix.

Intégration Home Assistant

L’intégration n’est pas parfaite. Je dois encore trouver une solution pour gérer le reset du capteur une fois le courrier récupéré.

- platform: mqtt
    name: "Boite à lettre"
    state_topic: "42/ext-av/sensors/bal"
    value_template: "{{ value_json.bal }}"

Coté boite à lettre

Voici le bouton-poussoir de la sonnette une fois démonté.

Il est nécessaire de repérer le contact du bouton-poussoir et d’y souder la paire de fils du contacteur à mercure.

Le capteur une fois soudé aux fils est placé dans une pièce le maintenant vers le bas à 45° (à adapter selon votre boite à lettres).

Un peu de double face épais et on pose dans la boite.

Une fois, le clapet de la boite basculant, il simule un appui sur le bouton de la sonnette. Le haut-parleur (retiré) « sonne » et le pin analogique du Wemos capte ce pic. Le reste est traité par le petit morceau de code ci-dessus.

Vous pouvez espérer plusieurs mois de fonctionnement avec ce montage et une pile CR2032.