Ce cours présente ce qu'est l'internet des objets (IoT), un réseau parallèle au web connectant entre eux des dispositifs physiques. Les différences majeures entre l'IoT et le web sont mises en avant, ainsi que les grands défis auxquels le monde de l'IoT est confronté. Le cours présente ensuite brièvement comment on peut gérer un système embarqué à distance, notamment pour la maintenance, le monitoring, le disaster recovery, notamment à l'aide d'un watchdog. Enfin, pour conclure, plusieurs architectures réseaux possibles sont présentées, pour inter-connecter des systèmes embarqués et les relier au web.
Programmation de systèmes embarqués : Internet of Things : système connecté et distant
1. EE3C Gestion des périphériques
Séance 8
Internet of Things
système connecté et distant
Sébastien Combéfis 28 mars 2017
2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
3. 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
5. 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
6. 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
7. 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
9. Définition ITU de 2005
International Telecommunication Unit (ITU) définit IoT
Ajout d’un troisième axe “any thing” de connectivité
9
10. 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
11. 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
12. 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
16. 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
18. 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
19. 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
24. 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
25. 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
26. 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/watchdog
crw ------- 1 root root 10, 130 Mar 27 20:02 /dev/watchdog
$ cat > /dev/watchdog
This 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
27. 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>
4
5 # define WATCHDOG "/dev/watchdog"
6
7 int main () {
8 int fd , interval = 30, state;
9 if ((fd = open (WATCHDOG , O_RDWR)) < 0) {
10 perror("Watchdog: Failed to open watchdog devicen");
11 return 1;
12 }
13
14 if (ioctl (fd , WDIOC_SETTIMEOUT , &interval) != 0) {
15 perror("Watchdog: Failed to set the watchdog intervaln");
16 return 1;
17 }
27
28. 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’);
14
15 printf ("Closing down the application ...n");
16 close (fd);
17 return 0;
18 }
28
29. 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
31. 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
32. 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
33. 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
34. 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
35. 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
36. 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
37. 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.4 GHz custom
Portée 10 m à 100 m ∼100 m 10 m à 100 m 10 m à 100 m
Puissance basse très basse haute très basse
Débit <2.1 Mb/s <250 kb/s 10 à 300 Mb/s 250 kb/s
Topologie Étoile Mesh/étoile Étoile Étoile
Organisation Bluetooth SIG ZigBee Alliance WiFi Alliance —
37
38. 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
$ lsusb
Bus 001 Device 002: ID 7392:7811 Edimax Technology Co., Ltd EW -7811 Un
802.11n 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:2e:1f:bc
UP BROADCAST MULTICAST DYNAMIC MTU :1500 Metric :1
RX packets :0 errors :0 dropped :0 overruns :0 frame :0
TX packets :0 errors :0 dropped :0 overruns :0 carrier :0
collisions :0 txqueuelen :1000
RX bytes :0 (0.0 B) TX bytes :0 (0.0 B)
38
39. 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 wlan0
Internet Systems Consortium DHCP Client 4.3.1
Copyright 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:2e:1f:bc
Sending on LPF/wlan0 /74: da :38:2e:1f:bc
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 14
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 19
No DHCPOFFERS received.
No working leases in persistent database - sleeping.
39
40. 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 wlan0
Internet Systems Consortium DHCP Client 4.3.1
Copyright 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:2e:1f:bc
Sending on LPF/wlan0 /74: da :38:2e:1f:bc
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 14
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 19
No DHCPOFFERS received.
No working leases in persistent database - sleeping.
40
41. 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 scan
wlan0 Scan completed :
Cell 01 - Address: 30:D3:2D:0A:62:88
Channel :1
Frequency :2.412 GHz (Channel 1)
Quality =38/70 Signal level =-72 dBm
Encryption key:on
ESSID :"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/s
Bit Rates :24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf =00000556 f13fd214
Extra: Last beacon: 944 ms ago
...
41