Я использую функцию scapy sniff, чтобы использовать кнопку Amazon Dash для запуска функции. Код, который я использую, полностью взят из решения для этого на Github с некоторыми очень незначительными изменениями.
Я пошел на проводную акулу и обнаружил запросы DHCP кнопки тире и вытащил MAC-адрес кнопки отсюда, но функция по-прежнему ничего не возвращает.
Вот код:
import logging
logging.getLogger('scapy.runtime').setLevel(logging.ERROR)
from scapy.all import *
def dash_pressed():
print 'Dash button pressed.'
def udp_filter(pkt):
options = pkt[DHCP].options
for option in options:
if isinstance(option, tuple):
if 'requested_addr' in option:
mac_to_action[pkt.src]()
break
mac_to_action = {'DASH_MAC_ADDRESS_HERE' : dash_pressed}
mac_id_list = list(mac_to_action.keys())
print 'Waiting for a button press...'
sniff(prn=udp_filter, store=0, filter='udp', lfilter=lambda d: d.src in mac_id_list)
(Заменена строка MAC-адреса в словаре mac_to_action)
Я не получаю никаких ошибок, просто ничего не происходит. Когда я печатаю функцию sniff, она показывает 0 пакетов udp. Я дважды и трижды проверил свой MAC-адрес, и это определенно исходный адрес (не то чтобы я все равно мог перепутать его с ff: ff: ff: ff: ff: ff). Почему не срабатывает нажатие кнопки на приборной панели?