enebular スターターキット開封の儀！ノンコーディングで始めるIoT〜データの可視化まで

2019年1月17日に <A HREF="https://enebular.connpass.com/event/110843/">enebular developer Meetup Vol.7</A> で <A HREF="https://trendy.nikkeibp.co.jp/pcls/rpic/">みんなのラズパイコンテスト2018</A> enebular賞の賞品「IoTスターターキット」をいただきましたので、さっそく開封の儀を行なった。ググっても <A HREF="https://uhuru.co.jp/news/press-releases/20190116/">プレスリリース</A> に写真が載っている程度しか情報が無い中で始める完全に人柱な開封の儀。(´・ω・`) 
![IMG_6606.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/16d6eaaf-7abb-77c9-0d7e-7bfa3de3bae6.jpeg)

## 気になるキットの中身

- Raspberry Pi 3 Model B+? x 1

袋のシールには Raspberry Pi 3 Model B+ と記載されていましたが、実際の中身は Raspberry Pi 3 Model <FONT COLOR=#FF0000>B</FONT> でした。RJ-45コネクタの上には S/N が記載されたシールが貼られていましたが、何に使用するのか不明でした。
また、16GB の microSD カード (UHS-1) が付属していました。OS は Raspbian Stretch がインストールされていました。
![IMG_6607.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/73dcfe2f-3f4d-ab6b-d373-02c190c4f3ca.jpeg)

- 電源アダプタ、ON/OFFスイッチ付きUSBケーブル

![IMG_6615.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/eb56f81e-fafc-f1b3-dda1-5095eeba0694.jpeg)

- アクリル板 x 2

![IMG_6608.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/ab6c6ae3-569f-a012-9ed8-5bd8bbd6e4c4.jpeg)

- ナット M2.6 x 4、ねじ M2.6 x 4、ゴム足 x 4 + ナット回し用アクリル板

![IMG_6609.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/949bfebb-d4e9-b5f5-4f19-c079642c4146.jpeg)

- スペーサー 5mm x 8、7mm x 4、16mm x 4

![IMG_6616.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/bb79a006-2471-2891-fd9f-718032c37fa0.jpeg)

- 光センサ x 1

<A HREF="http://wiki.seeedstudio.com/Grove-Light_Sensor/">Grove Light sensor v1.1</A>
![IMG_6610.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/1241260e-c45d-cf2c-3f5c-b85c83a8cdbc.jpeg)

- LED x 1

<A HREF="http://wiki.seeedstudio.com/Grove-LED_Socket_Kit/">Grove LED Socket kit</A> →青色のLEDが付属していました。
![IMG_6612.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/44586b61-f4ae-10c3-b9c3-1189b4741016.jpeg)

- 温湿度・気圧センサ BME280 x 1

<A HREF="http://wiki.seeedstudio.com/Grove-Barometer_Sensor-BME280/">Grove  Barometer Sensor (BME280)</A>
![IMG_6613.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/94f33c0c-16f6-d0dd-9d59-ae3d8814de1b.jpeg)

- 拡張ボード GroovyIoT x 2、USBケーブル x 2

大宮技研の <A HREF="http://www.omiya-giken.com/?page_id=2262">Groovy-IoT</A> が付いていました。後述しますが、既に <A HREF="http://www.omiya-giken.com/?page_id=2262">kikori</A> がインストールされていましたので、enebular からは標準のHTTP リクエストノードでデバイスのデータを取得したり、LED の点滅を制御することができました。
![IMG_6614.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/b36e9bc8-03c1-f5e8-5f2c-138923127f21.jpeg)

- 説明書

![IMG_6617.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/c163d765-0a16-263b-9914-09330db65462.jpeg)
![IMG_6618.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/423989ac-11dd-0ecc-97a5-766f516bbbd9.jpeg)

## セットアップ (組み立て) の注意点

ラズパイと Groovy-IoT を組み立てる時にスペーサーの長さに注意が必要です。
![IMG_6621.jpg](https://qiita-image-store.s3.amazonaws.com/0/72479/a120e70d-e714-87ef-e004-4cdda0892b36.jpeg)

最初、7mm のスペーサーを使用したところ、Groovy-IoT の Grove ピン (裏側) がラズパイの HDMI コネクタとミニピンジャックに干渉して "浮き" が発生しました。また、HDMI コネクタの外側は金属のため、最悪の場合、Grove ピンがショートする可能性があります。
![IMG_6619.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/e8dc7c9d-18ec-e6ed-8768-81005dcf9c25.jpeg)

Grove ピン (裏側) をニッパー等で切り落とせば問題は解消しますが、後で USB ケーブルを配線するので、16mm のスペーサーを使用して余裕を持たせた方が安心です。
![IMG_6623.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/7a9cdaa9-7180-dd6b-9da2-e9249073661c.jpeg)
![IMG_6626.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/fa03e670-e3e0-9e08-d43c-6d26c08aef7d.jpeg)
![IMG_6629.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/344aa5e9-96cd-96bc-75b4-881b5f5024d5.jpeg)
![IMG_6630.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/be054494-1077-808d-7bc7-2d1a1db03cfc.jpeg)

最後にアクリル板とゴム足を付けて完成です。
<img src="https://qiita-image-store.s3.amazonaws.com/0/72479/18d4f512-35b3-06e9-0484-426e86988179.jpeg" width="49%"> <img src="https://qiita-image-store.s3.amazonaws.com/0/72479/bc4d4d9f-8c78-334e-0570-54417c8a577e.jpeg" width="49%">

### ナット回し用アクリル板

ナットを締める際にアクリル板を使用します。
![IMG_6633.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/4dbb9335-8a7c-59ce-4ed8-3f68a8733798.jpeg)

## センサーデバイス、LED の接続

- Groovy-IoT I2C → 温湿度・気圧センサ BME280
- Groovy-IoT GPIO1 → LED
- Groovy-IoT GPIO2 → 光センサ

![IMG_6634.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/c029d902-6f49-ee57-1673-f88366751be4.jpeg)

### コマンドラインから動作確認

ラズパイの電源を入れて OS が立ち上がった後、ターミナル画面から以下のコマンドを入力してセンサーデバイス、LED が正常に動作することを確認しました。

```bash
# 温湿度・気圧センサ BME280
$ curl -s http://localhost:3000/sensor?ids=BME0 | jq .
{
  "BME0": {
    "pressure": 1001.4135853684872,
    "temperature": 21.738644699100405,
    "humidity": 38.775639836016786
  }
}

# 光センサ
$ curl -s 'http://localhost:3000/read?target=ADC2&type=mean&sampling=128' | jq .
{
  "result": "success",
  "value": 92.9921875,
  "target": "ADC2",
  "type": "mean",
  "sampling": "128"
}

# LED (ON)
$ curl -s 'http://localhost:3000/write?target=GP0&value=1' | jq .
{
  "result": "success",
  "target": "GP0",
  "value": "1"
}

# LED (OFF)
$ curl -s 'http://localhost:3000/write?target=GP0&value=0' | jq .
{
  "result": "success",
  "target": "GP0",
  "value": "0"
}
```

(LED を点灯させたところ)
![IMG_6635.JPG](https://qiita-image-store.s3.amazonaws.com/0/72479/901ae4f5-6daf-f5d4-1d8d-04ab3157fafb.jpeg)

## enebular から動作確認

### 構成図
![名称未設定.png](https://qiita-image-store.s3.amazonaws.com/0/72479/d09100e5-a8cc-999c-b586-19a3524a453f.png)

ラズパイには既に enebular AWS IoT agent がインストールされていたが、自分のアカウント (AWS IoT 上のモノ (管理) と証明書 (安全性)) に紐付けるために以下のページを参照して enebular AWS IoT agent を再インストールする。
https://qiita.com/kitazaki/items/ffd50396cb09d6ab7050

今回は [モノの名前] は

- enebular-starter-kit-01

[Region] は

- ap-northeast-1　(アジアパシフィック(東京))

で作成した。
<img src="https://qiita-image-store.s3.amazonaws.com/0/72479/b9a3481a-d5da-d57e-1047-cec6af48ea2a.png" width="75%">

### Firebase DataSource の作成 (Firebase Console 画面)

![firebase.png](https://qiita-image-store.s3.amazonaws.com/0/72479/f1cc6e87-e4cf-1ebe-6f29-ccbe5ab6b8d2.png)
![firebase2.png](https://qiita-image-store.s3.amazonaws.com/0/72479/9098cd0c-b3d4-8d54-36a7-2fecb153f554.png)
![firebase3.png](https://qiita-image-store.s3.amazonaws.com/0/72479/a858c29f-58fc-c0a3-4b2c-4136355fb972.png)

### Firebase DataSource の作成 (enebular Web App 画面)

![datasource.png](https://qiita-image-store.s3.amazonaws.com/0/72479/6b802f37-d6bb-688b-5a7a-2c2c3df4be0d.png)
![datasource2.png](https://qiita-image-store.s3.amazonaws.com/0/72479/a04dd700-1b0a-d88a-79a7-09948919b2e1.png)

### フローの作成 (Node-RED)

<A HREF="https://enebular.com/">enebular Web App</A> または <A HREF="https://docs.enebular.com/ja/EnebularEditor/">enebular editor</A> でフローを作成します。
![スクリーンショット 2019-01-20 19.48.43.png](https://qiita-image-store.s3.amazonaws.com/0/72479/5ad89cb6-ee25-b68c-15ca-9066969ff87e.png)

定期的 (例えば 5 分毎) にセンサーからデータを取得し Firebase へ格納します。センサーデバイスは 2 種類 (データは 4種類) あるので、データを結合・整形して Firebase へ格納しています。

(定期実行)
![スクリーンショット 2019-01-20 19.53.54.png](https://qiita-image-store.s3.amazonaws.com/0/72479/13b1ae89-5ffa-329c-39b5-b2484e847f56.png)
(温湿度・気圧センサ BME280)
![スクリーンショット 2019-01-20 19.50.28.png](https://qiita-image-store.s3.amazonaws.com/0/72479/ad339ad5-6ce9-2b79-f7cf-4fa09d3f04a7.png)
(光センサ)
![スクリーンショット 2019-01-20 19.50.51.png](https://qiita-image-store.s3.amazonaws.com/0/72479/6a9aaa19-5422-4ccb-55f6-36f4310e60c0.png)
(データ結合)
![スクリーンショット 2019-01-20 19.52.08.png](https://qiita-image-store.s3.amazonaws.com/0/72479/d5b49d7e-99e4-7e63-c9b5-228f2c5360db.png)
(データ整形)
![スクリーンショット 2019-01-20 19.52.27.png](https://qiita-image-store.s3.amazonaws.com/0/72479/c4f6a64c-95bf-6852-b2fd-1612b9617c58.png)
![スクリーンショット 2019-01-20 19.52.53.png](https://qiita-image-store.s3.amazonaws.com/0/72479/7ead2088-63a4-40f8-b0f0-4c09a1699c40.png)

```json
{
    "timestamp": $toMillis($now()),
    "value": {
        "ts": $toMillis($now()),
        "id": "starter-kit-01",
        "temperature": msg.payload.BME0.temperature,
        "humidity": msg.payload.BME0.humidity,
        "pressure": msg.payload.BME0.pressure,
        "light": msg.payload.value
    }
}
```

(Firebase へデータ格納)
![スクリーンショット 2019-01-20 19.53.10.png](https://qiita-image-store.s3.amazonaws.com/0/72479/f297162b-27cc-9c49-b515-ce5cf6f3e2f9.png)
(Firebase Console 上の画面)
![スクリーンショット 2019-01-20 21.03.56.png](https://qiita-image-store.s3.amazonaws.com/0/72479/920d8c5f-e8a4-2a2e-82e9-016910204161.png)

また、LED の点灯 / 消灯は手動操作で行います。
(LED点灯)
![スクリーンショット 2019-01-20 19.51.17.png](https://qiita-image-store.s3.amazonaws.com/0/72479/c45899dc-7708-3ba7-7029-4cfe07ee6232.png)
(LED消灯)
![スクリーンショット 2019-01-20 19.51.50.png](https://qiita-image-store.s3.amazonaws.com/0/72479/a5a67906-c8be-ab36-8520-6f5d4535c3c9.png)

参考としてフローを公開しました。
https://enebular.com/discover/flow/78d335b7-c2b3-48a8-8c4a-efee0833bff9

### データの可視化 (InfoType の作成)

InfoMotion 作成の前に InfoType 作成を実施する必要がある。今回はサンプルで用意されている linechart をダウンロードして使用する。
https://docs.enebular.com/ja/_asset/sample/linechart.zip
![infotypes.png](https://qiita-image-store.s3.amazonaws.com/0/72479/3e72d0a2-a9c6-a2bb-f213-f71174cafe4e.png)
![infotypes2.png](https://qiita-image-store.s3.amazonaws.com/0/72479/7fdc4d56-13ee-ebcb-db35-d81e0f6afd2b.png)
![スクリーンショット 2019-01-21 10.24.43.png](https://qiita-image-store.s3.amazonaws.com/0/72479/4e1d7f30-7d35-7ab5-1c3a-acb9db98679d.png)

### データの可視化 (InfoMotion の作成)

(全体画面)
![スクリーンショット 2019-01-21 12.41.31.png](https://qiita-image-store.s3.amazonaws.com/0/72479/3fa6f5ce-bd7c-d5ed-617c-6027df382f36.png)
(グラフの追加)
![スクリーンショット 2019-01-20 21.02.18.png](https://qiita-image-store.s3.amazonaws.com/0/72479/e152ee37-0f2a-b8fd-cc61-f41565ecfb83.png)
(温度グラフ)
![スクリーンショット 2019-01-20 21.02.42.png](https://qiita-image-store.s3.amazonaws.com/0/72479/8ef358d3-4dcd-2adf-cfd0-61d54103f839.png)
(湿度グラフ / 気圧グラフ / 照度グラフ)
![スクリーンショット 2019-01-20 21.03.04.png](https://qiita-image-store.s3.amazonaws.com/0/72479/f6b48a39-c14f-afff-90aa-5e5ba76138ee.png) ![スクリーンショット 2019-01-20 21.03.18.png](https://qiita-image-store.s3.amazonaws.com/0/72479/bc2085ca-dad7-16a8-a3d8-15091e1c54d3.png) ![スクリーンショット 2019-01-20 21.03.29.png](https://qiita-image-store.s3.amazonaws.com/0/72479/790085a3-cfd3-515c-f4b3-11b6380f8501.png)

### enebular agent の dev-mode オプション有効化

enebular editor からラズパイ上のフローの動作を確認したり、フローを操作する場合、enebular agent を —dev-mode オプション付きで起動する必要がある。フロー上から LED を ON/OFF するために必要。
https://qiita.com/kitazaki/items/ffd50396cb09d6ab7050#4-enebular-agent-%E3%82%92-enebular-editor-%E3%81%A8%E9%80%A3%E6%90%BA

![スクリーンショット 2019-01-20 21.20.50.png](https://qiita-image-store.s3.amazonaws.com/0/72479/7d7ff50c-cc24-6dfb-83b8-f2ca9b0fa01c.png)
![スクリーンショット 2019-01-20 21.21.57.png](https://qiita-image-store.s3.amazonaws.com/0/72479/1f68e9bd-fd91-0ba5-f9cf-69384994875a.png)
![スクリーンショット 2019-01-20 21.22.11.png](https://qiita-image-store.s3.amazonaws.com/0/72479/da887587-1253-dc77-b9d6-5a0f34ee8faa.png)

## まとめ

IoT スターターキットと enebular の機能を組み合わせることで、IoT の手始めからセンサーデータの可視化までノンコーディングで行うことができました。IoT がどんどん身近になって行くと良いですね。
みなさんも 良き enebular ライフを！