エンジニアリングで出社を感動体験にする 〜 iOSのオートメーション機能とBluetooth 〜
iOS13から新たにショートカットアプリに「オートメーション」が追加されました。
オートメーション トリガーを設定し、あらゆるショートカットを自動で実行できます。
トリガー
トリガーとしては、以下が使用できるようです。
機内モード アラーム CarPlay おやすみモード 低電力モード Appを開く Watchワークアウト
ちょっと違いますね。
NFC
NFCを読み取ると実行できるというもの。すごく良さげなのですが、iPhoneX以降じゃないとだめなようです。 私はiPhone7でNFC対応端末なのですが、残念ながら動作せず(候補に出てきません)
到着
位置情報です。家なら良いですが、15Fにある弊社ビルだと位置情報だとちょっと。。。
時刻
出社時間はフレックス。
Wi-FI
候補上位です。しかし、Wi-Fiだと結構遠くから掴んじゃうんです。エレベターの中とか。
Bluetooth
今回はこれにしました。
オートメーションを実行するためにiPhoneにBluetooth接続する
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でスクリプト化しました。
下準備
事前にペアリングします。
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を開けることができます。出社してまずやること。
音楽をかける
弊社では会社のBGMにSpotifyを使っています。出社したら再生。
新しいツイートを作成
出社なう
体験として
RaspberryPiを置く場所や電波強度を調整することで、接続エリアを限定することができます。
これまで位置情報くらいでしかできなかったことが、柔軟に実現できます。接続する条件がプログラマブルである環境を手軽につくれるのはとても良い :D
盲点
Bluetooth接続をトリガーにする場合は確認メッセージをスキップできませんでした。。。
おわり
株式会社フォトシンスでは、一緒にプロダクトを成長させる様々なレイヤのエンジニアを募集しています。 hrmos.co
Akerun Proの購入はこちらから akerun.com