IoT 버튼으로 Amazon Dash Buton을 사용하는 세 번째 방법: DHCP 서버를 통한 시작 스크립트 설정

아마존 대시버튼은 버튼만 누르면 상품이 배달되는 콘셉트 장치다.몸은 작지만 무선 LAN 네트워크를 별도로 연결해 아마존에게 HTTPS 요청을 할 수 있다.

직접 만든 IoT 버튼으로 시도한 것이 반년 전쯤 유행했다.인터넷에 검색하면 버튼을 누르면 슬랙에서 발언하는 용법이 많다.
그러나 이 단추가 눌린 것을 감지하는 메커니즘 중 대부분은 다음과 같은 두 가지 중 하나를 사용한다.
  • ARP, DHCP 등 브로드캐스트 패킷을 다른 기기를 통해 포착하는 지침

  • hortinstein/node-dash-button 등 기존의 물건은 대체로 이 방침
  • 방송 모드에서 모든 패키지를 포착하는 모드도 이 파트너라고 할 수 있겠지
  • DNS 서버에 가짜 기록을 등록하고 다른 기기에서 아마존으로 보낸 HTTPS 요청을 훔치는 방침
  • 다만, 어떤 방법이든 다른 기계가 필요하기 때문에 나는 개인적으로 이것이 일종의 빙빙 돌려서 하는 방법이라고 생각한다.대시 버튼과 무선 LAN 라우터 사이에 통신이 구축되어 있기 때문에 무선 LAN 라우터에서 프로그램을 시작하는 것이 가장 직접적이다.다른 기계에 평소 움직이지 않는 수호 프로세스를 만들면 한 번 놀면 끝난다.
    이 자료는 무선 LAN 라우터에서 DHCP를 통한 IP 결제와 동시에 스크립트를 시작하는 세 번째 Amazon Dash Buton 검사 방법입니다.

    홈 라우터에서 실행되는 Linux 릴리스


    공유기에서 프로그램을 시작하는 것은 간단하지만 집안의 공유기에서 유연하게 설정을 변경할 수 있는 경우는 드물다.이러한 요구 사항을 충족하는 것은 OpenWrtLEDE입니다.
    OpenWrt/LEDE는 끼워 넣는 리눅스의 배달에서 가정용 유선 LAN 공유기·무선 LAN 공유기의 부품을 교체함으로써 맞춤형 프로젝트를 향상시킨다.웹 설정 화면을 라우터로 설정할 수 있을 뿐만 아니라 일반 Linux처럼 SSH에 로그인하여 필요한 바이너리 패키지를 설치할 수 있다.최신 안정판 LEDE 170.01.1은 약 300개 모델의 이미지를 공개해 국내외에서 널리 사용되고 있다.
    필자도 LEDE 기반의 공유기를 자주 사용하기 때문에 이번에 소개한 설정을 진행할 수 있다.나는 이렇게 설정된 좁은 범위의 유연성이 OpenWrt/LEDE의 매력이라고 생각한다.
    참고로 필자가 이번에 사용한 구성을 소개해 드리겠습니다.
  • 유선 LAN 라우터: BUFFALO BHR-4GRV
  • USB 무선 LAN 서브머신: BUFFALO WLI-UC-AG300N
  • Linux 릴리스: LEDE 17.01

  • 필자는 유선 LAN 라우터의 펌웨어를 교체한 후 라우터의 USB 포트를 가리키며 무선 LAN 부속기를 사용했다.비록 서브머신이지만 칩으로서의 기능도 접속점이 될 수 있기 때문에 이 조합은 무선 LAN 공유기로 사용된다.
    OpenWrt/LEDE 자체는 무선 LAN 공유기의 부품을 교체할 수 있지만 일본 내에서는 부품의 개편이 무선 설비의 개조에 해당한다.전파법 위반 위험이 있다는 얘기다.법률을 준수하고 정확하게 놀기 위해서는 무선 기계를 개조하지 않는다.
    관심 있는 사람은 "BHR-4GRV에 LEDE의 메모 설치-Qita"등을 참고하세요.

    Dash 버튼 전용 분리망 만들기


    그럼 이번에는 오랜만에 공유기가 생겨서 네트워크 구성도 신경 써야 한다.이번 대시 버튼의 용도는 공유기와 통신만 하면 충분하기 때문에 집안의 다른 기기와 같은 네트워크에 가입할 이유가 없다.
    그래서 Dash 버튼 전용 SSID와 전용 격리 네트워크를 만들었습니다.다음과 같이 설정합니다.
  • 무선 SSID: amazon-dash
  • 일반 SSID와 별도로 새로 작성
  • 네트워크: 192.0.2.0/24
  • 일반 네트워크와 다른 새 네트워크
  • DHCP 리스 시간: 2분
  • dnsmasq의 최소값, 이유 후술
  • 이 네트워크에서 외부의 통신을 모두 방화벽 설정으로 리셋합니다.대시 버튼이 NTP와 HTTPS의 통신을 빠르게 포기하도록 하기 위해서다.
    설정이 완료되지 않은 대시 버튼은 주문하지 않지만, 그때마다https://dash-button-jp.amazon.com/ HTTPS 통신이 이뤄진다.그러나 HTTPS의 악수 처리와 인증서의 검증 처리는 CPU 부하가 높은 처리이기 때문에 Reject를 통해 배터리의 지속성을 높이는 효과가 있다.
    그러나 대시 버튼을 설정할 때는 인터넷 접속이 필수이기 때문에 일시적으로 인터넷에 나타나야 한다.설치 단계는 "Amazon Dash Buton을 단순한 IoT 버튼으로 사용하기 - Qiita"등의 다른 페이지를 참조하십시오.

    DHCP 설정 변경


    자, 드디어 본론입니다.DHCP에서 IP 주소를 할당할 때 스크립트를 시작합니다.OpenWrt/LEDE에서 dnsmasq는 DHCP 서버 기능을 담당하기 때문에 설정 파일/etc/dnsmasq.conf에서 다음과 같다.
    /etc/dnsmasq.conf
    dhcp-script=/usr/local/bin/dnsmasq-script.sh
    
    시작할 스크립트는 다음과 같습니다.
    /usr/local/bin/dnsmasq-script.sh
    #!/bin/ash
    
    /bin/echo `/bin/date +"%F %T"` $* >> /tmp/dnsmasq.script.log
    
    # 自分のDashボタンのMACアドレスに書き換えてください
    MAC_ADDR="00:00:5E:00:53:38"
    
    if [ "$1" == "add" -a "$2" == ${MAC_ADDR} ]; then
        # 発言したい内容に応じて適宜書き換えてください
        WEBHOOK_URL="https://hooks.slack.com/services/***/***/***"
        CHANNEL="#general"
        USERNAME="空腹bot"
        ICON_EMOJI=":ghost:"
        TEXT="はらへり"
        JSON="{\"channel\": \"${CHANNEL}\", \"username\": \"${USERNAME}\", \"icon_emoji\": \"${ICON_EMOJI}\", \"text\": \"${TEXT}\" }"
        curl -s -S -X POST --data-urlencode "payload=${JSON}" ${WEBHOOK_URL} > /dev/null
    fi
    
    이렇게 대시 버튼을 누르면 슬랙 투고하면 됩니다.

    위의 사진은 자신이 발언한 후 바로 대시 버튼을 누르는 장면의 모습이다.
    단, 이 스크립트는 IP 주소를 새로 할당할 때만 처리됩니다. (조건문 "$1" == "add" 부분.이번에 DHCP 대여 기간은 2분으로 설정됐으며 2분이 지나면 신규 할당 처리가 가능해 기대했던 처리가 가능하다.
    반대로 현 상태라면 2분 안에 2번 이상 버튼을 눌러도 반응이 없다.더 짧은 시간 내에 연격을 하려는 용도라면 스크립트의 조건문에 "$1" == old 등을 넣어 대응할 수 있을 것이다(임대 기간에 다시 분배 요청이 있다면old.

    총결산


    무선 LAN 라우터에서 DHCP의 IP 주소 결제 정시 시작 스크립트를 Amazon Dash Buton이 눌렸을 때만 반응하는 스크립트를 만드는 방법을 소개했다.무선 LAN 라우터를 얻을 수 없더라도 예를 들어 Rasberry Pi 등을 통해서만 DHCP 서버를 제공하면 같은 조작을 할 수 있을 것이다.
    또 아마존 대시 버튼만을 위한 새로운 SSID와 새로운 네트워크를 만드는 방법도 소개했다.이런 구성을 통해 특수한 설정(DHCP 임대 기간이 매우 짧음)도 쉽게 이뤄지고 안전 측면에서도 혜택1을 받을 수 있어 개인적으로는 좋은 설정이라고 본다.

    참조 링크


    이 구조를 만든 뒤 검색해보니 토마토 펌웨어를 이용해 거의 같은 일을 하는 외국인이 발견됐다.
  • Amazon Dash doorbell
  • 가정용 공유기의 펌웨어를 일본에서 교체하면 약간 약한 인상을 줄 수 있지만 외국에서는 아직도 많은 사람들이 놀고 있을 것이다.
    보안 수준이 다른 장치가 서로 다른 네트워크에 연결될 수 있다는 것은 일반적인 화제다.특히 대시 버튼을 문 전화로 사용하면(=실외에 두면) 평소 사용하던 네트워크에 참여하게 하는 것은 위험하다는 점을 고려했다.대시 버튼을 분리하면 WiFi의 암호를 쉽게 읽을 수 있습니다. 

    좋은 웹페이지 즐겨찾기