Azure Iotをやってみることとする(失敗)

#ラクにRaspberryPiのセットアップがしたい

RaspberryPiにOpenCVやROSなどをインストールすると非常に時間がかかります。
AzureでセットアップしたものをIot Edgeを使って行うと短時間で終わると聞き、やってみることとしました。

環境は
+ Azureは今から入る。一年は無料で使える
+ RaspberryPi 3B+
+ 32GB SD

#Rasbian Burstは避ける

最近出たPi4対応のBurstはまだ不安があるので、Stretchを使うことにします。
以下のftpを探すと、過去のimageが出てきます。


http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/

ヘッドレスでセットアップします。
SDカードのbootパーティションに以下のファイルを作成。

```php:wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
  ssid="SSID名"
  psk="暗号キー"
}
```

空のsshファイルを作って保存。

RaspberryPiにSDカードを入れて再起動。
ssh pi@raspberrypi.local

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for raspberrypi.local has changed,
and the key for the corresponding IP address fe80::6740:35ec:8c5e:526c%en3
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
```

再セットアップでホストキーが変更されたときに出るやつですね。

```
ssh-keygen -R raspberrypi.local
ssh pi@raspberrypi.local
```

で、復活して接続。
デフォルトのパスワードですので、raspberryで接続できます。


#公式の情報

親切にも公式から丁寧な説明がありますので、これに沿って作業してみます。

https://docs.microsoft.com/ja-jp/azure/iot-edge/how-to-install-iot-edge-linux-arm

ラズパイにMoby ベースのエンジンとコマンドラインインターフェイス (CLI) をインストールします。

```php
# You can copy the entire text from this code block and 
# paste in terminal. The comment lines will be ignored.

# Download and install the moby-engine
curl -L https://aka.ms/moby-engine-armhf-latest -o moby_engine.deb && sudo dpkg -i ./moby_engine.deb

# Download and install the moby-cli
curl -L https://aka.ms/moby-cli-armhf-latest -o moby_cli.deb && sudo dpkg -i ./moby_cli.deb

# Run apt-get fix
sudo apt-get install -f
```

IoT Edge セキュリティ デーモンをインストール。
セキュリティ標準を提供し、維持。

```php

# You can copy the entire text from this code block and 
# paste in terminal. The comment lines will be ignored.

# Download and install the standard libiothsm implementation
curl -L https://aka.ms/libiothsm-std-linux-armhf-latest -o libiothsm-std.deb && sudo dpkg -i ./libiothsm-std.deb

# Download and install the IoT Edge Security Daemon
curl -L https://aka.ms/iotedged-linux-armhf-latest -o iotedge.deb && sudo dpkg -i ./iotedge.deb

# Run apt-get fix
sudo apt-get install -f

```

#AZUREに登録しておく

まだ登録していませんでした。
一年無料らしいです。一年経過してからどうするか考えます。

#チュートリアルを読む

全くAzureを使ったことがないので、とりあえずチュートリアルを読みます

https://docs.microsoft.com/ja-jp/azure/iot-central/tutorial-define-device-type

この辺りでしょうか。

https://docs.microsoft.com/ja-jp/azure/iot-edge/how-to-install-iot-edge-linux-arm

マニュアルでのプロビジョイニング?


#原点に帰ってチュートリアルを一通りこなす

原点に帰ってチュートリアルをこなす
virtual machineとかの接続がうまくいかない上に、トラブルの細かいところはマニュアルに記載がない。

もうすぐ、新調したWindowsマシンが来るので、仮想マシンなどはきてから考えるとして、
DockerなどのMacでも動作が安定しているものにターゲットを絞る。

#Docker コンテナーでの Azure CLI の実行など、
AzureCLIなどをインストールしてみたが、途中て止まった。解決する気力がないので、Dockerコンテナで動かす方法にチェンジする

```PHP
docker run -it mcr.microsoft.com/azure-cli
```

色々インストールしてDockerのコンテナで起動。
az login
で、所定のアドレスをブラウザで開いて、コードを入力して実行！

```PHP
docker run -it mcr.microsoft.com/azure-cli
az interactive
```

これで対話モードで動く。

仮想マシンを追加する手順を実行してみる。

```
az login
az group create --name TutorialResources --location eastus
```