Qu'est-ce que c'est
Le Device Twin est un document JSON stocké dans Azure IoT Hub qui sert de représentation persistante de chaque appareil IoT du système. Ce n'est pas un flux de messages, mais un état : il existe même si l'appareil est déconnecté, et il se synchronise automatiquement dès que le CM4 retrouve la connectivité.
Chaque Pod IoT d'IN-SIGHT possède son propre Device Twin avec trois sections indépendantes : tags (métadonnées de flotte), desired properties (configuration envoyée par le cloud) et reported properties (état rapporté par l'appareil). La divergence entre desired et reported indique exactement quels changements sont en attente d'application sur l'appareil.
Principe de conception : Le Device Twin découple le canal de configuration du canal de télémétrie. Les paramètres de l'EKF, les seuils d'alerte et la version du firmware ne circulent pas dans le flux de données : ils sont gérés indépendamment, avec une confirmation explicite d'application par l'appareil.
Structure du Device Twin dans IN-SIGHT
Chaque Pod IoT dispose d'un twin structuré avec les sections suivantes :
{
"tags": {
"vehicleId": "TMB-5000-04",
"subsystem": "bogie-delantero",
"installDate": "2025-11-12",
"firmwareGroup": "stable"
},
"properties": {
"desired": {
"ekf": {
"processNoise": 0.001,
"measurementNoise": 0.05,
"alertThresholdSigma": 3.5
},
"sampling": {
"rateHz": 6667,
"batchSeconds": 30
},
"firmware": {
"version": "2.4.1",
"url": "https://ota.in3-insight.cloud/fw/2.4.1.bin",
"sha256": "e3b0c44298fc..."
},
"$version": 47
},
"reported": {
"firmware": { "version": "2.4.0" },
"sensors": {
"imu": "ok",
"temperature": "ok",
"lastCalibration": "2025-12-01T08:30:00Z"
},
"connectivity": {
"rssi": -67,
"lastSeen": "2026-06-19T14:22:10Z"
},
"$version": 46
}
}
}
La différence de $version entre desired (47) et reported (46) indique un changement de firmware en attente de confirmation. Portal IN-SIGHT affiche cet état comme « mise à jour en cours ».
Flux OTA — Mise à jour du firmware
Les mises à jour du firmware sont coordonnées intégralement via le Device Twin, sans canal additionnel :
- Publication : Portal IN-SIGHT écrit la nouvelle version, l'URL et le hash SHA-256 dans
desired.firmware.
- Notification : IoT Hub notifie au CM4 le changement dans les desired properties via MQTT en temps réel.
- Téléchargement et vérification : Le CM4 télécharge le binaire depuis l'URL signée, vérifie le hash SHA-256 et le stocke dans une partition alternative.
- Application : Au prochain cycle de maintenance planifié (ou immédiatement si la version est critique), le CM4 effectue un swap de partition et redémarre.
- Confirmation : Après le redémarrage, le CM4 met à jour
reported.firmware.version. Le Portal détecte la convergence et marque la mise à jour comme terminée.
Rollback automatique : Si le CM4 ne confirme pas la nouvelle version dans le délai configuré (30 minutes par défaut), le système restaure automatiquement la partition précédente et enregistre l'événement comme échec OTA dans l'historique du véhicule.