wiki:azure_iot_hub

Version 3 (modified by coas-nagasima, 8 months ago) (diff)

--

Azure IoT Hub 接続サンプル

Azure IoT Hub へ接続するAzure IoT Hub Device C SDKを使ったサンプルです。 ターゲットデバイスは、GR-SAKURAで、EthernetでHTTP通信します。 MQTTも含んでいますが、現在のバージョンでは接続できていません。

サンプルを動作させるには、下記の手順でAzure側にデバイスを追加し、そのデバイスの接続文字列を取得し、ソースコード「proto4_azure_iothub/src/client.c」の以下の個所を書き換える必要があります。

static const char* connectionString = "[device connection string]";

ダウンロード

GR-SAKURAのソースコードはこちらにあります。 リストの下にある「Download in other formats:」の「Zip Archive」をクリックすると、zipファイルでダウンロードできます。

開発環境

ビルドはGCC+Makefileで行います。RX向けGCCはこちらから入手できます。arm向けGCCはe2studioのインストーラで入れた「GNU Tools ARM Embedded 5.4 2016q3」を使用しました。 IDEとしてe² studioV7.4.0を使用しました。 Rubyの実行環境が必要なので、​こちらからダウンロードして、コマンドプロントから実行できるよう、環境変数でパスを通してください。 e² studio V7.4.0のプロジェクトファイルも含まれているので、展開したフォルダをワークスペースとして開き、プロジェクトのインポートをこのフォルダに対して行うことで、取り込むことができます。

フォルダ構成

app_iothub_clientサンプルプログラムTOPPERS License
asp3_dcreRTOS TOPPERS/ASP3TOPPERS License
asp3_dcretinetTINET 1.7をRuby版CFG対応し、IGMPを追加したものTOPPERS License
asp3_dcresyssvctlsfメモリアロケータtlsfBSD License
azure_iothubAzure IoT Hub Device C SDKMIT License
azure_iothubdepsparsonparson jsonパーサー MIT License
curl-7.57.0HTTPクライアントcURLCurl License
musl-1.1.18標準CライブラリmuslMIT License
ntshellfatfsFATファイルシステム FatFsFatFs License
ntshellntshell仮想ターミナルNT-ShellMIT License etc.
ntshellsrcSocket API、標準入出力、ファイルディスクリプタTOPPERS License
wolfssl-3.15.7SSL/TLS ライブラリwolfSSLGPL/商用
zlib-1.2.11圧縮・伸張ライブラリzlibzlib License

標準Cライブラリ

GCC付属の標準Cライブラリnewlibではなく、muslを使用しています。 付属のnewlibでは、dirent.hやsocket.hがないので、curlやwolfsslのコンパイルに向いていません。 Linux向けのmuslを使用することで、POSIX向けのソースコードのコンパイルが難無く行えます。 ただし、未実装のAPIがあってもリンクが通ってしまいます。 このソフトでは、ntshell/srcに実装がありますが、サンプルを動作させる最小限の実装を行っています。

Azure IoT Hub について

本サンプルの作成には以下のドキュメントを参考にしました。

https://github.com/ms-iotkithol-jp/IoTKitHoLV4
https://docs.microsoft.com/ja-jp/azure/iot-hub/quickstart-send-telemetry-c

Azure側の確認には、上記サイトの「ハブから利用統計情報を読み取る」の手順で行いました。

Azureの利用は「IoT Hub Free エディション」を使用しました。

https://azure.microsoft.com/ja-jp/pricing/details/iot-hub/

Attachments (29)

Download all attachments as: .zip