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

IOT & JavaScript pour le MontpellierJUG Octobre...

IOT & JavaScript pour le MontpellierJUG Octobre 2015

Philippe CHARRIERE

October 30, 2015
Tweet

More Decks by Philippe CHARRIERE

Other Decks in Programming

Transcript

  1. #iotjs #montpellierjug –Un de mes anciens patrons “La semaine prochaine,

    nous voyons un gros client. Il faut qu’il comprenne que nous sommes les champions de l’IOT … Il nous faut une prez …”
  2. #iot #ElsassJUG WINDEV et le Raspberry Pi : une combinaison

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

    l’environnement Représentation, Visualisation Identification Interactivité Autonomie
  4. #iotjs #montpellierjug 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
  5. #iotjs #montpellierjug 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
  6. #iotjs #montpellierjug 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
  7. #iotjs #montpellierjug 2020: +de 50 Mds d’objets connectés dans le

    monde +10% du Produit mondial brut source: the iot book
  8. #iotjs #montpellierjug à la fin de cette année Smartphones +

    ordis : plus que 44% des objets connectés source: the iot book
  9. #iotjs #montpellierjug 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. #iotjs #montpellierjug Nano-computer Cubieboard 4 ODroid C1 Raspberry Pi 2

    BeagleBone Black Micro-Processeur Mémoire Disque (souvent Flash) OS (souvent Linux) …
  11. #iotjs #montpellierjug 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. #iotjs #montpellierjug 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. #iotjs #montpellierjug exemple de projet IOT Gateway Devices (Hub) Smart(er)

    devices Edge devices Sensors Communication, SDK, Intelligence, … Things IOT Managemen t Cloud Infrastructure s Devices management (reco, provisionning, laintenance, position, …) Communications (Broker, abonnements, …)
  14. #iotjs #montpellierjug exemple de projet IOT Gateway Devices (Hub) Smart(er)

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

    devices Edge devices Sensors Communication, SDK, Intelligence, … Things IOT Managemen t Cloud Infrastructure s 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. #iotjs #montpellierjug 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. #iotjs #montpellierjug 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. #iotjs #montpellierjug MQTT 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 Publish / Subscribe pattern
  19. #iotjs #montpellierjug Client MQTT 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);
 }); NodeJS
  20. #iotjs #montpellierjug 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. #iotjs #montpellierjug MQTT Couche transport Chiffrement SSL / TLS Protocole

    Authentification par username/password Chiffrement possible du message (Payload) Sécurité
  22. #iotjs #montpellierjug MQTT Client & Broker (*) Universal Asynchronous Receiver

    Transmitter Micro-controller (avec capteurs) Client MQTT: ESP8266 (via Wifi) Arduino (via UART(*)) Arduino YUN (via Wifi) Nano-computer Client et/ou Broker MQTT
  23. #iotjs #montpellierjug Brokers MQTT Open source Mosquitto (C) Mosca (Javascript/node)

    Moquette (Java) RabbitMQ (Erlang) (Pivotal) ... Commerciaux WebsphereMQ (?) (IBM) RabbitMQ (Erlang) (Pivotal) HiveMQ ...
  24. #iotjs #montpellierjug “archi” app.js http webapp websocket ds navigateur MQTT

    broker MQTT broker.js nest.socket.js “NEST” / Client MQTT mqtt.js + socket.io socket ROOM 01 / Client MQTT mqtt.js ROOM 02 / Client MQTT mqtt.js MQTT publish temperature/room01 publish humidity/room01 publish temperature/room02 publish humidity/room02 subscribe temperature/room01 subscribe humidity/room01 subscribe temperature/room02 subscribe humidity/room02 subscribe informations/+ room01.js room02.js
  25. #iotjs #montpellierjug CoAP “Protocole d’applications contraintes” Un protocole RESTful: Request/Response

    GET, POST, PUT, DELETE Pensé pour les réseaux LoWPAN (Low-Power Wireless Personal Area Network) = Réseaux de toutes petites machines Messages légers pour des devices très simples Le serveur est “sur” le hub ou l’objet connecté (tout dépend les possibilités de l’objet)
  26. #iotjs #montpellierjug CoAP Un client interroge des ressources GET /status/led/red

    POST /control/switchon/red Couches de transport alternatives coap+sms://00660922111/sensors/temp-bedroom
  27. #iotjs #montpellierjug “archi” app.js http webapp websocket ds navigateur nest.socket.js

    “NEST” / Client CoAP node-coap + socket.io socket ROOM 01 / “serveur” CoAP node-coap ROOM 02 / “serveur” CoAP node-coap coap://localhost:5001/temperature coap://localhost:5001/humidity coap request room01.js room02.js coap://localhost:5002/temperature coap://localhost:5002/humidity
  28. #iotjs #montpellierjug Petites Démos … ce qui va suivre pourrait

    choquer les “vrais” makers #iotjs #montpellierjug
  29. #iotjs #montpellierjug Le Turk était un ordinateur “joueur d’échec” créé

    par Andy Goode. http://terminator.wikia.com/wiki/Andy_Goode
  30. #iotjs #montpellierjug Et il devint ainsi le début de l’intelligence

    artificielle “John Henry” Il a été volé puis vendu à Zeira Corporation http://terminator.wikia.com/wiki/John_Henry http://terminator.wikia.com/wiki/Zeira_Corporation
  31. #iotjs #montpellierjug Bob’s brain Raspberry MQTT Messages MQTT Broker MQTT

    Client + MQTT Client to send commands to RPI This is “SKYNET”
  32. #iotjs #montpellierjug MQTT publish/subscribe pattern MQTT Broker: Mosca https://github.com/mcollina/mosca npm

    install mosca MQTT Client: MQTT.js https://github.com/mqttjs/MQTT.js npm install mqtt
  33. #iotjs #montpellierjug Bob’s “Expression(mood) Module” Raspberry Serial Port (UART) Firmata

    protocol for communicating with software on the host computer UART: Universal Asynchronous Receiver / Transmitter Arduino
  34. #iotjs #montpellierjug Envoyer des commandes au “Mood” module Raspberry BOB’s

    Brain Serial Port (UART) Arduino BOB’s Expression Module MQTT Messages MQTT Broker “SKYNET” + MQTT Client to send commands to RPI Software to manage Arduino with Johnny-five + MQTT Client
  35. #iotjs #montpellierjug Raspberry BOB’s Brain Serial Port (UART) Arduino BOB’s

    Expression Module MQTT Messages MQTT Broker SKYNET BOB a besoin de “ressentir” MQTT Temperature sensor Distance sensor Raspberry + GrovePI BOB’s sensitive module
  36. #iotjs #montpellierjug Raspberry BOB’s Brain Serial Port (UART) Arduino BOB’s

    Expression Module MQTT Messages MQTT Broker SKYNET BOB à besoin de se déplacer MQTT Raspberry + GrovePI BOB’s sensitive module Raspberry + GoPiGo BOB’s motion module MQTT