エンジニアリングで出社を感動体験にする 〜 iOSのオートメーション機能とBluetooth 〜

iOS13から新たにショートカットアプリに「オートメーション」が追加されました。

www.apple.com

オートメーション
トリガーを設定し、あらゆるショートカットを自動で実行できます。

トリガー

トリガーとしては、以下が使用できるようです。

機内モード
アラーム
CarPlay
おやすみモード
低電力モード
Appを開く
Watchワークアウト

ちょっと違いますね。

NFC

NFCを読み取ると実行できるというもの。すごく良さげなのですが、iPhoneX以降じゃないとだめなようです。 私はiPhone7でNFC対応端末なのですが、残念ながら動作せず(候補に出てきません)

到着

位置情報です。家なら良いですが、15Fにある弊社ビルだと位置情報だとちょっと。。。

時刻

出社時間はフレックス。

Wi-FI

候補上位です。しかし、Wi-Fiだと結構遠くから掴んじゃうんです。エレベターの中とか。

Bluetooth

今回はこれにしました。

オートメーションを実行するためにiPhoneBluetooth接続する

RaspberryPi から iPhoheに接続できるようにします。

環境

pi@raspberrypi:~ $ sudo apt-get install bluetooth bluez pi-bluetooth
pi@raspberrypi:~ $ sudo apt-get install gnome-bluetooth

gnome-bluetoothが入ってないと通信に失敗することがありました

 sudo apt-get install expect

bluetoothと関係ないですが、使用するbluetoothctlが対話形式のプログラムなので、expectでスクリプト化しました。

下準備

事前にペアリングします。

  1. scanして対象のmacアドレスを確認
  2. 対象をしてして pair(ここでiPhone側もペアリングを受諾します)
  3. ホワイトリストにいれるため trust
pi@raspberrypi:~ $ bluetoothctl
Agent registered

[bluetooth]# scan on

Discovery started
[NEW] Device XX:XX:XX:XX:XX:XX iphoneの名前

[bluetooth]# pair XX:XX:XX:XX:XX:XX

Attempting to pair with XX:XX:XX:XX:XX:XX
[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
Request confirmation
[agent] Confirm passkey XXXXXX (yes/no): yes

[bluetooth]# trust XX:XX:XX:XX:XX:XX

[CHG] Device XX:XX:XX:XX:XX:XX Trusted: yes
Changing XX:XX:XX:XX:XX:XX trust succeeded

iPhoneに接続してすぐに切断するスクリプト

前述したように、bluetoothctl が対話型なので expectを使います。 macアドレスはペアリングで使ったものを使用します。

#!/bin/sh

expect -c "
set timeout 5000
spawn /usr/bin/bluetoothctl
expect \"bluetooth\"
send \"connect XX:XX:XX:XX:XX:XX\n\"
expect \"Connection successful\"
sleep 3
send \"disconnect XX:XX:XX:XX:XX:XX\n\"
expect \"Successful disconnected\"
send \"quit\n\"
"

実行するショートカット

Akerunを開けるショートカット

APIでAkerunを開けることができます。出社してまずやること。

developers.akerun.com

音楽をかける

弊社では会社のBGMにSpotifyを使っています。出社したら再生。

developer.spotify.com

新しいツイートを作成

出社なう

体験として

RaspberryPiを置く場所や電波強度を調整することで、接続エリアを限定することができます。

これまで位置情報くらいでしかできなかったことが、柔軟に実現できます。接続する条件がプログラマブルである環境を手軽につくれるのはとても良い :D

盲点

Bluetooth接続をトリガーにする場合は確認メッセージをスキップできませんでした。。。

f:id:photosynth-inc:20191224224527j:plain:w300

おわり

株式会社フォトシンスでは、一緒にプロダクトを成長させる様々なレイヤのエンジニアを募集しています。 recruit.jobcan.jp

Akerun Proの購入はこちらから akerun.com