Como implantar um aplicativo de alto nível no Azure Sphere

Concluído

Nesta unidade, você aprenderá a implantar um aplicativo de alto nível no Azure Sphere e a transmitir telemetria para o Hub IoT.

Arquitetura da solução

A seção a seguir descreve como o Azure Sphere transmite a telemetria para o Hub IoT.

Azure Sphere Streaming telemetry to IoT Hub.

  1. O aplicativo de alto nível em execução no Cortex-A7 lê os sensores do ambiente a cada 6 segundos, serializa os dados como JSON e envia a mensagem de telemetria ao Hub IoT.
  2. O Azure IoT Explorer assina as mensagens de telemetria enviadas ao Hub IoT pelo dispositivo e exibe os dados para o usuário.

Entender o aplicativo Azure Sphere

Os laboratórios fazem uso de temporizadores de eventos extensivos, portanto, há um modelo generalizado para simplificar o trabalho com temporizadores. A programação orientada a eventos ajuda a simplificar o design do aplicativo.

Existem dois tipos de temporizadores:

  • Temporizadores periódicos
  • Temporizadores de disparo único

Temporizadores de eventos geram eventos associados a funções de manipulador que, por sua vez, implementam as ações desejadas.

The illustration shows the event timers concept.

O aplicativo declara um temporizador de eventos measureSensorTimer periódico. Quando inicializado, esse temporizador será disparado a cada 6 segundos, chamando a função de manipulador MeasureSensorHandler.

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

A função MeasureSensorHandler é chamada quando o temporizador measureSensorTimer é disparado.

A função MeasureSensorHandler lerá o sensor do ambiente, formatará os dados em uma cadeia de caracteres JSON, exibirá os dados JSON na guia Saída e enviará a telemetria ao Hub IoT do Azure.

/// <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));
        }
    }
}

Introdução ao IoT Plug and Play

O IoT Plug and Play permite integrar dispositivos inteligentes a soluções sem nenhuma configuração manual. No núcleo do IoT Plug and Play, há um modelo de dispositivo que um dispositivo usa para anunciar as funcionalidades dele para um aplicativo habilitado para IoT Plug and Play. Para saber mais, acesse "O que é IoT Plug and Play".

O modelo de IoT Plug and Play para este módulo de aprendizagem pode ser encontrado no diretório IoTPlugAndPlay. Esse modelo foi carregado no repositório público de modelos do IoT Plug and Play.

O modelo de IoT Plug and Play usado por este módulo de aprendizagem é declarado em main.c.

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

O Azure IoT Explorer, junto ao IoT Central, são aplicativos habilitados para IoT Plug and Play. O IoT Plug and Play é uma especificação aberta. Você também pode criar aplicativos em conformidade com o Plug and Play. Para obter mais informações, leia o artigo Introdução ao IoT Plug and Play .

Quando o dispositivo se conecta pela primeira vez ao Hub IoT, a ID do Modelo de IoT Plug and Play é passada para o Hub IoT. O Azure IoT Explorer recupera o modelo de IoT Plug and Play do repositório público de modelos de IoT Plug and Play. A telemetria é exibida usando o modelo.