Browse Tag

MQTT

Covid Blog

Confinement.S02E09

Temps de lecture estimé : 2 minutes

Flux RSS

J’ai remis en place un flux RSS sur le blog. Je suis le premier à pester sur les sites ne le proposant pas. Alors voilà qui est maintenant réglé ici.

Si vous ne savez pas ce qu’est un flux RSS (C’est que vous êtes trop jeune… Ou moi trop vieux), je ne peux que vous inviter à vous documenter et surtout l’implémenter sur vos sites !

ACL Mosquitto

Un nouvel article vient d’être publié sur le blog dans la série MQTT. Il s’agit de l’utilisation de l’ACL sur Mosquitto.

Web

J’ai actuellement plusieurs sites web en préparation, qui devraient tous être publiés d’ici peu. Un peu de teasing pour ceux ayant le courage de suivre les articles « confinement ». De façon non-exhaustive, un « guide d’achat » pour les makers, un index des lieux de fabrication numérique et une autre surprise.

La fibre

Une petite affiche est apparue sur l’entrée de l’immeuble au-dessus du hackerspace. La fibre semble débarquer dans mon quartier. Je vais pouvoir profiter des offres d’EDPnet (ainsi que le hackerspace ?).

La fibre débarque

Cette série d’articles a été motivée par Yves sur Twitter.

Mosquitto Cover

Configuration de l’ACL Mosquitto

Temps de lecture estimé : 3 minutes

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

CovidBlue

Confinement.S02E06

Temps de lecture estimé : 3 minutes

Fin d’un week-end et d’un début de semaine très calme. Je n’ai donc pas grand chose à vous raconter.

Mais cela est une raison pour fermer ma gueule ? (Spoiler alert : Non).

Internet

Début de week-end, j’ai tenté le tout pour le tout après avoir vu 6 ou 7 techniciens de mon opérateur aux 3 lettres roses.

Sauf que je n’avais pas vraiment le matériel adapté...

Le coax est tombé à la sortie de la fiche du mur & un filet de vis arraché. Encore du beau boulot… J’hésite à leur demander comment une ligne peut tomber en marche. 0 souci depuis cette « intervention ».

MQTT

Pour ceux l’ont manqué, j’ai sorti un article d’introduction à MQTT. Je vous invite à le consulter si vous voulez découvrir ce formidable univers. Parfait pour l’IOT ou votre domotique DIY.

Le blog

Travail sur le blog

Quelques modifications ont été apportées au blog afin de mieux s’y retrouver. Des index appelés « Dossiers » sont disponibles dans le menu regroupant les articles par sujet en plus des catégories.

Découvertes


Cette série d’articles a été motivée par Yves sur Twitter.

Illustration « Le blog » : https://www.pexels.com/fr-fr/@skitterphoto

MQTT

Introduction à MQTT

Temps de lecture estimé : 4 minutes

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 :

Mosquitto Cover

Installer un broker MQTT – Mosquitto – Ubuntu

Temps de lecture estimé : 3 minutes

Pour ma domotique j’utilise principalement MQTT pour la communication entre les sondes, actuateurs, services et serveur.

MQTT est un protocole de messagerie fonctionnement par publication / souscription. Tous les clients se connectent au serveur (le broker) pour publier des messages ou souscrire afin de recevoir les messages ou les deux à la fois.

Installation de Mosquitto

Actuellement, je fonctionne avec Ubuntu 18.10 dans un container sous Proxmox PVE. Commençons par le début un update/upgrade

sudo apt update && apt upgrade

Installation de Mosquitto

sudo apt install mosquitto

En l’état vous avez un Mosquitto parfaitement fonctionnel, mais sans la moindre sécurité.

Placez-vous dans le dossier de Mosquitto. Par défaut /etc/mosquitto

cd /etc/mosquitto

Créer le fichier d’authentification et le premier utilisateur. Après la commande, il vous sera demandé de renseigner un mot de passe.

Configuration de Mosquitto

sudo mosquitto_passwd -c passwordfile VOTRE_PREMIER_UTILISATEUR

Attention! Le paramètre -c permet de créer le passwordfile si vous l’utilisez par la suite le fichier sera écrasé et donc tous les utilisateurs perdus.

Créer un autre utilisateur.

sudo mosquitto_passwd passwordfile UTILISATEUR_SUIVANT

Modifiez le fichier de configuration de Mosquitto afin de limiter son accès aux utilisateurs avec un compte. (Positionnez-vous dans /etc/mosquitto)

sudo nano mosquitto.conf

Ajoutez ces deux lignes en fin de fichier et sauvegardez.

allow_anonymous false
password_file /etc/mosquitto/passwordfile

Voila! Il est possible d’aller plus loin avec Mosquitto et par exemple limiter un utilisateur en lecture ou de limiter la publication à un seul topic, … Pour cela, penchez-vous sur les ACL. Il est également possible de chiffrer les communications avec le broker et d’y installer un certificat SSL.

Vous pouvez maintenant créer un petit capteur communiquant en MQTT


Sources :

  • 1
  • 2