Obniz OS入りMaixduinoをenebularとつなげてLINEへ通知を行う。

# はじめに

前回の[Maixduino+Obniz OS](https://qiita.com/Inoue_Minoru/private/ea1861dd20ce16606d9a)とenebularを使って、顔検出したらLINEで通知するといった流れを作ってみようと思う。

# 前提

- [前回の記事](https://qiita.com/Inoue_Minoru/private/ea1861dd20ce16606d9a)でObniz Cloudへ向けて顔検出データを飛ばせていること。
- [enebular](https://www.enebular.com/ja/)で無料アカウントを作成していること。そして、細かいことは置いておいてflowまで作成できること。
- YSFK_KOBE様の"[Line Messaging APIで簡単Line Bot作成（超初心者向け）](https://qiita.com/YSFT_KOBE/items/8dc62ac40c5112df2ed3)"などを参考に、プロバイダーならびにチャネルの準備をしておくこと。

# 準備

まず、enebularへログインして、プロジェクトとflowを作成する。
何もノードが置かれていない空のエディット画面が用意されている状態にする。
CategoryやFlow名はお好みで。

<img width="500" alt="空エディット画面" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/8bb674ef-e058-126e-7e53-748f53b27f7e.png">

その後、漢字の三の時みたいなメニューボタンをクリックして、パレットの管理をクリックした後にノードを追加を選択する。

<img width="300" alt="ノードを追加" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/321be8df-2d6d-b496-9159-8f29b73ab08b.png">

<img width="500" alt="ノードを追加の画面" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/90edecea-3b42-f5f6-b45d-3ddacfbb84c4.png">

"ノードを検索"エディットボックスにobnizと入力し、node-red-contrib-obnizノードを追加する。また、同じ要領でline-messagingと入力しnode-red-contrib-line-messaging-apiをインストールする。

<img width="500" alt="Obnizノードを追加" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/31cd6c8c-be90-5ecd-b2ab-dfe80f34f9cb.png">

<img width="500" alt="Line Messagingノードを追加" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/9545fa45-fe84-850f-75b1-9cb73fcafd95.png">

これでenebularの準備はOK。

# Obniz repeatノードの実装

Obniz RepeatノードとLine Push messageノードをおいて、このような構成を組んでみる。

<img width="500" alt="Flowをコピペで追加する" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/1122f264-5ccd-c6db-db80-94b4e922f52f.png">

jsonはこちら。

```json:sample
[{"id":"2e4d0b90.67f3e4","type":"obniz-repeat","z":"795be71.f9b8718","obniz":"96dff62f.0b17e8","name":"","interval":"5000","code":"msg.payload = obnizParts.getCheck();\nreturn msg;","x":150,"y":380,"wires":[["901da50.abc8658"]]},{"id":"901da50.abc8658","type":"json","z":"795be71.f9b8718","name":"","property":"payload","action":"","pretty":false,"x":330,"y":400,"wires":[["9d2be575.312238","7d71c9d3.3a07e8"]]},{"id":"9d2be575.312238","type":"debug","z":"795be71.f9b8718","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":570,"y":400,"wires":[]},{"id":"7d71c9d3.3a07e8","type":"switch","z":"795be71.f9b8718","name":"","property":"payload","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":290,"y":480,"wires":[["53ad5b68.9a6284"]]},{"id":"53ad5b68.9a6284","type":"template","z":"795be71.f9b8718","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"だれかが　おまえの　へやにいる　!","output":"str","x":440,"y":480,"wires":[["e47d889.70a3678"]]},{"id":"e47d889.70a3678","type":"PushMessage","z":"795be71.f9b8718","name":"","channelSecret":"","channelAccessToken":"","targetId":"","x":620,"y":480,"wires":[]},{"id":"96dff62f.0b17e8","type":"obniz","z":"","obnizId":"XXXX-XXXX","deviceType":"esp32","name":"maixduino","accessToken":"","code":"obnizParts.str = [0];\nobniz.plugin.onreceive = data => {\n    obnizParts.str = data;\n};\n\nobnizParts.getCheck = function(){\n    let str = String.fromCharCode.apply(null,obnizParts.str);\n    obnizParts.str = [0];\n    \n    let countL = ( str.match( /{/g ) || [] ).length ;\n    let countR = ( str.match( /}/g ) || [] ).length ;\n    if(countL!=countR || (countL==0 || countR==0)){\n        return \"{}\";\n    }\n    \n    return str;\n}"}]
```

上述のsampleをコピーし、メニューから"読み込み"をクリックして貼り付けて、”読み込み”ボタンを押せばフローをそのままコピーすることができる。

<img width="500" alt="Flowを読み込む" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/1a272e3b-2299-7c03-eac0-86f10a35084d.png">

#Obniz Repeatブロックの設定

flow中のObniz Repeatノードをクリックし、コードの設定を行う。鉛筆マークをクリックして、自身のMaixduinoにインストールしたObnizのObniz IDを入力する。

<img width="500" alt="Obniz Repeat 鉛筆" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/f62730bd-3f5e-a689-d081-5c304979eff4.png">

<img width="500" alt="Obniz Repeat設定" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/9bd178e8-8008-c3e6-937e-01b14d8d04ef.png">

その後、完了をクリックして設定を終了する。

#Line Push Messageノードの設定

自身のチャネルの情報を入力する。
必要なチャネルの情報として、Channel SecretとYour User ID、Channel access tokenがある。**2020年11/3(火)では、Channel SecretとYour User IDはBasic Settingsにある。また、Channel access tokenはMesseging APIにある。**

<img width="500" alt="Basiｃ Setrings画面" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/4ad85122-c3a9-5e6e-378d-764ac8fd2424.png">

<img width="500" alt="Messaging API画面" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/44fc3394-69a4-5f1b-addb-4c4236d96062.png">

それぞれの情報の存在を確認したら、Push Messageノードをクリックして設定する。

<img width="500" alt="Push Messageノード設定" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/9483c585-6e7c-dcdb-e0c2-80b2bc303aaa.png">

その後、完了を押して設定を終了する。

# 結果

顔を検出して数秒後にLineにて「おまえの　へやに　だれかがいる！」というメッセージが出力されるはず。もうちょっと文章考えておけばよかった。むっちゃ怖い。

<img width="500" alt="おまえの　へやに　だれかがいるメッセージ" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/271381/85b09e53-f977-a3ea-9529-79ccb8030084.png">


# 終わりに

- Obniz OS入りMaixduinoとenebularを連携してみた。
- Obniz Repeatノードを使ってObniz入りMaixduinoをjsで操作した。
- Line Messaging APIを使って顔推論後にLineへプッシュ通知できるようにした。

AIoTも手軽になったなぁ。。。