Postup nasazení aplikace vysoké úrovně do Azure Sphere

Dokončeno

V této lekci se naučíte, jak nasadit aplikaci vysoké úrovně do Azure Sphere a streamovat telemetrická data do IoT Central.

Architektura řešení

Následující text popisuje, jak se streamují telemetrická data Azure Sphere do IoT Central.

Azure Sphere Streaming telemetry to IoT Central.

  1. Aplikace vysoké úrovně běžící na jádru Cortex-A7 odečte každých 6 sekund senzory prostředí, serializuje data jako JSON a pošle zprávu telemetrie do IoT Hubu.
  2. Azure IoT Central odebírá zprávy telemetrie odeslané do IoT Hubu zařízením a zobrazuje data uživateli.

Princip aplikace Azure Sphere

V těchto cvičeních se intenzivně používají časovače událostí, takže existuje zobecněný model, který práci s časovači zjednodušuje. Programování řízené událostmi pomáhá zjednodušit návrh aplikace.

Existují dva druhy časovačů:

  • Pravidelné časovače
  • Jednorázové časovače

Časovače událostí generují události vázané na funkce obslužných rutin, které implementují požadované akce.

The illustration shows the event timers concept.

Aplikace deklaruje pravidelný časovač události measureSensorTimer. Při inicializaci se tento časovač spustí každých 6 sekund a zavolá funkci obslužné rutiny MeasureSensorHandler.

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

Funkce MeasureSensorHandler se zavolá při aktivaci časovače measureSensorTimer.

Funkce MeasureSensorHandler odečte senzor prostředí, naformátuje data do řetězce JSON, zobrazí data JSON na kartě Výstup a odešle telemetrii do Azure IoT Central.

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

Seznámení s technologií IoT Plug and Play

IoT Plug and Play umožňuje autorům řešení integrovat chytrá zařízení s jejich řešeními bez jakékoli ruční konfigurace. Jádrem technologie IoT Plug and Play je model zařízení, který zařízení používá k inzerování svých schopností vůči aplikaci s podporou IoT Plug and Play. Další informace najdete v článku Co je IoT Plug and Play.

Model IoT Plug and Play pro tento výukový modul se nachází v adresáři IoTPlugAndPlay. Tento model byl nahrán do veřejného úložiště modelů IoT Plug and Play.

Model IoT Plug and Play používaný v tomto výukovém modulu je deklarován v souboru main.c.

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

IoT Central je aplikace s podporou IoT Plug and Play. Když se zařízení poprvé připojí k IoT Central, předá se do IoT Central ID modelu IoT Plug and Play. IoT Central pak načte model IoT Plug and Play z veřejného úložiště modelů IoT Plug and Play a vytvoří šablonu zařízení a výchozí zobrazení.