
【民泊自動化】予約システムとSwitchBotでつくる自動室温調整システム SwtichBot WebAPIの活用術
当ブログでSwitchBot推し活をしていたら、民泊の自動化システムの仕事が舞い込んできました。
民泊の予約システムとSwitchBotを連携させて、自動でエアコンや暖房器具の電源を入れたいという要求です。暑い夏。民泊運営で、お客さんのチェックインに合わせて施設の冷房をあらかじめ入れておく。そうすると、宿泊するゲストさんの印象がよくなること間違いなし。でも、チェックイン時間に合わせて民泊ホストさんがいちいち手動でスイッチをいれるなどという手間をかけたくはないですよね。リモートで民泊運営を考えているならなおのこと、こんなことは自動でやりたい。
そこで、快適民泊体験をホーム・オートメーション・システムとして自動化で実現してしまおう、というのが本日のお話です。当ブログで推し活しているSwitchBotのWebAPIを使って実現しました。
それでは参りましょう。
どんなことができるのか?
温暖化により昨今の日本の夏は暑くなる一方。避暑地なら夏はすこしはマシですが、逆に冬はめちゃくちゃ寒かったりします。そんな寒暖差の大きい日本で民泊を運営している気の利いた民泊ホストさんならゲストさんのために考かんがえませんか?ゲストさんがチェックインしたときに部屋の温度が快適な状態にしておいてあげたい、と。そうすれば、あなたの民泊のゲストさんにとっては素晴らしい民泊体験になるでしょう。
そこで、例えば、夏の部屋の温度が30℃を超えていたら、チェックインの時間に合わせてエアコンを25℃で電源を入れておく。冬の室温が、18℃以下だったら、ガスヒーターを25℃で電源を入れておく。こんなことを自動でやってくれるシステムを考えました。
温度とチェックイン時間だけを条件に動作すると、予約の入っていない日にも動作してしまうことになりますよね。そこで、民泊で使っている予約システム(予約コントローラー)と連携して、ちゃんと予約が入っている日のチェックイン時間にだけ動作させます。
そうすると、全自動で「チェックイン時の室温快適」状態を実現できるというわけです。
こんな高機能(?!)なシステム、導入するとそうとう高額になるだろうと思いませんか?そして、システム利用料が毎月かかってしまいそうなネタですよね?
でも、SwtichBotを使って作ると割と手軽に、そしてランニングコストもタダで実現できてしまうのです。

システム概要
それでは、「チェックイン時の室温快適」状態を実現する、今回のシステムのしくみについて見ていきましょう。
使うのはSwtichBotの製品、SwitchBotハブです。そして、SwitchBotハブを制御するために使うのが、Google が提供している、Google カレンダーとGoogle Apps Scriptです。
予約システムはBeds 24という民泊サイトコントローラーを使うことを想定しています。このシステムは、Googleカレンダーと連携して民泊予約をGoogleカレンダーに取り込むことができます。本システムで使うのはBeds24と連携した結果取り込まれたGoogleカレンダーの予約一覧です。
本システムは、Googleカレンダーに取り込まれた予約一覧のチェックイン時間をもとに、SwtichBotハブ2のリモコン機能を使うプログラムです。このプログラムの制御によりSwitchBotハブからリモコンコマンドが送出されます。それに応じて、エアコンなどの家電が自動的に動作するという仕組みです。
プログラム(すなわち、今回作ったシステムの本体)は「実行エンジン」であるGoogle Apps Script上で動くという構成になります。全体像としては、以下の図のようなイメージです。

SwitchBotハブとWeb APIについて
使用する機器としては、SwitchBotハブ2です。ご存じない方のためにここで簡単にご説明しましょう。SwitchBotというのは、スマートホームを実現する電気機器のブランドです。その製品群の中の一商品がハブ(ハブ2)です。
何をする機器なのかというと、ズバリ「赤外線リモコンの送信」をする機械です。
エアコンなどの家電製品は一般的にリモコンが同梱されています。リモコンからは目に見えない赤外線という光が出て、その光の中に情報を詰めて「電源オン」とか「温度アップ」といったコマンドを送出します。この赤外線コマンドを受けてどうさするのが家電製品です。
SwtichBotハブ2は、このような赤外線コマンドを「リモコンに代わって」送出してくれる機器です。
でもハブ2にはリモコンのようにボタンは付いていません。その代わり、WiFiやBluetooth経由でネットにつながり、スマホアプリから操作します。結果「リモコンに代わって」エアコンなどの家電製品の操作をしてくれるという機器がハブ2です。
SwitchBot製品群の素晴らしいところは、Web APIというプログラムから制御するための仕様が公開されているという点です。そのためプログラマーは、自作のプログラムからエアコンなどの赤外線リモコン対応家電を自在に操作できるようになります。
「ハブ」については、以前詳しく書いたので以下の記事も併せてお読みください↓
また、SwitchBotのWeb APIについては、以下の記事に詳しく書いております↓ご興味があれば、こちらも併せて御覧ください。
Google Apps ScriptとGoogleカレンダーAPIについて
もう一つの技術的なポイントとして、Google Apps Scriptというものを使っています。こちらは、Googleが提供しているサービです。Googleの様々なサービスを呼び出すプログラムを実行してくれる「実行エンジン」がGoogle Apps Scriptです。
Google Apps Scriptを使うと、例えば、Googleのスプレッドシートにデータを追加する、Gmailから不要なメールを削除する、など、Googleの他のサービスの仕組みをプログラムから呼び出すことができます。プログラマーが記述するプログラムはJavaScriptになります。
Google Apps Scriptでは、トリガーと言う機能により「定期実行」も可能です。これを使うと1時間おきとか、10分おきといった、定期的なタイミングでプログラムを実行することができます。
今回のシステムでは、GoogleカレンダーAPIを使って、Googleカレンダーに入っている民泊の予約を定期的にチェック。チェックイン時間(の指定「分」前のタイミング)だったら、SwitchBot Web APIを呼び出す、というような処理を行っています。
プログラムの構造とカスタマイズ
今回のプログラムは、コード上にカスタマイズしやすいような構造を作っています。
以下のコードは実際のプログラムの一部です。
上記の部分では、SwitchBot経由で操作したい家電(エアコン)のIDを指定しています。そして、部屋の温度をSwitchBotから取得して部屋の温度が「何℃以上」だったらエアコンを動かす、または、「何℃以下」だったら動かすというカスタマイズをできるようにしています。それも、複数の機器や複数の条件も実現できるよう「コンフィグレーション(設定)」を可能にしています。
家電(エアコン)はあらかじめSwitchBotアプリで登録しておきます。それらはSwitchBot Web API経由で確認ができるのですが、以下のようなコードを作成して、登録しているすべてのデバイスIDを「実行ログ」に表示できるようにしています。
また、今回のプログラムはバックグラウンドで定期的に実行するようにしています。そのトリガーを登録するため以下のようなコードを用意しています。このコードは初期設定時に一度だけ実行します。すると、定期的にトリガーが開始されます。
導入したい民泊ホストさんへ
上記では、コードの一部を示しましたが、全ソースコードが見たい場合は、書くコード画面の下にある「view raw」ボタンを押してみてください。今回作ったシステムのすべてのコードが確認できます。
したがって、民泊のオーナーさんが予約システムをGoogleカレンダーに連携していて、SwitchBotを使って同じようなことを実現したいと考えている場合、ソースコードはそのままお使いいただけます。つまり、Google Apps Scriptで新しいプロジェクトを作ってそこにコピペし、ちょっとした設定変更をすればスグに使えるのです。
ただ、そうは言っても設定やカスタマイズは少々複雑なのでプログラミングに関して腕に覚えがないと難しいかもしれません。
そんなときは、私「テック大家さん」に「お問い合わせ」からご相談ください。親切丁寧にサポートいたします。場合によっては少々お支払いをいただきながら、コンサル&開発を行います。お気軽にご連絡ください。
ディスカッション
コメント一覧
まだ、コメントがありません