DashボタンのARPを検出できないのはYAMAHAルータ RTX1100が原因でした.
理由はDHCPのやり取りが異なっていました.
Buffaloルータは簡易的なDHCP要求にたいしてIPを割り振っていましたが,YAMAHAルータはちゃんとした方法(正しい名前を渡しはまだ知らない)で割り振っていました.
また,AmazonPrime会員でないとDashボタンは使えないという話もあります.
概要
DashボタンをIoTボタンとして使うのが流行しています.
Dashボタンを押すと,DHCPリクエストを送信してIPアドレスを得ます.
その後に,DashボタンがルータのMACアドレスを知るためにARPリクエストを送信しています.
Dashボタンが送信したARPリクエストをRaspberryPiで検出して操作を行うものです.
問題点
ですが,僕の所有するボタンを押してもARPを検出することがほとんどできません.
できないことは無いですが,たまにしか検出できません.
最初の1回は検出できるが,連続して押すと検出できない.
原因の調査
ARPリクエストによって得られたMACアドレスを一定時間ボタンの内部に記憶しているためだと考えましたが,BuffaloルータのDHCPを有効にするとARPを検出できました.
また,家庭用ルータを使っている友人にDashボタンを渡してARPの検出ができるかをためしてもらったところ,問題なく検出できました.
そのため,ARPを送信していない可能性はなくなりました.
(ARPで得られたMACアドレスの記憶時間は一般的に15分から60分,最長で24時間となっているようです)
YAMAHAルータが何かしらの影響しているのがわかりました.
10MのリピータハブをアクセスポイントとRTX1100の間にはさみ,パケットをキャプチャしてみました.
解決法
YAMAHAルータをつかわない方法
ARP検出ではなく,DHCP要求を検出する方法