Bienvenue sur le site Demey Consulting

Luc-Michel Demey

Consultant indépendant
Architecte Technique Senior - Expert WebSphere / MQSeries / Broker

vous propose son assistance dans les domaines suivants :

  • Architecture
  • Formation
  • Infrastructure
  • Sécurité
  • Expertise
  • Développement

Contact : info2013 demey-consulting.fr vCard Demey Consulting
Tél. : +33 608 755 655
Fax : +33 955 740 317


Demey Consulting
72, avenue du Général de Gaulle
94170 Le Perreux sur Marne - France
N° Siren : 438 797 276 - Code APE : 6202A
N° de TVA intracommunautaire : FR87 438 797 276
Organisme de formation enregistré sous le numéro 11940595694

Missions sur Paris & RP - Province et Europe ponctuellement

GIF - 4.2 ko GIF - 860 octets


lundi 22 avril 2013
par Luc-Michel Demey

Mise en œuvre de MQTT avec WMQ 7.5

Contexte

Depuis la version 7.0.1.2, le logiciel WebSphere MQ est capable de transporter et de traiter un nouveau format de message, le format « MQTT ». Cet article présente un exemple de mise en œuvre de MQTT avec WebSphere MQ.
Il s’agit de collecter les paramètres environnementaux d’une pièce (température, humidité, luminosité), et d’envoyer ces données à des applications WebSphere MQ via MQTT.
Les données sont collectées via des capteurs pilotés par une carte Arduino.

MQTT

MQTT (MQ Telemetry Transport) est un protocole de messaging destiné aux applications (M2M).
Il est idéal pour relier des capteurs, des actionneurs, ... à un centre de commande avec une bande passante faible et/ou de mauvaise qualité.
C’est un protocole de type PubSub, qui s’interface avec WebSphere MQ (MQSeries) mais également avec un certain nombre de brokers Open Source.
Il a été initialement développé par Andy Stanford-Clark (IBM) et Arlen Nipper (EuroTech), puis donné à la communauté Open Source. La spécification du protocole MQTT est disponible sur developerWorks.
Il est utilisé aussi bien pour remonter des informations de pression, débit, température, sur des pipe-lines, comme support pour la messagerie instantanée dans Facebook, ou pour monitorer à distance des pacemakers.
Il existe des clients MQTT pour différents langages et plates-formes, et en particulier : C, C++, Java, Python, Android, Mbed, Raspberry Pi et … Arduino.
Il existe également des « Advanced Clients » fournis par IBM qui apportent des fonctions supplémentaires.

Arduino

L’Arduino est une plate-forme de prototypage « open-source », c’est-à-dire que les différents éléments (schémas des cartes électroniques, typons pour graver les circuits, …) sont libres de droits.
Les cartes Arduino embarquent un microcontrôleur (par exemple un ATmega328), un peu de mémoire et beaucoup d’entrées sorties. Elles se programment avec un IDE également open-source qui s’apparente au C++.
Sur les cartes Arduino, on peut empiler des « shield », qui permettent d’ajouter des fonctions (Ethernet, Wifi, …) à une carte Arduino de base. Plus d’information : http://www.arduino.cc/en/Guide/Introduction

Matériel utilisé

  • Un serveur Intel (pour héberger le Queue Manager)
  • Une carte Arduino Uno + shield Ethernet
  • Un capteur humidité / température DHT22/AM2302
  • Une photoresistance type CE5-09 (pour la luminosité)
    JPEG - 147.4 ko
    Plate-forme de test

On voit ci-dessus la carte Arduino (en dessous) alimentée par un câble USB (blanc), le shield Ethernet au dessus avec un câble RJ45 (jaune), en bas à droite le AM2302, et sur la plaque d’essai la LDR et sa résistance.

Logiciels utilisés

Application et paramétrage

L’application Arduino a été développée via l’IDE fourni, en utilisant les différents exemples disponibles. Le principe est simple :

  • Initialisation des paramètres (adresse IP de l’Arduino, adresse IP du serveur MQ, définition des topics PubSub, affectation des broches de l’Arduino en fonction des capteurs connectés)
  • Boucle de lecture sur les capteurs, conversion des valeurs, et publication en MQTT

  • vue de la fenêtre de développement dans l’IDE :
    PNG - 31.3 ko
    Fenêtre de dévelopement de l’IDE Arduino

Le programme complet est en annexe.
Coté WebSphere MQ, il suffit de créer les files d’attente, et de faire pour celles-ci une souscription administrative.
Exemple pour une file :


DEFINE QLOCAL(’THL01.Hum’) +
MAXDEPTH(50000) +
REPLACE

DEFINE SUB(’THL01.Hum’) +
TOPICSTR(’THL/THL01/humidite’) +
DEST(’THL01.Hum’) +
REPLACE

Le script MQSC complet est en annexe.
Il est possible de suivre l’exécution de l’application via une console :

PNG - 35.3 ko
Console de l’IDE

Consommation des messages

Les messages reçus sur le Queue Manager sont consommés avec le MA01. On utilise les commandes suivantes :


q -m LMD75 -I THL01.Hum -w 120
q -m LMD75 -I THL01.Temp -w 120
q -m LMD75 -I THL01.Lum -w 120

Résultat :

PNG - 3.1 ko
Flux "humidité"
PNG - 3.3 ko
Flux "Luminosité"
PNG - 3.2 ko
Flux "Température"

Statut du canal MQTT :

PNG - 20.3 ko
Canal MQTT

Détail d’un message MQTT avec l’explorateur WMQ

PNG - 14 ko
Liste des messages
PNG - 5.1 ko
Propriété du message
PNG - 12.6 ko
Détail du message

Conclusion

L’intégration de MQTT dans un environnement WebSphere MQ est relativement facile à réaliser.
Les messages récupérés par les applications sont de type PubSub (en tête RFH2), et ils peuvent être renvoyés vers un autre Queue Manager, un cluster MQ, … ou consommés par un client MQ classique.
Avec ce type d’application, il est possible de remonter facilement des paramètres environnementaux vers une infrastructure informatique « classique » (Queue Managers, serveurs, d’application, …). Il est également possible d’envoyer via MQTT des commandes à des actionneurs (relais, moteurs, vannes, …) mais il faut probablement dans ce cas ajouter une couche de sécurité à la communication.

Liens

  • Le site MQTT
  • Page MQTT sur Wikipedia
  • RedBook IBM : Building Smarter Planet Solutions with MQTT and IBM WebSphere MQ Telemetry SG24-8054-00

Scripts

Script MQSC :

texte - 752 octets
Création des files et des souscriptions admministratives

Programme Arduino :

texte - 2.6 ko
Programme Arduino THL01_Eth_MQTT_1.ino

Brèves

17 mai - Pas de conférence WebSphere cette année en Europe

La conférence annuelle WebSphere Europe est depuis plus de 10 ans un moment fort pour les (...)

11 mai - Fin de support pour WMB 6.1

IBM annonce ce jour la fin du support (EOS) pour WebSphere Message Broker 6.1 à partir du 30 (...)

7 mai - Annonce du Fixpack 7.0.1.10 pour WMQ version 7.0

Le FixPack 7.0.1.10 pour WebSphere MQ 7.0 est disponible.

3 mai - Vulnérabilités JRE 5 et 6 dans WMQ 7.0, 7.1 et 7.5

Plus de 30 vulnérabilités de sécurité liées à Java publiés pour WebSphere MQ version 7.1 et 7.5. La (...)

27 avril - Nouveau Redpaper sur WAS 8.5.5

A peine annoncé et déjà un nouveau Redpaper sur WebSphere Application Server 8.5.5 est disponible (...)

23 avril - WebSphere Application Server version 8.5.5 + Liberty Core 8.5.5

IBM annonce ce jour la version 8.5.5 WebSphere Application Server. Il s’agit essentiellement (...)

Sur le Web

17 mai - Use"isolate the resource provider" to establish data source connections using a different JDBC driver from the same database vendor

17 mai - IC46958: EXIT STATUS FROM RUNMQLSR IS UNIX SPECIFIC NOT OPENVMS

17 mai - IC90890: MQ V7.1 OR V7.5: EBCDIC NEWLINE X'15' CONVERTED INTO ASCII X'0A' INSTEAD OF X'85' WHEN USING CONVEBCDICNEWLINE=TABLE

17 mai - PM88682: INCONSISTENCY BETWEEN THE CF AND DB2 AS REPORTED BY CSQI033E WHICH CAUSES STRUCTURE TO BE MARKED AS FAILED.

17 mai - PM86239: TRIGGERINT SET TO 15000 (15 SECS) BUT TRIGGER MESSAGE GENERATES EVERY 20 SECONDS.

17 mai - IC91381: AMQRMPPA PROCESS FAILS WITH ACCESS VIOLATION ORIGINATING IN ZSTXACLOSE_INT FDC WITH PROBE ID XC130031 PRODUCED

17 mai - IC90678: THE -X PARAMETER OF SETMQENV COMMAND DOES NOT SET THE BIT TO THE MODE SPECIFIED.

17 mai - IY79797: How to set the file descriptors kernel parameter on Solaris 10

16 mai - When and how to use the WMQ utility amqicfil for installing interim fixes

16 mai - Unexpected SRVE0326E error in the Application.

16 mai - PM86173: INAPPROPRIATE ROUTING BEHAVIOR ON JSR 116 APPLICATIONS WAS.SIP.CONTAINER

16 mai - PM87974: JAVA.LANG.NULLPOINTEREXCEPTION THROWN IN TURKISH OS WHILE HANDLI NG SOAP MESSAGE WITH ATTACHMENT

16 mai - PM87965: ARRAYINDEXOUTOFBOUNDSEXCEPTION CAUSED BY INSUFFICIENT MULTI-BYTE CHARACTER PROCESSING

16 mai - PM87963: ARRAYINDEXOUTOFBOUNDSEXCEPTION CAUSED BY INSUFFICIENT MULTI-BYTE CHARACTER PROCESSING

16 mai - PM87961: ARRAYINDEXOUTOFBOUNDS ERROR IS SEEN ON CERTAIN SCENARIOS THAT ITERATE OVER THE CHARACTERS OF MULTI-BYTE VALUED DATA.