RAVENを使ってノンコーディングでセンサーノードを作る

[enebularで作ったフローがデプロイできるマイコンボード「RAVEN」](https://qiita.com/jksoft/items/e3659c04dc0ca0a4d4d2)で紹介したRAVENを使って、[enebularで値の見えるWebページを作る ~デバイス側~](https://qiita.com/jksoft/items/6ce11fdc3b4e22da906e)で作ったセンサーの値を送るためのデバイスをプログラミングしないで作ってみたいと思います。

![image.png](https://uhuru.co.jp/wp-content/uploads/2019/02/20190222_pr_raven_01.jpg)

# RAVENに対応しているノード
RAVENはNodeREDのすべてのノードが動作するわけではないので、enebularのドキュメント[enebular-edge-agent Nodes](https://docs.enebular.com/ja/EnebularEdgeAgent/Nodes.html)を確認します。
センサーはMulti IoT Boardと同じBME280が扱えるノードが用意されているので、[GroveモジュールのBME280](https://www.switch-science.com/catalog/3374/)をRAVENに接続します。
定期的にセンサーの値をhttp postできれば良いので、使用するノードは以下の通りです。

* injectノード
* BME280ノード
* changeノード（idを付与するため）
* http requestノード

# フロー
フローは選んだノードを繋げるだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/2bae3ae3-ce04-6fff-65b9-edef96fb566d.png)

書くノードの設定は次の通りです。

## injectノード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/a8b14892-2292-892f-7ca0-796d3a977c68.png)
1分周期で値を更新する様にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/6316fe0b-6a0f-9f07-07f4-6a85bbbb9b21.png)

## BME280ノード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/559bb742-63dc-00f3-031d-45073a526880.png)
BME280はRAVENのport1かport2に接続します。接続したportに合わせて設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/907d66da-23de-0f6b-6f46-7400168c9e0d.png)

## changeノード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/901d1a70-3ecd-5362-ffa4-861bbc5c2bbf.png)
BME280ノードの出力にデバイスを見分けるためのidを付与します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/ed8777c4-06a1-8556-d861-f02391c43689.png)

## http requestノード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/e42eed1b-0785-c5b9-3f0a-38346275b5b7.png)
メソッドとpost先のURL、TLS設定、出力形式を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/5bc1005d-cdb1-8e03-8dc8-baa2e63f9a01.png)

TLS設定はルート証明書（CA証明書）を設定します。サーバ証明書は確認しないので、チェックは外します。
ルート証明書の取得方法は、[「herokuのルート証明書を調べる」](https://qiita.com/jksoft/items/6ce11fdc3b4e22da906e#heroku%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%88%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B)を参考にしてください。ここではファイルのまま使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/6ffd7519-f142-a196-c0f2-9ff5b0685c11.png)

# RAVENへデプロイ
RAVENへは、直接フローをデプロイできます。フローエディタのデプロイボタン右にあるプルダウンメニューから「Export to Other Services」を選びPelionのコネクションからデバイスを選びデプロイします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/c4d579f7-dd4b-cccc-8761-7f4700bb6bcf.png)

家から会社のオフィスで動かしていたRAVENにデプロイし、動かしてみました。

# 動作確認
Web側は[enebularで値の見えるWebページを作る ~enebularからherokuへのデプロイ~](https://qiita.com/jksoft/items/1706c9974a022ad49b30)で書いた通り、herokuにデプロイしてあるので、まずはフロー上で値が取れているか確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/0ea98407-9ad1-65cd-d1af-9a8c1dbb6e98.png)


オフィスの温度と湿度がRAVENから送られてきてることがわかりました。

# リファレンス
[enebularで値の見えるWebページを作る（http post版）](https://qiita.com/jksoft/items/7b2373d07b51b14b55fa)
[enebularで作ったフローがデプロイできるマイコンボード「RAVEN」](https://qiita.com/jksoft/items/e3659c04dc0ca0a4d4d2)
[enebularで値の見えるWebページを作る ~enebularからherokuへのデプロイ~](https://qiita.com/jksoft/items/1706c9974a022ad49b30)
[enebularで値の見えるWebページを作る ~デバイス側~](https://qiita.com/jksoft/items/6ce11fdc3b4e22da906e)