MQTT: Difference between revisions

From air
Jump to navigation Jump to search
 
(12 intermediate revisions by the same user not shown)
Line 2: Line 2:
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 souscripteurs s'abonnent à un topic (voir plusieurs via l'utilisation de wildcards + et # dans la hiérarchie de topics).
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 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]], ...
Des bridges ont été développés entre MQTT est d'autres protocoles : HTTP REST, Atom, [[PubSubHubBub]], [[XMPP]], [[WebSockets]] ...


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]].
Line 9: Line 9:
* [http://fr.slideshare.net/andypiper/introducing-mqtt Présentation d'Andy Piper]
* [http://fr.slideshare.net/andypiper/introducing-mqtt Présentation d'Andy Piper]
* [http://mosquitto.org/man/mqtt-7.html Les grands principes en quelques lignes]
* [http://mosquitto.org/man/mqtt-7.html Les grands principes en quelques lignes]
* [http://www.redbooks.ibm.com/redbooks/pdfs/sg248054.pdf IBM RedBook on MQTT]



==API, Logiciels, Middleware==
==API, Logiciels, Middleware==
Line 19: Line 19:
* [[Mosca]]
* [[Mosca]]
* [[Node-RED]] : visual tool
* [[Node-RED]] : visual tool
* Bridge MQTT-WebSockets https://www.npmjs.org/package/mqtt-ws
* [[Cyclon#MQTT|Cyclon]]
* [[Eclipse Ponte]]

==Python==
* mqttwarn (MQTT notifier) https://github.com/jpmens/mqttwarn


== Utilisation de MQTT en Java ==
== Utilisation de MQTT en Java ==
Line 31: Line 37:
* [[Mosquitto]] (en Python)
* [[Mosquitto]] (en Python)
* [[Moquette]] (en Java)
* [[Moquette]] (en Java)
* [[RabbitMQ]]


=== Client ===
=== Client ===
Ensuite, prendre une API Java pour un client MQTT. Il en existe plusieurs (voir http://mqtt.org/software):
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:
Ci-dessous, la démarche à suivre pour deux d'entre eux:


* [[WMQTT]] : Petite console graphique pubsub MQTT en Java SE et ME (IA92)

==== Eclipse Paho ====
==== Eclipse Paho ====
* Le site: http://www.eclipse.org/paho
* Le site: http://www.eclipse.org/paho
Line 45: Line 56:
* Un artefact maven est disponible pour ce client: http://mvnrepository.com/artifact/org.fusesource.mqtt-client/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.
* Des exemples d'implémentation publisher/subscriber sont disponibles sur la page d'accueil de leur site.

==Publication & Découverte==

===[[DNS]]===
<pre>
dig _mqtt._tcp.mosquitto.org srv
</pre>

===[[DNS-SD]]===
Term 1
<pre>
dns-sd -R "LocalMosquitto" _mqtt._tcp. . 1883 "Mosquitto is started"
</pre>

Term 2
<pre>
dns-sd -B _mqtt._tcp.
</pre>

Term 3
<pre>
dns-sd -R "SecuredLocalMosquitto" _smqtt._tcp. . 8883 "Secured Mosquitto is started"
</pre>

Term 4
<pre>
dns-sd -B _smqtt._tcp.
</pre>


==A regarder==
==A regarder==
Line 50: Line 89:
* http://www.eclipsecon.org/2012/sessions/using-mqtt-and-eclipse-tools-write-end-end-m2m-application-0
* 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://www.eclipsecon.org/2012/sites/eclipsecon.org.2012/files/EclipseCon2012_M2M.pdf
* Tutoriel : https://docs.google.com/presentation/d/1N9OiMxiVWPbsVrAcPfT-J0k1o7a-neIp7TVFGa6AkWM/edit?pli=1#slide=id.g1d409a344_09

* http://blog.hekkers.net/2012/10/13/realtime-data-with-mqtt-node-js-mqtt-js-and-socket-io/
* 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/
* http://chemicaloliver.net/internet/node-js-mqtt-and-websockets/

Latest revision as of 07:34, 9 November 2014

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, WebSockets ...

MQTT a été proposé à la standardisation à l'OASIS.

Introduction

API, Logiciels, Middleware

Node.js

Python

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

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:


  • WMQTT : Petite console graphique pubsub MQTT en Java SE et ME (IA92)

Eclipse Paho

/!\ Pas d'artefact maven disponible a l'heure d'aujourd'hui !

FuseSource MQTT

Publication & Découverte

DNS

dig _mqtt._tcp.mosquitto.org srv

DNS-SD

Term 1

dns-sd -R "LocalMosquitto" _mqtt._tcp. . 1883 "Mosquitto is started"

Term 2

dns-sd -B _mqtt._tcp.

Term 3

dns-sd -R "SecuredLocalMosquitto" _smqtt._tcp. . 8883 "Secured Mosquitto is started"

Term 4

dns-sd -B _smqtt._tcp.

A regarder