ExcelのData Streamerを使ったらリアルタイムにグラフが動いた。ついでにスマホで確認出来るようにしてみた。

## ExcelのData Streamerって？
**そんな機能あったっけ？**

シリアル通信で値を吐くとリアルタイムで表示してくれるExcelのアドインです。あんまり情報出回って無いような気がします。
これを使えばリアルタイムにピコピコ動くグラフを堪能できます。
CSVで吐く形ですが、ログも取れるみたいですね。

センサとか扱ってると値の変化をグラフで見たい時、多々あるんですよね。ついでにログも取りたい。わざわざラズパイ起動してスプレッドシートのAPI叩いてログ取ってみたけどちょっと大変。
**グラフぐらい気軽にサクッと見たいんや。**

そんな私は

https://qiita.com/tatsuya1970/items/132a9a6119acb5f643f2

[革命的なエクセルのアドインData Streamerをやってみた](https://qiita.com/tatsuya1970/items/132a9a6119acb5f643f2)
という記事を拝見し、衝撃走る。

早速試してみるべきではないか。

## いざ実践
今回は**Arduino Nano**で作った気圧・温度チェッカを繋ぎます。
![IMG_20210302_182806.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/9aca8732-d01b-7936-5945-25e01f2c233f.jpeg)
### 材料
- [Arduino Nano](https://www.amazon.co.jp/ELEGOO-Arduino-Nano%E3%83%9C%E3%83%BC%E3%83%89-ATmega328P%E3%80%81Arduino-V3-0%E4%BA%92%E6%8F%9B/dp/B072F5NS4X/ref=sr_1_1_sspa?dchild=1&keywords=arduino+nano&qid=1614677386&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzTVk0MVhOMVVOWkk4JmVuY3J5cHRlZElkPUEwMDUwMTQwMk9VUkxJQzBRUElWMyZlbmNyeXB0ZWRBZElkPUExOEM0TTdBUUZXR0FZJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ==)
- [DSD TECH 2 PCS OLED 0.91インチディスプレイ](https://www.amazon.co.jp/DSD-TECH-Arduino-ARM%E7%94%A8IIC-OLED%E3%81%AE0-91%E3%82%A4%E3%83%B3%E3%83%81%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4/dp/B07D9H83R4/ref=sr_1_2_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=OLED+arduino&qid=1614677428&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExNVJNNFNKOFNaNk5QJmVuY3J5cHRlZElkPUEwODk5NjE5VlFJOUlMMjBRSTRaJmVuY3J5cHRlZEFkSWQ9QTdJT05JTEtKQ1VWSiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=)
- [ＬＰＳ２５ＨＢ使用　気圧センサーモジュールＤＩＰ化キット](https://akizukidenshi.com/catalog/g/gK-13460/)

> ※紹介しといてなんですが、この材料で作る方は[ロジック変換モジュール](https://akizukidenshi.com/catalog/g/gK-13837/)を追加するか[こっちのバージョンの気圧センサ](https://akizukidenshi.com/catalog/g/gK-14946/) を使ってください。
詳細は割愛しますが、上記の私の工作は、一応動きますが回路的に正しくは無いです。今回は手元の部品で作ったガジェットという事でご容赦ください・・・

シリアルで値吐きだせればハードは何でも良しです。
とはいえ、こうした用途には`Arduino`がやっぱり便利ですね。

```C:Serial_print
void print_data(void)
{
    Serial.print(hpa); //気圧データの値(float)をシリアル出力
    Serial.print(", "); //カンマで区切る
    Serial.println(tp); //気温データの値(float)をシリアル出力
}
```
今回使用したガジェットのコードの一部抜粋です。
改行無しでセンサから取得した値を出力し、間にカンマを挟むことで`CSV`として出力すれば難なくエクセルに出力できます。(最終列で改行する)
とりあえずグラフが動いてるのが見たいので1秒ごとに出力します。

早速[公式のドキュメント](https://support.microsoft.com/en-us/office/enable-the-data-streamer-add-in-70052b28-3b00-41e7-8ab6-8a9f142dffeb)を参考に導入してみましょう。
導入が難しい方は[先程ご紹介した記事](https://qiita.com/tatsuya1970/items/132a9a6119acb5f643f2)で分かりやすく方法を解説頂いています。

**COMポート**と**ボーレート**の設定は見落としがちなので要チェックです。
接続が完了したら**データの開始**をクリックすると・・・
![きろく.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/8c509caa-d6d7-dfc6-0252-8c19835ef1b7.png)

おお、リアルタイムにグラフが動いた！！
![00xph-xdjgn.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/9c32d007-074f-c1a6-8ace-912e65b73b69.gif)

ちゃんとプログラムで指定した通り、1秒ごとにデータが入ってます。
ちゃっかりタイムスタンプ付いてくるのも嬉しいですね。
簡単に起動できてめちゃくちゃ便利ですね！

## これ、スマホで見れへんかな
**GoogleDriveにファイルを保存して定期的に上書き保存すればスマホでも見れるやん！**
スマホ上でリアルタイムにグラフ動かすのは多分難しいので、定期的にファイルが更新されることでリアルタイムのログを確認できる、という所をゴールとします。

### PC版 GoogleDriveをインストール
下記の記事を参考に。

https://support.google.com/a/answer/7491144?hl=ja

ブラウザで直接やってもいいのですがエクスプローラで操作できるので何かと捗ります。

### 定期的に上書き保存する
人生で1年分ぐらいしかExcel使ったことのない私ですが、VBAでマクロ組む事で実現してみます。
マジでノー知識スタートなので、2時間ほどYouTubeでVBA導入方法等の初期学習を行います。

・・・2時間後

```VB:hozon
Sub Uwagaki()
ActiveWorkbook.Save
Application.OnTime Now + TimeValue("00:05:00"), "Uwagaki"
End Sub

```
YouTube偉大です。なんとか導入、マクロ有効化、コーディングまでたどり着きました。
上記は現在作業中の`WorkBook`を5分おきに上書き保存するプログラムです。
簡単記述でいい感じ。
マクロの導入方法については今回は割愛致します。

では今回作った`log_test.xlsm`(マクロ有効Excelファイル)をPC版GoogleDriveに保存します。
![まいどらいぶ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/75f89486-b9b5-ab99-a665-0525d1965508.png)

そしてデータストリーマーを起動して
![setumei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/a3262d79-a98f-f1ef-39e7-bebf78e719e9.png)

リボンの**開発**→**マクロ**→**実行**で先ほど組んだマクロを起動すれば、勝手に5分毎に上書き保存してくれます。

GoogleDrive上で上書き保存されているので、5分毎にシートが更新されているはず！

## スマホで見た
スマホのGoogleDriveから・・・
![Screenshot_20210302_202030_com.google.android.apps.docs.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/18e1ed09-4df5-979e-1211-e1fb7d66fa8c.jpeg)

みえそうですね・・・！
では開いてみよう！
![Screenshot_20210302_202053_com.google.android.apps.docs.editors.sheets.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/96fcc273-99f5-fbac-1d72-efa6cbf4d321.jpeg)
・・・あ、あれ？？

どうやらスプレッドシートで開くと**グラフがうまく表示できないようです。**スプレッドシートでそのまま見れたらより便利だったんだけどなぁ。現状原因が分からないので別の方法を模索します。

**スマホ用Excel**で開いてみましょう。

![Screenshot_20210302_202136_com.microsoft.office.excel.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/0cd2cb57-df4d-9c41-777d-559e2f422ed5.jpeg)

今度は大成功！！きっちりグラフも再現されていますね。
では最後に、5分おきに上書き保存するマクロが効いているか確認しましょう。

![Screenshot_20210302_202853_com.microsoft.office.excel.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653352/29f22255-0293-8048-380e-fe1939a2f7c2.jpeg)

ちゃんと更新されています！うまく行ったようです。
今回のガジェットとデータストリーマーがあればいつでも温度や気圧の変化が見えるので安心ですね！(何がだよ)

## 終わりに
今回はExcelのデータストリーマーを使ってリアルタイムグラフを表示しつつスマホでもログやグラフを確認出来るようになりました。
以前はExcelの緑色を見るだけで卒倒していた私ですが、すこしExcelと仲良しになれたような気がしています(多分気のせい)
最近ラズパイ使うためにPythonの勉強も進めているので、プログラムでのデータ処理なんかも追々やってみたいですね。

今回は思い付きでやってみた企画なので内容の誤りや、各ツールのよりスマートな使い方、方法論があるかと存じます。
もしこの記事をお読みになった先輩エンジニアの皆様、よろしければアドバイスを頂ければ幸いです。