Azure Sphere に高レベルのアプリケーションをデプロイする方法

完了

このユニットでは、Azure Sphere に高レベルのアプリケーションをデプロイし、テレメトリを IoT Hub にストリーミングする方法を学習します。

ソリューションのアーキテクチャ

次に、Azure Sphere からどのようにテレメトリが IoT Hub にストリーミングされるかの概要を示します。

Azure Sphere Streaming telemetry to IoT Hub.

  1. Cortex-A7 上で実行されている高レベル アプリケーションによって、環境センサーが 6 秒ごとに読み取られ、データが JSON としてシリアル化され、テレメトリ メッセージが IoT Hub に送信されます。
  2. デバイスによって IoT Hub に送信されたテレメトリ メッセージが Azure IoT Explorer によってサブスクライブされ、データがユーザーに表示されます。

Azure Sphere アプリケーションについて

これらのラボではイベント タイマーが広範に使用されているため、タイマーの操作を簡略化するための一般化されたモデルが用意されています。 イベント ドリブン プログラミングは、アプリケーションの設計を簡素化するのに役立ちます。

タイマーには、

  • 定期的なタイマー
  • ワンショット タイマー

イベント タイマーによって、必要なアクションを実装するハンドラー関数にバインドされるイベントが生成されます。

The illustration shows the event timers concept.

アプリケーションによって、定期的な measureSensorTimer イベント タイマーが宣言されます。 初期化されると、MeasureSensorHandler ハンドラー関数の 6 秒ごとの呼び出しがこのタイマーによってトリガーされます。

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

MeasureSensorHandler 関数は、measureSensorTimer タイマーによってトリガーされたときに呼び出されます。

MeasureSensorHandler 関数によって、環境センサーが読み取られ、データが JSON 文字列に書式設定され、JSON データが [出力] タブに表示され、テレメトリが 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));
        }
    }
}

IoT プラグ アンド プレイの概要

IoT プラグ アンド プレイにより、ソリューション ビルダーは、手動で構成することなく、独自のソリューションにスマート デバイスを統合することができます。 IoT プラグ アンド プレイの中核となるのは、IoT プラグ アンド プレイ対応アプリケーションに機能を提供するためにデバイスで使用されるデバイス モデルです。 詳細については、「IoT プラグ アンド プレイとは」を参照してください。

このラーニング モジュールの IoT プラグ アンド プレイ モデルは、IoTPlugAndPlay ディレクトリにあります。 このモデルは、IoT プラグ アンド プレイ モデルのパブリック リポジトリにアップロードされています。

このラーニング モジュールで使用される IoT プラグ アンド プレイ モデルは、main.c で宣言されています。

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

Azure IoT Explorer と IoT Central は、IoT プラグ アンド プレイ対応アプリケーションです。 IoT プラグ アンド プレイはオープン仕様です。 プラグ アンド プレイ準拠のアプリケーションを構築することもできます。 詳細については、「IoT プラグ アンド プレイの概要」を参照してください。

デバイスが初めて IoT Hub に接続すると、IoT プラグ アンド プレイ モデル ID が IoT Hub に渡されます。 次に、Azure IoT Explorer によって、IoT プラグ アンド プレイ モデルのパブリック リポジトリから IoT プラグ アンド プレイ モデルが取得されます。 モデルを使用してテレメトリが表示されます。