| 1 | = Azure IoT Hub 接続サンプル = |
| 2 | |
| 3 | Azure IoT Hub へ接続する[https://github.com/Azure/azure-iot-sdk-c Azure IoT Hub Device C SDK]を使ったサンプルです。 |
| 4 | ターゲットデバイスは、[http://gadget.renesas.com/ja/product/peach.html GR-PEACH]で、Ethernet上のHTTPかMQTTで通信します。 |
| 5 | MQTTは、mbedTLS版でのみ確認できます。 |
| 6 | [http://gadget.renesas.com/ja/product/sakura.html GR-SAKURA]でも動作確認できています。[https://dev.toppers.jp/trac_user/contrib/wiki/azure_iot_hub こちら]を参照してください。 |
| 7 | |
| 8 | サンプルを動作させるには、[#following1 下記]の手順でAzure側にデバイスを追加し、そのデバイスの接続文字列を取得し、ソースコード「app_iothub_client/src/client.c」の以下の個所を書き換える必要があります。 |
| 9 | |
| 10 | {{{#!c |
| 11 | static const char* connectionString = "[device connection string]"; |
| 12 | }}} |
| 13 | |
| 14 | === ダウンロード === |
| 15 | |
| 16 | GR-PEACHのソースコードはWolfSSL版が[https://dev.toppers.jp/trac_user/contrib/browser/azure_iot_hub_arm/trunk こちら]で、mbedTLS版が[https://dev.toppers.jp/trac_user/contrib/browser/azure_iot_hub_arm_mbedtls/trunk こちら]にあります。 |
| 17 | リストの下にある「Download in other formats:」の「Zip Archive」をクリックすると、zipファイルでダウンロードできます。 |
| 18 | |
| 19 | === 開発環境 === |
| 20 | |
| 21 | ビルドはGCC+Makefileで行います。arm向けGCCは[https://gcc-renesas.com/ja/rz/rz-download-toolchains/ こちら]や[https://launchpad.net/gcc-arm-embedded こちら]から入手できます。 |
| 22 | IDEとして[https://www.renesas.com/ja-jp/products/software-tools/tools/ide/e2studio.html e² studio]V7.4.0を使用しました。 |
| 23 | デバッグするには[https://github.com/gnu-mcu-eclipse/openocd/releases OpenOCD]が必要です。 |
| 24 | Rubyの実行環境が必要なので、[https://www.ruby-lang.org/ja/downloads/ こちら]からダウンロードして、コマンドプロントから実行できるよう、環境変数でパスを通してください。 |
| 25 | e² studio V7.4.0のプロジェクトファイルも含まれているので、展開したフォルダをワークスペースとして開き、プロジェクトのインポートをこのフォルダに対して行うことで、取り込むことができます。 |
| 26 | |
| 27 | === フォルダ構成 === |
| 28 | |
| 29 | ||app_iothub_client||||||サンプルプログラム||TOPPERS License|| |
| 30 | ||asp3_dcre||||||RTOS [http://www.toppers.jp/asp3-kernel.html TOPPERS/ASP3]||TOPPERS License|| |
| 31 | ||asp3_dcre||tinet||||[http://www.toppers.jp/tinet.html TINET 1.7]をRuby版CFG対応し、IGMPを追加したもの||TOPPERS License|| |
| 32 | ||asp3_dcre||syssvc||tlsf||メモリアロケータ[https://github.com/mattconte/tlsf tlsf]||BSD License|| |
| 33 | ||azure_iothub||||||[https://github.com/Azure/azure-iot-sdk-c Azure IoT Hub Device C SDK (tag 2019-04-11)]||MIT License|| |
| 34 | ||azure_iothub||deps||parson||[https://github.com/kgabis/parson parson] jsonパーサー ||MIT License|| |
| 35 | ||azure_iothub||c-utility||adapters||TOPPERS向けの実装を追加||TOPPERS License|| |
| 36 | ||curl-7.57.0||||||HTTPクライアント[https://curl.haxx.se/ cURL]||Curl License|| |
| 37 | ||musl-1.1.18||||||標準Cライブラリ[http://www.musl-libc.org/ musl]||MIT License|| |
| 38 | ||ntshell||fatfs||||FATファイルシステム [http://elm-chan.org/fsw/ff/00index_e.html FatFs]||!FatFs License|| |
| 39 | ||ntshell||ntshell||||仮想ターミナル[https://www.cubeatsystems.com/ntshell/ NT-Shell]||MIT License etc.|| |
| 40 | ||ntshell||src||||Socket API、標準入出力、ファイルディスクリプタ||TOPPERS License|| |
| 41 | ||wolfssl-3.15.7||||||SSL/TLS ライブラリ[https://www.wolfssl.com/ wolfSSL]||GPL/商用|| |
| 42 | ||||||mbedtls-2.16.1||SSL/TLS ライブラリ[https://tls.mbed.org/ mbedTLS]||Apache 2.0 License|| |
| 43 | ||zlib-1.2.11||||||圧縮・伸張ライブラリ[https://www.zlib.net/ zlib]||zlib License|| |
| 44 | |
| 45 | === 標準Cライブラリ === |
| 46 | |
| 47 | [[Image(composition.png)]] |
| 48 | |
| 49 | |
| 50 | GCC付属の標準Cライブラリnewlibではなく、muslを使用しています。 |
| 51 | 付属のnewlibでは、dirent.hやsocket.hがないので、curlやviのコンパイルに向いていません。 |
| 52 | Linux向けのmuslを使用することで、POSIX向けのソースコードのコンパイルが難無く行えます。 |
| 53 | ただし、未実装のAPIがあるとリンクエラーになります。 |
| 54 | このソフトでは、ntshell/srcにコードがありますが、サンプルを動作させる最小限の実装を行っています。 |
| 55 | |
| 56 | == Azure IoT Hub について == #following1 |
| 57 | |
| 58 | 本サンプルの作成には以下のドキュメントを参考にしました。 |
| 59 | |
| 60 | https://github.com/ms-iotkithol-jp/IoTKitHoLV4 |
| 61 | |
| 62 | |
| 63 | https://docs.microsoft.com/ja-jp/azure/iot-hub/quickstart-send-telemetry-c |
| 64 | |
| 65 | Azureの利用は「IoT Hub Free エディション」を使用しました。 |
| 66 | |
| 67 | https://azure.microsoft.com/ja-jp/pricing/details/iot-hub/ |
| 68 | |