以前、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.jpg Node RED 153 127 13 68 2021 10 10 10 29 20](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-10-10-29-20.jpg?ssl=1)
実行を押すと、
![Node-RED : 153.127.13.68 2021-10-10 10-33-03.jpg Node RED 153 127 13 68 2021 10 10 10 33 03](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-10-10-33-03.jpg?ssl=1)
このようにDeviceIDが返ってきます。
![Node-RED : 153.127.13.68 2021-10-10 10-34-44.jpg Node RED 153 127 13 68 2021 10 10 10 34 44](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-10-10-34-44.jpg?ssl=1)
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.jpg Node RED 153 127 13 68 2021 10 11 17 44 37](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-11-17-44-37.jpg?ssl=1)
フローはこのようになります。
![Node-RED : 153.127.13.68 2021-10-11 17-45-04.jpg Node RED 153 127 13 68 2021 10 11 17 45 04](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-11-17-45-04.jpg?ssl=1)
Injectノードでは、AC On(エアコン・オン)とAC Off(エアコン・オフ)をmsg.topicの”on”と”off”で送ります。
FunctionノードにはAPIを叩くときのHeader情報を入れています。
![Node-RED : 153.127.13.68 2021-10-11 17-47-11.jpg Node RED 153 127 13 68 2021 10 11 17 47 11](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-11-17-47-11.jpg?ssl=1)
その後の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.jpg Node RED 153 127 13 68 2021 10 11 17 50 17](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-11-17-50-17.jpg?ssl=1)
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.jpg Node RED 153 127 13 68 2021 10 11 17 51 52](https://i0.wp.com/enkaku-kanri.com/wp-content/uploads/2021/10/Node-RED-153.127.13.68-2021-10-11-17-51-52.jpg?ssl=1)
このように、”success”というレスポンスが返ってきます。
ただし、これはあくまでもハブミニからのレスポンスです。エアコン本体から信号を受ける手段は赤外線リモコンを利用する場合はないので、SwitchBotの温湿度計を利用するなどして、正しくエアコンが動いているかどうかのチェックをする必要があります。
まとめ
以上、Node-REDからSwitchBotを使って、遠隔地から赤外線リモコンのミニハブを使いエアコンのオン・オフをする方法をご紹介しました。
今回は単純なOn/Offでしたが、温度や冷暖房の切り替え、対象とするエアコンの選別なども、Node-RED側のフローをつくることができます。
次回は温湿度系のデータをNode-REDで受け取る方法をご紹介します。