Obnizとオムロン絶対圧センサを連携する with Node-Red

2/19(火)のCIoTLTにてダンボール金庫ということで
Node-RED(enebular)とObnizを使った話をした。

その中でOmronの絶対圧センサ(2SMPB-02E)をオマケとして使って
いたのだけど、その反響が思いの外大きかったので展開しようと思う。

##[目的]
- 絶対圧センサ(2SMPB-02E)をObniz&Node-REDから使用できるようにする。

##[前準備]
- Obnizと絶対圧センサ(2SMPB-02E,https://www.switch-science.com/catalog/5329/ )を用意する。

- enebular( https://www.enebular.com/ja/index.html )のアカウントを取得する。

- Obnizと絶対圧センサを結線する。結線先のピンは以下の通り

| Obniz       |       絶対圧センサ |
|:------------|----------------:|
|3            |             SDA |
|4            |             SCL |
|5            |             GND |
|6            |             VCC |

##[方法]
まず、下記のリンクからSmart Websocket Clientをインストールする。
(要Google Chrome)
https://chrome.google.com/webstore/detail/smart-websocket-client/omalebghpgejjiaoknljcfmglgbpocdp

インストールしたら、ブラウザー右端にできたアイコンをクリックする。
<img width="64" alt="スクリーンショット 2019-02-20 21.24.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/e839cd4b-c72e-53de-451d-5495341648d4.png">

すると、Smart Websocket Clientが起動する。

その後、[Obniz Websocket API](https://obniz.io/spec/api)の
Websocket APIのwssのURLを自分のObnizで置き換え、Smart Websocket Client
のフォームに入れる。入れたあとにConnectをクリックすると、下の写真のように
*redirect*が返ってくる。

<img width="500" alt="スクリーンショット 2019-02-20 21.22.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/f54a7432-5d96-b4fd-009c-dfb5210cea7c.png">

その後、URLの一部を*redirect*のものに置き換えて再度Smart Websocket Client
のフォームに入れると、*ready true*が返ってくる。

<img width="299" alt="スクリーンショット 2019-02-20 21.33.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/a16ed55b-f7be-9f01-0059-c4a4fddef344.png">
<img width="338" alt="スクリーンショット 2019-02-20 21.32.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/b05ec8aa-cb2b-e7be-4391-4ba2ecdea51a.png">

このときのリンクをメモ帳などにコピーしておく(後で使います)。

次に、enebularにログインして、任意のflowのエディタ画面を起動する。
手順としては[本家docsのイントロダクション](https://docs.enebular.com/ja/GetStarted/Introduction.html)が参考になるかも。
なんにもない、まっさらな状態のflowが望ましい。

<img width="1180" alt="スクリーンショット 2019-02-20 21.47.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/a907cc0c-3f60-d458-ad25-5f5b0b9347c6.png">

flowのエディタ画面に写ったら、以下githubリンクのjsonを全てコピーする。
https://github.com/henjin0/ConnectObnizAnd2SMPB-02E/blob/master/ObnizAnd2SMPB02W_NodeRed.json

コピーできたら、メニュー→読み込み→クリップボードを選択する。
<img width="508" alt="スクリーンショット 2019-02-20 21.49.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/6fab3766-3b82-5d4a-dbfd-bb668b25ca5c.png">

出てきたウィンドウのテキストエリアに先程のjsonをコピーして、読み込みを
クリックする。

<img width="507" alt="スクリーンショット 2019-02-20 21.51.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/8f21a198-da7d-cbaa-4c4f-e74749d7c88d.png">

すると、エディタ画面のどこに読み込んだフローを置くか決められるので
任意の場所を選択する。

<img width="898" alt="スクリーンショット 2019-02-20 21.54.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/e1153b3a-7160-ece9-e5e9-07c9d44b38e6.png">

適当な場所においたら、sendブロックをダブルクリックして、パス横の鉛筆マークをクリックする。
<img width="514" alt="スクリーンショット 2019-02-20 21.55.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/d263f208-33b8-9ec9-e150-9801ed3301ce.png">

Smart Websocket Clientで*ready true*を得たときのURLを
入力し、更新をクリック。この操作をreceiveブロックにも同様に行う。

<img width="514" alt="スクリーンショット 2019-02-20 21.55.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/04db973a-0d2a-f9e4-a3ca-0c02121bed05.png">

最後に、デプロイをクリックしてデバッグウィンドウをみると２秒間隔で結果が反映される。
最初にNaNと出るかもしれないが、しばらくすると現在の温度が反映される。

もしでなければ、適当にブロックの位置を動かして再度デプロイするとうまくいくかもしれない。
また、send/receiveブロックがdisconnectであれば、WebSocketサーバの先が
合致していない（変わってしまった）ということもあるため、注意すること。

<img width="514" alt="スクリーンショット 2019-02-20 23.26.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/271381/d3bff7aa-74bc-1c39-3f06-1da35fefeffe.png">

##[感想]

[仕様書](https://www.omron.co.jp/ecb/product-detail?partId=45066)の計算は結構苦労したけども、[issaxのハンズオンセミナーで使用したプログラム](https://github.com/isaaxug/2smpb02e-with-isaax)を参考にしてみたら結構うまくできた。先人の知恵が大事なのだとしみじみ