💡

LGTM されたらオフィスの電球をパーティー仕様にする

2022/04/17に公開

コロナ禍ということでリモートワークが増えていますが、会社によっては職種によって出社頻度が異なるケースが発生しているのではないでしょうか。

そうなると部署やチームによって人との距離が遠くなったり、場合によっては「エンジニア全然出社してないけどちゃんと仕事してるの?」と疑いをかけられているかもしれません。

そこで今回はオフィスにいる方々がエンジニアが働いていることを身近に感じられるようにする、画期的な装置を作りました。

作ったもの

GitHub の PR が Approve されると SwitchBot スマート電球がパーティー仕様で光り出すというものです。

https://www.youtube.com/watch?v=COoF51UWExk

注意:デモの都合で PR の Approve ではなく、issue のコメントをトリガーにしています。

用意するもの

手順

1. SwitchBot の API トークンを取得

アプリの「プロフィール > 設定」から「アプリバージョン」の項目を10回タップすると「開発者向けオプション」が表示されるようになります。

ゲームの隠し扉みたいですね。

参照:SwitchBotAPI#Getting Started

2. GitHub リポジトリのシークレットに SwitchBot トークンを設定

トークンが漏れると自由に SwitchBot を操作されてしまうので、直書きはせずに必ずシークレットに置きましょう。

誤って公開してしまった場合はアプリからトークンをリセットしてください。

3. 以下 YAML をコミット

name: Turn on the light
on:
  pull_request_review:
    types: [submitted]

jobs:
  turn-on:
    runs-on: ubuntu-latest
    steps:
      - name: Turn on the light
        uses: Doarakko/action-switchbot@main
        with:
          token: ${{secrets.SWITCHBOT_TOKEN}}
          deviceName: light AA
          command: turnOn

PR が Approve されたイベントをトリガーに SwitchBot の API にリクエストを送って、電球を明るくします。

4. SwitchBot スマート電球をパーティー仕様に

SwitchBot のアプリから、一度電球をパーティー仕様にした後にオフにします。
色を指定することなく API リクエストを送ると、前の色で電球がオンになります。

API で色を指定して電球を付けることもできるのですが、パーティー仕様の色をどのように指定すればいいのかわからなかったのでこのような対応をしています。

5. Let's party

これで職場も明るくなりますね。

SwitchBot の GitHub Actions を自作しました

action-switchbot

GitHub のイベントをトリガーに SwitchBot を操作できます。
デバイスだけではなくシーンを指定して実行することもできます。

あまり使い道が思いつかいのですがお役に立てれば幸いです。

注意:全てのデバイス、API リクエストには対応できていません。

おわりに

オフィスの電球をこっそり SwithBot の電球に差し替えて試してみたのですが、わずか1時間で撤去することになりました。

参考資料

Discussion