programmation de systèmes embarqués : internet of things : système connecté et distant

43
EE3C Gestion des périphériques Séance 8 Internet of Things système connecté et distant Sébastien Combéfis 28 mars 2017

Upload: sebastien-combefis

Post on 23-Jan-2018

291 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

EE3C Gestion des périphériques

Séance 8

Internet of Thingssystème connecté et distant

Sébastien Combéfis 28 mars 2017

Page 2: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative CommonsAttribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.

Page 3: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Objectifs

Découverte des objets connectés

Qu’est-ce-que l’Internet of Things ?

Différence avec l’internet traditionnel

Monitoring et disaster recovery pour système embarqué

Comment faire du monitoring et contrôle à distance

Relier un système embarqué à un réseau physique

Architecture et connexion WiFi de la BBB

3

Page 4: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Internet of Thing

Page 5: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Explosion de machines (1)

Tsunami d’interconnexions machine à machine

Production d’une grande quantité de données et connaissances

Libération de l’emprise ou du contrôle humain sur les machines

Communautés autonomes de machines communicantes

Pas ou peu d’intervention humaine, reporting vers l’humain

Difficultés techniques de connexion des machines

Assez d’adresses IPv6, mais lourdeur du protocole IP

Échange de données brutes, de senseur vers serveur

5

Page 6: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Explosion de machines (2)

Difficultés à réagir en temps-réel pour le système

Sensing et boucles de réponse doivent être en temps-réel

Abonnement aux données produites circulant dans le réseau

Au lieu du traditionnel système peer-to-peer actuel

Quelques systèmes sur Terre qui ont même échelle et taille

Distribution du pollen dans les fleurs,

Colonies de fourmi,

Forêts de redwoods...

6

Page 7: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Internet of Thing

Extension du web et d’Internet au monde des objets physiques

Internet of Thing (IoT) ou Cyber-Physical Systems (CPS)

Communication entre senseurs entre eux et avec Internet

Construction d’un réseau d’humains et machines

Possibilité de concevoir des “smart homes”

Système de chauffage intelligent qui utilise les prévisions météo

Gestion complète de la sécurité de l’habitation

7

Page 8: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Histoire

Combiner capacité communication avec transmission données

Electronic Product Code (EPC), EAN.UCC...

8

Page 9: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Définition ITU de 2005

International Telecommunication Unit (ITU) définit IoT

Ajout d’un troisième axe “any thing” de connectivité

9

Page 10: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Question

Nouvelles sources de données ajoutées au réseau

Possibilité d’offrir de nouveaux services sur base de cela

Plusieurs questions soulevées par l’IoT

Type de connectivité et interopérabilité pour les objets

Modèle de communication utilisé avec les objets

Interaction possible avec les modèles existants (Internet)

Modèle de transport, identification, adressage et nom

Sécurité et vie privée

Impact économique

10

Page 11: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Plus qu’un réseau

Architecture actuelle d’internet dépassée pour l’IoT

Nécessité solution organique car on joue sur les frontières

Objets dits de type low fidelity

Vitesse peu élevée, pertes, atténuation et intermittence

Communication plutôt machine à machine de petites quantités

Complètement éloigné de l’internet « traditionnel »

11

Page 12: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Protocole IP et TCP

Objets connectés avec très peu de ressources

Ne peuvent pas implémenter de très lourds protocoles

Pas nécessaire d’avoir connexions fiables avec garanties TCP

Connexion permanente, pas de pertes, désordonnement...

Nécessité de pouvoir gérer un grand nombre de connexions

Plusieurs milliard d’objets pouvant être connectés

12

Page 13: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Donnée individuelle

Moins d’importance des données individuelles

Messages collectés et interprétés ailleurs dans le réseau

13

Page 14: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Objet plus « con »

Aller vers des objets simples dans l’esprit “dumber safer”

Moins de hacking et mauvaise configuration si très simple

14

Page 15: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Ubiquitous networking

15

Page 16: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Network of things

Web permet d’accéder aux nœuds connectés sur Internet

Nœuds identifiés uniquement par une adresse IP via DNS

IoT permet d’accéder aux objets connectés

Objets identifiés uniquement par un ID via ONS

IoT constitués d’atomes plus petit objet possible

Combinaison d’un réseau d’atomes avec un réseau de bits

Exécution de nouveaux services pour créer “smart world”

16

Page 17: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Classification d’objets

17

Page 18: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Interaction avec le Web

Appel de services web par des objets connectés

Par exemple sur plateformes PaaS, BaaS, FaaS...

Interaction avec le cloud computing

Offre de services hardware et software par dessus Internet

Envoi de SMS automatiquement grâce su service cloud Twilio

API permet notamment l’envoi de SMS, compte gratuit possible

18

Page 19: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

IFTTT (1)

Service If This Then That (IFTTT) de connexions de channels

Associer une action à un trigger (e.g. if new post, send by email)

Possibilité de déclencher un évènement par l’envoi d’un e-mail

Format particulier de l’adresse, avec des paramètres

Trigger possibles sur d’autres systèmes physiques

Nest devices, WeMo switches, SmartThings devices...

19

Page 20: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

IFTTT (2)

20

Page 21: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

IFTTT (3)

21

Page 22: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Thingspeak

Service Thingspeak de récolte de données de senseurs

Application open source pour l’IoT et API d’analyse

22

Page 23: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

DR et monitoring

Page 24: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Gérer système distant

Difficultés de gérer un système distant tombé en panne

Pas toujours accès physique possible, envoi d’une équipe couteux

SSH et redémarrage si système embarqué relié à Internet

Consultation de logs, redémarrage application/système complet

Deux approches de gestion à distance

Monitoring manuel à distance basé sur le web

Surveillance semi-automatique par watchdog Linux

24

Page 25: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Monitoring

Installation du service de monitoring à distance Linux Dash

https://github.com/afaqurk/ linux-dash

Déploiement très facile sur sa BBB sur un Apache

$ sudo apt -get install apache2 apache2 - utils$ sudo apt -get install php5 curl php5 -curl php5 -json$ sudo service apache2 restart$ cd /var/www$ sudo git clone https :// github .com/ afaqurk /linux -dash.git

Connexion au service de monitoring directement sur la BBB

https://xxx.xxx.xxx.xxx/ linux-dash

25

Page 26: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Watchdog Linux

Disponibilité de watchdog timers (WDT) sous Linux

Timer hardware qui reset le système automatiquement

Première écriture dans le watchdog l’active

Doit être ensuite régulièrement fourni sinon reset système

$ ls -l /dev/ watchdogcrw ------- 1 root root 10, 130 Mar 27 20:02 /dev/ watchdog

$ cat > /dev/ watchdogThis will reboot the BBB 50 seconds after I hit Return . Now!Even if I type really slowly on this line but don ’t hit Return

26

Page 27: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Watchdog en C (1)

Taper le chien ou dire bonjour, sinon redémarrage système

Comme dans les trains où le conducteur donne signe vie

1 # include < stdio .h>2 # include < fcntl .h>3 # include < linux / watchdog .h>45 # define WATCHDOG "/dev/ watchdog "67 int main () {8 int fd , interval = 30, state ;9 if (( fd = open (WATCHDOG , O_RDWR )) < 0) {

10 perror (" Watchdog : Failed to open watchdog device \n");11 return 1;12 }1314 if ( ioctl (fd , WDIOC_SETTIMEOUT , & interval ) != 0) {15 perror (" Watchdog : Failed to set the watchdog interval \n");16 return 1;17 }

27

Page 28: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Watchdog en C (2)

1 printf (" Press k to kick the dog , h to say hello and q to quit :\n");

2 do {3 state = getchar ();4 switch ( state ) {5 case ’k’:6 printf ("[kick !]\n");7 ioctl (fd , WDIOC_KEEPALIVE , NULL);8 break ;9 case ’h’:

10 printf ("[ hello ]\n");11 break ;12 }13 } while ( state != ’q’);1415 printf (" Closing down the application ...\n");16 close (fd);17 return 0;18 }

28

Page 29: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Mise à jour

Mise à jour d’un système embarqué distant risquée

Garantie de connexion durant toute la mise à jour

Faire face aux corruptions de données

Encore plus de risques pour mettre à jour Linux embarqué

Mise à jour partielle par coupure de connexion

Redémarrage pas possible hardware non reconnu

29

Page 30: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Réseau physique

Page 31: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Architecture

Plusieurs possibilités d’architecture pour l’IoT ou le CPS

Diffèrent en fonction des composants et du type de connexions

Combinaisons de BBBs et serveurs « classique »

Une BBB avec serveur web, afficher mesures de senseurs

Une BBB se connecte à un serveur distant, envoie mesures

Deux BBBs dans une relation client/serveur

Des BBBs avec senseurs appellent services web PaaS

31

Page 32: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Serveur web

La BBB héberge un serveur web en son sein

Des clients s’y connectent pour consulter les informations...

Nécessité d’être en permanence connectée à Internet

Exécution du serveur web consomme de l’énergie

32

Page 33: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Client

La BBB agit comme un client et se connecte à un serveur

Envoie des données au serveur lorsque disponibles

Ne se connecte à Internet que lorsque c’est nécessaire

Doit implémenter le protocole de communication avec le serveur

33

Page 34: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Interconnexion

Réseau de BBBs interconnectées entre elles

Échange d’informations au sein d’un réseau de senseurs

Connexions permanentes ou non, client/serveur ou P2P

Possibilité d’exécuter un algorithme distribué ou données

34

Page 35: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Service web

Connexions des BBBs à un serveur fournisseur de services

Le monde physique est connecté au cloud

BBB envoie données à un service web hébergé sur le PaaS

Un autre service sur le PaaS présente et analyse les données

35

Page 36: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Connexion

Nécessité d’avoir un système embarqué connecté pour l’IoT

Sans quoi ce dernier ne pourra communiquer avec le monde

Plusieurs types de connexion avec infrastructure existante

RFID et identification, PCL et accès domestique

Deux choix technologiques principaux pour la BBB

Connexion câblée Ethernet ou sans fil WiFi

36

Page 37: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Standard sans fil

Plusieurs standards sans fil existants sur le marché

Avec différentes caractéristiques de portée, puissance, débit...

Deux choix principaux pour connecter la BBB sans fil

Possibilité d’un module ZigBee sur UART sur la BBB

Adaptateur réseau WiFi sur dongle USB

Bluetooth Zigbee WiFi Custom

Standard IEEE 802.15.1 IEEE 802.15.4 IEEE 802.11 2.4GHz customPortée 10m à 100m ∼100m 10m à 100m 10m à 100mPuissance basse très basse haute très basseDébit <2.1Mb/s <250 kb/s 10 à 300Mb/s 250 kb/sTopologie Étoile Mesh/étoile Étoile ÉtoileOrganisation Bluetooth SIG ZigBee Alliance WiFi Alliance —

37

Page 38: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Dongle USB WiFi (1)

Branchement du dongle USB et chargement driver par kernel

Vérification du bon chargement par dmesg ou lsusb

Interface réseau pour le périphérique WiFi chargée également

Adresse physique MAC et autres statistiques avec ifconfig

$ lsusbBus 001 Device 002: ID 7392:7811 Edimax Technology Co., Ltd EW -7811 Un802.11 n Wireless Adapter [ Realtek RTL8188CUS ]Bus 001 Device 001: ID 1d6b :0002 Linux Foundation 2.0 root hub

$ ifconfig -a...wlan0 Link encap : Ethernet HWaddr 74: da :38:2 e:1f:bc

UP BROADCAST MULTICAST DYNAMIC MTU :1500 Metric :1RX packets :0 errors :0 dropped :0 overruns :0 frame :0TX packets :0 errors :0 dropped :0 overruns :0 carrier :0collisions :0 txqueuelen :1000RX bytes :0 (0.0 B) TX bytes :0 (0.0 B)

38

Page 39: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Dongle USB WiFi (2)

Configurer interface WiFi dans /etc/network/interfaces

Ajouter la ligne iface wlan0 inet dhcp

Configuration de base du réseau WiFi avec ifup

$ ifup wlan0Internet Systems Consortium DHCP Client 4.3.1Copyright 2004 -2014 Internet Systems Consortium .All rights reserved .For info , please visit https :// www.isc.org/ software /dhcp/

Listening on LPF/ wlan0 /74: da :38:2 e:1f:bcSending on LPF/ wlan0 /74: da :38:2 e:1f:bcSending on Socket / fallbackDHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 14DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 19No DHCPOFFERS received .No working leases in persistent database - sleeping .

39

Page 40: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Dongle USB WiFi (3)

Générer l’authentification par WPA

Ajouter la ligne iface wlan0 inet dhcp

Configuration de base du réseau WiFi avec ifup

$ ifup wlan0Internet Systems Consortium DHCP Client 4.3.1Copyright 2004 -2014 Internet Systems Consortium .All rights reserved .For info , please visit https :// www.isc.org/ software /dhcp/

Listening on LPF/ wlan0 /74: da :38:2 e:1f:bcSending on LPF/ wlan0 /74: da :38:2 e:1f:bcSending on Socket / fallbackDHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 14DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 19No DHCPOFFERS received .No working leases in persistent database - sleeping .

40

Page 41: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Rechercher un réseau

Rechercher un réseau sur lequel se connecter avec iwlist

Scan complet interface et caractéristiques des réseaux trouvés

$ iwlist wlan0 scanwlan0 Scan completed :

Cell 01 - Address : 30: D3 :2D:0A :62:88Channel :1Frequency :2.412 GHz ( Channel 1)Quality =38/70 Signal level = -72 dBmEncryption key:onESSID :" WiFi -2.4 - AE32"Bit Rates :1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s

9 Mb/s; 12 Mb/s; 18 Mb/sBit Rates :24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/sMode: MasterExtra :tsf =00000556 f13fd214Extra : Last beacon : 944 ms ago

...

41

Page 42: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Livres de référence

ISBN978-1-848-21140-7

ISBN978-1-430-25740-0

ISBN978-1-118-93512-5

42

Page 43: Programmation de systèmes embarqués : Internet of Things : système connecté et distant

Crédits

Photos des livres depuis Amazonhttps://www.flickr.com/photos/madlabuk/7032244561https://www.flickr.com/photos/basicgov/4029724029https://www.flickr.com/photos/jennifer-stylls/8012538039

43