CAPET informatique externe 2026, épreuve 1, option ingénierie informatiqueSujet
Capet externe bac + 3 section sciences industrielles de l'ingénieur option ingénierie informatique - Sujet de la première épreuve écrite de la session 2026
- Conditionnement de signal analogique et pont diviseur de tension
- Conversion analogique-numérique et résolution
- Programmation embarquée orientée objet (C++ Arduino)
- Modèle OSI et TCP/IP, protocole Modbus TCP
- Bases de données relationnelles et langage SQL
- Protocole MQTT pour l'internet des objets
Téléchargements
- Corrigé : pas encore disponible
- Rapport du jury : pas encore publié
Présentation du sujet
Étude d'un système de supervision de microgrid électrique : capteurs, réseau et base de donnéesAfficher ou masquer la section
Présentation du sujet
Le sujet étudie la supervision d'un microgrid électrique d'entreprise (panneaux photovoltaïques, bornes de recharge, batteries) par un boîtier appelé Naiobox. Trois parties obligatoires portent sur la mise en œuvre d'un capteur analogique de dihydrogène, d'un capteur numérique de composés organiques volatils, puis sur l'analyse de la communication réseau entre la Naiobox et un onduleur ; une quatrième partie au choix porte sur la conception de requêtes SQL ou sur la configuration d'un serveur Node-RED avec le protocole MQTT.
- 1Partie A : mesure du taux de dihydrogène par capteur analogiqueOn met en œuvre un capteur MQ8 relié à un microcontrôleur ESP32, avec un montage d'adaptation de tension et l'exploitation d'un convertisseur analogique-numérique.
- 2Partie B : mesure du taux de composés organiques volatilsOn programme en C++ objet la mesure périodique du taux de COVT avec un capteur SGP30 et le déclenchement d'une alerte et d'une ventilation selon des seuils.
- 3Partie C : analyse de la communication Naiobox-onduleurOn analyse la configuration réseau de la Naiobox et une capture Wireshark du protocole Modbus TCP échangé avec l'onduleur des panneaux solaires, en reliant les couches du modèle OSI et TCP/IP aux trames observées.
- 4Partie D (choix 1) : conception de requêtes SQLOn écrit des requêtes SQL de création, d'insertion et de sélection sur une base de données relationnelle stockant les mesures du microgrid, avec des requêtes d'analyse des anomalies de tension.
- 5Partie E (choix 2) : configuration Node-RED et protocole MQTTOn étudie la sécurisation d'un serveur Node-RED et la configuration d'un nœud MQTT pour la communication de données du microgrid.
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
Lecture du sujet en ligne
CONCOURS EXTERNE ET CAFEP CORRESPONDANT
(BAC + 3)
Option : INGÉNIERIE INFORMATIQUE
L'épreuve consiste en l'étude de la modélisation d'un produit.
Elle a pour objectif de vérifier la capacité du candidat à conduire une étude d'un produit pour en caractériser les performances en mobilisant ses connaissances scientifiques et technologiques relevant de l'option du concours.
L'épreuve est constituée de plusieurs parties indépendantes, certaines d'entre elles sont à traiter obligatoirement et d'autres sont au choix du candidat.
L'usage de tout ouvrage de référence, de tout dictionnaire et de tout autre matériel électronique est rigoureusement interdit.
INFORMATION AUX CANDIDATS
- -Concours externe du CAPET de l'enseignement public :

- -Concours externe du CAFEP/CAPET de l'enseignement privé :

Définition de l'épreuve
Elle a pour objectif de vérifier la capacité du candidat à conduire une étude d'un produit pour en caractériser les performances en mobilisant ses connaissances scientifiques et technologiques relevant de l'option du concours.
L'épreuve est constituée de plusieurs parties indépendantes, certaines d'entre elles sont à traiter obligatoirement et d'autres sont au choix du candidat.
Conseils aux candidats
- -de rédiger les réponses aux différentes parties 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
Sommaire
1
Présentation du support
2
Partie A (à traiter obligatoirement)
3
Partie B (à traiter obligatoirement)
6
Partie C (à traiter obligatoirement)
9
Partie D (Choix 1)
11
Partie E (Choix 2)
14
DOCUMENTS RÉPONSES
17
DOCUMENTS TECHNIQUES
24
Les candidats devront choisir de traiter la partie D (choix 1) ou la partie E (choix 2).
Présentation du support
Système de supervision d'un microgrid
- -de
230 m^2 de panneaux voltaïques sur les toits de la société pour une puissance crête de 40 kW. - -de 8 bornes de recharge de véhicules électriques gérées par un système de gestion de recharge EVLink LMS de chez Schneider.
- -de batteries de stockage d'une capacité totale de 40 kW.h, permettant de stocker l'énergie électrique lorsque la production photovoltaïque est excédentaire.

Partie A (à traiter obligatoirement)
Mesure du taux de dihydrogène par capteur analogique
| GPIO TYPE | Analog Function | M-BUS | Analog Function | GPIO TYPE | |||
| GND GND GND | ADC | G35 | ADC1_CH7 | 1 | |||
| ADC | G36 | ADC1_CH0 | I | ||||
| RST | EN | ||||||
| I/O/T | G23 | MOSI | DAC/SPK | G25 | ADC2_CH8 | I/O/T | |
| I/O/T | G19 | MISO | DAC | G26 | ADC2_CH9 | I/O/T | |
| I/O/T | G18 | SCK | 3.3V | ||||
| I/O/T | G3 | RXD1 | TXD1 | G1 | 1/0/T | ||
| I/O/T | G16 | RXD2 | TXD2 | G17 | I/O/T | ||
| I/O/T | G21 | SDA | SCL | G22 | I/O/T | ||
| I/O/T | ADC2_CH2/T2 | G2 | GPIO | GPIO | G5 | I/O/T | |
| I/O/T | ADC2_CH5 | G12 | IIS_SK | IIS_WS | G13 | ADC2_CH4/T4 | I/O/T |
| I/O/T | ADC2_CH3/T3 | G15 | IIS_OUT | IIS_MK | G0 | ADC2_CH1/T1 | I/O/T |
| HPWR | IIS_IN | G34 | ADC1_CH6 | 1 | |||
Proposer et justifier le choix d'un numéro de port du M5Stack pouvant être utilisé pour recueillir le signal issu du capteur MQ8.

Calculer la valeur à imposer à R1 de manière à ce qu'une tension Vout de 5 V entraîne une tension Vesp de


La fonction devra renvoyer le taux de
Par exemple, avec la table corresMQ8, pour une tension Vesp de 1,5 V, la fonction doit renvoyer un taux de 163 ppm.

Conclure alors sur la capacité du dispositif et des fonctions étudiés précédemment à fournir une valeur correcte du taux de dihydrogène. Indiquer si la détection de seuil à 300 ppm est réalisable dans ces conditions.
Partie B (à traiter obligatoirement)
Mesure du taux de composants volatiles COVT
- -Message d'alerte si le taux de COVT est supérieur à 500 parties par milliard (ppb) ou si la croissance de ce taux est supérieure à 200 ppb par minute.
- -Ventilation si le taux de COVT est supérieur à 1000 ppb.
| Parameter | Signal | Values | Comments | |
| Output range | TVOC signal | 0 ppb to 60000 ppb | Maximum possible output range. The gas sensing performance is specified for the measurement range as defined in Table 1 | |
| CO2eq signal | 400 ppm to 60000 ppm | |||
| Range | Resolution | |||
|
|
1 ppb | |||
| TVOC signal | 2008 ppb - 11110 ppb | 6 ppb | ||
|
|
32 ppb | |||
|
|
|
1 ppm | ||
|
|
3 ppm | |||
| 5144 ppm - 17597 ppm | 9 ppm | |||
|
|
31 ppm | |||
| Sampling rate | TVOC signal | 1 Hz | The on-chip baseline compensation algorithm has been optimized for this sampling rate. The sensor shows best performance when used with this sampling rate. | |
|
|
1 Hz | |||
- Le capteur est mis sous tension et la communication est initialisée. Le maître I2C envoie les commandes sgp30_get_feature_set (méthode begin), puis sgp30_iaq_init. Le capteur répond à chaque message.
- Le maître I2C demande périodiquement des mesures et lit les données, selon la séquence suivante :
- a.Le maître I2C envoie une commande de mesure (sgp30_measure_iaq).
- b.Le capteur renvoie un message contenant les taux de concentration en CO2eq (en ppm) et de COVT (en ppb).
- c.Le maître I2C lit le résultat de la mesure.
Partie C (à traiter obligatoirement)
Analyse de la communication Naiobox - Onduleur de panneaux solaires
Afin d'identifier les paramètres réseau de la Naiobox, on saisit la commande décrite à la figure C1.
adminene@naiobox : ~
Fichier Edition Onglets Aide
adminene@naiobox : ~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
link/ether dc:a6:32:20:ed:de brd ff:ff:ff:ff:ff:ff
inet 192.168.8.1/28 brd 192.168.8.15 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::481:d427:f7ea:395f/64 scope link noprefixroute
valid_lft forever preferred_lft forever
adminene@naiobox : ~ $ ip route
default via 192.168.8.14 dev eth0 proto static metric 100
192.168.8.0/28 dev eth0 proto kernel scope link src 192.168.8.1 metric 100
adminene@naiobox :~ $
| Question C2 | Compléter le tableau du document réponse DRC1 à l'aide du document technique DTC1. |
| Question C3 | Indiquer quels filtres ont été appliqués à la trace Wireshark pour obtenir la copie d'écran de documents techniques DTC1. La ligne de commande au format Wireshark n'est pas demandée. |
| Question C4 | À l'aide du document technique DTC1, compléter le schéma du document réponse DRC2. Citer les couches du modèle OSI, du modèle TCP/IP et les protocoles utilisés dans la communication Naiobox / onduleur des panneaux solaires pour chacune des couches. |
| Question C5 | Modbus est à l'origine une communication série (Modbus RTU). Ici, dans le protocole Modbus TCP, les données Modbus sont encapsulées dans une trame TCP. Expliquer ce que cela signifie. Citer deux avantages à cette solution par rapport au Modbus série. |
| Question C6 | Expliquer à quoi servent les trames 85 à 87 (documents techniques DTC1). |
| Question C7 | À l'aide du document technique DTC4, indiquer l'utilité du flag PSH (push) présent dans le document technique DTC2 pour l'expéditeur puis pour le récepteur. |
| Question C8 | À partir des documents techniques DTC1, DTC4, indiquer quelles sont les données demandées par le client dans la trame 152. |
| Question C9 | À partir des documents techniques DTC3, DTC4, indiquer quelles sont l'information du microgrid et sa valeur qui sont transmises à la Naiobox pour être stockées dans la base de données. Justifier votre réponse. |
| Question C10 | Indiquer à quoi servent les trames 166 et 167 du document technique DTC1. |
| Question C11 | Compléter le diagramme de séquence du document réponse DRC3 afin qu'il modélise le transfert de données entre la Naiobox et l'onduleur pour les traces Wireshark enregistrées. |
Partie D (Choix 1)
Conception des requêtes SQL
La base de données est organisée suivant le schéma relationnel suivant :

- -La table Mesures contient l'identifiant unique de l'appareil dont provient la mesure, la date et l'heure de la mesure, la valeur mesurée ainsi que l'identifiant de la grandeur physique mesurée.
- -La table Appareils décrit chaque appareil du microgrid relié au réseau (onduleurs de panneaux solaires, onduleurs de batteries...) en spécifiant son index (ld_appareil) son nom, son numéro de série et un identifiant unique du lieu où se trouve l'équipement.
- -La table Lieux répertorie le lieu où peuvent être placés les équipements ainsi qu'un identifiant unique.
- -La table Grandeurs répertorie les grandeurs physiques qui peuvent être mesurées en indiquant un identifiant unique, le nom de la grandeur physique mesurée et son unité.
- -Le
1^(er) janvier 2025 à 11h00 s'écrit : '2025-01-01 11:00:00' - -Le 14 juillet 2025 à 23h55 et 10 secondes s'écrit '2025-07-14 23:55:10'
| Id_lieu | nom |
| 5 | Toiture |
| 4 | Local Technique 3er étage |
| 3 | Local Technique 2er étage |
| 2 | Local Technique 1er étage |
| 1 | Local Technique rez-de-chaussée |
Partie E (choix 2)
Paramétrage de Node-RED sur la Naiobox
adminene@naiobox : ~ $ mkdir ssl
adminene@naiobox : ~ $ cd ssl
adminene@naiobox : ~/ssl $ openssl genrsa -out privatekey.pem 2048
adminene@naiobox : ~/ssl $ openssl req -new -sha256 -key privatekey.pem -out csr.pem
adminene@naiobox : ~/ssl $ openssl x509 -req -in csr.pem -signkey privatekey.pem -out certificate.pem

adminene@naiobox:~/ssl$ pud
home/adminene/ssl
adminene@naiobox:~/ssl$ instruction à déterminer
total 20
druxrwxr-x 2 adminene adminene 4096 oct. 3 13:02
druxr-x--- 5 adminene adminene 4096 oct. 3 12:57
-rw-rw-r-- 1 adminene adminene 1147 oct. 3 13:02 certificate.pem
-rw-rw-r-- 1 adminene adminene 1001 oct. 3 13:01 csr.pem
-rw------- 1 adminene adminene 1704 oct. 3 12:58 privatekey.pem
Question E7 Proposer un niveau de QOS pour cette communication en justifiant votre choix, puis compléter en DRE2 les champs sujet et QoS.
# Place your local configuration in /etc/mosquitto/conf.d/
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /run/mosquitto/mosquitto.pid
allow_anonymous true
password_file /etc/mosquitto/passwd
listener 1883
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d

DOCUMENT RÉPONSE DRB1 (Question B2)

DOCUMENT RÉPONSE DRB2 (Questions B7 à B9)
Code de mesure du taux de COVT
Ligne Code C++
// Variables
uint16_t lastTvoc = 0; // dernière mesure de taux de COVT
unsigned long lastMeas = millis();
While (true) { //boucle de mesure
unsigned long now = millis();
if (now - lastMeas >= 10000) { //mesure toutes les 10 s
lastMeas = now;
if (sgp.IAQmeasure()) { // lancement de la mesure
// stockage du taux actuel mesuré, dans la variable tauxTvoc
// calcul du taux croissance par minute du taux de COVT
...........................................................................................
.............................................................................................
.........................................................................................
//déclenchement de la ventilation et de l'alerte
.........................................................................................
.........................................................................................
..........................................................................................
..........................................................................................
...........................................................................................
(-........................................................................................
else
{M5.Lcd.println("Erreur mesure !");}
}

![]() |
![]() |
|
| Nom | Onduleur panneaux solaires | Naiobox |
| Rôle (client ou serveur) : | ||
| Adresse IPv4 : | ||
| Masque de sous-réseau : | ||
| Passerelle : | ||
| Port : |


DOCUMENT RÉPONSE DRC3 (Question C11)

DOCUMENT RÉPONSE DRE1 (Questions E5)
Fichier de configuration Node-RED settings.js
/****************************************************************************
*Security
* - adminAuth
* - https
* - httpsRefreshInterval
* - requireHttps
* - httpNodeAuth
* - httpStaticAuth
**************************************************************************/
/** To password protect the Node-RED editor and admin API, the following
* property can be used. See https://nodered.org/docs/security.html for details.*/
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tI8sJogENOMcxWV9DN.",
permissions: "*"
}]
},
/** The following property can be used to enable HTTPS
* This property can be either an object, containing both a (private) key
* and a (public) certificate, or a function that returns such an object.
* See http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener
* for details of its contents. */
/** Option 1: static object */
https: {
key: require("fs").readFileSync(_____.................................................), // à compléter
cert: require("fs").readFileSync(_..................................................) // à compléter
},
/** If the ˋhttpsˋ setting is a function, the following setting can be used
* to set how often, in hours, the function will be called. That can be used
* to refresh any certificates. */
httpsRefreshInterval : 12,
/** The following property can be used to cause insecure HTTP connections to
* be redirected to HTTPS. */
requireHttps: true,

DOCUMENT RÉPONSE DRE2 (Questions E7 et E9)
| Supprimer | Annuler | Terminer |
| * Propriétés | □ | |
| () Serveur | □ | □ |
| Action | □ | |
| Sujet | □ | |
| ** QoS | □ | |
| → Sortie | □ | |
| - Nom | □ | |
DOCUMENT TECHNIQUE DTB1 (questions B5 à B7)
Structure de la classe SGP30
| SGP30 | |
| +TVOC : uint16_t -i2cdev : I2CDevice * | attributs |
| +SGP30() +begin( *pWire : Tw oWire=&Wire, initSenor : bool=true ) : bool +1AQinit() : bool +|AQmeasure() : bool -readWordFromCommand( command] : uint8t, cmdLen : uint8t, delay : uint16t, "readdata : uint16t=NULL, readlen : uint8_t=0 ) : bool +setHumidity( absoluteHumidity : uint32t ) : bool |
1
1
I2CDevice
-Wire : TwoWire *
opérations
+w rite( *buffer : const uint8_t, len : sizet, stop : bool=true, *prefix_buffer : const uint8_t=nullptr, prefixlen : sizet=0 ) : bool
+read( *buffer : uint8t, len : size_t, stop : bool=true ) : bool
+begin( addrdetect : bool=true ) : bool
1
1
TwoWire
opérations
+begin()
+beginTransmission( uint8_t address)
+av ailable()
+requestFrom( adress : uint16_t, len : size_t ) : size_t
+w rite( data : uint16_t) : size_t
+endTransmission()
+read() : uint16_t
| No. | Time | Source | Destination | Protocol | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 8521.643484 | 192.168.8.1 | 192.168.8.4 | TCP |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 8621.643895 | 192.168.8.4 | 192.168.8.1 | TCP |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 8721.644498 | 192.168.8.1 | 192.168.8.4 | TCP |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 10726.650606 | 192.168.8.1 | 192.168.8.4 | Modbus/TCP | 78 Query: Trans: | 1; Unit: 1, Func: | 3: Read Holding Registers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 10826.655130 | 192.168.8.4 | 192.168.8.1 | Modbus/TCP | 79 Response: Trans: | 1; Unit: 1, Func: | 3: Read Holding Registers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 10926.655631 | 192.168.8.1 | 192.168.8.4 | TCP |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 15231.654942 | 192.168.8.1 | 192.168.8.4 | Modbus/TCP | 78 Query: Trans: | 2; Unit: 1, Func: | 3: Read Holding Registers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 15331.655846 | 192.168.8.4 | 192.168.8.1 | Modbus/TCP | 79 Response: Trans: | 2; Unit: 1, Func: | 3: Read Holding Registers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 15431.656095 | 192.168.8.1 | 192.168.8.4 | TCP |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 16633.121067 | 192.168.8.1 | 192.168.8.4 | TCP |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| L | 16733.121486 | 192.168.8.4 | 192.168.8.1 | TCP |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Frame 152: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface \Device\NPF_{CDC89913-7404-40B - Ethernet II, Src: RaspberryPiT_20:ed:de (dc:a6:32:20:ed:de), Dst: MicroStarINT_e7:dd:dc (00:d8:61:e7:dd:dc) - Internet Protocol Version 4, Src: 192.168.8.1, Dst: 192.168.8.4 - Transmission Control Protocol, Src Port: 41646, Dst Port: 502, Seq: 13, Ack: 14, Len: 12 > Modbus/TCP ✓ Modbus . 0000011 = Function Code: Read Holding Registers (3) Reference Number: 40098 Word Count: 2 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| No. | Time | Source | Destination | Protocol | |||||||||||||||||||
| 85 | 21.643484 | 192.168.8.1 | 192.168.8.4 | TCP | 74 | ||||||||||||||||||
| 86 | 21.643895 | 192.168.8.4 | 192.168.8.1 | TCP | 74 |
|
ACK] Seq=0 | Ack=1 | Win=65535 | Len=0 | TSecr=2037001570 | ||||||||||||
| 87 | 21.644498 | 192.168.8.1 | 192.168.8.4 | TCP |
|
||||||||||||||||||
| 107 | 26.650606 | 192.168.8.1 | 192.168.8.4 | Modbus/TCP | 78 | Query: Trans: | 1; Unit: | 1, Func: | 3: | Read | |||||||||||||
| 152 | |||||||||||||||||||||||
| 31.655846 | Holding Registers | ||||||||||||||||||||||
| 154 | 31.656095 | 192.168.8.1 | TSecr=154190143 | ||||||||||||||||||||
| 192.168.8.1 | 192.168.8.4 | TCP | 0 | ||||||||||||||||||||
| TCP | 66 | ||||||||||||||||||||||
| 166 | 192.168.8.1 | 192.168.8.4 | 66 | P | |||||||||||||||||||
| TSval=2037013048 | |||||||||||||||||||||||
| 167 | 33.121486 | 192.168.8.4 | 192.168.8.1 | TCP | 66 |
|
TSval=154191610 | ||||||||||||||||
Sequence Number (raw): 1166795919
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| No. | Time | Source | Destination | Protocol | Length | Info | ||||||||||
| 85 | 21.643484 | 192.168.8.1 | 192.168.8.4 | TCP | 74 |
|
||||||||||
| 86 | 21.643895 | 192.168.8.4 | 192.168.8.1 | TCP |
|
|||||||||||
| 87 | 21.644498 | 192.168.8.1 | 192.168.8.4 | TCP | 6641646 → 502 [ACK] | |||||||||||
| 107 | 26.650606 | 192.168.8.1 | 192.168.8.4 | Modbus/TCP | 78 | Query: Trans: | 1; Unit: | |||||||||
| 108 | 26.655130 | 192.168.8.4 | 192.168.8.1 | Modbus/TCP | 79 Response: Trans: | 1; Unit: | ||||||||||
| 109 | 26.655631 | 192.168.8.1 | 192.168.8.4 | TCP | 6641646 → 502 [ACK] |
|
||||||||||
| 152 | 31.654942 | 192.168.8.1 | 192.168.8.4 | Modbus/TCP |
|
2; Unit: | 1, Func: | 3: | Read Holding Registers | |||||||
| 153 | 31.655846 | 192.168.8.4 | 192.168.8.1 | Modbus/TCP | 79 Response: Trans: | 2; Unit: | 1, Func: | 3: Read Holding Registers | ||||||||
| 154 | 31.656095 | 192.168.8.1 | 192.168.8.4 | TCP | Seq=25 Ack=27 | |||||||||||
| 166 | 33.121067 | 192.168.8.1 | 192.168.8.4 | TCP | ||||||||||||
| [Bytes in flight: 13] | I | f3 | ||||||||||||||
| [PDU | ff | ff | ||||||||||||||
|
||||||||||||||||
DOCUMENT TECHNIQUE DTC4
Inverter Model MODBUS Register Mappings
- -acc32 is a uint32 accumulator that should always increase. Its value is in the range of 0...4294967295.
- -Scale Factors. As an alternative to floating point format, values are represented by Integer values with a signed scale factor applied. The scale factor explicitly shifts the decimal point to left (negative value) or to the right (positive value).
Value = "Value" * 10^ Value_SF for example:
- -For "Value" = 2071 and "Value_SF" = -2 Value = 2071 * 10 ^-2 = 20.71
- -For "Value" = 2071 and "Value_SF" = 2 Value
= 2071^∗ 10^∧2 = 20710
| Address | Size | Name | Type | Units | Description | |
| (base 0) | (base 1) | |||||
| 40091 | 40092 | 1 | I_AC_PF
|
int16 | % | Power Factor |
| 40092 | 40093 | 1 | I_AC_PF_SF
|
int16 | Scale factor | |
| 40093 | 40094 | 2 | I_AC_Energy_WH | acc32 | WattHours | AC Lifetime Energy production |
| 40095 | 40096 | 1 | I_AC_Energy_WH_SF | uint16 | Scale factor | |
| 40096 | 40097 | 1 | I_DC_Current | uint16 | Amps | DC Current value |
| 40097 | 40098 | 1 | I_DC_Current_SF | int16 | Scale factor | |
| 40098 | 40099 | 1 | I_DC_Voltage | uint16 | Volts | DC Voltage value |
| 40099 | 40100 | 1 | I_DC_Voltage_SF | int16 | Scale factor | |
| 40100 | 40101 | 1 | I_DC_Power | int16 | Watts | DC Power value |
| 40101 | 40102 | 1 | I_DC_Power_SF | int16 | Scale factor | |
| 40103 | 40104 | 1 | I_Temp_Sink | int16 | Degrees C | Heat Sink Temperature |
| 40106 | 40107 | 1 | I_Temp_SF | int16 | Scale factor | |
| 40107 | 40108 | 1 | I_Status | uint16 | Operating State | |
| 40108 | 40109 | 1 | I_Status_Vendor | uint16 | Vendor-defined operating state and error codes. For error description, meaning and troubleshooting, refer to the SolarEdge Installation Guide. | |
| Description | Syntaxe SQL |
| Créer une base de données | CREATE DATABASE nom de la_base; |
| Créer une table dans une base de données | CREATE TABLE nomTable ( id INT NOT NULL AUTO_INCREMENT, champ1 DOUBLE, champ2 VARCHAR(255), champ3 TIMESTAMP DEFAULT NOW(), PRIMARY KEY(id)); |
| Écrire une nouvelle entrée dans une table de BDD | INSERT INTO nomTable(champ1, champ2, champ3) VALUES('valeur1', 'valeur2', NOW()); |
| Modifier les informations de l'entrée dont le champ id = 51 | UPDATE nomTable SET nomChamp1=10, nomChamp2=32 WHERE id=51; |
| Sélectionner toutes les informations de la table | SELECT * FROM nomTable; |
| Sélectionner seulement les informations d'un champ | SELECT nomChamp FROM nomTable; |
| Sélectionner tous les champs de la table correspondant à deux critères | SELECT * FROM nomTable WHERE nomChamp1 = 'poste' AND nomChamp3 < 12; |
| Sélectionner sur plusieurs tables (jointure) | SELECT * FROM nomTable1 JOIN nomTable2 ON nomTable1.nomChamp1 = nomTable2.nomChamp4; |
| Appliquer une fonction d'agrégation (MIN, MAX, COUNT, AVG) sur des valeurs d'un champ regroupées | SELECT MAX(nomChamp1) FROM nomTable GROUP BY nomChamp2; |
| Utiliser DATE() pour extraire la partie date | SELECT DATE(nomChamp3) FROM nomTable; |
| Utiliser NOW() pour insérer la date et l'heure actuelles | INSERT INTO nomTable(champ1, champ2, champ3) VALUES('valeur1', 'valeur2', NOW()); |
| Utiliser CASE pour des conditions personnalisées | SELECT nomChamp1, CASE WHEN nomChamp1 > 100 THEN 'Élevé' ELSE 'Faible' END AS categorie FROM nomTable; |
| Ordonner les résultats d'une requête par ordre croissant ou décroissant | SELECT * FROM nomTable ORDER BY nomChamp1 ASC; |
| Filtrer par intervalle de dates | SELECT * FROM nomTable WHERE champ3 BETWEEN '2025-01-01' AND NOW(); |
DOCUMENT TECHNIQUE DTE1 (question E7)
Protocole MQTT
Fonctionnement

Qualité de Service
- -Qos 0 ( Au plus une fois) : Le message est envoyé une seule fois sans confirmation. Pas de garantie.
- -QoS 1 ( Au moins une fois) : Le message est ré-envoyé jusqu'à accusé de réception. Risque de doublons.
- -QoS 2 (Exactement une fois) : Le message est livré une seule fois et garanti sans doublon grâce à un échange en quatre étapes. Plus coûteux en temps.
DTE2 (Question E8 à E10)
| No. | Time | Source | Destination | Protocol | Length | Info |
| 1 | 0.000000 | 192.168.8.12 | 192.168.8.1 | MQTT | 93 | Publish Message [localBatt/TVOC] |
| 3 | 0.347017 | 192.168.8.12 | 192.168.8.1 | MQTT | 95 | Publish Message [localBatt/eCO2] |
| 5 | 6.208854 | 192.168.8.12 | 192.168.8.1 | MQTT | 56 | Ping Request |
| 7 | 6.209112 | 192.168.8.1 | 192.168.8.12 | MQTT | 56 | Ping Response |
| 9 | 10.078543 | 192.168.8.12 | 192.168.8.1 | MQTT | 93 | Publish Message [localBatt/TVOC] |
| 11 | 10.345032 | 192.168.8.12 | 192.168.8.1 | MQTT | 95 | Publish Message [localBatt/eCO2] |
| 13 | 18.922619 | 192.168.8.12 | 192.168.8.1 | MQTT | 101 | Publish Message [localBatt/humidite] |
| 15 | 19.323261 | 192.168.8.12 | 192.168.8.1 | MQTT | 104 | Publish Message [localBatt/temperature] |
| 17 | 19.846324 | 192.168.8.12 | 192.168.8.1 | MQTT | 93 | Publish Message [localBatt/TVOC] |
| 19 | 20.353539 | 192.168.8.12 | 192.168.8.1 | MQTT | 95 | Publish Message [localBatt/eCO2] |
| 21 | 21.218737 | 192.168.8.12 | 192.168.8.1 | MQTT | 56 | Ping Request |
| 23 | 21.219185 | 192.168.8.1 | 192.168.8.12 | MQTT | 56 | Ping Response |
| 25 | 29.850236 | 192.168.8.12 | 192.168.8.1 | MQTT | 93 | Publish Message [localBatt/TVOC] |
| 27 | 30.353109 | 192.168.8.12 | 192.168.8.1 | MQTT | 95 | Publish Message [localBatt/eCO2] |
| 29 | 36.226733 | 192.168.8.12 | 192.168.8.1 | MQTT | 56 | Ping Request |
| 31 | 36.226984 | 192.168.8.1 | 192.168.8.12 | MQTT | 56 | Ping Response |
| 33 | 39.848689 | 192.168.8.12 | 192.168.8.1 | MQTT | 93 | Publish Message [localBatt/TVOC] |
| 35 | 40.351027 | 192.168.8.12 | 192.168.8.1 | MQTT | 95 | Publish Message [localBatt/eCO2] |
| 37 | 48.904532 | 192.168.8.12 | 192.168.8.1 | MQTT | 101 | Publish Message [localBatt/humidite] |
| 39 | 49.324926 | 192.168.8.12 | 192.168.8.1 | MQTT | 104 | Publish Message [localBatt/temperature] |
| 41 | 49.851230 | 192.168.8.12 | 192.168.8.1 | MQTT | 93 | Publish Message [localBatt/TVOC] |
| 43 | 50.350288 | 192.168.8.12 | 192.168.8.1 | MQTT | 95 | Publish Message [localBatt/eC02] |
| 45 | 51.242186 | 192.168.8.12 | 192.168.8.1 | MQTT | 56 | Ping Request |
| 47 | 51.242321 | 192.168.8.1 | 192.168.8.12 | MQTT | 56 | Ping Response |
| 49 | 59.961886 | 192.168.8.12 | 192.168.8.1 | MQTT | 94 | Publish Message [localBatt/TVOC] |
| 51 | 60.369761 | 192.168.8.12 | 192.168.8.1 | MQTT | 95 | Publish Message [localBatt/eCO2] |
| 53 | 66.312573 | 192.168.8.12 | 192.168.8.1 | MQTT | 56 | Ping Request |
| 55 | 66.312823 | 192.168.8.1 | 192.168.8.12 | MQTT | 56 | Ping Response |
> Frame 39: 104 bytes on wire (832 bits), 104 bytes captured (832 bits)
> Ethernet II, Src: Espressif_69:d6:a8 (a0:dd:6c:69:d6:a8), Dst: RaspberryPiT_93:95:da (d8:3a:dd:93:95:da)
> Internet Protocol Version 4, Src: 192.168.8.12, Dst: 192.168.8.1
> Transmission Control Protocol, Src Port: 62629, Dst Port: 1883, Seq: 551, Ack: 7, Len: 50
V MQ Telemetry Transport Protocol, Publish Message
> [Expert Info (Note/Protocol): Unknown version (missing the CONNECT packet?)]
> Header Flags: 0x30, Message Type: Publish Message, QoS Level: At most once delivery (Fire and Forget)
Msg Len: 48
Topic Length: 21
Topic: localBatt/temperature
Message: 32342e36307c323032352d31302d30342031363a31353a3433
| 0000 | d8 | 3a | dd | 93 | 95 | da | a0 | dd | 6c | 69 | d6 | a8 | 08 | 00 | 45 | 00 | : | li | E |
| 0010 | 00 | 5a | 00 | 3d | 00 | 00 | ff | 06 | 2a | 03 | c0 | a8 | 08 | 0c | c0 | a8 | Z = | * | |
| 0020 | 08 | 01 | f4 | a5 | 07 | 5b | 05 | f6 | 84 | e2 | 7a | 95 | 06 | 22 | 50 | 18 | z ⋯ "P | ||
| 0030 | 16 | 5a | 87 | ae | 00 | 00 | 30 | 30 | 00 | 15 | 6c | 6f | 63 | 61 | 6c | 42 | -Z • - - 00 | localB | |
| 0040 | 61 | 74 | 74 | 2f | 74 | 65 | 6d | 70 | 65 | 72 | 61 | 74 | 75 | 72 | 65 | 32 | att/temperature 2 | ||
| 0050 | 34 | 2e | 36 | 30 | 7c | 32 | 30 | 32 | 35 | 2d | 31 | 30 | 2d | 30 | 34 | 20 | 4.60 | 5-10-04 | |
| 0060 | 31 | 36 | 3a | 31 | 35 | 3a | 34 | 33 | 16:15:43 |
Questions fréquentes
4 questionsSur quels chapitres porte cette épreuve 1 du CAPET ingénierie informatique 2026 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quels chapitres porte cette épreuve 1 du CAPET ingénierie informatique 2026 ?
Elle porte sur l'électronique des capteurs, la programmation embarquée, les réseaux informatiques (modèle OSI, Modbus TCP) et les bases de données relationnelles, appliqués à la supervision d'un microgrid électrique.
Quelles parties sont indépendantes dans ce sujet ?
Les parties A, B et C sont à traiter obligatoirement par tous les candidats, tandis que les candidats doivent choisir de traiter soit la partie D (requêtes SQL), soit la partie E (Node-RED et MQTT).
Quels langages de programmation sont utilisés dans ce sujet ?
Python pour la mesure du taux de dihydrogène, C++ orienté objet pour la mesure des composés organiques volatils, et le langage SQL pour les requêtes de base de données.
Quel est le système technique étudié dans ce sujet ?
Un microgrid électrique d'entreprise associant panneaux photovoltaïques, bornes de recharge de véhicules électriques et batteries de stockage, supervisé par un boîtier appelé Naiobox.
Pas de description pour le moment

