Azure iot hub サンプル動かしてみる

Azure IoT hub を使うことになったのでマイクロソフトが提供しているサンプルを動かしてみた
------------

#### うまくbuildできなかったのでメモしておきます。

環境は以下の通りです。

デバイス: RaspberryPi 4

```
% uname -r
4.19.75-v7l+
```


**Raspberry Pi の Azure IoT Hub への接続 (C)**
https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-raspberry-pi-kit-c-get-started
こちらのサンプルをやってみました。

**サンプルを取得**

```
% git clone git@github.com:Azure-Samples/iot-hub-c-raspberrypi-client-app.git
```

**セットアップ**
「サンプル アプリケーションを構成する」以降をサンプルのHPどおり実施してみます。

```
% cd iot-hub-c-raspberrypi-client-app/
% sudo chmod u+x setup.sh
% sudo ./setup.sh

...略

-- Configuring incomplete, errors occurred!
See also "/root/Source/azure-iot-sdk-c/cmake/iotsdk_linux/CMakeFiles/CMakeOutput.log".
See also "/root/Source/azure-iot-sdk-c/cmake/iotsdk_linux/CMakeFiles/CMakeError.log".
make: *** ターゲットが指定されておらず, makefile も見つかりません.  中止.
make: *** ターゲット 'install' を make するルールがありません.  中止.
gcc version check pass (current:8.3.0,require:4.4.7)
cmake version check pass (current:3.13.4,require:2.8.12)
Cloning into 'wiringPi'...
fatal: unable to connect to git.drogon.net:
git.drogon.net[0: 2a03:9800:10:7b::2]: errno=接続を拒否されました
git.drogon.net[1: 188.246.205.22]: errno=接続を拒否されました

./setup.sh: 75 行: cd: ./wiringPi: そのようなファイルやディレクトリはありません
./setup.sh: 行 76: ./build: そのようなファイルやディレクトリはありません
Cloning into 'parson'...
remote: Enumerating objects: 40, done.
remote: Counting objects: 100% (40/40), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 632 (delta 23), reused 22 (delta 10), pack-reused 592
Receiving objects: 100% (632/632), 339.96 KiB | 681.00 KiB/s, done.
Resolving deltas: 100% (346/346), done.
CMake Error: The source directory "/home/p-kun/WORK/test" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
```

失敗した。

あがっているサンプル自体ふるくない？

Cloning into 'wiringPi'...
の失敗を調査、`setup.sh` を見てみます。

```sh
git clone git://git.drogon.net/wiringPi
```

もうこのリポジトリないのかもしれない。

探したよ。いいのがあったのでこちらを使わせていただく。

https://github.com/WiringPi/WiringPi.git

`setup.sh`を書き直します。

```sh
git clone https://github.com/WiringPi/WiringPi.git wiringPi
```

もう一度

```
% sudo ./setup.sh

...略

Scanning dependencies of target app
[ 16%] Building C object CMakeFiles/app.dir/main.c.o
In file included from /home/p-kun/WORK/test/iot-hub-c-raspberrypi-client-app/main.c:21:
/home/p-kun/WORK/test/iot-hub-c-raspberrypi-client-app/./telemetry.h:19:10: fatal error: openssl/md5.h: そのようなファイルやディレクトリ はありません
 #include <openssl/md5.h>
          ^~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/app.dir/build.make:63: CMakeFiles/app.dir/main.c.o] エラー 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/app.dir/all] エラー 2
make: *** [Makefile:84: all] エラー 2
```

失敗した。

コンパイルエラーみたいのが出た。
openssl が無いみたい。ログを見てみると気になる点が！

```
libcurl4-openssl-dev : 競合: libssl1.0-dev しかし、1.0.2q-2 はインストールされようとしています
```

`setup.sh`のここら辺を調査。

```
sudo apt-get install -y libssl1.0-dev git cmake build-essential curl libcurl4-openssl-dev uuid-dev
```

よくわからないので、libsslのバージョンとってみた。

```
sudo apt-get install -y libssl-dev git cmake build-essential curl libcurl4-openssl-dev uuid-dev
```

もう一度

```
% sudo ./setup.sh

...略

[ 83%] Building C object CMakeFiles/app.dir/parson.c.o
[100%] Linking C executable app
[100%] Built target app
```

できた。。。

sudoはなくていいみたい。


追記

opensslの件についての情報

こちらに情報がありました。

https://docs.microsoft.com/ja-jp/azure/iot-edge/support

1 Debian 10 システム (Raspian Buster を含む) は、IoT Edge がサポートしていないバージョンの OpenSSL を使用します。 IoT Edge をインストールする前に、次のコマンドを実行して以前のバージョンをインストールしてください。

```
sudo apt-get install libssl1.0.2
```