Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IOT de l'objet à la plateforme (RivieraDev 2015)

IOT de l'objet à la plateforme (RivieraDev 2015)

http://www.rivieradev.fr

C'est bien beau tous ces objets connectés, mais qu'est-ce que réellement un objet connecté?, comment ça communique? (et avec quoi?) ... Et au fait ça se gère comment? (parce que l'on peut se retrouver avec beaucoup d'objet connectés à gérer ... par exemple les tireuses à bières des pubs londoniens ... si elles étaient connectées ... hein?) On parle d'Internet of Things, mais j'appellerais ça aussi ""Interactions of Things"" Mon objectif est de vous montrer à travers quelques démos avec CylonJS, Mosca, Epoch , ..., comment on peut construire simplement une plateforme IOT, de l'objet connecté à sa gestion et aussi vous présenter les grands principes de l'IOT. Pour imager les démos je me ferais ""accompagner"" d'une sphero (et peut-être d'autres jouets, tout dépend du facteur)

code source: https://github.com/k33g/thingsmaster

Philippe CHARRIERE

June 14, 2015
Tweet

More Decks by Philippe CHARRIERE

Other Decks in Programming

Transcript

  1. #iot #rivieradev WINDEV et le Raspberry Pi : une combinaison

    gagnante ! http://www.pcsoft-windev-webdev.com/videos19/tdftech2014/windev-interagit-avec-le-raspberry-pi/index.html
  2. #iot #rivieradev 1 OC = {composantes} + API Sensibilité à

    l’environnement Représentation, Visualisation Identification Interactivité Autonomie
  3. #iot #rivieradev On remet les choses dans leur contexte “isolés”,

    autonomes, déconnectés Machine to Machine Télémétrie Télématique Domotique Energie Sécurité Machine outils Chaînes de production Monitorer, surveiller, contrôle & gestion à distance
  4. #iot #rivieradev On remet les choses dans leur contexte “isolés”,

    autonomes, déconnectés Machine to Machine Télémétrie Télématique Domotique Energie Sécurité Machine outils Chaînes de production Monitorer, surveiller, contrôle & gestion à distance Smart Systems “intelligence in subnets of things” Things Objets connectés Smart Homes Connected Cars Intelligent Buildings Intelligent Transports Systems Smart Meters & Grids Smart Retailing … Sensors Devices Systems People Products … X° Connexions & flux de données
  5. #iot #rivieradev Un marché en pleine expansion Connectivité accrue wifi,

    BLE, 3G/4G/ … 5G Facteurs techniques Augmentation des performances & Puissance de calcul Miniaturisation & Autonomie Facteurs économiques favorables
  6. #iot #rivieradev 2020: +de 50 Mds d’objets connectés dans le

    monde +10% du Produit mondial brut source: the iot book
  7. #iot #rivieradev 2018: +400 Millions d’objets connectés en France vs

    59 millions d’internautes source: the iot book
  8. #iot #rivieradev à la fin de cette année Smartphones +

    ordis : plus que 44% des objets connectés source: the iot book
  9. #iot #rivieradev Diversité des “Things” Les objets connectés deviennent de

    plus en plus complets & puissants Les usages sont multiples (du récréatif à l’utile) Certains ont la capacité à utiliser des langages & des technologies avancées
  10. #iot #rivieradev Nano-computer Cubieboard 4 ODroid C1 Raspberry Pi 2

    BeagleBone Black Micro-Processeur Mémoire Disque (souvent Flash) OS (souvent Linux) …
  11. #iot #rivieradev Nano-Computer / Micro-controller Nano-Computer Puissance assez importante Applications

    complexes Multiples applications Faible consommation Quelques W Piles non envisageables (?) Micro-Controller Puissance relativement faible Applications simples Une seule application Très faible consommation Quelques mW Fonctionne sur piles Très proche du HW Souvent langage C
  12. #iot #rivieradev exemple de projet IOT Gateway Devices (Hub) Smart(er)

    devices Edge devices Sensors Communication, SDK, Intelligence, … Things Long Range réseaux longue portée fréquences basses liaisons bidirectionnelles (?) Huawei
  13. #iot #rivieradev exemple de projet IOT Gateway Devices (Hub) Smart(er)

    devices Edge devices Sensors Communication, SDK, Intelligence, … Things IOT Management Cloud Infrastructures Devices management (reco, provisionning, laintenance, position, …) Communications (Broker, abonnements, …)
  14. #iot #rivieradev exemple de projet IOT Gateway Devices (Hub) Smart(er)

    devices Edge devices Sensors Communication, SDK, Intelligence, … Things IOT Management Cloud Infrastructures Devices management (reco, provisionning, laintenance, position, …) Communications (Broker, abonnements, …) Données Stockage Stockage Sécurité des données Chiffrement … (time series)
  15. #iot #rivieradev exemple de projet IOT Gateway Devices (Hub) Smart(er)

    devices Edge devices Sensors Communication, SDK, Intelligence, … Things IOT Management Cloud Infrastructures Devices management (reco, provisionning, laintenance, position, …) Communications (Broker, abonnements, …) Données Stockage Stockage Sécurité des données Chiffrement … Utilisation, Intelligence, Analyse, … BI, BigData, Recherche, ….
  16. #iot #rivieradev MQTT Standard OASIS (v3.1.1) depuis 11/2014 Faible overhead,

    Repose sur TCP/IP Modèle événementiel “Content agnostic” = Standard Simple & Léger
  17. #iot #rivieradev MQTT Support des Websockets MQTT-SN (sensors network) Communication

    non TCP/IP XBee, UART (Universal Asynchronous Receiver Transmitter), ... Nombreuses implémentations C / C++ / Java / Python / Lua / JavaScript Ouverture & Interopérabilité
  18. #iot #rivieradev MQTT Publish / Subscribe pattern Broker de message

    Publisher Listener (Subscriber) Publisher Listener Listen Event Publish Clients MQTT Publication de message sur un “topic” Souscription à des “topics” (wildcards possibles) Broker MQTT Routage / Distribution Rétention des messages Mode bridge possible
  19. #iot #rivieradev Client MQTT NodeJS var mqtt = require('mqtt');
 var

    client = mqtt.createClient(1883, 'localhost');
 
 client.subscribe('sensor/tmp36');
 
 client.publish('sensor/tmp36', 'hello!');
 
 client.on('message', function(topic, message) {
 console.log(topic + ":" + message);
 });
  20. #iot #rivieradev MQTT QoS “à la carte” 0 → Best

    effort 1 → Au moins 1 message délivré 2 → 1 unique message délivré Rétention Détection des déconnexions des clients Emissions des messages stockés Robustesse (Quality of Service)
  21. #iot #rivieradev MQTT Couche transport Chiffrement SSL / TLS Protocole

    Authentification par username/password Chiffrement possible du message (Payload) Sécurité
  22. #iot #rivieradev MQTT Micro-controller (avec capteurs) Client MQTT: ESP8266 (via

    Wifi) Arduino (via UART(*)) Arduino YUN (via Wifi) Nano-computer Client et/ou Broker MQTT Capteurs via BLE, GPIO, … Client & Broker (*) Universal Asynchronous Receiver Transmitter
  23. #iot #rivieradev Brokers Open source Mosquitto (C) Mosca (Javascript/node) Moquette

    (Java) RabbitMQ (Erlang) (Pivotal) ... Commerciaux WebsphereMQ (?) (IBM) RabbitMQ (Erlang) (Pivotal) HiveMQ ... MQTT
  24. #iot #rivieradev Programmer les Things type “arduino” C/C++ (directement) Javascript,

    Lua, Python (“à distance” via firmata) … type “RPI” tous les langages polyglottes autres … piloter à distance via IR, BLE, Wifi …
  25. #iot #rivieradev Programmer les Things de plus en plus de

    JavaScript http://johnny-five.io/ http://cylonjs.com/
  26. #iot #rivieradev Cylon.robot({
 connections: {
 sphero: { adaptor: 'sphero', port:

    '/dev/tty.Sphero-RRY-AMP-SPP' },
 },
 devices: {
 sphero: { driver: 'sphero' }
 },
 work: function(my) {
 
 my.sphero.roll(5, Math.floor(Math.random() * 360));
 my.sphero.setRGB(COLORS.GREEN);
 }
 }).start();
  27. #iot #rivieradev Cylon.robot({
 connections: {
 sphero: { adaptor: 'sphero', port:

    '/dev/tty.Sphero-RRY-AMP-SPP' },
 server: {adaptor: 'mqtt', host: 'mqtt://45.124.78.99:1883'}
 },
 devices: {
 sphero: { driver: 'sphero' }
 },
 work: function(my) {
 
 my.server.subscribe('/sphero/+');
 
 my.server.on('message', function (topic, data) {
 if (topic == "/sphero/move-sphero") {
 my.sphero.roll(data.speed, data.angle);
 }
 });
 }
 }).start();
  28. #iot #rivieradev String content = "Hello";
 String broker = "tcp://iot.rivieradev.fr:1883";


    MemoryPersistence persistence = new MemoryPersistence();
 
 MqttClient client = new MqttClient(broker, "clientId", persistence);
 MqttConnectOptions connOpts = new MqttConnectOptions();
 connOpts.setCleanSession(true);
 client.connect(connOpts);
 
 MqttMessage message = new MqttMessage(content.getBytes());
 message.setQos(0);
 client.publish("/hello-world", message); & Java
  29. #iot #rivieradev Petites Démos … ce qui va suivre pourrait

    choquer les “vrais” makers #iot #rivieradev
  30. #iot #rivieradev Arduino Mon 1er Thermomètre avec Johnny-Five Serial Port

    (UART) Firmata protocol for communicating with software on the host computer Universal Asynchronous Receiver / Transmitter
  31. #iot #rivieradev Sphero + RPI + Broker “double sens” MQTT

    Informations Gateway HTTP WebSocket Polymer EpochJS Client BLE Client MQTT > publish: /hello-sphero > subscribe: /sphero/+ Broker MQTT Client MQTT > subscribe: /hello-sphero > publish: /sphero/color-sphero > publish: /sphero/move-sphero Dashboard web