以前、SwitchBotのAPIを試したときは、PostmanというAPIを使うためのツールで行いました。
今回は、他のIoT機器との連携をするために、Node-REDからSwitchBotのAPIを操作する方法をご紹介します。
DeviceIDを取得する
まずはDeviceIDを取得します。
SwitchBotのAPIを使うために必要な情報はこちらの記事を参照ください。
SwitchBotのAPIを使ってエアコンを赤外線リモコンで遠隔からOn/Offする方法
実行を押すと、
このようにDeviceIDが返ってきます。
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をおこなってみます。
フローはこのようになります。
Injectノードでは、AC On(エアコン・オン)とAC Off(エアコン・オフ)をmsg.topicの”on”と”off”で送ります。
FunctionノードにはAPIを叩くときのHeader情報を入れています。
その後のfunctionノードには、msg.topicで送られた情報をもとに、エアコンのOn/OffをするためのAPIで送るbodyの内容を設定。
エアコンリモコンのdeviceIDがhttp requestのURLに必要なのでここで、APIを叩くURLを設定しています。
ちなみに、bodyで送るJSONの内容については、前回の記事をご覧ください。
SwitchBotのAPIを使ってエアコンを赤外線リモコンで遠隔からOn/Offする方法
http requestノードでは、メソッドをPOSTにして、URLを空欄にしておくことで、msg.urlが採用されます。
これで、”AC On”と”AC Off”のインジェクトノードを押すと、エアコンがOn/Offされ、ハブミニに送るAPIが成功すれば、
このように、”success”というレスポンスが返ってきます。
ただし、これはあくまでもハブミニからのレスポンスです。エアコン本体から信号を受ける手段は赤外線リモコンを利用する場合はないので、SwitchBotの温湿度計を利用するなどして、正しくエアコンが動いているかどうかのチェックをする必要があります。
まとめ
以上、Node-REDからSwitchBotを使って、遠隔地から赤外線リモコンのミニハブを使いエアコンのオン・オフをする方法をご紹介しました。
今回は単純なOn/Offでしたが、温度や冷暖房の切り替え、対象とするエアコンの選別なども、Node-RED側のフローをつくることができます。
次回は温湿度系のデータをNode-REDで受け取る方法をご紹介します。