Comment déployer une application de haut niveau sur votre appareil Azure Sphere

Effectué

Dans cette unité, vous allez découvrir comment déployer une application de haut niveau sur votre appareil Azure Sphere et diffuser en continu des données de télémétrie vers IoT Hub.

Architecture de solution

Azure Sphere diffuse en continu des données de télémétrie vers IoT Hub de la façon suivante :

Azure Sphere Streaming telemetry to IoT Hub.

  1. L’application de haut niveau s’exécutant sur le cœur Cortex-A7 lit les capteurs d’environnement toutes les 6 secondes, sérialise les données au format JSON et envoie le message de télémétrie à IoT Hub.
  2. Azure IoT Explorer s’abonne aux messages de télémétrie envoyés à IoT Hub par l’appareil et présente les données à l’utilisateur.

Comprendre l’application Azure Sphere

Les minuteurs d’événements étant largement utilisés dans les labos, il existe un modèle généralisé pour simplifier l’utilisation des minuteurs. La programmation pilotée par les événements simplifie la conception des applications.

Il existe deux types de minuteurs :

  • Minuteurs périodiques
  • Minuteurs ponctuels

Les minuteurs d’événements génèrent des événements liés à des fonctions de gestionnaire qui implémentent les actions souhaitées.

The illustration shows the event timers concept.

L’application déclare un minuteur d’événements périodiques measureSensorTimer. Lors de son initialisation, ce minuteur se déclenche toutes les 6 secondes en appelant la fonction du gestionnaire MeasureSensorHandler.

static LP_TIMER measureSensorTimer = {
    .period = { 6, 0 },
    .name = "measureSensorTimer",
    .handler = MeasureSensorHandler };

La fonction MeasureSensorHandler est appelée quand le minuteur measureSensorTimer se déclenche.

La fonction MeasureSensorHandler lit le capteur d’environnement, met en forme les données dans une chaîne JSON, affiche les données JSON dans l’onglet Sortie, puis envoie les données de télémétrie à Azure IoT Hub.

/// <summary>
/// Read sensor and send to Azure IoT
/// </summary>
static void MeasureSensorHandler(EventLoopTimer* eventLoopTimer)
{
    static int msgId = 0;
    static LP_ENVIRONMENT environment;

    if (ConsumeEventLoopTimerEvent(eventLoopTimer) != 0)
    {
        lp_terminate(ExitCode_ConsumeEventLoopTimeEvent);
    }
    else {
        if (lp_readTelemetry(&environment) &&
            snprintf(msgBuffer, JSON_MESSAGE_BYTES, msgTemplate,
                environment.temperature, environment.humidity, environment.pressure, msgId++) > 0)
        {
            Log_Debug("%s\n", msgBuffer);
            lp_azureMsgSendWithProperties(msgBuffer, telemetryMessageProperties, NELEMS(telemetryMessageProperties));
        }
    }
}

Présentation d’IoT Plug-and-Play

IoT Plug-and-Play permet aux créateurs de solutions d’intégrer des appareils intelligents dans leurs solutions sans configuration manuelle. Au cœur d’IoT Plug-and-Play se trouve un modèle d’appareil qu’un appareil utilise pour faire connaître ses fonctionnalités à une application activée pour IoT Plug-and-Play. Pour plus d’informations, consultez « Qu’est-ce qu’IoT Plug-and-Play ? ».

Le modèle IoT Plug-and-Play pour ce module d’apprentissage se trouve dans le répertoire IoTPlugAndPlay. Ce modèle a été chargé dans le référentiel public des modèles IoT Plug-and-Play.

Le modèle IoT Plug-and-Play utilisé par ce module d’apprentissage est déclaré dans main.c.

#define IOT_PLUG_AND_PLAY_MODEL_ID "dtmi:com:example:azuresphere:labmonitor;1"

Azure IoT Explorer et IoT Central sont des applications compatibles IoT Plug-and-Play, une spécification ouverte. Vous pouvez également générer des applications conformes Plug-and-Play. Pour plus d’informations, consultez l’article Présentation d’IoT Plug-and-Play.

Quand votre appareil se connecte pour la première fois à IoT Hub, l’ID de modèle IoT Plug-and-Play est transmis à IoT Hub. Azure IoT Explorer récupère ensuite le modèle IoT Plug-and-Play dans le référentiel public des modèles IoT Plug-and-Play. Les données de télémétrie sont affichées à l’aide du modèle.