De plus en plus d'objets connectés nous entourent, et la courbe est en augmentation de façon exponentielle
Dans ce talk nous présenterons, le protocole MQTT et en quoi il peut répondre aux enjeux de l'IoT ( Coûts du traffic / Volumétrie de message / Réactivité / ...)
Suivi d'un retour d'expérience sur la mise en place d'une architecture orientée micro-service sur une tablette Android customisée pour de la téléassistance et télésurveillance où nous avons remplacé le mécanisme d'Intent par MQTT afin d'assurer la robustesse de la plateforme.
Speakers:
Arnaud THOREL - Architecte J2EE / Mobile
Dans le développement d'application Android depuis la version JellyBean, j'ai mis en place les architectures et développés des applications pour du grand publique.
Architecte et porteur de l'offre digitalisation des services au sein d'ASI.
J'ai travaillé sur la mise en place de l'architecture autour des plateformes de services notamment pour la société Cegedev sur la partie Android et toute l'infrastructure cloud
Laurent YHUEL - Expert Technique Mobile
Dans le développement d'application Android depuis la version Gingerbread, j'ai travaillé sur de nombreux projets d'applications ainsi que de systèmes embarqués Android autour de la sécurité fingerprint, du nfc, des secure elements.
Aujourd'hui expert technique chez ASI sur des projets innovants développés en Kotlin avec Architecture Components.
Expert sur les sujets de customisation de ROM (OS Android) sur des appareils customisés pour un projet téléassistance et télésurveillance
J'ai porté la stack Z-Wave, un des protocole IoT les plus repandus sur le marché, en Android avec le NDK
2. Speakers
Parce-que les gens veulent savoir
Arnaud Thorel
Architecte Logiciel
athorel@asi.fr
Laurent Yhuel
Expert Technique
lyhuel@asi.fr
Ne nous cherchez pas sur twitter
on est trop vieux pour ces
conneries
3. Les objets connectés et nous
Présentation de MQTT
Mais au fait pourquoi MQTT plutôt que …
Retour d’expérience
Sommaire
3
8. Les différents types d’objets
Always On
-
Connection permanente
Actions de type contacteur
IoT
8
Reporting Devices
-
Fréquence de réveil sur un
événement
Remontée d’alertes
Listening Devices
-
Fréquence de réveil cyclique
Remontée d’une information
valide dans le temps
9. Les problématiques auxquelles on doit répondre
Comment assurer une communication « temps réel » ?
Comment maîtriser l’impact « coûts / réseau » ?
Comment gérer les pertes de connexion ?
• micro coupures
• veilles des objets connectés
• …
Comment connaître facilement le statut de son réseau IoT ?
IoT
9
10. Les objets connectés et nous
Présentation de MQTT
Mais au fait pourquoi MQTT plutôt que …
Retour d’expérience
Sommaire
10
11. Acteur
Evénement
Le lexique
MQTT
11
Broker
Assure le routage
Gestion des connexions
Gestion des abonnements à des événements
Client
Publisher : Emetteur d’événements
Subscriber : Abonné à des événements
Topic « Titre » de l’événement
Payload Message de l’événement(donnée)
12. En quelques mots
▪ Protocole d’échange de message - TCP/IP
▪ Fonctionne en mode PUB / SUB sur des topics
▪ Léger et peu gourmand en bande passante
▪ 2 octets – taille d’un ping
▪ Data / Tech Agnostique
▪ Standard OASIS depuis la version 3.1.1 (2015)
MQTT
12
18. Etat du réseau / Mécanisme LWT
Le mécanisme publish/subscribe ne permet pas de connaître l’état des autres nœuds.
• MQTT offre un mécanisme de LastWill / Testament
• Exécuté lorsqu’un nœud perd la connexion.
MQTT
18
Connect
clientId
username
lastWillTopic
lastWillMessage
lastWillRetain
keepAlive
112a4db0-3585-48aa
client-112a
client/status/client-112a
0
1
60
Après la connexion, le client doit envoyer un premier message « 1 » (online) sur le même topic
La souscription sur le topic client/status/+ retourne ainsi le dernier état connu de chaque client
19. Les sécurités applicables par couches
MQTT - Sécurité
19
Network
Transport
Application
Gestion des droits
d’accès
(topics)
Authentification
Limitation de
la taille des
message
Quotas
Chiffrement
des messages
(end 2 end)
Limitation
bande
passante
Durée de
sessions
SSL/TLS
Clé
publique
Filtrage
IP
DMZ
VPN
20. Les mécanismes d’authentification
Par défaut un broker MQTT permet un accès anonyme complet.
Support d’autres types d’authentification
▪ Basic Login / Password
▪ OAuth 2.0
▪ TOTP
▪ Auth0
▪ Certificat X509
MQTT - Sécurité
20
21. Broker
Gestion des rôles et isolation des données
Autorisation en publication et souscription basé sur le topic
Possibilité d’utiliser les wildcards (+, #)
Topics réservés administration / $SYS
Déconnexion automatique en
cas de souscription/publication frauduleuse
MQTT - Sécurité
21
client
A1
Vendor
A
PUB vendors/A/clients/1 SUB vendors/A/clients/#
PUB vendors/A/push/1SUB vendors/A/push/1
22. Gestion de la connexion au broker
String broker = "tcp://my-server:1883";
String id = "Demo-IoT";
MemoryPersistence persistence = new MemoryPersistence();
// Connection
MqttClient mqttClient = new MqttAsyncClient(broker, id, persistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
mqttClient.setCallback(this);
mqttClient.connect(connOpts).waitForCompletion(3000);
// Disconnection
mqttClient.disconnect();
Coding - Connexion
22
23. Gestion des callbacks
public class MyMqttClient extends MqttCallback {
public void connectionLost(Throwable cause) {
// Called when the connection to the server is lost
}
public void deliveryComplete(IMqttDeliveryToken token) {
// Called when delivery for a message has been completed
}
public void messageArrived(String topic, MqttMessage message) {
// Called when a message arrives.
}
}
Coding - Callback
23
24. Abonnement à un topic
String topic = "vendor/arkea/client/77777798/#";
int qos = 2;
// Subscribe
mqttClient.subscribe(topic, qos);
Coding - Subscribe
24
29. Les grands acteurs proposent des plateformes IoT utilisant MQTT
MQTT is Hype
29
AWS IoT
Azure IoT
30. Les objets connectés et nous
Présentation de MQTT
Mais au fait pourquoi MQTT plutôt que …
Retour d’expérience
Sommaire
30
31. Joint venture entre Groupama et Arkéa
Objectif
Offre de téléassistance réactive et préventive 24h/24 et 7j/7
Favoriser le lien social (aidants familiaux ou professionnels)
Concept
Base d’une tablette Android re-designée
4G / Wifi / Ethernet
433 Mhz, 669 Mhz, Zwave (668 Mhz), Bluetooth, NFC
Ouvert à tous types de capteurs
Les attentes
Architecture innovante et modulaire
Expertise Android, NDK, ROM Custom
Supervision et contrôle à distance du parc
Cegedev – Téléassistance à la personne
31
34. Une architecture au service du besoin
Besoins fonctionnels
Supporter différents types de capteurs / protocoles
IoT
Orientation marque blanche / multi-offre
Permettre d’installer des applications autorisées
La plateforme doit être fiable
Architecture IoT
34
Besoins techniques
Garantir une continuité de service (même avec un
réseau dégradé)
Temps réel
Limiter les coûts (consommation data)
Mises à jour applicatives et firmware (OTA)
36. Cegedev – Téléassistance connectée
36
Support
Service après vente
Gestion de parc
Smarts services
Alerte tablette
hors réseaux
Analyse de données
Contrôle à distance
Temps réel
Téléassistance connectée
Réseau social familial
Passerelle IoT
Broker MQTT
Clustérisé
MQTT au centre de notre solution
38. Multi vendeur, Multi Offres => Multi usage
Tablette et montre connectée
EHPAD & Résidences Séniors
Solutions anti-errance &
Alzheimer
Cegedev – Une plateforme évolutive
38
D’autres usages à venir
Système de télésurveillance (avec
levée de doute vidéo et audio) et
domotique
Intervention d'un gardien et des
Forces de l'Ordre
Extension des solutions actuelles
Nouveaux usages