MQTT

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).

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

 * Mosca

Utilisation de MQTT en Java
En premier lieu, il faut un serveur MQTT. N.B: 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
 * ===> 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

Ensuite, prendre une API Java pour un client MQTT
 * ===> Voir eclipse Paho: http://www.eclipse.org/paho.
 * Le jar 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

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 abonnés à ces derniers recevront les messages.

Pour aller plus en détails, voici un exemple d'utilisation Java avec l'API eclipse paho:
 * https://github.com/eclipse/paho.mqtt.java/blob/master/org.eclipse.paho.sample.mqttv3app/src/org/eclipse/paho/sample/mqttv3app/Sample.java

A regarder

 * http://www.eclipsecon.org/2012/sessions/using-mqtt-and-eclipse-tools-write-end-end-m2m-application-0
 * http://www.eclipsecon.org/2012/sites/eclipsecon.org.2012/files/EclipseCon2012_M2M.pdf


 * http://blog.hekkers.net/2012/10/13/realtime-data-with-mqtt-node-js-mqtt-js-and-socket-io/
 * http://chemicaloliver.net/internet/node-js-mqtt-and-websockets/