1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Doorbellで自分を認識したら自動でSesame3を解錠させてみた(Python初挑戦)

Last updated at Posted at 2021-08-29

#やりたかったこと
Google Doorbellが発売されたので、カメラが自分の姿を認識したときにSesame3を自動で解錠させたかった

#困ったこと
・Sesame3がいまだにIFTTT連携してくれない(2021年8月現在)
⇒Python使ったことないのにpysesame3を使う羽目になった

#やろうとしたこと
・GoogleDoorbellが認識済みの人物をとらえると、Homeアプリから人物名入りの通知が届く
・Homeアプリから飛んできた「人物」入りの通知をトリガーとして、MacrodroidからTasker実行
・pysesame3を使ったpythonプログラムを実行してSesame3を解錠

#困ったこと2
・Android上でPythonを動かす環境の選択肢に最初に上がったのが下の2つ
###Pydroid
・プログラムは作れたものの、Taskerから実行させる方法がなかった
・Macrodroid経由でアプリを起動することはできるが、それならSesameアプリからでも同じ
###QPython
・なんか知らんけどpipからpysesame3をインストールできない
※ 正確にはPycryptodomeのインストールができない
⇒仕方ないのでWindowsにPython環境をインストールして、Pycryptodomeのディレクトリを移植
⇒それでも起動しない
※ 原因は、Windowsにインストールしたときにできるファイルがpyd(windowsDll)になってること
※ 当然WindowsDllなので、Androidにコピーしたところで動くわけがない

#解決策
・Termuxを使用(Taskerプラグインも使える)

#手順
1.AndroidにTermux、Taskerプラグインをインストール

2.TermuxにPythonをインストール
(参照:Androidスマホにtermuxからpythonをインストールする)

apt update
apt upgrade
apt install python

3.pipも自動でインストールされてるので、pysesame3をインストール

pip pysesame3

4.pysesame3を使って解錠するスクリプトを作成、ルートディレクトリに保存(unlock.pyとかにしました)
(参照:Sesame 3 APIを使う)

5.Termuxからルートディレクトリにアクセスするためのシンボリックリンクを作成
(参照:AndroidでLinuxターミナル!Termuxの初期設定)

termux-setup-storage

※ この時点で、以下のコマンドから解錠できます。

python storage/shared/unlock.py

6.TermuxでTaskerを使うためのディレクトリとシェルスクリプトを作成
(参照:【RPA】【MacroDroid】Termux の Tasker プラグインをMacrodroidで使う

mkdir -p ~/.termux/tasker
cd .termux
cd tasker
echo -n > unlock.sh

※ シェルスクリプトの編集はviを使いますが、なんかこの時点ではviが存在しなかったので、
エラーメッセージ通りにコマンド打てばインストールできました。
詳しい編集は上の参照記事から。中身自体は「python storage/shared/unlock.py」だけでいいと思います。

7.Macrodroidでマクロ作成
・トリガーに「通知が表示されたとき」、アプリは「Home」、テキストコンテンツに「含む」(人名)、を指定
・アクションに「アプリ」⇒「Taskerプラグイン」⇒「Termux:Tasker」⇒unlock.shを指定⇒使用変数は全部空白でOK

#成功した
Sesame3は早くIFTTTに対応しろ

#おまけ
pysesame3を作る記事の中の"MyScript"の部分が履歴の中身に表示されるので、

import sys #1行目に追加

device.unlock(history_tag=sys.argv[1])

Termux:Taskerでshを指定する時の引数に「hoge」を追加し、
unlock.shの中身を

python storage/shared/unlock.py $1

にすると、引数を順次読み込んで、Sesame3の履歴のほうに「hoge」が表示されます。
家族の名前ごとにトリガーしておくと、誰が帰ってきたのかわかるね!

#免責
どう考えてもセキュリティはガバガバなので責任は取りません。

#追記
sesame3の秘密鍵とUUIDの取得がちょっと面倒だったのでその手順(pythonインストール後)

  1. QRコードからテキストを取得
    2.クエリ部分をコピー(具体的にはUI?以降の部分すべて)
    3.以下のコマンドでクエリ復号
$ python //pythonモードに移行

>>>import urllib.parse
>>>urllib.parse.parse_qs('<copied_string>') //<>は不要

//出力されたもののうち、[sk]:の部分をコピー

4.以下のコマンドで秘密鍵とUUIDをそれぞれ取得

//pythonモード

>>> import base64
>>> base64.b64decode('<copied_string>')[1:17].hex() //出力されたものが「秘密鍵」
>>> base64.b64decode('<copied_string>')[83:99].hex() //出力されたものが「UUID」

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?