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

Présentation IOT + JavaScript pour l'ElsassJUG

Présentation IOT + JavaScript pour l'ElsassJUG

Philippe CHARRIERE

October 03, 2015
Tweet

More Decks by Philippe CHARRIERE

Other Decks in Programming

Transcript

  1. #iot #ElsassJUG –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. #iot #ElsassJUG 1 OC = {composantes} + API Sensibilité à

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

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

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

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

    BeagleBone Black Micro-Processeur Mémoire Disque (souvent Flash) OS (souvent Linux) …
  12. #iot #ElsassJUG 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
  13. #iot #ElsassJUG 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
  14. #iot #ElsassJUG 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, …)
  15. #iot #ElsassJUG 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)
  16. #iot #ElsassJUG 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, ….
  17. #iot #ElsassJUG 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
  18. #iot #ElsassJUG 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é
  19. #iot #ElsassJUG 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
  20. #iot #ElsassJUG 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);
 });
  21. #iot #ElsassJUG 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)
  22. #iot #ElsassJUG MQTT Couche transport Chiffrement SSL / TLS Protocole

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

    Wifi) Arduino (via UART(*)) Arduino YUN (via Wifi) Nano-computer Client et/ou Broker MQTT Client & Broker (*) Universal Asynchronous Receiver Transmitter
  24. #iot #ElsassJUG Brokers Open source Mosquitto (C) Mosca (Javascript/node) Moquette

    (Java) RabbitMQ (Erlang) (Pivotal) ... Commerciaux WebsphereMQ (?) (IBM) RabbitMQ (Erlang) (Pivotal) HiveMQ ... MQTT
  25. #iot #ElsassJUG “archi” #iot #ElsassJUG 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
  26. #iot #ElsassJUG 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)
  27. #iot #ElsassJUG CoAP Un client interroge des ressources GET /status/led/red

    POST /control/switchon/red Couches de transport alternatives coap+sms://00660922111/sensors/temp-bedroom
  28. #iot #ElsassJUG “archi” #iot #ElsassJUG 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
  29. #iot #ElsassJUG 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 …
  30. #iot #ElsassJUG Programmer les Things de plus en plus de

    JavaScript http://johnny-five.io/ http://cylonjs.com/
  31. #iot #ElsassJUG 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();
  32. #iot #ElsassJUG 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();
  33. #iot #ElsassJUG Petites Démos … ce qui va suivre pourrait

    choquer les “vrais” makers #iot #ElsassJUG
  34. #iot #ElsassJUG 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
  35. #iot #ElsassJUG RPI/GrovePI + Broker + Dashboard “smarter object” MQTT

    HTTP WebSocket RPI + GrovePI https://github.com/DexterInd/GrovePi 1 client MQTT + socket broker MQTT MQTT socket 1 client MQTT MQTT Insertion données client MQTT
  36. #iot #ElsassJUG import Sensit from 'sensit-api';
 import token from './token';


    
 let sensitClient = new Sensit({token: token.value});
 
 sensitClient.device(2104)
 .get()
 .then((results) => console.log(JSON.stringify(results)))
 .catch((err) => console.log("Error", err));
 
 sensitClient.device(2104).sensor(7424)
 .get()
 .then((results) => console.log(JSON.stringify(results)))
 .catch((err) => console.log("Error", err));