node-red
beebotte

Beebotte のメッセージを Node-RED で受ける

自宅に設置したRaspberry Pi と外部サービスと連携する場合、Raspiをインターネットに晒してHTTP等でリクエストを受けられるプログラムを稼働させておく必要があったりするが、次を組み合わせればインターネットに晒すことなく、外部からメッセージを受信することができる。

  • Beebotte
  • Node-RED

以下にその方法を記述する。

beebotte の設定

Beebotte はIoT向けのクラウドサービス。REST API や MQTTをサポートして、接続された機器にリアルタイムでメッセージを通知することができる。
今回はこのサービスをMQTTブローカーとして利用する。
1日50000メッセージまでならフリープランで利用できる。個人ユースには十分だと思う。

まずはアカウントを登録する。フリープランならユーザ名、メールアドレスとパスワードだけで登録できる。
特に迷うところはないと思う。登録後、確認のメールが届くのでメールに記載されたリンクを踏めば先にすすめる。

アカウント作成後はチャネルとリソースを登録するよう促される。
これも特に難しいところはないと思う。

Channel名とresource名で REST API や MQTTのエンドポイントが決まる。
そのことを踏まえて、任意の名前をつければ良い。

登録するとこんな感じ。
発行される Channel Token は後にNode-REDと接続する場合に必要となる。

image.png

スクショの例だと、メッセージをpublishするREST API のURLは次のようになる。

http://api.beebotte.com/v1/data/publish/MyIoT/light_at_bed_room?token=[Channel Token]

Beebotteの管理画面には動作確認に便利なコンソールも備わっているので APIを叩かなくても、コンソールを使ってメッセージを送信を試すことができる。

Beebotte に Node−REDで接続

NodeREDではデフォルトで MQTTがサポートされている(というかもともとMQTTのためのツールだったそうな)。
Beebotte と連携するには mqtt in ノードを利用する。

mqtt in ノードのサーバ設定は次の通り。
ユーザ名に token:[Channel Token] を設定するのが肝。

設定項目 設定値
サーバ mqtt.beebotte.com
ポート 8883
SSL/TLS接続を使用 ON
ユーザ名 token:[Channel Token]

トピックには [Channel名]/[resource名]を設定する。

設定が正しく、beebotte に接続できる場合にはフローのデプロイ後、次のようにノードに 接続済 と表示される。

image.png

動作確認

さて、Beebotteからメッセージを受信する動作確認をするには、例えば、次のようなフローを作って、Beebotteのコンソールからメッセージを送信してみてNode-REDのデバッグコンソールでメッセージを観察してみれば良い。

image.png

その後は…

ここまでできれば、あとは BeebotteのAPIをIFTTTから叩くなり、自分のプログラムからメッセージを送れば、手元で動いているRaspberry Pi等で稼働する Node-REDでメッセージをリアルタイムで受信することができる。

自宅で使う場合でも、機器やサーバをインターネット側に晒さなくてもリアルタイムにメッセージを受けられるところがよい。

受けたメッセージの内容によりNode-REDのフローで様々な処理を実行することもできる。
例えば、家電のリモコンの赤外線信号を出力できれば、ホームオートメーションも可能だろう。
Google Homeからの音声入力で電灯のON/OFFができるだけでも実際やってみると結構便利だったりする。