2021年8月22日日曜日

【SESAMEサイクル(SESAMEシリーズ)】 NFCタグをエミュレートするアプリをつくった (Android)


セサミのNFCタグ機能を実際のタグなしで自由に発動させたくて、アプリを作った話。

ページ下部よりAPKダウンロードできます



 【まえがき】

うちでは玄関のセサミ3は前回記事で書いたGASで運用していてNFCタグ機能は使っていないのだけど、最近セサミサイクル(ママチャリ)を導入したことでうちにもNFCタグの出番がやってきた。

さっそくハンドルラバーの側面にタグを貼りつけ(ちょうど円くてピッタリ)、快適さをテストしたところ、どうも本体との接続に時間がかかった場合に解錠が作動せずセサミアプリの起動のみで終わってしまうことがある模様。


ただでさえAndroidはNFC読み取りにロック解除が必要なため、これでは一連の動作が

  • 自転車の手前でスマホを取り出す
  • スマホロックを解除
  • NFCタグにかざす
  • スタンドを外す
  • 自転車にまたがってスマホを見ながら解錠を待機(ダメなら手動で開ける)
  • スマホをしまい、Go!

となってしまい、スマートさにかける印象だった。

普通の物理鍵なら、これで済む話。
  • (たまに鍵を探す)
  • 鍵を取り出す
  • 鍵を挿す
  • スタンドを外し、Go!

ウィジェット運用も考えたけれど、たまの自転車に乗る時のために常に存在感を放たれてもちょっと…邪魔かも…ということで却下となった。


【対策を思案】

当初、全く別のアプローチ(Termux + pysesameos2)で途中まで進めてしまったが、Bluetooth関連の制約(?)でAndroid上ではうまく実装できず断念。
次にsesame_bridgeを検討したものの出先では使えなさそうだったためこちらも断念した。(ローカルループバックアドレスを使えば可能と後で知る)

ただ収穫はあり、sesame_bridgeのソースコードを参考に(というか丸パクリ)すればNFCタグインテントをエミュレートするアプリの作成はさほど難しくないのでは?と思い至り、急遽開発環境を整えた。(Androidアプリ初挑戦)



そして出来上がったのがこちら。

【アプリ概要 - EmuNFCtag】

初期設定を済ませると、次回から起動するだけでセサミのNFCタグ動作をエミュレートする単機能アプリ。SESAME3等にも使用可能。





【使用方法】

使い方としては、Taskerなどのマクロアプリを用いての「好みのトリガー → アプリ新規起動」という運用を想定。


実際の使用例

1. 環境に合わせて、EmuNFCtagを適切に設定しておく。

(自分の環境では4秒間隔、2回リトライに落ち着いた。)


2. MacroDroidでマクロ作成。(一例)





【解説】

・トリガー

可能な限りシンプルかつ誤操作の恐れが少ないものを考えて設定。
画面操作は個人的にめんどうなので、画面を見る必要がないものにしてみた。

・アクション

なぜか稀にサイクルとの接続が BleLogining で止まってしまうことがあったため、安定性重視でセサミアプリも毎回新規起動させることにした。こうしてからは今のところ発生していない。

すぐさまポケットにしまうことを想定し、画面を消すようにしている。


【使用感】

自分の環境では、これでかなり快適になった。

動作としては、

  • 自転車へ向かう良きタイミングでスマホを取り出す
  • スマホロックを解除
  • ジェスチャートリガー
  • スマホをしまう
  • スタンドを外し、Go!


箇条書きだと動作数こそなお物理鍵に劣るものの、実際には快適感が比ではない。タイミングを掴んだら大抵は自転車の数歩手前で、遅くてもハンドルを握ったくらいで作動してくれるようになった。

【SESAME 3での使用】

このアプリはもちろんセサミ3(セサミ4)に使用することもできる。ただリトライするとトグルで逆戻りしかねないため、一発を遠くから実行するという使い方になると思う。

たとえば、Wi-Fiモジュール+玄関先に貼り付けたNFCタグで運用しているのであれば「玄関前での数秒の待機がストレス」という問題の解消には使えそうだ。(ウィジェットとどちらが便利かは個人差)


【APKファイル配布】

こちらからダウンロードできます。



インストール時の注意

提供元不明アプリのインストールを許可してください。
Playプロテクトにブロックされる場合がありますが、構わずインストール可能です。
(不安な方はウイルスチェックしてください。)



免責事項

本アプリ起因のいかなる損害にも作者は責任を負いません。動作検証は所有する実機でのみ行っています。

謝辞

上述の通り、核心部は sesame_bridge (https://github.com/ode1022/sesame_bridge) のコードを拝借しています。作者のode1022さんに御礼申し上げます。


お断り

素人が適当につくったアプリで、とりあえず使えるものができたと自己満足している状態のため、サポート等はおそらくできません。もし問題点があればご報告ください。


0 件のコメント:

コメントを投稿

【SESAMEサイクル(SESAMEシリーズ)】 NFCタグをエミュレートするアプリをつくった (Android)

セサミのNFCタグ機能を実際のタグなしで自由に発動させたくて、アプリを作った話。 ( ページ下部より APKダウンロードできます )  【まえがき】 うちでは玄関のセサミ3は前回記事で書いたGASで運用していてNFCタグ機能は使っていないのだけど、最近セサミサイクル(ママチャリ)...