Pour faire suite à l’article « Quels protocoles applicatifs pour l’Internet des Objets? » d’Ali Benfattoum, mettons en pratique le protocole MQTT en installant votre propre broker MQTT: Mosquitto
Ce broker, Mosquitto, vous permettra d’interconnecter facilement vos applications, objets, pages web entre-eux, grâce au protocole MQTT. Ce petit tutoriel vous permettra donc d’installer ce broker sur une machine Ubuntu ou Debian et de ses variantes comme Raspbian (le système d’exploitation le plus répandu sur le Raspberry pi). A la fin de ce tutoriel, je vous proposerai une première configuration pour pouvoir profiter des WebSockets et donc d’utiliser le protocole MQTT sur vos pages web au travers de clients JavaScript.
Installation de Mosquitto compatible WebSockets
On est sous Linux, donc on commence par ouvrir le Terminal. Ensuite, choisissez votre version de Linux:
Ubuntu 14.04.2 LTS – Trusty Tahr
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa sudo apt-get update sudo apt-get install mosquitto
Debian 8.3.0 & Raspbian – Jessie
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key sudo apt-key add mosquitto-repo.gpg.key rm mosquitto-repo.gpg.key cd /etc/apt/sources.list.d/ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list sudo apt-get update sudo apt-get install mosquitto
Configuration de Mosquitto pour utiliser les WebSockets
Pour utiliser la partie WebSocket du broker Mosquitto, il faut modifier légèrement la configuration. Je vous propose donc ici une première configuration de ce broker. Je ferai d’autres articles pour aller plus loin: certificats, login, restriction, etc.
Il suffit d’ajouter un fichier avec l’extension .conf dans le dossier de configuration de mosquitto /etc/mosquitto/conf.d :
sudo nano /etc/mosquitto/conf.d/frugal.conf
ou en graphique
sudo gedit /etc/mosquitto/conf.d/frugal.conf
et ajouter les lignes suivantes:
listener 1883 listener 61614 protocol websockets
On sauvegarde la configuration et on relance ensuite le serveur pour que la configuration soit prise en compte avec la commande:
sudo service mosquitto restart
Nous voilà prêts à utiliser notre broker MQTT, avec le support des WebSockets. Vous pouvez l’essayer en vous connectant à l’adresse suivante: http://mqtt.frugalprototype.com
Pour la partie host vous mettez l’adresse locale de votre poste (127.0.0.1) ou celle du serveur sur lequel vous avez installé votre serveur
Cet article présente la première étape pour utiliser le protocole MQTT, des exemples vous seront proposés par la suite pour utiliser ce protocole dans vos projets avec différents langage (Arduino, Python, JavaScript, Java, etc).
Si des erreurs se sont glissées dans l’article, n’hésitez pas à nous en faire part.
Merci, et à très vite sur Frugal Prototype
Bonjour,
Je crois qu’il manque quelques détails, notamment le chemin de la page web pour y acceder ( 127.0.0.1:61614 ??)
De plus, mon mosquitto est installé sur un orangepi (ubuntu server, sans écran), du coup je peux y acceder uniquement d’une autre machine (adresse IP de mon orange pi au lieu de 127.0.0.1).
Pour l’instant, je n’accede pas à la page websockets
Bonjour,
Il faut que tu utilises l’adresse IP de ton orangepi. De plus, il te faut développer une page HTML avec un client javascript à l’intérieur qui se connectera au serveur MQTT de ton orangepi (port 61614 – vu que nous serons ici en websockets).
Je te propose le code suivant, qui utilise la bibliothèque paho-mqtt – il faut que tu modifies l’adresse ip (127.0.0.1) par celle de ton orangepi: http://pastebin.com/ZJyeE1dW
Au plaisir
Romain
Bonjour,
Comment gerer les acces (enregistrer les comptes utilsateurs pour Mosquitto)?
Bonjour,
Je precise la question car elle etait vague, je gere les acces utilisateurs depuis le serveur debian 8 via le fichier passwd de mosquitto, la question est : comment ajouter des utilsateurs dans ce fichier depuis un client (app swift et Javafx), Mosquitto est sur un serveur vps debian 8 limité en ressources (64M ram), pour le moment il est installé seul (pas de serveur http), existe t’il un systeme simple de gestion des credentials (register et verification pour login) qui eviterai d’avoir a installer un serveur http? j’ai vu l’API Google Firebase qui semble pouvoir convenir ici, je me demande si l’implementation de cette solution coté serveur sera consommatrice en ressource, et si il existe une meileure approche.
Merci.
Merci ça marche ,mon seul souci après redémarrage de l’orange pi, sur le quel il est installé , il faut que je le redémarre .J’ai du louper un épisode.