0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BeebotteのメッセージをRaspberry Piで受信する

Last updated at Posted at 2019-02-21

Raspberry Piと連携するAlexaスマートホームスキルの開発を検討しています。Alexa→Lambda関数→AWS IoT→Raspberry Piでも良いのですが、AWS IoTは従量料金制ということもあり、とりあえずはAWS IoTではなくBeebotteと使おうと思っています(2019年2月現在Beebotteはフリープランでも私の用途には十分すぎる量のメッセージが利用できます)。そこで、今後Lambda関数にのせるべくBeebotteにPublishするコードを作成してNode-REDのmqtt inノードで受信を行ってみました。BeebotteにPublish/Subscribeしようと思っている方はぜひお試しください。(ラズパイからBeebotteにPublishするのであれば、Node-REDのmqtt outノードを使ったほうが楽です。)

Beebotteの準備とNode-REDでのSubscribe

こちらに分かりやすくまとまっていますので、ここでは割愛します。

BeebotteへのPublish

こちらのNodejsのコードをほぼそのまま利用しています。異なる点としては、'Hello World'を渡すのではなく、家電操作を見据えて複数の要素を返していることくらいです。AWS LambdaはNodejsのサンプルが多そうでしたのでNodejsにしています。

test_publish.js
var bbt = require('beebotte');

var API_KEY = API Key;
var SECRET_KEY = Secret Key;
var CHANNEL = チャネル名;
var RESOURCE = リソース名;

var bclient = new bbt.Connector({apiKey: API_KEY, secretKey: SECRET_KEY});

bclient.publish(
  {channel: CHANNEL, resource: RESOURCE, data: {
    'resource': 'light', 'command': 'on', 'option': '30'
  }},
  function(err, res) {
});

※ 「API Key」「Secret Key」「チャネル名」「リソース名」を適宜置き換えてください。「API Key」と「Secret Key」は2019年2月現在BeebotteのWebページで『Account Settings』→『Access Management』タブから参照可能です。「チャネル名」と「リソース名」はご自身で設定したものです。
※ 今回はこれを受信するのみで家電操作は行いません。

これを実行するとNode-RED上のmqtt inノードで受信できるはずです。mqtt inノードの設定の注意点としては、トピックには「チャネル名/リソース名」を設定することくらいかと思います。また、mqtt inノードのすぐ次にjsonノードを配置することで、Subscribeしたdataを分解することができます。
json.JPG

先ほどのサンプルプログラムから送信した要素は、

  • msg.payload.data.resource("light"が入る)
  • msg.payload.data.command("on"が入る)
  • msg.payload.data.option("30"が入る)
    といった形で後続の処理で利用可能になります。

今後のスマートホームスキル作成でも当該トピックをSubscribeするmqtt inノードを1つ用意しておき、msg.payload.dataのresourceで操作対象を切り替え、commandとoptionで操作内容を切り替える予定です。

参考にしたサイト

Beebotte のメッセージを Node-RED で受ける
beebotte Quick Start Guide

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?