SORACOM x RaspberryPi ハンズオンに参加してきました

[dots girls Advent Calendar 2015](http://qiita.com/advent-calendar/2015/dots_girls)のトップバッターを頂きました吉澤です！

2015/11/17(火)に[dots.](https://eventdots.jp/space)で行われた[SORACOM x RaspberryPi ハンズオン](http://eventdots.jp/event/574144)に参加してきたので今更ながらレポートを書きます。

# 会場に着きました

このハンズオンのゴールは、ラズパイにSORACOMをUSBに装着し、AWS IoTにひも付けてS3とKibanaにCPU温度とCPU使用率を出力することでした。

平日の昼間だったため、会場はスーツで割と年齢層が高そうな男性が多かった気がします。
会場の人数分ラズパイが設置してあり、それぞれに固定IPを振っていたため、いつものdots.のWi-Fiではなく専用の回線が引かれていました。
（ルーターとラズパイの写真撮りそびれてしまいました。無念。）

これがSORACOMのSIMです。

![2015-11-17 14.31.38.jpg](https://qiita-image-store.s3.amazonaws.com/0/20557/ee571bc3-c5c0-f37e-0bda-7ab9241c949c.jpeg)

日本での格安SIMはこれが初体験です。
SORACOMにログインしてSIMを登録します。

10円/日に上乗せで従量課金が請求されるかんじです。
恐らくAWSにて無料枠が余っていない気がするので、このハンズオンでAWSと合わせていくら請求されているかまだ未確認ですが、コンビニで缶ビール1本買うよりぜんぜん安いと思います。

着席したらすぐにスライドで説明が始まり、ハンズオンがスタートしました。

# コンソールからラズパイに接続しよう

指定されたIPにsshで繋ぎます。

```bash:
ssh ​pi@192.168.123.xxx​
```

ラズパイはdebian系なのでapt-getでパッケージインストール。

```bash:
sudo apt-get install -y usb-modeswitch wvdial
```

これでUSBの認識とPPP接続が出来るようになるみたいです。
チップを切り抜いてアダプタにはめ、USBに刺し、またそれを指定された番号のラズパイに刺しました。

USBが認識されたらsoracomからスクリプトを`curl`で持ってきます。
さきほどのパッケージを利用しUSBからAPNやらなにやら設定し、PPP接続するShellScriptなのですが、もしこれを自分でやると思うと吐き気でそうです。

# SORACOMの管理画面で確認しよう

スクリプト実行後、AWS経由でネットに繋がり、SORACOMのコンソールにデータ使用料が表示されるようになります。
ハンズオンでは試しに日次通信料が1MBを越えたらメール通知するように設定しました。

<img width="591" alt="スクリーンショット 2015-11-17 14.48.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/20557/0617dcc7-763a-a81e-3a80-883b3ebb27ff.png">

@soracom.jpからメールが届きました。
自分で値段が管理できるSIMは計画的に過ごすことができ気持ちが良さそうです。

<img width="564" alt="スクリーンショット 2015-11-17 15.10.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/20557/eed77228-5bb0-76b1-4701-0a3b3683ea04.png">

# AWS IoTを設定してS3にテキストを出力しよう

ここからAWSに入ります。
初めてのIoTベータです。
SORACOM Beamで接続と説明を受けましたが、Beamが何なのかよく分かっていません。

IoTベータにデバイス接続の設定をし、PrivateKeyとCertificateをインストールしました。

S3にデータ送信のルールを設定するのですが、ハンズオンなので全てメッセージを送信する、にしました。
バケットに送るデータのファイル名を設定できるのですが、ハンズオンの資料がないと絶対にこういうところで詰まるなあと思いながら、AWS IoT専用の関数を使い`${topic()}/${timestamp()}.txt`と設定しました。

SORACOMのコンソールに戻り、​MQTTエントリポイントの設定を行います。
先ほどダウンロードしたPrivateKeyとCertificate、更にCA証明書をブラウザからインストールしてコピペしました。
CA証明書、これもハンズオンでベリサインの証明書のURL指定がありましたが、自分でやっていると簡単に用意出来なさそうだなあと思いました。

MQTT接続のためにパッケージをインストールしました。

```bash:
sudo apt-get install mosquitto-clients
```

ここまで設定ができたら、またsoracomからスクリプトを`curl`で持ってきます。
今度のスクリプトでは見事なシェル芸でCPU温度（` /sys/class/thermal/thermal_zone0/temp`）と、CPU使用率（`top`）を取得してjsonにして返していました。
`beam.soracom.io`宛に`mosquitto_pub`を使ってバックグラウンドで常時実行しました。

<img width="359" alt="スクリーンショット 2015-11-17 15.36.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/20557/08db7fe0-0550-1fe5-ca2a-06bb6e6cc0f7.png">

フォルダが出来ています。
お気づきかと思いますが、東京リージョンの`soracomtest`という脳みそを微塵も使っていないバケットのネーミングはわたしが頂きました。

<img width="461" alt="スクリーンショット 2015-11-17 15.37.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/20557/21220fee-26a4-0894-69e3-c71f8b9d5f7a.png">

# AWS IoTを設定してKibanaにグラフを出力しよう

次はKibanaに表示します。

LambdaでさきほどのJsonを取得してCloudWatchに流す設定をします。
ここでもLambdaのJavaScriptは資料にあるコピーアンドペーストで脳みそを使いませんでした。
先行きが不安です。

データが取得できたので、Elasticsearchを使いCloudWatchをKibanaに出力させました。

<img width="802" alt="スクリーンショット 2015-11-17 16.13.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/20557/e9f55301-2f3f-d8d9-79ff-682858add125.png">

ここまでくるのにテキストボックスに入力することがたくさんあり、ハンズオンで資料を貰わないとそもそもハードル高いんじゃないかなと思いました。
また、TCP/IPとかその辺の知識が結構重要だと思いました。

今回はラズパイの監視をWEBに出力していましたが、ラズパイの目的によっていろいろなものをWEB上に表現できるため、まずはラズパイで何か作らないとアカンと思いました。

最近dots.女子部内ではRaspberryPiが流行ってます！
わたしたちと一緒にラズパイもくもくしたい女子は是非入部しましょう＼(^o^)／
[Twitter](https://twitter.com/dotsgirls)
[Facebook](https://www.facebook.com/dots%E5%A5%B3%E5%AD%90%E9%83%A8-457992851057604/)

明日は[yukinoyoshino](http://qiita.com/yukinoyoshino)さんよろしくお願いいたします！