Amazon Dash Button에서 Google Assistant에 요청을 보냈습니다 (피요 로그 연동)

소개



3주 늦은 정도의 재료이지만 Amazon Dash Button을 누르면 Google Assistant에 요청을 보낼 수 있는 서비스를 라즈파이에 만들었습니다. 동기 부여는

  • 육아 기록 앱 - 피요 로그 기록을 더 쉽게
  • 창고에 있던 가젯을 활용하고 싶습니다

  • 입니다. 똥 버튼 의 재발명에 가깝지만, 육아 기록이 아니어도 Google Assistant의 요청이면 무엇이든 사용할 수 있습니다. TV의 전원 ON/OFF, 라든지.


    데모
    시스템 개요






    만든 서비스는 eholic/dash-assistant 에 있습니다.

    준비한 것


  • (구장 된) Amazon Dash Button
  • (구장 된) Raspberry Pi 3 Model B (Buster)
  • Google 어시스턴트 연동 피요 로그

  • Amazon Dash Button은 이미 서비스가 종료되었지만 AWS IoT Button로 대체할 수 있다고 생각합니다.

    사전 준비



    파이썬 가상 환경


    python3 -m venv env
    env/bin/python -m pip install --upgrade pip setuptools wheel
    source env/bin/activate
    

    Google Assistant 설정



    Configure a Developer Project and Account Settings에 따라 Device Credentials를 라즈파이에 만듭니다. 작업 순서는 다음과 같습니다만, 거의 문서대로입니다.

    1. Actions Console 에 프로젝트 만들기
    2. Device registration에서 Credentials 다운로드
    3. Google APIs 에서 Google Assistant API 사용
    4. 라즈파이에 인증 라이브러리를 설치 (참고)
    (env) pip install --upgrade google-auth-oauthlib[tool]
    

    5.2에서 다운로드한 Credentials 파일에서 Device Credentials 만들기
    (env) google-oauthlib-tool --client-secrets path/to/client_secret_<client-id>.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
    # 指定されたURLを開くと表示されるauthorization codeを入力
    

    위의 단계는 ~/.config/google-oauthlib-tool/credentials.json를 만듭니다.

    테스트



    Google 어시스턴트 설정에 문제가 있는지 테스트합니다. (하지 않아도 됩니다.)
    # サンプルコードをダウンロード
    (env) pip install --upgrade google-assistant-sdk[samples]
    (env) cd env/lib/python3.7/site-packages/googlesamples/assistant/grpc
    # Google Assistant実行
    (env) python -m textinput --device-id "'$(uuid)'" --device-model-id 'Actions Consoleで作成したプロジェクトのModel Id'
    INFO:root:Connecting to embeddedassistant.googleapis.com
    : hello
    <you> hello
    <@assistant> Hi
    What can I do for you? 😀
    : ぴよログに寝たことの記録を頼みたい
    <you> ぴよログに寝たことの記録を頼みたい
    <@assistant> 19:40に「寝る」を記録しました
    : 
    # 成功!
    

    지금까지 라즈파이에서 Google Assistant에 요청을 보내고 피요 로그에 기록하는 곳까지 실현했습니다. 다음은 Amazon Dash Button의 클릭 이벤트를 포착합니다.

    Amazon Dash Button 설정



    Nekmo/amazon-dash 을 사용합니다.
    (env) sudo apt install tcpdump
    (env) pip install amazon-dash
    

    Dash Button의 WiFi가 설정되지 않은 경우



    Dash Button은 먼저 WiFi 설정을 해야 하지만 이미 Amazon 서비스가 종료되었으므로 Amazon 앱에서 WiFi 설정을 할 수 없습니다. 다만, Nekmo/amazon-dash 라는 연명 프로젝트가 있어, Hack your device 로 WiFi에 접속할 수 있습니다.

    라즈파이에 이어폰을 붙이는 것이 번거로웠기 때문에 macOS에서 실행했지만 다음 라이브러리가 필요했습니다.
    brew install portaudio iproute2mac
    (env) pip install pyaudio
    (env) sudo env/bin/amazon-dash hack
    



    또한 amazon-dash configure이 작동하지 않고 여기 스크립트 을 사용했지만 이 설명에 있는 대로 , 다음 수정이 필요했습니다.
    - r.content
    + r.content.decode('utf-8')
    

    Amazon 서버와의 통신 차단



    필수 여부는 모르겠지만 Dash Button이 Amazon 서버와 통신하지 않도록 라우터의 블록 목록에 Amazon 서버를 추가합니다.
    여기를 참조

    Dash Button의 MAC 주소 얻기


    # 通信を取得するためにはsudo権限が必要
    (env) sudo env/bin/amazon-dash discovery
    Welcome to Amazon-dash v1.4.0 using Python 3.7.3
    December 31 is the last day to block requests from your Amazon-dash buttons to Amazon servers. In 2020 your buttons can be bricked in an update from Amazon servers.
    The discovery command lists the devices that are connected in your network. Each device will only be listed once. After executing this command wait approximately 10 seconds before pressing the Amazon Dash button. After pressing the button, the Mac address of the button will immediately appear on the screen. Remember the address to be able to create the configuration file.
    # ここでDash ButtonをクリックするとMACアドレスが取得できる
    12:34:56:78:9a:bc (Amazon Device)
    

    지금까지 Dash Button의 MAC 주소를 얻을 수있었습니다.

    Dash Button과 Google Assistant 간의 협력



    eholic/dash-assistant 을 만들었습니다. clone하고 실행해보십시오.
    (env) git clone https://github.com/eholic/dash-assistant.git
    (env) cd dash-assistant
    (env) pip install -r requirements.txt
    (env) vi dashes.yml  # DashのMACとGoogle Assistantの対応付けをする
    (env) export DEVICE_MODEL_ID='Actions Consoleで作成したプロジェクトのModel Id'
    (env) sudo -E path/to/env/bin/python main.py
    Ready to press Amazon Dash Button
    2020-06-17 21:32:02,384 - root - INFO - 11:11:11:11:11:11 is pressed.
    2020-06-17 21:32:02,391 - root - INFO - ぴよログにおしっこの記録を頼みたい
    2020-06-17 21:32:05,806 - root - INFO - 21:30に「おしっこ」を記録しました
    2020-06-17 21:32:12,209 - root - INFO - 22:22:22:22:22:22 is pressed.
    2020-06-17 21:32:12,210 - root - INFO - ぴよログに寝たことの記録を頼みたい
    2020-06-17 21:32:15,686 - root - INFO - 21:30に「寝る」を記録しました
    2020-06-17 21:32:15,686 - root - INFO - 33:33:33:33:33:33 is pressed.
    2020-06-17 21:32:15,687 - root - INFO - ぴよログにうんちの記録を頼みたい
    2020-06-17 21:32:18,218 - root - INFO - 21:30に「うんち」を記録しました
    

    이상으로, Dash Button으로 육아 기록할 수 있게 되었습니다!

    좋은 웹페이지 즐겨찾기