WikiPrépaLivrets

CAPET informatique externe 2026, épreuve 2, option ingénierie informatiqueSujet

Capet externe bac + 3 section sciences industrielles de l'ingénieur option ingénierie informatique - Sujet de la seconde épreuve écrite de la session 2026

Pas encore noté

Téléchargements

  • Corrigé : pas encore disponible
  • Rapport du jury : pas encore publié

Description

Sujet officiel CAPET externe en informatique, session 2026.

Ces sujets peuvent vous intéresser

Pas encore de corrigé pour ce sujet : voici des sujets proches corrigés.

Lecture du sujet en ligne

L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
Afficher ou masquer la section
SESSION 2026
CAPET

CONCOURS EXTERNE ET CAFEP CORRESPONDANT (BAC + 3)

Section : SCIENCES INDUSTRIELLES DE L'INGÉNIEUR Option : INGÉNIERIE INFORMATIQUE

ADMISSIBILITÉ : ÉPREUVE 2
L'épreuve consiste en une résolution de problème.
L'épreuve vise à apprécier la capacité du candidat, à partir de l'exploitation de ressources et documents techniques, à résoudre un problème technique posé et à établir des éléments de conception préliminaire.
Durée : 4 heures
Calculatrice autorisée selon les modalités de la circulaire du 17 juin 2021 publiée au BOEN du 29 juillet 2021.
L'usage de tout ouvrage de référence, de tout dictionnaire et de tout autre matériel électronique est rigoureusement interdit.
Il appartient au candidat de vérifier qu'il a reçu un sujet complet et correspondant à l'épreuve à laquelle il se présente.
Si vous repérez ce qui vous semble être une erreur d'énoncé, vous devez le signaler très lisiblement sur votre copie, en proposer la correction et poursuivre l'épreuve en conséquence. De même, si cela vous conduit à formuler une ou plusieurs hypothèses, vous devez la (ou les) mentionner explicitement.
NB : Conformément au principe d'anonymat, votre copie ne doit comporter aucun signe distinctif, tel que nom, signature, origine, etc. Si le travail qui vous est demandé consiste notamment en la rédaction d'un projet ou d'une note, vous devrez impérativement vous abstenir de la signer ou de l'identifier.
Le fait de rendre une copie blanche est éliminatoire.

INFORMATION AUX CANDIDATS

Vous trouverez ci-après les codes nécessaires vous permettant de compléter les rubriques figurant en en-tête de votre copie. Ces codes doivent être reportés sur chacune des copies que vous remettrez.
  • -Concours externe du CAPET de l'enseignement public :

Définition de l'épreuve

L'épreuve consiste en une résolution de problème.
L'épreuve vise à apprécier la capacité du candidat, à partir de l'exploitation de ressources et documents techniques, à résoudre un problème technique posé et à établir des éléments de conception préliminaire.
L'épreuve est constituée de deux études indépendantes, elles sont à traiter obligatoirement.

Conseils aux candidats

Il est demandé aux candidats :
  • -de rédiger les réponses aux différentes études sur des feuilles de copie séparées et clairement repérées ;
  • -de numéroter chaque feuille de copie et indiquer le numéro de la question traitée ;
  • -de rendre tous les documents réponses, même non complétés ;
  • -d'utiliser exclusivement les notations indiquées dans le sujet lors de la rédaction des réponses ;
  • -de justifier clairement les réponses ;
  • -d'encadrer ou souligner les résultats ;
  • -de présenter lisiblement les applications numériques, sans omettre les unités, après avoir explicité les expressions littérales des calculs ;
  • -de formuler les hypothèses nécessaires à la résolution des problèmes posés si celles-ci ne sont pas indiquées dans le sujet.

Sommaire

Page
Sommaire 1
Présentation du support 2
ÉTUDE A (à traiter obligatoirement) 4
ÉTUDE B (à traiter obligatoirement) 7
DOCUMENTS TECHNIQUES DE L'ÉTUDE A 9
DOCUMENTS TECHNIQUES DE L'ÉTUDE B 17
Les études A et B sont à traiter obligatoirement par tous les candidats.

Présentation du support

Système de supervision de microgrid

Afin de tendre vers la neutralité carbone, on observe la multiplication d'installations de production d'énergie électrique, notamment solaire et le développement des dispositifs de stockage. Cela entraîne la création de microgrids, ou micro-réseaux, qui sont des réseaux électriques de petite taille, conçus pour fournir un approvisionnement électrique fiable à un petit nombre de consommateurs.
Ils agrègent de multiples installations de production locales et diffuses (panneaux photovoltaïques, mini-éoliennes, petite hydraulique...), des installations de consommation, des installations de stockage et des outils de supervision et de gestion de la demande.
Figure 1 : L'architecture d'un microgrid (Source : CRE)
Dans le cadre de ce sujet, l'étude porte sur la supervision d'un microgrid installé dans une entreprise qui a pour objectif de rendre l'entreprise quasiment autonome en électricité.
D'un point de vue puissance, le microgrid étudié est constitué :
  • -de 230 m^2 de panneaux voltaïques sur les toits de la société pour une puissance crête de 40 kW crête.
  • -de 8 bornes de recharge de véhicules électriques gérées par un système de gestion de recharge EVLink LMS de Schneider.
  • -de batteries de stockage d'une capacité de 40 kW.h, permettant de stocker l'énergie électrique lorsque la production photovoltaïque est excédentaire.
Afin de contrôler les flux de puissances et s'assurer du bon fonctionnement des installations, la société Naiobee a mis en place un système de supervision du microgrid, articulé autour d'un composant central : la Naiobox.
La Naiobox regroupe essentiellement :
  • -une application SCADA (système de contrôle et d'acquisition de données en temps réel) ;
  • -un programme de gestion centrale avec Node-RED (outil de développement low code) ;
  • -une base de données.
En plus de collecter les puissances des différentes installations, la Naiobox doit surveiller les conditions environnementales du local batteries afin de s'assurer que les batteries ne subissent pas de dysfonctionnement.
Pour cela, un module IOT M5Stack, basé sur le microcontrôleur d'architecture ESP32, récupère les mesures de température, humidité et présence de gaz (COVT et H_2 ) dans le local de batteries afin de déclencher une alerte et d'activer la ventilation forcée en cas d'anomalie. Les données récoltées par le M5Stack sont également envoyées à la Naiobox par protocole MQTT afin d'être ensuite stockées dans une base de données.
Le synoptique simplifié de l'installation est donné à la figure 2 .
Figure 2 : Architecture simplifiée du Microgrid étudié

Contrôle du taux d'humidité du local batteries

Afin de prolonger la durée de vie des batteries, il est préconisé de contrôler la température et le taux d'humidité du local dans lequel sont stockées les batteries. Pour s'en assurer, une sonde relève la température et l'humidité toutes les 30 secondes et une ventilation forcée est activée lorsque la température dépasse 30°C ou que le taux d'humidité atteint 70 %.
Objectif : Gérer les erreurs de mesure du taux d'humidité dans le local batteries.
La sonde utilisée est basée sur un capteur SHT 45 de Sensirion dont un extrait de documentation technique est donné en DTA1. Les informations du capteur sont gérées par la carte à microcontrôleur M5Stack.

Communication I2C entre M5Stack et SHT 45

Ce capteur communique ses informations avec le module M5Stack via une liaison I2C. Le fonctionnement de cette liaison et les données transmises lors des communications sont décrits dans le document technique DTA1.
Grâce à un analyseur logique, on a relevé en DTA2 une trame de réponse, renvoyée par le capteur suite à une commande de mesure à haute précision.
Question A1 Donner les bits correspondant aux données de température et ceux correspondant au CRC associé.
Question A2 En déduire la valeur décimale brute correspondant aux bits de données de température puis calculer la température en °C mesurée par le capteur.

Mise en œuvre logicielle du capteur

D'un point de vue logiciel, le capteur est géré par une classe nommée SHT4x. On donne en DTA3 le fichier d'en tête SHT4x.h où est déclarée la classe SHT4x. Les acquisitions des valeurs de taux d'humidité et de température dans le local batteries se font directement par appel de la méthode read dont le code est donné en DRA1. Les valeurs de température et taux d'humidité sont stockées respectivement dans les variables globales temperature et humidity .
Dans la méthode read, on utilise un objet nommé Wire , instance de la classe twoWire, qui gère la communication 12C. En DTA4, on fournit un extrait de diagramme de classe correspondant uniquement aux classes SHT4x et twoWire.
Question A3 En DRA1, donner en ligne 3, l'instruction qui démarre la transmission I2C avec le capteur SHT45 à partir de l'objet Wire.
Dans la méthode read, on récupère les 6 octets de la trame I2C de réponse, puis on les stocke dans un tableau d'entiers non signés sur 8 bits, nommé bytes_frame, dans l'ordre suivant : 2 octets de données température (octet de poids fort en premier), 1 octet CRC température, 2 octets de données humidité, 1 octet CRC humidité.
Question A4 À partir de la variable bytes_frame, écrire sur les lignes 26 et 27 de DRA1, les instructions permettant d'obtenir la valeur brute complète de température codée sur un entier de 16 bits, que l'on stockera dans la variable rawTemp.
Afin de garder une trace des dernières mesures effectuées, on a créé une variable globale humidityBuffer qui contiendra les 6 dernières valeurs du taux d'humidité en %. Ce tableau devra stocker les grandeurs dans l'ordre suivant :
[mh0,mh1,mh2,mh3, ... ] avec mh0 : dernière mesure , mh1 avant-dernière mesure....
On donne en DTA5 l'extrait du programme de la boucle de mesure gérant uniquement les mesures de température et de taux d'humidité.
Question A5 Compléter sur copie la fonction updateHumidityBuffer , (exécutée après l'appel de la méthode SHT4x :: read) qui met à jour le tableau humidityBuffer avec la variable humidity, dernière valeur de taux d'humidité lue.
void updateHumidityBuffer(float humidity)
{ ...
...
...
}
Gestion des incohérences de mesure du taux d'humidité
Lors du fonctionnement du capteur, il s'est avéré que les mesures de taux d'humidité présentaient quelquefois des incohérences et provoquaient des déclenchements intempestifs de la ventilation forcée.
Exemples de séquences relevées pour le taux d'humidité (en pourcentage ) :
Séquence 1 :
45.1 45.4 45.3 45.3 88.9 45.5 45.4 45.3
Séquence 2 :
51.5 51.4 51.2 83.5 75.7 62.3 51.5 51,1
La liaison I2C permettant de communiquer avec le capteur SHT45 inclut un champ CRC qui permet de détecter s'il y a eu des erreurs dans la transmission de données.
Question A6 Citer un mécanisme de détection des erreurs de transmission autre que CRC-8 et donner son principe.
Dans sa version actuelle, la méthode read donnée en DRA1 ne prend pas en charge le CRC. La documentation technique DTA6 précise le principe de CRC-8.
On donne en DRA2 la fonction calculerCRC8 (définie dans le fichier SHT4x.cpp) qui permet de calculer le code CRC correspondant aux données fournies en argument de la fonction.
Question A7 Compléter en DRA2 les données manquantes dans la fonction calculerCRC8 avec les caractéristiques de la liaison I2C du capteur SHT45 données en DTA1.
Question A8 Compléter la méthode read en DRA1, à partir de la ligne 18, avec les instructions qui permettent de calculer le CRC des données d' humidité à partir du tableau bytes_frame puis de renvoyer faux si une erreur de transmission a été détectée sur les données du taux d'humidité (le contrôle des données de température n'est pas demandé).
Question A9 Dans la boucle de mesure (cf. DTA5), coder la vérification de la valeur de retour de la méthode read et proposer une stratégie simple de gestion des éventuelles erreurs de transmission. Modifier et écrire sur copie le nouveau code de la boucle de mesure permettant la mise en œuvre de cette stratégie.
Les valeurs "aberrantes" du taux d'humidité et donc les déclenchements intempestifs de ventilation en résultant peuvent être dues à des problèmes de transmission, mais peuvent aussi avoir d'autres origines ( erreur de mesure du capteur en lui-même, "goutte d'eau" locale et ponctuelle au niveau du capteur ...).
Question A10
Proposer une méthode logicielle permettant d'éviter le déclenchement intempestif de la ventilation due à une erreur ponctuelle de mesure (d'origine autre qu'erreur de transmission).
La mettre en œuvre en donnant le code des éventuelles fonctions nécessaires et des modifications à apporter dans le code de la boucle de mesure.

ÉTUDE B (à traiter obligatoirement)

Intégration du microgrid au réseau informatique

Le réseau de supervision du microgrid s'appuie sur l'infrastructure réseau déjà existante dans la société. Celle-ci est pleinement fonctionnelle.
Objectif: Identifier une faille de sécurité du réseau existant puis la supprimer en paramétrant des réseaux privés virtuels (VLAN).
Dans sa politique de sécurité, la société utilise des réseaux qu'elle segmente en fonction des services (vente, sécurité, direction...) afin de limiter le nombre de postes de chaque sous-réseau.
Question B1 Donner le masque de sous-réseau minimal pour un réseau pouvant contenir jusqu'à 6 machines (client). Justifier la réponse.
Question B2 Compléter le plan d'adressage partiel du document réponse DRB1. Le masque de sous-réseau sera choisi pour accueillir un nombre d'hôtes au plus proche du nombre de machines du réseau. La passerelle occupe l'adresse IP du dernier hôte (client) de chaque sous-réseau.
Question B3 La direction des services informatiques souhaite automatiser l'adressage IP des machines. Indiquer quel service ou protocole il faut activer sur le switch central (voir figure 2) ?
Question B4 Expliquer comment un employé malintentionné du service vente peut accéder au réseau de supervision du microgrid s'il connaît le plan d'adressage. Donner un exemple d'acte malveillant pouvant résulter de cette faille.
La société veut intégrer tous les équipements du microgrid à son réseau informatique. Pour cela, elle achète un switch possédant 8 ports Fast Ethernet et 2 ports Gigabit Ethernet.
Question B5 Compléter le schéma de câblage du document réponse DRB2 en ajoutant le matériel et les connexions nécessaires à l'intégration des équipements de supervision au réseau, comme indiqué sur la figure 2. Compléter le tableau d'affectation de port du document réponse DRB3 (s'appuyer notamment sur la manière dont les autres switches sont connectés au switch central).
Le VLAN du réseau de supervision de la smartgrid aura le numéro 80 . Les switches déjà présents possèdent 24 ports Fast Ethernet et 2 ports Gigabit Ethernet.
Question B6 Proposer une autre solution de câblage plus économique qui sera nommée solution 2 et indiquer, à l'aide du document technique DTB1, en quoi une liaison Trunk (trunk link) serait utile dans cette configuration.
Pour la suite des questions, la solution 1 correspondant au schéma de la figure 2 sera utilisée.
Question B7 À l'aide des documents techniques DTB2 et DTB3, donner les commandes qui ont permis le paramétrage du switch du réseau de supervision comme indiqué dans le document DTB8.
Le dirigeant de la société se plaint, tout comme son secrétaire, de ne pas pouvoir accéder à l'interface de supervision du microgrid. Un technicien lance une série de commandes de diagnostic sur plusieurs équipements. Ces commandes sont présentées dans les documents techniques DTB6, DTB7, DTB8, DTB9 et DTB10.
Question B8 Interpréter les résultats pour chaque commande lancée dans les documents techniques DTB6, DTB7, DTB8, DTB9, DTB10 puis conclure sur l'origine du problème dans une conclusion générale.
Question B9 Proposer deux solutions pour résoudre le problème tout en maintenant un niveau de sécurité maximal.
Question B10 Des deux solutions proposées dans la question B9, il est choisi la moins couteuse. Indiquer les commandes qui permettent de paramétrer correctement l'équipement. Pour cela utiliser les documents techniques DTB4 et DTB5.

DOCUMENTS TECHNIQUES DE L'ÉTUDE A

DOCUMENT TECHNIQUE DTA1

Documentation partielle capteur SHT 45

Datasheet - SHT4x
4^(th) Gen. Relative Humidity and Temperature Sensor

SENSIRION


Highlights
  • -Accuracies ΔRH = ± 1.0%RH, ΔT = ± 0.1^∘C
  • - VDD = 1.08 V…3.6 V
  • -Avg. current: 0.4μ A, Idle current: 80 nA
  • -I2C FM+, CRC checksum, multip. I2C addr.
  • -Patented protection options [1], PTFE membrane and removable protective cover
  • -Operating range: 0 ... 100 %RH, -40...125 °C
  • -Fully functional in a condensing environment
  • -Power heater, true NIST-traceability
  • -JEDEC JESD47 qualification
  • -Sensor-specific calibration certificate acc. to ISO 17025: 2017, 3-point temp. calibration
SHT4x is a digital sensor platform for measuring relative humidity and temperature at different accuracy classes. Its I2C interface provides several preconfigured 12C addresses while maintaining an ultra-low power budget (0.4μ W). The power-trimmed internal heater can be used at three heating levels thus enabling sensor operation in demanding environments. The four-pin dual-flat-no-leads package is suitable for surface mount technology (SMT) processing and comprises an optional on-package patented PTFE [1] membrane or a removable protective cover. Sensor specific calibration certificates according to ISO17025, identifiable through unique serial numbers, are available.
Device Overview
Product Details
SHT40-xD1B base RH&T accur., possible 12C addr.: 0x44, 0x45, 0x46
SHT40-AD1F SHT40-AD1B with PTFE membrane
SHT40-AD1P SHT40-AD1B with protective cover
SHT41-AD1B intermed. RH&T accur., 0x44 12C addr.
SHT43-ADCB ISO17025 3-point calibration certificate
SHT45-AD1B ± 1.0%RH, ± 0.1^∘C accur., 0x44 12C addr.
Functional Block Diagram

Sensor Operation

12C Communication

I2C communication is based on NXP's I2C-bus specification and user manual UM10204 . Supported I2C modes are standard, fast mode, and fast mode plus. Data is transferred in multiples of 16-bit words. In order to increase reliability of data transfer, I 2 C glitch protection is offered in form of 8 -bit checksum (cyclic redundancy check = CRC ). All transfers must begin with a start condition ( S ) and terminate with a stop condition (P). To finish a read transfer, send not acknowledge (NACK) and stop condition (P).
Addressing a specific slave device is done by sending its 7-bit I2C address followed by an eighth bit, denoting the communication direction: "zero" indicates transmission to the slave, i.e. "write", a "one" indicates a "read" request. Schematics of the I2C transfer types are sketched in Figure 14. The sensor does not support clock-stretching. In case the sensor receives a read header and is still busy with e.g. measurement or heating, it will return a NACK. Measurement data can only be received once and will be deleted from the sensor's register after the first acknowledged I2C read header.
Figure 14. I2C transfer types: First a write header is sent to the I2C slave, followed by a command, for example "measure RH&T with highest precision". After the measurement is finished the read request directed to this I2C slave will be acknowledged and transmission of data will be started by the slave.
Exemple : trame de commande demandant la lecture du numéro de série du capteur
Table 7. Data checksum properties

Data type & length

I2C bus operates with 8-bit data packages. Information from the sensor to the master has a checksum after every second 8-bit data package.
Humidity and temperature data will always be transmitted in the following way: The first value is the temperature signal (2*8-bit data +8-bit CRC), the second is the humidity signal (2 * 8-bit data + 8-bit CRC).

Checksum Calculation (CRC)

For read transfers each 16-bit data is followed by a checksum with the following properties.
Property Value
Name CRC-8
Message Length 16-bit
Polynomial 0 × 31(x^8 + x^5 + x^4 + 1)
Initialization 0xFF
Reflect Input/Output false/false
Final XOR 0x00
Examples CRC(0 × BEEF) = 0 × 92
Table 7. Data checksum properties
Command Overview
Command (hex) Response length incl. CRC (bytes) Description [return values]
0xFD 6 measure T & RH with high precision (high repeatability) [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0xF6 6 measure T & RH with medium precision (medium repeatability) [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0xE0 6 measure T & RH with lowest precision (low repeatability) [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0x89 6 read serial number [2 * 8-bit data; 8-bit CRC; 2 * 8-bit data; 8-bit CRC]
0x94 - soft reset [ACK]
0x39 6 activate heater with 200mW for 1s, including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0x32 6 activate heater with 200mW for 0.1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0x2F 6 activate heater with 110mW for 1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0 × 24 6 activate heater with 110mW for 0.1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
0x1E 6 activate heater with 20mW for 1s including a high precision measurement just before deactivation [2 * 8-bit T-data; 8-bit CRC; 2 * 8-bit RH-data; 8-bit CRC]
Conversion of Signal Output
The digital sensor signals correspond to following humidity and temperature values:
RH, = (− 6 + 125 ⋅ (S_(RH))/(2^(16) − 1))%RH; T, = (− 45 + 175 ⋅ (S_T)/(2^(16) − 1))^∘C; T, = (− 49 + 315 ⋅ (S_T)/(2^(16) − 1))^∘F
N.B.: The RH conversion formula (1) allows values to be reported which are outside of the range of 0%RH…100%RH. Relative humidity values which are smaller than 0%RH and larger than 100%RH are nonphysical; however these "uncropped" values might be found beneficial in some cases (e.g. when the distribution of the sensors at the measurement boundaries are of interest). For all who do not want to engage in evaluation of these non-physical values, cropping of the RH signal to the range of 0 %RH ... 100%RH is advised.

DOCUMENT TECHNIQUE DTA2

Trame de réponse mesure haute précision

Trame entière renvoyée par le capteur SHT45 suite à une demande de mesure de température et de taux d'humidité en mode haute précision
Zoom 1^(ère) partie de trame
Zoom 2^(ème) partie de trame

Fichier d'en tête bibliothèque SHT4x

#ifndef SHT4x_H
#define SHT4x_H
#include <Wire.h>
/* Définition de la classe SHT4x
    Cette classe communique avec un capteur via I2C
et permet de lire la température et l'humidité avec un capteur SHT45.*/
class SHT4x {
public:
        // Enumération pour la précision des mesures
        enum sht4x_precision_t {
            LOW_PRECISION = 0xE0,
            MEDIUM_PRECISION = 0xF6,
            HIGH_PRECISION = 0xFD
        };
        // Enumération pour les modes de chauffage
        enum sht4x_heater_t {
            NO_HEATER = 0x00,
            HEATER_SHORT = 0x15,
            HEATER_MEDIUM = 0x1E,
            HEATER_LONG = 0x39
        };
        SHT4x();
        /*
        @brief Initialise le capteur.
        @return true si l'initialisation réussit, false sinon.
    */
        void begin();
        // @brief modifie l'attribut precision_t précisant la précision de lecture.
        void setPrecision(sht4x_precision_t newPrecision);
        //@brief modifie l'attribut heater précisant de mode de chauffage du
capteur.
        void setHeaterMode(sht4x_heater_t newHeaterMode);
        /*
@brief Lit la température et le taux d'humidité actuelle
en modifiant les variables globales temperature et humidity.
@return true si lecture réussie, false sinon.
*/
        bool read(float& temperature, float& humidity);
        /*
@brief Lit le numéro de série du capteur.
@return numéro de série du capteur.
*/
        uint32_t readSerial();
private:
        static const uint8_t SHT4x_ADDRESS = 0x44; // adresse I2C du capteur SHT45
        sht4x_precision_t precision_t; // précision de mesure demandée
        sht4x_heater_t heater; // mode chauffage du capteur

DOCUMENT TECHNIQUE DTA4

Lien classe SHT 4x et TwoWire

SHT4x
attributs
-precision_t : sht4x_precision_t
-heater : sht4x_heater_t
-sht4x_adress : static const uint8_t = 0x44
opérations
+SHT4x()
+begin() : bool
+setPrecision( new Precision : sht4x_precision_t )
+setHeaterMode( new HeaterMode : sht4x_heater_t )
+read( &temperature : float, &humidity : float ) : bool
+readSerial() : uint32_t
1
Wire 1
TwoWire
opérations
+begin()
+beginTransmission( address : uint8_t)
+endTransmission()
+available()
+requestFrom( adress : uint8_t, len : size_t ) : size_t
+w rite( data : uint8_t ) : size_t
+read() : uint8_t

DOCUMENT TECHNIQUE DTA5
Code simplifié boucle de mesure

Ligne
// variables globales et objet SHT4x
float humidityBuffer[6];
unsigned long lastMeasurementTime = 0;
SHT4x sht45;
// fonction d'affichage des mesures sur M5 Stack
void affichageMesure(temperature,humidity) {
        M5.Lcd.clear();
        M5.Lcd.setCursor(0, 0);
        M5.Lcd.print("temp : ");
        M5.Lcd.println(temperature);
        M5.Lcd.print("humidité : ");
        M5.Lcd.println(humidity); }
// boucle de mesure de température et humidité
void loop() {
    unsigned long currentMillis = millis();
    // Mesure toutes les 30 secondes
    if (currentMillis - lastMeasurementTime >= 30000) {
        float temperature, humidity;
        sht45.read(temperature, humidity);
        Serial.print("humidite : "); Serial.println(humidity);
        // mise à jour du tableau des 6 derniers taux d'humidité
        updateHumidityBuffer(humidity);
        //affichage des données mesurées sur l'écran du M5 Stack
        affichageMesure(temperature,humidity);
        // Envoi des données du SHT45 à la Naiobox par MQTT
        sendMQTT(temperature, humidity);
        // Gestion de la ventilation
        if ((temperature > 30.0 || humidity > 70.0 )) {
            triggerVentilation();
        }
        Else
            { stopVentilation();}
        lastMeasurementTime = currentMillis;
    }
}

DOCUMENT TECHNIQUE DTA6

Contrôle d'intégrité par CRC-8

Le CRC-8 (Cyclic Redundancy Check, 8 bits) est une méthode de contrôle d'intégrité utilisée lors des transmissions de données ( I^2 C, UART, bus industriels, stockage...). Il permet de détecter des erreurs de transmission (bit inversé, trame corrompue...).
Principe :
  • -A partir de données à transmettre ( ex : température codée sur 16 bits), on génère un code de redondance cyclique codée sur 8 bits pour CRC-8.
  • -On ajoute ce code de redondance aux données pour constituer le message à transmettre
  • -A la réception du message, le destinataire refait le calcul du CRC à partir des bits de données ( ex les 16 bits de température) :
    • ○Si le CRC calculé est identique au CRC transmis, les données valides
    • ○Sinon, le message a été corrompue
Calcul du CRC :
Le CRC-8 traite les données comme un polynôme binaire, appelé polynôme générateur et effectue une division modulo-2 par un polynôme générateur prédéfini. Le reste de cette division devient le CRC.
Le calcul du CRC se fait suivant le pseudo-code ci-dessous :
function CRC8(data[], length):
crc = valeur_initiale // initialisation du registre CRC
for i = 0 to length-1: // parcourir chaque octet des données
    crc = crc XOR data[i] // mélange avec l'octet courant
    for bit = 0 to 7: // traiter chaque bit de l'octet
        if (crc & 0x80) != 0: // si le bit le plus significatif (MSB) = 1
            crc = (crc << 1) XOR polynome_generateur
        else:
            crc = (crc << 1) // sinon simple décalage
        crc = crc & 0xFF // conserver uniquement 8 bits
return crc
où data[] représente le tableau de données, length : le nombre d'octets des données
Suivant le protocole utilisé dans la liaison, on peut trouver des polynômes générateurs différents, exemples courants :
  • -CRC-8 : x^∧8 + x^∧2 + x + 1 (valeur hexadécimale : 0 x 07 )
  • -CRC-8-Dallas/Maxim : x^∧8 + x^∧5 + x^∧4 + 1 (valeur hexadécimale : 0 × 31 )
La valeur initiale est souvent prise à 0x00 ou 0xFF.
Avantages et limites du CRC-8
CRC-8 permet une détection fiable des erreurs mais ne détecte pas absolument toutes les combinaisons d'erreurs possibles. Son faible coût en calcul et sa faible surcharge ( 1 seul octet) en fait une méthode adaptée à de nombreux protocoles (1-wire, I2C, SPI, modbus....)

DOCUMENTS TECHNIQUES DE L'ÉTUDE B

DOCUMENT TECHNIQUE DTB1

source : fr.wikipedia.org/wiki/Réseau_local_virtuel
Un réseau local virtuel, communément appelé VLAN (pour Virtual LAN), est un réseau informatique logique indépendant. De nombreux VLAN peuvent coexister sur un même commutateur réseau ou « switch ».

Exemple de cloisonnement d'un réseau en deux VLAN, VLAN1 pour l'équipe d'ingénierie et VLAN2 pour l'équipe marketing.
Intérêts des VLAN
Les VLAN permettent :
  • -de séparer les flux ;
  • -de segmenter le réseau : réduire la taille d'un domaine de collision ;
  • -d'améliorer la sécurité : permet de créer un ensemble logique isolé pour améliorer la sécurité. Le seul moyen pour communiquer entre des machines appartenant à des VLAN différents est alors de passer par un routeur.
Par conséquent, les VLAN permettent aussi d'améliorer la gestion du réseau et d'optimiser la bande passante.
Lien marqué
Un « lien marqué » (tagged link) est une interconnexion entre deux commutateurs qui préserve l'appartenance aux VLAN de chaque trame.
Pour interconnecter deux commutateurs qui ont 3 VLAN communs, il faudrait 3 câbles et sacrifier 3 ports sur chaque commutateur. Pour éviter cela, il existe le lien marqué. Un seul câble d'interconnexion sur lequel plusieurs VLAN passeront, mais les trames sont marquées (taggées) pour que les commutateurs sachent à quel VLAN elles appartiennent. Ceci est accompli en encapsulant chaque trame de façon à conserver son numéro de VLAN. L'IEEE a développé la norme 802.1Q (dot1q).
IEEE 802.1Q qui succède au protocole ISL de Cisco est aujourd'hui le protocole prédominant.
CISCO et d'autres constructeurs utilisent le terme « lien tronc » (trunk link) pour parler d'un lien marqué.
VXLAN offre une plus grande évolutivité - jusqu'à 16 millions, par rapport à une limite de 4096 pour 802.1Q.
Assignation des VLAN
La manière la plus courante de configurer les VLAN est de le faire de manière statique en spécifiant pour chacun des ports du commutateur à quel VLAN il appartient.
Il est également possible de modifier dynamiquement la configuration d'un port. Cela peut se faire de manière sûre avec un mécanisme tel que 802.1X ou sur base de l'adresse MAC voire IP de l'équipement. Cette dernière solution est toutefois très peu sécurisée, les adresses MAC ou IP étant très facilement modifiables.

DOCUMENT TECHNIQUE DTB2

Commande de création d'un VLAN
Commande Objectif
enable Passer en mode privilège
conft Passer en mode de configuration globale
vlan [VLAN ID] Créer le VLAN dont le numéro est VLAN ID
exit Quittez le mode de configuration
Exemple : Création du VLAN 10 sur le switch
Switch>enable
Switch#conf t
Switch(config)#vlan 10
Switch(config-vlan)#exit

Association d'un port à un VLAN

Commande Objectif
Interface [nom interface] Configure le port [Nom interface] du switch. Exemples d'interface fa0/1, fa0/24, gig0/1 ...
Interface range [nom interface]-[numéro de fin] Configure les ports de [nom interface] à numéro de la dernière interface du switch
Switchport mode {access, hybrid, trunk} Configure le port en mode access (assignation du port à un seul VLAN), hybrid (autorise la circulation de trames taguées et non taguées) ou trunk (autorise la circulation de tous les VLAN)
Switchport access vlan [vlan ID] Assigne le port du switch configuré au vlan [vlan ID]
exit Quitte le mode de configuration de l'interface
La configuration des interfaces du switch nécessite d'être en mode privilège et en mode configuration globale.
Exemple : Configuration des ports Fast Ethernet 5 à 10 en mode access et association de ces interfaces au vlan 10
Switch(config)#interface range fastethernet0/5-10
Switch(config-if)# switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Exemple : Configuration du port Gigabit Ethernet 0/1 en mode trunk :
Switch(config)# interface gigabitethernet0/1
Switch(config-if)# switchport mode trunk
Switch(config-if)#exit

Activation d'un port du routeur

Par défaut, les ports du routeur ne sont pas activés.
Commande Objectif
No shutdown Active le port qui est configuré
Exemple : Active le port fa0/1
Router(config)# interface fa0/1
Router(config-if)#no shutdown
Router(config-if)#exit

Créer une sous-interface dédiée à un VLAN

La configuration des sous-interfaces du routeur nécessite d'être en mode privilège et en mode configuration globale.
Commande Objectif
interface gigabitethernet0/0.10 crée une sous-interface dédiée 0/0.10 pour le VLAN 10 sur l'interface physique gigabitethernet 0/0.
encapsulation dot1q [VLAN ID] indique au routeur de reconnaître les trames du VLAN [VLAn ID] en utilisant le protocole d'encapsulation 802.1Q
ip address [Adrresse_IP] [Masque de sous-réseau] attribue une adresse IP et un masque à la sous-interface, qui servira de passerelle pour les appareils des VLANs
Exemple : Configuration de l'interface Gigabit Ethernet 0/0
Router(config)# interface gigabitethernet0/0.10
Router(config-subif)# encapsulation dot1q 10
Router(config-subif)# ip address 192.168.10.254 255.255.255.0
Router(config-subif)#exit

Commandes de diagnostic du problème de connexion

Commande lancée depuis le poste du dirigeant (@192.168.3.1) :
C:l>ping 192.168.3.2
Pinging 192.168.3.2 with 32 bytes of data:
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Reply from 192.168.3.2: bytes=32 time<1ms TTL=128
Ping statistics for 192.168.3.2:
Packets: Sent = 4, Received = 4, Lost = 0(0% loss ),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:>ping 192.168.8.1
Pinging 192.168.8.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.8.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:|> ping orange.fr
Pinging orange.fr [193.252.148.46] with 32 bytes of data:
Reply from 193.252.148.46 : bytes =32 time =28 ms TTL=245
Reply from 193.252.148.46 : bytes =32 time =25 ms TTL=245
Reply from 193.252.148.46 : bytes =32 time =25 ms TTL=245
Reply from 193.252.148.46 : bytes = 32 time = 26 ms TTL=245
Ping statistics for 193.252.148.46:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 25ms, Maximum = 28ms, Average = 26ms
C:|>

DOCUMENT TECHNIQUE DTB7

Commandes de diagnostic du problème de connexion

Commande lancée depuis la Naiobox :
AdminEne@naiobox :~ ✓ ^ x
Fichier Edition Onglets Aide
AdminEne@naiobox : ~ $ ip a eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.8.1 netmask 255.255.255.240 broadcast 192.168.8.15 inet6 fe80::481:d4ff:fe7a:395f prefixlen 64 scopeid 0x20 ether dc:a6:32:20:ed:e0 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0(0.0 B ) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Boucle locale) RX packets 0 bytes 0(0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
AdminEne@naiobox : ~ $

DOCUMENT TECHNIQUE DTB8

Commandes de diagnostic du problème de connexion

Commandes lancées depuis le switch 9 du réseau de supervision de la smartgrid :
Switch>enable Switch#show interface status
Port Name Status Vlan Duplex Speed Type
Fa0/1 connected 80 auto auto 10/100BaseTX
Fa0/2 connected 80 auto auto 10/100BaseTX
Fa0/3 connected 80 auto auto 10/100BaseTX
Fa0/4 connected 80 auto auto 10/100BaseTX
Fa0/5 connected 80 auto auto 10/100BaseTX
Fa0/6 connected 80 auto auto 10/100BaseTX
Fa0/7 connected 80 auto auto 10/100BaseTX
Fa0/8 notconnect 1 auto auto 10/100BaseTX
Gig0/1 connected trunk auto auto 10/100BaseTX
Gig0/2 connected 1 auto auto 10/100BaseTX
Switch#exit
Switch>show vlan brief
VLAN Name Status Ports
1 default active Fa0/8, Gig0/2
80 VLAN0080 active Fa0/5, Fa0/1, Fa0/2, Fa0/3, Fa0/4
1002 fddi-default 1003 token-ring-default 1004 fddinet-default 1005 trnet-default Switch> active active active active

DOCUMENT TECHNIQUE DTB9

Commandes de diagnostic du problème de connexion

Commandes lancées depuis le switch central :
Switch>enable Switch#show interface status
Port Name Status Vlan Duplex Speed Type
Fa0/1 connected trunk auto auto 10/100BaseTX
Fa0/2 connected trunk auto auto 10/100BaseTX
Fa0/3 connected trunk auto auto 10/100BaseTX
Fa0/4 connected trunk auto auto 10/100BaseTX
Fa0/5 connected trunk auto auto 10/100BaseTX
Fa0/6 connected trunk auto auto 10/100BaseTX
Fa0/7 notconnect 1 auto auto 10/100BaseTX
Fa0/8 notconnect 1 auto auto 10/100BaseTX
Fa0/9 notconnect 1 auto auto 10/100BaseTX
Fa0/10 notconnect 1 auto auto 10/100BaseTX
Fa0/11 notconnect 1 auto auto 10/100BaseTX
Fa0/12 notconnect 1 auto auto 10/100BaseTX
Fa0/13 notconnect 1 auto auto 10/100BaseTX
Fa0/14 notconnect 1 auto auto 10/100BaseTX
Fa0/15 notconnect 1 auto auto 10/100BaseTX
Fa0/16 notconnect 1 auto auto 10/100BaseTX
Fa0/17 notconnect 1 auto auto 10/100BaseTX
Fa0/18 notconnect 1 auto auto 10/100BaseTX
Fa0/19 notconnect 1 auto auto 10/100BaseTX
Fa0/20 notconnect 1 auto auto 10/100BaseTX
Fa0/21 notconnect 1 auto auto 10/100BaseTX
Fa0/22 notconnect 1 auto auto 10/100BaseTX
Fa0/23 notconnect 1 auto auto 10/100BaseTX
Fa0/24 notconnect 1 auto auto 10/100BaseTX
Gig0/1 connected trunk auto auto 10/100BaseTX
Gig0/2 notconnect 1 auto auto 10/100BaseTX
Switch>show vlan brief VLAN Name
Status Ports
1 default active Fa0/7, Fa0/8, Fa0/9, Fa0/10, Fa0/11, Fa0/12, Fa0/13, Fa0/14, Fa0/15, Fa0/16 Fa0/17, Fa0/18, Fa0/19, Fa0/20, Fa0/21 Fa0/22, Fa0/23, Fa0/24, Gig0/2 Fa0/22, Fa0/23, Fa0/24, GIg0/2 active active active active active active active active 1002 fddi-default active active 1004 fddinet-default active active Switch>

Commandes de diagnostic du problème de connexion

Commande show interface lancée depuis le routeur. Le résultat étant très long, seul les 4 dernières interfaces sont affichées ci-dessous. Les interfaces sont affichées dans l'ordre alphanumérique.
GigabitEthernet0/0.50 is up, line protocol is up (connected)
Hardware is PQUICC_FEC, address is 0001.c9c7.d401 (bia 0001.c9c7.d401)
Internet address is 192.168.5.30/27
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation 802.1Q Virtual LAN, Vlan ID 50
ARP type: ARPA, ARP Timeout 04:00:00,
Last clearing of "show interface" counters never
GigabitEthernet0/0.60 is up, line protocol is up (connected)
Hardware is PQUICC_FEC, address is 0001.c9c7.d401 (bia 0001.c9c7.d401)
Internet address is 192.168.6.6/29
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation 802.1Q Virtual LAN, Vlan ID 60
ARP type: ARPA, ARP Timeout 04:00:00,
Last clearing of "show interface" counters never
GigabitEthernet0/0.70 is up, line protocol is up (connected)
Hardware is PQUICC_FEC, address is 0001.c9c7.d401 (bia 0001.c9c7.d401)
Internet address is 192.168.7.14/28
MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation 802.1Q Virtual LAN, Vlan ID 70
ARP type: ARPA, ARP Timeout 04:00:00,
Last clearing of "show interface" counters never
GigabitEthernet0/1 is administratively down, line protocol is down (disabled)
Hardware is CN Gigabit Ethernet, address is 0001.c9c7.d402 (bia 0001.c9c7.d402)
MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 100Mb/s, media type is RJ45
output flow-control is unsupported, input flow-control is unsupported
ARP type: ARPA, ARP Timeout 04:00:00,
Last input 00:00:08, output 00:00:05, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0 (size/max/drops); Total output drops: 0
Queueing strategy: fifo
Router#
NE RIEN ECRIRE DANS CE CADRE

DOCUMENT RÉPONSE DRA1 (Question A3, A4 et A8)
Méthode read de SHT4x

Ligne
bool SHT4x::read(float &temperature, float &humidity) {
    // debut de transmission, à compléter
    . . . . . . . . . . . . . . . . . . . .
    Wire.write(precision_t);
    if (Wire.endTransmission() != 0) {
        return false; }
    delay(10); // Délai de conversion des données
    Wire.requestFrom(SHT4x_address, (uint8_t)6);
    if (Wire.available() != 6) {
        return false;}
    uint8_t bytes_frame[6];
    for (int i = 0; i < 6; i++) {
        bytes_frame[i] = Wire.read();
    }
// contrôle d'intégrité par CRC pour les données d'humidité
//calcul des valeurs brutes de température et humidité sur 16 bits
    uint16_t rawTemp = . . . . . . . . . . . . . . . . . . // à compléter
    uint16_t rawHum = . . . . . . . . . . . . . . . . . . // à compléter
    temperature = -45.0f + 175.0f * ((float)rawTemp / 65535.0f);
    humidity = 100.0f * ((float)rawHum / 65535.0f);
    return true;
    }

DOCUMENT RÉPONSE DRA2 (Question A7 et A8)

Fonction calculerCRC8

Code de la fonction calculerCRC8 qui permet de calculer le CRC8 de n octets données en arguments de la fonction
Ligne Code C++
// Fonction permettant de calculer le CRC-8
static uint8_t calculerCRC8(uint8_t *data, size_t length) {
    uint8_t crc = . . . . . . . ; // à compléter
    for (size_t i = 0; i < length; i++)
        {crc ^= data[i];
            for (uint8_t j = 0; j < 8; j++) {
                if (crc & 0x80 ) {
                    crc = (crc << 1) ^ . . . . . . .; // à compléter
                }
                else {
                    crc <<= 1;
                }
            }
    }
    return crc;
}
NE RIEN ECRIRE DANS CE CADRE

DOCUMENT RÉPONSE DRB1 (Question B2)

Pour rappel :
  • -Le masque de sous-réseau sera choisi pour accueillir un nombre d'hôtes au plus proche du nombre de machines du réseau.
  • -La passerelle occupe l'adresse IP du dernier hôte (client) de chaque sous-réseau.
Service Direction Vente Microgrid
Étage RC 1 Toit du bâtiment
Nombre de postes 2 29 7
Adresse de réseau 192.168.3.0 192.168.4.0 192.168.8.0
Masque de sousréseau
Adresse IP du premier hôte
Adresse IP du dernier hôte
Adresse de broadcast
Passerelle

NE RIEN ECRIRE DANS CE CADRE

DOCUMENT RÉPONSE DRB3 (Question B5)

Le routeur 2911 est connecté au switch central via son interface gig 0/0.
Les switches utilisés sont des switches de niveau 2 .
Etage Affectation Switch Interface VLAN
RC Accueil 1 Fa 0/1 10
Sécurité 1 1 Fa 0/2 10
Sécurité 2 1 Fa 0/3 10
Sécurité 3 1 Fa 0/4 10
Sécurité 4 1 Fa 0/5 10
Switch 2 1 Gig 0/1
RH 1 2 Fa 0/1 20
RH 2 2 Fa 0/2 20
RH 3 2 Fa 0/3 20
RH4 2 Fa 0/4 20
Comptabilité 1 2 Fa 0/5 20
Comptabilité 2 2 Fa 0/6 20
Comptabilité 3 2 Fa 0/7 20
Juriste 2 Fa 0/8 20
Dirigeant 2 Fa 0/9 30
Secrétariat de direction 2 Fa 0/10 30
Switch 1 2 Gig 0/1
Switch central 2 Gig 0/2
1 Chef des ventes 3 Fa 0/1 40
Secrétariat vente 3 Fa 0/2 40
Vendeur 1 3 Fa 0/3 40
...
Vendeur 22 3 Fa 0/24 40
Switch 4 3 Gig 01
Vendeur 23 4 Fa 0/1 40
...
Vendeur 28 4 Fa 0/6 40
Switch 3 4 Gig 0/1
Switch central 4 Gig 0/2
2 R&D 1 5 Fa 0/1 50
...
R&D 24 5 Fa 0/24 50
Switch 6 5 Gig 0/1
R&D 25 6 Fa 0/1 50
Switch 5 6 Gig 0/1
Switch central 6 Gig 0/2
3 DSI 1 (direction) 7 Fa 0/1 60
DSI 2 (réseau) 7 Fa 0/2 60
DSI 3 (logiciels) 7 Fa 0/3 60
DSI 4 (matériel) 7 Fa 0/4 60
Switch central 7 Gig 0/1
Serveur 1 8 Fa 0/1 70
Serveur ... 8 Fa 0/... 70
Serveur 9 8 Fa 0/9 70
Switch central 8 Gig 0/1
Routeur 2911 Switch central Gig 0/1
Switch 2 Switch central Fa 0/1
Switch 4 Switch central Fa 0/2
Switch 6 Switch central Fa 0/3
Switch 7 Switch central Fa 0/4
Switch 8 Switch central Fa 0/5

Pas de description pour le moment