Raspberry Pi 3 Model B+にamazon-dashをインストール

## 目的

* 昔買っていたAmazon Dash Buttonを発掘した。
* Raspberry Piもあるので何かしたい。

## 動作環境

* Raspbian
    - Version 9.4
    - Kernel version 4.14
* Raspberry Pi 3 Model B+
* Nekmo/amazon-dash v1.3.0

## 事前準備

[MacからRaspberry Pi 3 Model B+にSSHで接続する](https://qiita.com/mitsuaki1229/items/692cf9a522d0c1f31e03)

## 手順

### Amazon Dash Buttonをセットアップする

amazon.co.jpの[Dash Buttonをセットアップする](https://www.amazon.co.jp/gp/help/customer/display.html?nodeId=201746340)から、

> 次回の設定用に、Wi-Fiのパスワードを保存しておきたい場合は、チェックボックスをオンにしてください。〜

まで設定し、商品を選択画面右上のxボタンをタップし、セットアップを終了する

<img src="https://qiita-image-store.s3.amazonaws.com/0/25578/6fa6a7bc-5b1c-a508-89ca-b279c9b5e71c.jpeg" width="300">
<img src="https://qiita-image-store.s3.amazonaws.com/0/25578/a5ef6e42-0cb3-42a1-c218-08d6ef88a59a.jpeg" width="300">

> Dash Button端末を使って再注文する商品を選択します。〜

からの手順は設定しない、設定するとボタンを押した時に注文されるようになってしまう。

### Amazon Dash Buttonからの通知を検出するOSSのインストール及び設定

Amazon Dash Buttonからの通知を検出するため、[Nekmo/amazon-dash](https://github.com/Nekmo/amazon-dash)をインストールする

#### pipのインストール

1. Python 3.4未満だったため、pipを別途インストールする

    ```
    $ python -V
    Python 2.7.13
    ```
1. パッケージの最新化を実施する

    ```
    $ sudo apt-get update
    $ sudo apt-get upgrade
    〜省略〜
    Do you want to continue? [Y/n] y
    〜省略〜
    ```
1. pipのインストール

    ```
    $ sudo apt-get install python-pip
    〜省略〜
    Do you want to continue? [Y/n] y
    〜省略〜
    ```
1. インストールした後pipをアップデートするとなんかエラーが出るようになるが

    ```
    $ sudo pip install --upgrade pip
    $ pip
    Traceback (most recent call last):
      File "/usr/bin/pip", line 9, in <module>
        from pip import main
    ImportError: cannot import name main
    ```
1. 削除すると動くようになる。。謎。。

    ```
    $ sudo apt-get remove python-pip
    pip -V
    pip 18.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
    ```

#### [Nekmo/amazon-dash](https://github.com/Nekmo/amazon-dash)のインストール及び設定

1. pipでamazon-dashをインストールする

    ```
    $ sudo pip install amazon-dash
    $ amazon-dash --version
    You are running Amazon-dash v1.3.0 using Python 2.7.13.
    This is the latest release
    Installation path: /usr/local/lib/python2.7/dist-packages/amazon_dash
    Current path: /home/pi
    ```
1. スクリプトの実行

    ```
    $ sudo python -m amazon_dash.install
    Executing all install scripts for Amazon-Dash
    [OK] config has been installed successfully
    [OK] systemd service has been installed successfully
    ```
1. Amazon Dash ButtonのMACアドレスを検出する(下記コマンド実行後にAmazon Dash Buttonのボタンを押す)

    ```
    $ sudo amazon-dash discovery
    $ xx:xx:xx:xx:xx:xx (Amazon Device)
    ```

1. configを編集し、検出したAmazon Dash Buttonの設定を追記する

    ```
    $ sudo nano /etc/amazon-dash.yml
    ```
    ```:amazon-dash.yml
    # amazon-dash.yml
    # ---------------
    settings:
      delay: 10
    devices:
      xx:xx:xx:xx:xx:xx:
        name: Hello World
        user: pi
        cmd: echo "Hello World" >> HelloWorld.log
        cwd: /home/pi
    ```

1. サービスを起動及び自動起動を設定する

    ```
    $ sudo systemctl start amazon-dash
    $ sudo systemctl enable amazon-dash
    Created symlink /etc/systemd/system/multi-user.target.wants/amazon-dash.service → /lib/systemd/system/amazon-dash.service.
    ```

1. Amazon Dash Buttonのボタンを押す
1. 設定が動作しているか確認する

    ```
    $ cat HelloWorld.log
    Hello World
    ```

## 雑多

* Amazon Dash Buttonの設定にスマートフォンが必要なことを知った。
* [Nekmo/amazon-dash](https://github.com/Nekmo/amazon-dash)を利用する際、dockerを利用しようとしたが、Raspberry Pi 3B+でDocker Hubから落としてきたimageを利用すると、ARMの影響か、 `standard_init_linux.go:190: exec user process caused "exec format error”` が出るのでそのままでは使えなく、[Nekmo/amazon-dash](https://github.com/Nekmo/amazon-dash)にあるDockerファイルから自前でビルドしようとしたが、依存しているpython:3.7-alpineのイメージも自前でビルドしないとならないっぽく、今回は諦めた。
* Amazon Dash Buttonタップ時、"Dash Buttonの商品を選択してください"と記載されたアプリ通知とメール通知が来るのだが、メール通知をオフにする方法がわからない。。

<img src="https://qiita-image-store.s3.amazonaws.com/0/25578/676b4fa4-ecc6-7dfe-955b-51325fa9ab10.jpeg" width="300">

## 参考

* [Amazon Dash ButtonをただのIoTボタンとして使う](https://qiita.com/jsoizo/items/3b8bba4160f41aef20f4)
* [pip install --upgrade pip (10.0.0) 後の奇妙な挙動について](http://icchy.hatenablog.jp/entry/2018/04/17/064443)