API

Node-REDからSwitchBotのAPIを操作する方法

以前、SwitchBotのAPIを試したときは、PostmanというAPIを使うためのツールで行いました。

今回は、他のIoT機器との連携をするために、Node-REDからSwitchBotのAPIを操作する方法をご紹介します。

DeviceIDを取得する

まずはDeviceIDを取得します。

SwitchBotのAPIを使うために必要な情報はこちらの記事を参照ください。

SwitchBotのAPIを使ってエアコンを赤外線リモコンで遠隔からOn/Offする方法

Node RED  153 127 13 68 2021 10 10 10 29 20

実行を押すと、

Node RED  153 127 13 68 2021 10 10 10 33 03

このようにDeviceIDが返ってきます。

Node RED  153 127 13 68 2021 10 10 10 34 44

functionノードの内容、

msg.headers = {};
msg.headers['content-type'] = 'application/json; charset=utf8';
msg.headers['Authorization'] = '認証用トークン';

return msg;

http requestノードには、SwitchBot APIのURL

https://api.switch-bot.com/v1.0/devices




にすることで、レスポンスとしてdebugノードに、ハブミニのdeviceIDと設定しているリモコンのdeviceIDが返ってきます。

Node-REDからエアコンを制御する

Node-REDからSwitchBot APIを使ってエアコンのOn/Offをおこなってみます。

Node RED  153 127 13 68 2021 10 11 17 44 37

フローはこのようになります。

Node RED  153 127 13 68 2021 10 11 17 45 04

Injectノードでは、AC On(エアコン・オン)とAC Off(エアコン・オフ)をmsg.topicの”on”と”off”で送ります。

FunctionノードにはAPIを叩くときのHeader情報を入れています。

Node RED  153 127 13 68 2021 10 11 17 47 11

その後のfunctionノードには、msg.topicで送られた情報をもとに、エアコンのOn/OffをするためのAPIで送るbodyの内容を設定。

エアコンリモコンのdeviceIDがhttp requestのURLに必要なのでここで、APIを叩くURLを設定しています。

ちなみに、bodyで送るJSONの内容については、前回の記事をご覧ください。

SwitchBotのAPIを使ってエアコンを赤外線リモコンで遠隔からOn/Offする方法

Node RED  153 127 13 68 2021 10 11 17 50 17

http requestノードでは、メソッドをPOSTにして、URLを空欄にしておくことで、msg.urlが採用されます。

これで、”AC On”と”AC Off”のインジェクトノードを押すと、エアコンがOn/Offされ、ハブミニに送るAPIが成功すれば、

Node RED  153 127 13 68 2021 10 11 17 51 52

このように、”success”というレスポンスが返ってきます。

ただし、これはあくまでもハブミニからのレスポンスです。エアコン本体から信号を受ける手段は赤外線リモコンを利用する場合はないので、SwitchBotの温湿度計を利用するなどして、正しくエアコンが動いているかどうかのチェックをする必要があります。

まとめ

以上、Node-REDからSwitchBotを使って、遠隔地から赤外線リモコンのミニハブを使いエアコンのオン・オフをする方法をご紹介しました。

今回は単純なOn/Offでしたが、温度や冷暖房の切り替え、対象とするエアコンの選別なども、Node-RED側のフローをつくることができます。

次回は温湿度系のデータをNode-REDで受け取る方法をご紹介します。

COMMENT

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