どこでも Amazon Dash Button を使えるようにしてみた
お家で、おふぃーすで、そして、お外でも Amazon Dash Button を利用できる環境を考えてみました。
無線LANルータや Raspberry Pi がなくても、どこでも Amazon Dash Button を使うことができます。
試しに、もういい加減話を切り上げたいから、Amazon Dash Buttonを押して、自分に電話が来たように振る舞ってみたの、どこでも使えるバージョンを構築してみました。
便利な仲間たち(動作確認環境)
- Androidスマホ(Nexus4, Nitrogen OS 7.1.2, root化済で動作確認。roo化必須です)
- Amazon Dash Button(好きなのを)
ポイント
- 無線LANルータの代わりは、AndroidスマホのWi-Fiテザリングを使います。
- Raspberry Piの代わりは、Androidアプリの Termux を使います。
- IFTTT - Webhooks と IFTTT - VOIP Calls を使ってVOIPコールを実現します。
Termuxのインストール
スマホ上でLinux環境を構築し、無線LANルータや Raspberry Pi の機能を代替えします。
Operation KiWi - スマホ上にLinux環境が作れるTermuxが最高に楽しいさん通りに Termux をインストールします。ssh のところまででOKです。リモート接続すると文字入力が簡単です。
termux-sudo で sudo できるようにし、その後 tcpdump が動作するか確認します。
$ cd
$ pkg update
$ pkg upgrade
$ pkg install curl
$ pkg install ncurses-utils
$ pkg install git
$ git clone https://github.com/st42/termux-sudo
$ cd termux-sudo
$ cat sudo > /data/data/com.termux/files/usr/bin/sudo
$ chmod 700 /data/data/com.termux/files/usr/bin/sudo
$ pkg install tcpdump
$ sudo tcpdump
”sudo tcpdump" を実行すると、一旦スマホ側でスーパーユーザーリクエストが表示されるので、
【選択を記憶する】→【許可】します。その後パケット情報が表示されれば問題ありません。
AndroidスマホでWi-Fiテザリングの設定をする
1.【設定】→【無線とネットワーク】→【もっと見る】→【テザリングとポータブルアクセスポイント】→【Wi-Fiアクセスポイントをセットアップ】で、「ネットワーク名」や「パスワード」などを設定して【保存】します。
ポータブルWi-Fiアクセスポイントを「ON」にします。
Amazonアプリで、Amazon Dash Button のWi-Fiアクセスポイントを、スマホのWi-Fiアクセスポイントに切り替える
- 一旦 Amazon Dash Button を無効にし、再セットアップします。
【アカウントサービス】→【Dash端末】→【端末を管理】→【Dash Button】→【このDash Buttonを無効にする】
【アカウントサービス】→【Dash端末】→【新しい端末をセットアップ】
「周辺のネットワーク」にスマホのWi-Fiアクセスポイントが表示されるので、それを選び、「パスワード」を入力します。
IFTTT で Amazon Dash Button が押されたら、VOIPコールするように設定する
「Voice Message」を入力します。日本語でも大丈夫です。
【IFTTT - Webhooks】→【Settings】で、「secret key」を確認します。
スマホだと画面が小さいので途中までしか表示されません。パソコンで確認するのがよいと思います。
Termuxの設定
(注意)スクリプトを実行するときは、ポータブルWi-Fiアクセスポイントが「ON」になっているのを確認してください。
- スクリプト find_button.sh を作成し、Amazon Dash Button の Macアドレスを調べます。
uepon日々の備忘録 - RaspberryPiでも消臭力してみたさんを参考にしました。
#!/data/data/com.termux/files/usr/bin/bash
tcpdump -i wlan0 -e | while read line
do
if [[ $line = *Broadcast,\ *ethertype\ ARP*Request* ]]; then
set -- $line
echo "found" $2
fi
done
$ chmod 700 ./find_button.sh
$ sudo ./find_button.sh
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
found XX:XX:XX:XX:XX:XX
- スクリプト fire_button.sh を作成し、Amazon Dash Button を押すと VOIPコールが来るようにします。 変数 adb_mac, ifttt_event_name, ifttt_secret_key を環境に合わせて変更します。
#!/data/data/com.termux/files/usr/bin/bash
adb_mac="XX:XX:XX:XX:XX:XX"
ifttt_event_name="XXXXXXXX"
ifttt_secret_key="XXXXXXXXXXXXXXXXXXXXXX"
tcpdump -i wlan0 -e | while read line
do
if [[ $line = *$adb_mac*Broadcast,\ *ethertype\ ARP*Request* ]]; then
set -- $line
echo "found" $2
curl https://maker.ifttt.com/trigger/$ifttt_event_name/with/key/$ifttt_secret_key
fi
done
```shell-session
$ chmod 700 ./fire_button.sh
$ sudo ./fire_button.sh
Amazon Dash Button を押すと VOIPコールが来ます。
気になる点
- スマホのWi-Fiテザリングを使うと、スマホのバッテリ消耗が激しいです。
- 【設定】からWi-Fiテザリングを「ON」にすると動作しますが、ウィジェットから直接だと動作しないです。
- 定番の Dash Button for Node などを使いたかったのですが、うまくいきませんでした。
という訳で、とりあえず下記アプリをインストールし、使いたいときだけ「ON」にして運用しています。
Termux:Widget add-on
テザリングのショートカット
WiFi OnOff
最後に
まだ不完全ですが、とりあえずお外でも Amazon Dash Button を使える環境はできたので、後はいろいろと応用していきたいと思います。
Author And Source
この問題について(どこでも Amazon Dash Button を使えるようにしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/somainit/items/4ddfe1461b4f8a58068c著者帰属:元の著者の情報は、元の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 .