スマートホーム

BOCCOemoのAPIを使ってNode-REDからメッセージを取得してみた

先日、BOCCOemoを購入してAPIを使うチュートリアルを試してみました。

スマートホームで人とデバイスとのインターフェースとしてBOCCOemoはAPI使えるから可能性を感じている件|デジタルライト(Digital-light.jp)

ただ、BOCCOemoとスマートフォンアプリでやりとりするメッセージが取得できず、そこは飛ばして次にすすんでいたのですが、この記事をご覧いただいたユカイ工学の中の人から、正しい方法を教えていただきました。

なので、教えてもらった方法とそのやり方でNode-REDを使ってメッセージを取得する方法をご紹介します。

メッセージを取得する正しい方法

まず、こちらはうまくいかなかったやり方。

curl "https://platform-api.bocco.me/v1/rooms/UUID" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

正しいやり方は

正しいURL:https://platform-api.bocco.me/v1/rooms/UUID/messages
(URLの後ろに“/messages”が抜けております。)

こちらのURL

参考
APIドキュメント | BOCCO emo Platform API

Node-REDを使ってBOCCOemoのメッセージを取得する方法

いただいたURLでNode-REDのフローを作成しました。

UntitledImage
[{"id":"825fabd6834e3f5c","type":"http request","z":"d765a7aa3df42da9","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"headers":[],"credentials":{},"x":630,"y":800,"wires":[["16a9991f7b44b3b7"]]},{"id":"5402af20174465c5","type":"inject","z":"d765a7aa3df42da9","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"メッセージ取得","payload":"","payloadType":"str","x":140,"y":720,"wires":[["4aee73aaafd28674"]]},{"id":"69df24385cf23925","type":"debug","z":"d765a7aa3df42da9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":830,"y":860,"wires":[]},{"id":"8002f713c204db82","type":"change","z":"d765a7aa3df42da9","name":"Content-Type","rules":[{"t":"set","p":"headers.Content-Type","pt":"msg","to":"application/json","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":800,"wires":[["825fabd6834e3f5c"]]},{"id":"4aee73aaafd28674","type":"function","z":"d765a7aa3df42da9","name":"JSONのデータ作成","func":"msg.payload = \"Bearer \" + global.get(\"access_token\");\nmsg.url = \"https://platform-api.bocco.me/v1/rooms/\"+ global.get(\"uuid\") +\"/messages/\";\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":350,"y":720,"wires":[["6f78cd3a53bcb4a1"]]},{"id":"6f78cd3a53bcb4a1","type":"change","z":"d765a7aa3df42da9","name":"アクセストークンの指定","rules":[{"t":"set","p":"headers.Authorization","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":720,"wires":[["8002f713c204db82"]]},{"id":"16a9991f7b44b3b7","type":"json","z":"d765a7aa3df42da9","name":"","property":"payload","action":"","pretty":false,"x":690,"y":860,"wires":[["69df24385cf23925"]]},{"id":"eb275e8161939e0d","type":"comment","z":"d765a7aa3df42da9","name":"メッセージの取得","info":"","x":130,"y":680,"wires":[]}]

ポイントとしては”JSONのデータの作成”のところで

msg.payload = "Bearer " + global.get("access_token");
msg.url = "https://platform-api.bocco.me/v1/rooms/"+ global.get("uuid") +"/messages/";
return msg;

と、教えてもらったURLを使いました。

*Node-REDのフローについての解説はこちらの記事をご覧ください。

たくろーどんさんの記事を見ながらBOCCO emoをNode-REDから発話させてみた|デジタルライト(Digital-light.jp)

実行結果

UntitledImage

このようにBOCCOemoとスマートフォンアプリでやりとりしたメッセージの一覧を取得することができました。

まとめ

ユカイ工学の中の人からご連絡いただくことができて、とてもうれしいです。

引き続き、いろんなものとBOCCOemoを連動させて、スマートホームデバイスと人とのインターフェースとしての可能性を探っていきたいと思います。

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。IoTソリューションの開発、スマートホーム&オフィスのコンサルティング、DALI,KNX,EnOceanなどのインテグレーションを行っています。

COMMENT

メールアドレスが公開されることはありません。