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 Hubu.

Architektura řešení

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

Azure Sphere Streaming telemetry to IoT Hub.

  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 Explorer 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ě Output (Výstup) a odešle telemetrii do Azure IoT Hubu.

/// <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"

Azure IoT Explorer společně s IoT Central jsou aplikace s podporou technologie IoT Plug and Play. IoT Plug and Play je otevřená specifikace. Můžete také vytvářet aplikace kompatibilní s Plug and Play. Další informace najdete v článku Úvod do IoT Plug and Play.

Když se zařízení poprvé připojí k IoT Hubu, předá se do IoT Hubu ID modelu IoT Plug and Play. Azure IoT Explorer pak načte model IoT Plug and Play z veřejného úložiště modelů IoT Plug and Play. Telemetrie se zobrazí pomocí modelu.