← Retour à Architecture Transport · Azure IoT Hub · Cloud

Device Twin
État · OTA Config

Le jumeau numérique de chaque Pod IoT dans Azure IoT Hub. Un document JSON bidirectionnel qui maintient synchronisés l'état réel de l'appareil embarqué et la configuration souhaitée depuis le cloud, y compris les mises à jour de firmware OTA.

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 :

  1. Publication : Portal IN-SIGHT écrit la nouvelle version, l'URL et le hash SHA-256 dans desired.firmware.
  2. Notification : IoT Hub notifie au CM4 le changement dans les desired properties via MQTT en temps réel.
  3. 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.
  4. 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.
  5. 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.