Help us understand the problem. What is going on with this article?

【超入門】初めてのenebular!

More than 1 year has passed since last update.

いきなりですが、私はRaspberry PiやArduinoで遊ぶことが大好きです!
ですが、今までネット上のサービス(クラウドサービス、ソーシャルメディアとか)と連携して動くものを作ろうとするとプログラムをたくさん書かなければいけなくて大変でした・・・

しかし、プログラムコードを書かなくても簡単にネット上のサービスと連携したデバイスが作れるサービスがあると聞き、早速使ってみました!

初めてのenebular

今回使ってみるのは株式会社ウフルさんのenebularというサービス。
enebularとは、公式サイトのタイトルにもある通り「あらゆるデバイスとクラウドサービスを「つなぐ」、IoTのためのデータ連携プラットフォーム」です。
Node-REDベースで作られていて使い方もほとんど一緒。
Node-REDについては、こちらの記事で解説されてます!
なのでこちらの記事と合わせて読むと理解しやすいかもしれません。

PWM制御をマスターしよう!
Node-REDでサーボモータを遠隔制御する方法&初ハンズオンレポート

これでどんなことができるのか、早速使いながら見ていきましょう!

"hello, world"

まずは「hello,world」の文字列を表示することを目標に進めていきましょう。

はじめに、enebularにユーザ登録します。
ユーザ登録はとても簡単、enebularの公式サイト上にある「新規登録」から「ユーザ名」「メールアドレス」「パスワード」を設定すればすぐに登録メールが届きます。
touroku.png

登録が完了したら「Create Project」ボタンを押してプロジェクトを作りましょう。
createproject.png
作成したら、プロジェクトが追加されるのでクリックしてプロジェクトを開きましょう。
プロジェクトを開くと右下に(+)ボタンがあるのでここから「flow(フロー)」を追加します。
plus.png
「flow」を選択して、名前をつけたら「Continue」を押しましょう。
CreateFlow.png
そして「EditFlow」を押したらいよいよプログラム開始です!
EditFlow.png

プログラムと言っても中央のフローマップに左側にあるアイコンを並べて繋げるだけ。超絶簡単でわかりやすいです!
Editor.png
この画面はまんまNode-REDですね。

早速左側のアイコンから「inject」と「debug」をドラッグ&ドロップしてフローマップに並べましょう。
この並べたアイコンのことをそれぞれ「ノード」と呼びます。
ノードをダブルクリックすると、設定画面が出てきます。
ここで、それぞれノードの働きを設定することができます。
EditNode.png

ノードの設定をしたら、ノード同士を線でつなぎましょう。
以下の画像が、フローの完成形と設定値です。
helloFlow.png

さて、なんとこれだけでhello,worldプログラムは完成です!
画面右上にある「Deploy」を押すとプログラムが動きが動き出します。
試しに「inject」ノードの左側にある四角いボタンを押すとデバックタブに「hello,world」が表示されると思います!!
kokoosu.png
debug.png
いつになっても新しい環境でhello,worldできた時の感動は変わりませんね・・・!

enebular + Raspberry Pi + Slack で遠隔Lチカ

enebularの特徴は何と言ってもネット上のサービスとハードウェアの連携のしやすさ!
ということで、サービスである「Slack」から「Raspberry Pi」に繋いだLEDを遠隔操作できるようにしましょう。

Slack と eneblarの連携

Slackに打ち込まれたメッセージをeneblarで受け取って見ましょう。
メッセージをキャッチしたいワークスペースにSlackBotを追加します。
AddApp.png
Botsを選んで「設定を追加」。
bots.png
Botのユーザ名を設定して「ボットインテグレーションを追加する」。
すると「インテグレーションの設定」の項目に「APIトークン」が表示されると思います。
eneblarで以下のようなフローを組んだら、「Slack Bot In」ノード設定項目の「Bot API Token」に先ほどの「APIトークン」をコピペで貼り付けましょう。
BotTest.png
そして「Deploy」!!
Slackボットに直接、あるいはSlackボットが居るチャンネルに何か書き込む度に「Debug Tab」に書き込んだ文字列が表示されると思います。

enebular と Raspberry Piの連携

まずはRaspberry PiにLEDを繋げましょう。

eneblarにノードを追加します。
eneblar_Lchika.png
「mqtt」ノードの設定で、「Server」の項目の横にある鉛筆のマークを押して、以下のように設定します。
mqtt.png
その他設定値は以下の通り。
edit_mqtt.png

「Topic」に絶対に人と被らないIDを設定します。
多分、"ユーザ名"+"日時"を設定すれば被らないでしょう。(例 2018/01/01 12:00の場合→ taisyo201801011200)
※ここに設定した値はオープンな場所に公開されるので注意

今回「Raspberry Pi」のGPIOピンを操作するのに「RPi.GPIO」というライブラリを使います。
「Raspberry Pi」のターミナルでRPi.GPIOが入っているか確認します。

$ pip list | grep RPi.GPIO

存在しない場合、インストールします。

$ pip install RPi.GPIO



ここからは、Raspberry PiのNode-REDを使います。
「Raspberry Pi」のOSであるRaspbianの最新版ではNode-REDがデフォルトでインストールされています。
「RaspberryPi」のターミナルで以下のコマンドを打ち、Node-REDを起動します。

$ node-red-start

起動したら、RaspberryPiのブラウザか、RaspberryPiにSSH接続できるパソコンのブラウザで以下のURLにアクセスします。
http://raspberrypi.local:1880/

Node-REDのフロー編集画面が開くと思うので、メニューから[読み込み]→[クリップボード]を選びます。read.png

出てきたウィンドウに以下のコードをコピペします。

Lchika-Flow
[
    {
        "id": "ee01f7d0.774468",
        "type": "tab",
        "label": "フロー 1",
        "disabled": false,
        "info": ""
    },
    {
        "id": "3257f591.c8983a",
        "type": "mqtt in",
        "z": "ee01f7d0.774468",
        "name": "",
        "topic": "",
        "qos": "2",
        "broker": "",
        "x": 70,
        "y": 140,
        "wires": [
            [
                "a5a393a3.36f73"
            ]
        ]
    },
    {
        "id": "a5a393a3.36f73",
        "type": "switch",
        "z": "ee01f7d0.774468",
        "name": "ON-OFF分岐",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "ON",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "OFF",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 210,
        "y": 140,
        "wires": [
            [
                "a808f88e.4fdd18"
            ],
            [
                "598104ad.83547c"
            ]
        ]
    },
    {
        "id": "a808f88e.4fdd18",
        "type": "change",
        "z": "ee01f7d0.774468",
        "name": "\"ON\"→1",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "1",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 380,
        "y": 100,
        "wires": [
            [
                "d8bd6341.142b2"
            ]
        ]
    },
    {
        "id": "598104ad.83547c",
        "type": "change",
        "z": "ee01f7d0.774468",
        "name": "\"OFF\"→0",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "0",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 380,
        "y": 180,
        "wires": [
            [
                "d8bd6341.142b2"
            ]
        ]
    },
    {
        "id": "d8bd6341.142b2",
        "type": "rpi-gpio out",
        "z": "ee01f7d0.774468",
        "name": "RaspberryPi_LED",
        "pin": "11",
        "set": "",
        "level": "0",
        "freq": "",
        "out": "out",
        "x": 580,
        "y": 140,
        "wires": []
    }
]

すると以下のようなフローが追加されると思います。
Node-RED_Flow.png
「mqtt」ノードには先ほどeneblarで設定した値と同じものを設定しましょう。
そしてeneblarとNode-RED両方で「Deploy」!!

Slackで「ON」「OFF」を書き込むとLEDをチカチカできます。
lchika.gif
Wi-Fiに繋がっているRaspberryPiであればどこに置いても遠隔でLチカできます!

Node-REDフロー解説

  1. Node-REDに貼り付けたフローはenebularから飛んでくるMQTTの情報をキャッチ、
  2. キャッチした文字列が「ON」か「OFF」かで分岐、
  3. 「ON」だったら数字の「1」をラズパイノードに、「OFF」だったら「0」をラズパイノードに送ります。
  4. ラズパイノードは受け取った信号を元に設定したピン[ GPIO17(pin11) ]の出力を切り替えます。

MQTTについて詳しくはこちらの記事で解説されています。

まとめ

今回はeneblarの始め方から、"hello,world"に"Lチカ"と簡単なチュートリアルを行いました。
これだけでもenebularの簡単さと便利さは体感できましたが、enebularの本気はまだまだこんなもんじゃありません!
次回はよりenebularの特徴を生かしたものを作ってみようと思います!!

それでは、みなさん良きenebularライフを〜

iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away