ガチャつくブログ

IT系のお勉強のために、やってみたことをアウトプットしていきます。

MENU

Power Automate でガチャつく - 会議中はONAIRを点灯させて、終わったら消灯を自動化してみた -

f:id:tmt-tty:20200602225410p:plain

はじめに

ども、とみた(@_tamitom)です。

 

今回は、在宅ネタです。家で仕事をしていると、オンライン会議中でも家族はお構いなしに話しかけてくるのでw

会議中はONAIRライトを点灯させて、会議してますアピールをします!!!

 

ガチャつき方

まず、必要なモノです。

  • ONAIRライト
    これが無いと始まりません、意外に安いかなと思いました。

  • スマートプラグ
    ONAIRライトのON/OFFはスマートプラグで制御します。今回はIFTTTでON/OFFの命令を出すので、IFTTT対応のモノが必要です。SwitchBotの製品にしました。
    ※実は、自宅にいくつかスマートプラグあったのですが、Smart Lifeはいつの間にかIFTTTとの連携ができなくなってました(泣)

  • Power Automate
    Microsoftのサービスの一つで、アプリやサービス間の連携を自動化させるツールです。Office365の他サービスとの連携が容易です。今回は会議情報をOutlookの予定表から取ってくるので、必要です。

    docs.microsoft.com

  • IFTTT
    Power Automateと同じ部類のサービスです。Power Automateでは、スマートプラグの制御ができないため、IFTTTも使用します。

    ifttt.com

 

早速設定をしてきます。

スマートプラグの初期設定や、各種サービスのアカウントは取得できている前提で進めていきます。

スマートプラグとONAIRライトは接続しておきます。

 

まず、IFTTTからです。

Create画面で、"This"をクリックします。

f:id:tmt-tty:20200602220329p:plain

 

webhookを検索して、クリックします。

f:id:tmt-tty:20200602220404p:plain

 

triggerは一つしかありませんので、"Receive a web request をクリックします。

f:id:tmt-tty:20200602220449p:plain

 

"Event Name"に任意の名称を付け、"Create trigger"をクリックします。

f:id:tmt-tty:20200602220528p:plain

 

続いて、"That"をクリックします。

f:id:tmt-tty:20200602220702p:plain

SwitchBotを検索して、クリックします。

※他のIFTTT対応スマートプラグを使う場合は、それを選択してください。

f:id:tmt-tty:20200602220741p:plain

 

"Turn Plug on"をクリックします。

f:id:tmt-tty:20200602220840p:plain

 

初回はログインなどが必要になります。

ログインが済んでいれば、自分のスマートプラグが表示されるはずですので、"Create action"をクリックします。

f:id:tmt-tty:20200602220915p:plain

 

"Finish"をクリックします。

f:id:tmt-tty:20200602221020p:plain

 

次の画面でWebHookのロゴをクリックします。

f:id:tmt-tty:20200602221107p:plain

 

"Documentation"をクリックします。

f:id:tmt-tty:20200602221133p:plain

 

WebHookで動作させるためのURIなどが表示されます。

先程設定したEvent Nameを入力し、"Test It"をクリックします。

f:id:tmt-tty:20200602221156p:plain

設定が正しければ、スマートプラグがONになり、ONAIRライトが点灯するはずです。

 

続いて、スマートプラグをOFFにするレシピも作っておきます。

上記手順の繰り返しですが、変わる点は、WebHookのEvent Nameを変える(ONAIR_OFFなど)、SwitchBotの処理を"Turn Plug Off"にする所です。

 

続いて、Power Automate の設定をしていきます。

作成したフローは以下の通りです。

 

まず前半部分ですが、"予定しているイベントが間もなく開始されるとき"というトリガーを使用します。ルックアヘッドタイムでイベントの何分前に開始するか指定できます。

続いての変数部分は、ONAIRライトを点灯する時間=会議時間としたいので、その計算をしています。

ticks関数を使って、会議の開始時刻、終了時刻をナノ秒に変換します。その後、終了時刻から開始時刻を引いて、秒に直しています。

具体的な式は、

開始時刻の変換
ticks(triggerBody()?['start'])
 
終了時刻の変換
ticks(triggerBody()?['end'])
 
終了時刻-開始時刻/10000000
div(sub(variables('終了時刻変換'),variables('開始時刻変換')),10000000)

f:id:tmt-tty:20200602222213p:plain

 

後半部分は、IFTTTのWebHookへPOSTする処理となります。

まず、ONAIRライトを点灯させます。IFTTTで確認したURIを入力します。

その後、前半部分で計算した会議時間を待ち時間とします。

最後に、ONAIRライトを消灯させるためのPOSTをします。

f:id:tmt-tty:20200602223601p:plain


これで完成です!!

 

終わりに

結構簡単にいけるかなぁと思ってたんですが、会議時間を取得する部分は結構悩みました。予定表情報に入ってないのかよ、、、とか、世の中にはDateDiff関数という便利な関数があるらしいのですが、PowerAutomateでは使えない、、、とか。色々調べて、ticks関数に辿り付きました。

 

なんとかできた!

が、、、運用してみたところ、連続したイベントが入っているとON/OFFのタイミングが前後してしまい、上手く動かない事があるので、どこかに待ち時間を入れるなど、まだ改善が必要です(泣)