Raspberrypi로 Amazon DashButton 처리

개시하다


안녕하세요.
저는 미스 미디어 사업부의 전대입니다.
주로 스위프트와 Objectiver-C를 위주로 개발했고, 현재 아마존 대시버턴은 자신의 마음속에 화제가 되기 때문에 환경 구축을 총괄해 봤다.

하고 싶은 일

  • 동일한 무선 Wifi 환경에서 Amazon DashButton
  • 을 누르는 래칫 휠 처리
  • Mac만으로도 쉽게 완성할 수 있지만 여러 사람이 디버깅을 하고 싶어 서버를 만들기로 했다
  • 준비물


    RaspberryPi

  • 랩베리피
  • SD 카드(실러캔스 파이가 포함된 OS 이미지)
  • 모니터 및 HDMI 케이블
  • USB 케이블(고무용 전원)
  • Wifi dongle(lazupi3이면 w가 필요 없음)
  • 와이파이 동글은 쉽게 설정할 수 있는BUFFALO WLI-UC-GNM
  • 사용
  • 예전에 마음대로 산 고무사탕을 인식하기 힘들기 때문에 간단한 설정을 추천합니다.
  • AmazonDashButton

  • 적당한 Amazon DashButton
  • 사기

    Amazon DashButton 설정

  • 와이파이 설정 후 주문 화면에서 취소 시 눌러도 주문 안 함
  • 와이파이가 애플파이로 연결될 예정이었죠
  • 참조: Amazon 주문 없이 IoT 버튼으로 사용할 수 있는 방법
  • RasberryPi 환경 구축

  • 공식: https://www.raspberrypi.org
  • 절차.


    지도 방침

  • 공식 절차: https://www.raspberrypi.org/documentation/installation/installing-images/mac.md
  • SD 카드 형식

  • SDFormater를 정식으로 사용했지만 Mac의 경우 DiskUtility도 가능
  • 이미지 다운로드


  • https://www.raspberrypi.org/downloads/raspbian/
  • 이번에는 Rasbian
  • 을 사용합니다.
  • 자바와python이 필요 없는 개발 환경!NOOB도 괜찮을 것 같아요
  • 다운로드하면 토렌트의 속도가 절대 빠르다
  • 자신의 환경에서 20분 정도 지나면 끝난다
  • 12시간 예상 ZIP 다운로드...
  • SD 카드로 파일 전송

  • 다운로드 후 동결해제
  • 압축 해제 후2016-11-25-raspbian-jessie.img 출력
  • SD 카드 설치 위치 조회

    $ diskutil list
    
    /dev/disk2 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     FDisk_partition_scheme                        *15.8 GB    disk2
       1:                  Apple_HFS SDCARD                  15.8 GB    disk2s1
    
    자신의 환경에서 disk2SD 카드 제거
    제거하지 않으면 오류 발생...
    $ diskutil unmountDisk /dev/disk2
    Unmount of all volumes on disk2 was successful
    
    마지막으로 dd 명령으로 SD 카드로 파일 전송
    전송은 30분 가까이 걸리니 참을성 있게 기다리세요...
    $ sudo dd 2016-11-25-raspbian-jessie.img of=/dev/disk2 bs=1m
    4169+0 records in
    4169+0 records out
    4371513344 bytes transferred in 2109.358009 secs (2072438 bytes/sec)
    
    신중히 보기 위해, 전달되었는지 확인
    $ diskutil list
    /dev/disk2 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     FDisk_partition_scheme                        *15.8 GB    disk2
       1:             Windows_FAT_32 boot                    66.1 MB    disk2s1
       2:                      Linux                         4.3 GB     disk2s2
    
    괜찮아 보여요.

    초기 설정

  • SD 카드, Wifi dongle, HDMI 케이블 등을 사용한 후면 전원 연결
  • SSH 연결도 가능하고 CUI 사용도 가능하지만 GUI 사용이 빠르기 때문에 설치가 간단하다
  • 언어·지역 환경

  • 설정>RaspberryPi의 설정에서 SetLocale 및 SetTimezone의 설정>재가동
  • 키보드가 일본어로 설정되지 않으면 적당하지만 몇 번 설정하면 설정된다
  • 무선 네트워크 설정

  • 데스크탑 오른쪽 상단의 네트워크 설정에서 손쉽게 수행
  • apt-get

  • 이제 터미널에서 작업
  • 공식 설정 방법에 따라 최신 업데이트
  • $ sudo apt-get update
    $ sudo apt-get upgrade
    
  • 기본 편집이 미묘해서 저는vim
  • 에 가입했습니다.
    $ sudo apt-get install vim
    

    노드 환경의 구축

  • 이번엔 dash-button라는 npm로 처리하고 싶어요
  • https://github.com/ide/dash-button
  • 업데이트 로그


    기본적으로 톱니바퀴에 설치된 노드 버전은 v0입니다.10.29 낡아서 최신
  • dash-button을 사용할 때 v4 이상이 아니면 모듈에 의존하면 해결할 수 없음
  • 앱-get에서 최신 nodejsnpm를 설치할 수 없음, 설치 후 대응
  • 참조: Ubuntu 최신 노드입니다.순조롭게 js 설치
  • npm 설치

    $ sudo apt-get install -y npm
    
    $ sudo npm cache clean
    $ sudo npm install n -g
    
    $ sudo n stable
    
    $ node -v
    v7.2.1
    
    $ sudo apt-get purge -y nodejs npm
    
    최신 노드입니다.js를 사용할 수 있습니다

    dash-button 설치

    $ mkdir dash
    $ cd dash
    
    # dash-buttonがつかうパケットキャプチャのライブラリをいれます
    dash$ sudo apt-get install libpcap-dev
    
    dash$ npm install --save dash-button
    

    dash-button 동작 확인


    package.제이슨에 sudo npm run scan라고 쓰면 아마존 다시번튼을 찾아가세요.
    {
      "scripts": {
        "scan": "dash-button scan"
      }
    }
    
  • 찾기 시작하면 Amazon Dash Button 버튼을 누르면 MAC 주소
  • 를 주울 수 있을 거예요.
    dash$ sudo npm run scan
    
    > @ scan /home/pi/dash
    > dash-button scan
    
    Scanning for DHCP requests and ARP probes on wlan0...
    Detected a DHCP request or ARP probe from 34:d2:70:31:08:92
    
  • 이후 다시-button의readme를 참고하여 처리를 실시하면 단추를 걸 수 있습니다!
  • 좋은 웹페이지 즐겨찾기