Wio LTEのmilkcocoaライブラリの使い方

以前の[記事](https://qiita.com/jksoft/items/552153008f4a6c91ac01)で[Wio LTE](https://soracom.jp/products/wio_lte/)向けの[Milkcocoa](https://mlkcca.com/)[ライブラリ](https://github.com/junichikatsu/Milkcocoa_Wio_LTE-master)を作ったと書きましたが、使い方をあまり説明しなかったので解説します。

#Milkcocoaとは
そもそも[Milkcocoa](https://mlkcca.com/)とはリアルタイムにPCやデバイスからクラウドへのデータの保存、更新ができるサービスです。また、保存された情報をPCで取得したり、更新された情報をリアルタイムにデバイスで受け取ったりすることも可能です。
それなので、デバイスで取得したセンサーの情報をMilkcocoaに次々保存して、PC上で閲覧したり、PC上で押したボタンの情報をリアルタイムにデバイスで受け取ったりすることができます。

[Milkcocoa](https://mlkcca.com/)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/19eb9be0-3201-eb57-6c61-4796b772b7a7.png)


##ユーザー登録
Milkcocoaを使うためには、ユーザー登録が必要です。すでにユーザー登録をされている方は読み飛ばしてください。

ユーザー登録は簡単です。[Milkcocoa](https://mlkcca.com/)のトップページの右上に無料登録というボタンがあるので、そこをクリックしてください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/3ddbada7-3fa1-3a4f-fdab-68d83ee8f384.png)

ユーザー登録用のダイアログが表示されるので、メールアドレスとパスワード、確認用のパスワード（パスワードと同じものを入力）を入力してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/87053b8e-43fd-0823-be5a-949d4fe68567.png)

そうするとメールが送られてくるので、そのメールのリンクをクリックすれば登録完了です。

##ログイン
ユーザー登録が済んだら、ログインします。[Milkcocoa](https://mlkcca.com/)のトップページの右上にログインというボタンがあるのでそこをクリックします。ログイン用のダイアログが表示されるので、登録したメールアドレスとパスワードが表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/d567872b-ceb5-b437-eb29-0147b560581e.png)

##アプリ作成
ログインするとアプリリストの画面が表示されるので、まずはアプリを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/446ca10e-dd2c-c24f-39f4-922b0b6c44b5.png)

「新しいアプリを作る」をクリックして、名前を入力します。アプリの名称を入力するダイアログが表示されるのでアプリ名を入力します。（とりあえずtestという名称にしています。）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/350e6c78-5932-bbca-860f-3577d0a24ca8.png)

アプリの作成が終わるとアプリリストに作成したアプリが表示されるので、それをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/6842f796-3a18-173a-4259-32bceb2973fb.png)

##ダッシュボード
作成したアプリ名をクリックするとダッシュボードが表示されます。
以下の画像の赤い部分にapp_idが表示されるので、このIDを覚えておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/e36320b8-0384-1359-1fd3-9b0d5d90724c.png)

#Wio LTEの準備
次にWio LTE側の準備を行います。
まずMilkcocoaのライブラリをGitHubのページからzip形式でダウンロードします。

GitHubのMilkcocoaライブラリのページ
https://github.com/junichikatsu/Milkcocoa_Wio_LTE-master

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/3a03f0c4-df0a-aa72-88eb-19be781ceafe.png)

緑の「Clone or download」をクリックし、「Download ZIP」をクリックしてダウンロードします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/28464fc6-d34a-daab-f041-b88ae0050b2e.png)

##ライブラリのインポート
次にArduino IDEを起動し、「スケッチ」⇒「ライブラリをインクルード」⇒「.ZIP形式のライブラリをインストール」をクリックしてください。ファイル選択のダイアログが表示されるので、ダウンロードしたMilkcocoaライブラリを選択して「開く」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/f722941b-8f93-ce26-a582-9cf940c3cce6.png)

#Milkcocoaのサンプルを動作させる
Milkcocoaのライブラリにはサンプルプログラムが用意されているので、ArduinoIDEで「ファイル」⇒「スケッチ例」⇒「Milkcocoa Wio LTE SDK」⇒「milkcocoa_wio_lte」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/c6915206-aea1-1cd3-f989-9757adb4c0a6.png)

##サンプルの編集
サンプルを開いたら、下の画像の選択部分に覚えておいたMilkcocoaのapp_idを入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/57fe432f-bcd1-d662-bfc1-177d44529a73.png)

入力が完了したら、Wio LTEをDFUモードにして、「マイコンボードへ書き込む」ボタンをクリックして、書き込みが完了したらWio LTEのRSTボタンを一回押します。

#動作確認
シリアルモニタを確認すると次の画像のように表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/c62b3fcd-79fc-2e6d-1195-ff4ec2be547a.png)

以下の文字が7秒おきに表示されるはずです。
```
onpush
1
```
これはMilkcocoaに`{"v":1}`というデータをpushして、その通知を受け取って表示されています。

次にMilkcocoaのダッシュボード上で確認してみます。左のメニューの「データストア」をクリックしてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/52775788-df5c-8f1d-ebaa-1bee5998f2d0.png)

データストア名のところに「Wio_LTE」と入力して、「リスト表示（更新）」をクリックしてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/9caa7cdd-c359-ea83-5b90、、-a33e2b759f7b.png)

次のようにMilkcocoaのデータストアにWio LTEからpushされたデータリストが表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/109992/728a052a-61f8-1608-5bec-b057a6c1b7b0.png)

これでWio LTEからLTE回線を通じてMilkcocoaにデータがプッシュされたということがわかります。

#最後に
Milkcocoaを介して、データの送受信を確認しました。

以下の部分を変更すればセンサーのデータをプッシュすることもできます。

```Arduino
  elem.setValue("v", 1);
```
`sensor`という変数にセンサーの値が入ってるとすれば次のように変更すればOKです。

```Arduino
  elem.setValue("sensor", sensor);
```
Milkcocoa上のデータはWeb APIで取り出したり、更新の通知を受け取ることもできます。
いろいろ試してみてください。