Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon Dash Buttonの話

Amazon Dash Buttonの話

M3 Tech Talk #147

2年半ぶりに2度目のAmazon Dash Button利用でキュ キュット(洗剤)を買おうとしたら動かなかったのでIoTボタンにした話です

Takaki Hoshikawa

May 15, 2020
Tweet

More Decks by Takaki Hoshikawa

Other Decks in Programming

Transcript

  1. Amazon Dash Button 話
    星川 貴樹 (@oboenikui)
    M3 Tech Talk #147

    View Slide

  2. こと 発端
    2年半ぶりに2度目 Amazon Dash Button利用でキュ
    キュット(洗剤)を買おうとしたら動かなかった

    View Slide

  3. こと 発端
    https://www.amazon.com/gp/help/customer/display.html?nodeId=201706050
    2019/8/31をもって、Dash Buttonデバイスで商品 購入ができなくなりました。

    View Slide

  4. 1回押されただけで捨てられる
    キュキュットDash Buttonが
    かわいそう!!!!!!!!

    View Slide

  5. Amazonから 追い打ち
    https://www.amazon.com/gp/help/customer/display.html?nodeId=201706050
    2019/12/31に、あなた ボタン 自動的に登録解除されリセットされる で操作 必要 ありません。

    View Slide

  6. Dash Buttonがリセットされると……
    Wi-Fi AP情報が削除される
    → IoTボタンとして使えなくなる
    → Amazonアプリから設定もできなくなる でWi-Fi機能を持ちながら無限
    プチプチ程度 価値 ボタンに成り下がる
    → や い!!!

    View Slide

  7. 期限 !?!?!?!?!?
    https://www.amazon.com/gp/help/customer/display.html?nodeId=201706050

    View Slide

  8. \(^o^)/

    View Slide

  9. 本当に使えなくなったか確認
    Python amazon-dashを利用
    or
    $ pip install -U amazon-dash
    $ pip3 install -U amazon_dash

    View Slide

  10. 本当に使えなくなったか確認
    $ sudo amazon-dash discovery
    MACアドレス

    View Slide

  11. \(^o^)/
    検出できた!!!

    View Slide

  12. 補足:セットアップしていない場合
    2016年5月以前に製造されたDash Button 場合、セットアッププロセス中に
    超音波信号でWi-Fi情報を受信するところでバッファオーバーフローを発生さ
    せられるため、これを悪用してWi-Fi セットアップができる
    利用に Wi-Fiを搭載したLinuxマシンとイヤホンが必要
    https://docs.nekmo.org/amazon-dash/rescue.html

    View Slide

  13. インターネットから遮断する
    インターネットに接続されていると設定がリセットされる恐れがある で、ルー
    タ 設定で遮断する
    (家庭用ルータでもペアレンタルコントロール的な機能でできそう)

    View Slide

  14. Dash ButtonでSlack通知する
    (n番煎じ)

    View Slide

  15. Dash ButtonをIoTボタンにする原理
    Dash Button ボタンが押されると
    1. 起動
    2. Wi-Fi接続 & インターネット接続
    3. Amazon サーバにデバイス情報を送信 (= 注文処理)

    View Slide

  16. Dash ButtonをIoTボタンにする原理
    Dash Button ボタンが押されると
    1. 起動
    2. Wi-Fi接続 & インターネット接続
    3. Amazon サーバにデバイス情報を送信 (= 注文処理)
    インターネット接続をブ
    ロックしたため

    View Slide

  17. Wi-Fi接続をトリガーとして処理する
    Wi-Fi接続後、ルータ MACアドレスを知るため
    にARP要求をブロードキャストする
    ブロードキャストパケットを監視するサーバを
    LAN
    内に建てておき、Dash Button MACアドレス
    情報を持つARP要求 受信をトリガーとして特定
    処理をする
    図 引用元:https://www.itbook.info/study/p73.html

    View Slide

  18. Python amazon-dashで監視
    Dash Button トリガーアクションとし
    て主要な処理が実装されている
    以前 Node.js dash-buttonが主流
    だったようだが、今 メンテされていない
    & amazon-dash推しになってる

    View Slide

  19. config file
    settings:
    interface: eth0
    devices:
    0C:47:C9:98:4A:12: # discoveryコマンドで調べたMACアドレス
    name: Slack
    url: 'https://hooks.slack.com/services/XXXXX/XXXXXX/XXXXXXX'
    method: post
    content-type: json
    body: '{"text": "hello"}'
    0C:47:C9:98:4A:13:
    ...

    View Slide

  20. デプロイ
    Docker 場合
    systemd 場合 (Raspberry Piで動かすならこっち)
    $ docker run -it --network=host \
    -v
    :/config/amazon-dash.yml \
    nekmo/amazon-dash:latest \
    amazon-dash run --ignore-perms --root-allowed \
    --config /config/amazon-dash.yml
    $ sudo cp /etc/amazon-dash.yml
    $ sudo python3 -m amazon_dash.install
    $ sudo systemctl enable amazon-dash && sudo systemctl start amazon-dash

    View Slide

  21. 動作
    押してから2秒くらいでSlack投稿される
    Dash Button 仕様上連打 できない
    ಈը

    View Slide

  22. まとめ
    n番煎じ Dash Button活用法について話しました
    余ったDash Buttonがある人 活用してみてください

    View Slide