Difference between revisions of "MQTT"
Line 1: | Line 1: | ||
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, ...). |
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 ([http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/MQTT_V3.1_Protocol_Specific.pdf spec 3.1]). |
Les messages échangés sont encodés en binaire ([http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/MQTT_V3.1_Protocol_Specific.pdf spec 3.1]). |
||
+ | |||
+ | Les grands principes sont aussi décrits ici : http://mosquitto.org/man/mqtt-7.html |
||
MQTT a été proposé à la [https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=mqtt standardisation] à l'[[OASIS]]. |
MQTT a été proposé à la [https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=mqtt standardisation] à l'[[OASIS]]. |
Revision as of 11:49, 17 August 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 grands principes sont aussi décrits ici : http://mosquitto.org/man/mqtt-7.html
MQTT a été proposé à la standardisation à l'OASIS.
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.