MQTT: Difference between revisions
No edit summary |
|||
Line 18: | Line 18: | ||
===Node.js=== |
===Node.js=== |
||
* [[Mosca]] |
* [[Mosca]] |
||
* [[Node-RED]] : visual tool |
|||
== Utilisation de MQTT en Java == |
== Utilisation de MQTT en Java == |
Revision as of 01:27, 19 October 2013
MQ Telemetry Transport (MQTT) est un protocole de transport de données pour le M2M pour des réseaux à faible débit. MQTT suit le pattern publish-subscribe entre le capteur et un ou plusieurs puits de collecte (ie M2M box, back office, ...). Les messages échangés sont encodés en binaire (spec 3.1). Les souscripteurs s'abonnent à un topic (voir plusieurs via l'utilisation de wildcards + et # dans la hiérarchie de topics).
Des bridges ont été développés entre MQTT est d'autres protocoles : HTTP REST, Atom, PubSubHubBub, XMPP, ...
MQTT a été proposé à la standardisation à l'OASIS.
Introduction
API, Logiciels, Middleware
- http://mqtt.org/software
- python-mosquitto – a Python client module provided by the mosquitto project
- Plateforme M2M (MQTT, OData, OPC, Modbus, Zigbee/ZWave, ...) http://www.thingworx.com/
Node.js
Utilisation de MQTT en Java
Architecture client/serveur avec MQTT
Voici l'architecture d'un exemple d'utilisation:
- Lancer le serveur sur une IP + port.
- Créer un "subscriber" qui va se connecter au serveur et s'abonner à un ou plusieurs "topic(s)"
- Créer un "publisher" qui va se connecter au serveur et créer des messages dans divers topics. Les subscribers à ces derniers recevront les messages.
Plus de détails sont donnés dans les parties ci-dessous.
Serveur
En premier lieu, il faut un serveur MQTT
- ===> Installer Mosquitto (http://mosquitto.org/) ou sur Ubuntu:
- sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
- sudo apt-get update
- sudo apt-get install mosquitto python-mosquitto
NOTE: Il existe un serveur MQTT publique et gratuit (évitant l'installation) fourni par eclipse: m2m.eclipse.org lancé sur le port 1883 ; Ne marche pas avec le WiFi de la fac à cause d'un blocage des ports
Client
Ensuite, prendre une API Java pour un client MQTT. Il en existe plusieurs (voir http://mqtt.org/software): Ci-dessous, la démarche à suivre pour deux d'entre eux:
Eclipse Paho
- Le site: http://www.eclipse.org/paho
- Le jar a utilisé (a inclure dans le classpath pour l'utiliser): http://www.eclipse.org/downloads/download.php?file=/paho/drops/org.eclipse.paho.client.mqttv3.jar.
/!\ Pas d'artefact maven disponible a l'heure d'aujourd'hui !
- Pour aller plus en détails dans l'implémentation publisher/subscriber, voici un exemple d'utilisation Java avec cette API:
- https://github.com/eclipse/paho.mqtt.java/blob/master/org.eclipse.paho.sample.mqttv3app/src/org/eclipse/paho/sample/mqttv3app/Sample.java
FuseSource MQTT
- Le site: http://mqtt-client.fusesource.org/ ; Le GIT: https://github.com/fusesource/mqtt-client
- Un artefact maven est disponible pour ce client: http://mvnrepository.com/artifact/org.fusesource.mqtt-client/mqtt-client/
- Des exemples d'implémentation publisher/subscriber sont disponibles sur la page d'accueil de leur site.