enebularで値の見えるWebページにInfoMotionを埋め込む

以下の記事の関連になります。

* [enebularで値の見えるWebページを作る（http post版）](https://qiita.com/jksoft/items/7b2373d07b51b14b55fa)
* [enebularで値の見えるWebページを作る ~enebularからherokuへのデプロイ~](https://qiita.com/jksoft/items/1706c9974a022ad49b30)
* [enebularで値の見えるWebページを作る ~デバイス側~](https://qiita.com/jksoft/items/6ce11fdc3b4e22da906e)
* [RAVENを使ってノンコーディングでセンサーノードを作る](https://qiita.com/jksoft/items/ff3319c1dec21cc8acdf)

enebularで値の見るwebページは現在の状態しかわからないので、例えば温度変化の具合をenebularのinfoMotion機能を使ってグラフで見れれば良いかなと思いました。

# 値の履歴を保存する
グラフで値の変化を見るには、履歴を保存しなければなりません。今回はinfoMotionが対応している[firebase](https://firebase.google.com/?hl=ja)に保存することにしました。
firebaseはある程度であれば、無料で使用できます。

#firebaseの準備
まずはfirebaseでアカウントを作り、ウェブのアプリを作ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/1308cc3a-7dc0-1233-259e-e831d226fbf2.png)

スクリプトが表示されるので、databaseURLをメモしておきます。（後でも確認できます。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/9c0015af-e927-54ee-c6f5-211b7024597d.png)

実験なのでセキュリティを気にせず使用するため、データベースのルールで、read/writeを許可しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/69ff2853-571f-664d-b8bc-250de3d2324f.png)

#フローの準備（その１）
以前作ったフローで、firebaseにセンサーの値をアップロードするためのノードを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/713b2e0a-e3cb-b4fb-ebcd-e5d71286dff4.png)

* Functionノード
デバイスからアップロードされたデータをinfoMotionに合わせたデータに変換します。今回は温度の値のみにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/b7059113-12cc-5e85-5d3b-77928cc4377b.png)

* firebase modifyノード
firebaseで設定したURLをセットします。Auth TypeはNoneでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/25acfc7c-13b9-f754-baac-8cb4c1698d5b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/cb6d3bb7-a837-fefe-616e-de454b37cdd7.png)

#infoMotionの設定
設定方法については、[ドキュメント](https://docs.enebular.com/ja/InfoMotion/CreateInfoMotion.html)に掲載されているので、詳細はこちらを確認してください。
infoMotionで使用するinfoTypeはDiscoverでシェアされている「basic-line-chart」を使いました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/1b2f678d-4cd1-4c42-7b59-ec7d1f5fb87d.png)

設定は、このようにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/5f8c7888-3036-1222-c3db-5dea63424e20.png)

確認してみるとデバイスからの温度の情報がグラフで表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/011c2976-6318-eb6a-49f1-86c78ab3a560.png)

#infoMotionの埋め込み
ここが本題です。infoMotionのグラフはhtmlを出力することによってWebページに埋め込むことができます。
グラフの以下の部分をクリックするとコードが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/ab0ec39c-3390-ca51-8a67-05dd262e920b.png)
表示されたコードをheroku上で動作しているフローのfunctionノードに埋め込みセンサー情報の確認ページで確認できるようにしたいのですが、そのままでは改行やダブルクォーテーションがあるので、コードには埋め込むことができません。

↓この部分
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/bbb0930b-1596-f923-cb37-2b67bade8a49.png)


そのため、改行コードとダブルクォーテーションをエスケープシーケンスを使った表現に変換する必要があります。
いろいろ方法があると思いますが、私の場合はテキストエディタ(visual studio code)の置換で行いました。
まず、ダブルクォーテーションを置換します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/d1b199e3-5176-ff09-1836-0ad7aa689001.png)

次に改行を正規表現で検索し、変換します。（一発じゃうまくいかなかったので、一旦仮の文字に置換してから変換しています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/7e33d72a-94b5-7193-9865-b75f6de70001.png)
　　　　　　　　↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/83c683d2-051e-dea4-0b31-20e6e08de110.png)

これで、1行のコードになったので、functionノードのコードに追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/0bd16033-a9b0-cca9-b0b0-9905db60bfa5.png)

#確認
完成したフローをenbularからherokuにデプロイして、Webページを表示して確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/b513b002-fdd4-0f9d-879f-e335b840fe92.png)
infoMotionのグラフを埋め込むことができました。
コードを変換するところでちょっと悩みましたが、もうちょっと楽な手順があるかもしれません。

これまでのenebularで値の見えるWebページを作るシリーズの内容は、2019年12月21日にウフルで開催した[mbed祭り2019@師走の虎ノ門](https://mbed.doorkeeper.jp/events/101635)でプレゼンしました。[プレゼン資料](https://drive.google.com/file/d/1ZMHV4_6A0R0YEQ6rdlLMP0wGiovk0KDh/view?usp=sharing)に纏めたものもありますので、これまでのqiita記事と合わせて見てみて下さい。