Google Doorbellで自分を認識したら自動でSesame3を解錠させてみた(Python初挑戦)
やりたかったこと
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インストール後)
- 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」
Author And Source
この問題について(Google Doorbellで自分を認識したら自動でSesame3を解錠させてみた(Python初挑戦)), 我々は、より多くの情報をここで見つけました https://qiita.com/happybeat46/items/00395c56a7a4d877ea8e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .